SAP:创建BP
FUNCTION zmd_partner_maintain .
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IS_CENTRAL) TYPE ZSMM_VENDOR_GENERALS
*" EXPORTING
*" REFERENCE(EV_TYPE) TYPE BAPI_MTYPE
*" REFERENCE(EV_MSG) TYPE BAPI_MSG
*" REFERENCE(EV_PARTNER) TYPE BU_PARTNER
*" TABLES
*" IT_KNBK STRUCTURE ZSMM_VENDOR_BANK OPTIONAL
*" IT_COMPANY STRUCTURE ZSMM_VENDOR_COMPANY OPTIONAL
*" IT_PURCHAS STRUCTURE ZSMM_VENDOR_PURCHAS OPTIONAL
*" IT_PARTNER STRUCTURE ZSMM_VENDOR_PARTNER OPTIONAL
*"----------------------------------------------------------------------
DATA: gc_task_create TYPE c,
lv_lifnr TYPE lfa1-lifnr,
lv_spras TYPE t002-spras.
*- 检查与转换
IF is_central-partner IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = is_central-partner
IMPORTING
output = is_central-partner.
ENDIF.
lv_spras = is_central-zlangu.
IF lv_spras IS INITIAL.
lv_spras = '1'.
ENDIF.
DATA:lt_data TYPE cvis_ei_extern_t,
ls_data TYPE cvis_ei_extern.
DATA:ls_partner TYPE bus_ei_extern.
DATA:ls_vendor TYPE vmds_ei_extern.
DATA:ls_tax TYPE bus_ei_bupa_taxnumber,
lt_tax TYPE bus_ei_bupa_taxnumber_t.
DATA:ls_roles TYPE bus_ei_bupa_roles.
DATA:lt_roles TYPE bus_ei_bupa_roles_t.
DATA:lt_return TYPE bapiretm.
DATA:ls_bankdetails TYPE bus_ei_bupa_bankdetail.
DATA:lt_bankdetails TYPE bus_ei_bupa_bankdetail_t.
DATA:ls_addresses TYPE bus_ei_bupa_address.
DATA:lt_addresses TYPE bus_ei_bupa_address_t.
DATA:lt_longtext TYPE bus_ei_bupa_longtext_t,
ls_longtext TYPE bus_ei_bupa_longtext,
ls_line TYPE tline.
DATA:ls_phone TYPE bus_ei_bupa_telephone.
DATA:lt_phone TYPE bus_ei_bupa_telephone_t.
DATA:ls_fax TYPE bus_ei_bupa_fax.
DATA:lt_fax TYPE bus_ei_bupa_fax_t.
DATA:ls_smtp TYPE bus_ei_bupa_smtp.
DATA:lt_smtp TYPE bus_ei_bupa_smtp_t.
SELECT SINGLE partner INTO lv_lifnr
FROM but000
WHERE partner = is_central-partner.
IF sy-subrc <> 0.
gc_task_create = 'I'.
ELSE.
gc_task_create = 'M'.
ENDIF.
ls_partner-header-object_instance-bpartner = is_central-partner. "供应商
ls_partner-header-object_task = gc_task_create.
IF gc_task_create = 'I'.
TRY.
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = ls_partner-header-object_instance-bpartnerguid. "唯一标识
CATCH cx_uuid_error .
ENDTRY.
ELSE.
SELECT SINGLE partner_guid INTO @DATA(lv_guid)
FROM but000
WHERE partner = @is_central-partner.
ls_partner-header-object_instance-bpartnerguid = lv_guid.
ENDIF.
"bp角色
* CLEAR:ls_roles.
* SELECT role AS data_key
* INTO CORRESPONDING FIELDS OF TABLE lt_roles "BP角色(根据角色分组获取所有对应的 BP角色)
* FROM tb003i
* WHERE rltgr = is_central-rltyp.
SELECT * INTO TABLE @DATA(lt_but100)
FROM but100
WHERE partner = @is_central-partner.
LOOP AT lt_but100 INTO DATA(ls_but100).
ls_roles-task = 'M'.
ls_roles-data_key = ls_but100-rltyp.
APPEND ls_roles TO lt_roles.
ENDLOOP.
READ TABLE lt_roles TRANSPORTING NO FIELDS WITH KEY data_key = '000000'.
IF sy-subrc <> 0.
ls_roles-task = 'I'.
ls_roles-data_key = '000000'.
APPEND ls_roles TO lt_roles.
ENDIF.
* ls_partner-central_data-role-current_state = 'X'.
* ls_partner-central_data-role-roles = lt_roles.
ls_partner-central_data-common-data-bp_control-category = '2'. "业务伙伴类别 组织
ls_partner-central_data-common-data-bp_control-grouping = is_central-bu_group. "账户组
ls_partner-central_data-common-data-bp_person-correspondlanguage = lv_spras. "语言
ls_partner-central_data-common-data-bp_centraldata-searchterm1 = is_central-bu_sort1."搜索1
ls_partner-central_data-common-data-bp_centraldata-searchterm2 = is_central-bu_sort2."搜索1
ls_partner-central_data-common-data-bp_centraldata-title_key = is_central-title. "称谓
ls_partner-central_data-common-data-bp_centraldata-partnertype = is_central-zsbpkind. "业务伙伴类型
* ls_partner-central_data-common-data-bp_centraldata-titleletter = is_central-title.
ls_partner-central_data-common-data-bp_centraldata-centralblock = is_central-xblck.
* ls_partner-central_data-common-data-bp_centraldata-partnerexternal = is_central-adext.
ls_partner-central_data-common-data-bp_organization-name1 = is_central-name_org1. "名称1
ls_partner-central_data-common-data-bp_organization-name2 = is_central-name_org2. "名称2
ls_partner-central_data-common-data-bp_organization-name3 = is_central-name_org3. "名称2
ls_partner-central_data-common-data-bp_organization-name4 = is_central-name_org4. "名称4
ls_partner-central_data-common-data-bp_organization-liquidationdate = is_central-zsliquid. "组织的清算日期
ls_partner-central_data-common-data-bp_organization-foundationdate = is_central-found_dat.
ls_partner-central_data-common-datax-bp_person-correspondlanguage = 'X'.
ls_partner-central_data-common-datax-bp_centraldata-searchterm1 = 'X'.
ls_partner-central_data-common-datax-bp_centraldata-title_key = 'X'.
ls_partner-central_data-common-datax-bp_centraldata-partnertype = 'X'.
ls_partner-central_data-common-datax-bp_centraldata-titleletter = 'X'.
ls_partner-central_data-common-datax-bp_centraldata-searchterm2 = 'X'.
ls_partner-central_data-common-datax-bp_centraldata-centralblock = 'X'.
* ls_partner-central_data-common-datax-bp_centraldata-partnerexternal = 'X'.
ls_partner-central_data-common-datax-bp_organization-name1 = 'X'.
ls_partner-central_data-common-datax-bp_organization-name2 = 'X'.
ls_partner-central_data-common-datax-bp_organization-name3 = 'X'.
ls_partner-central_data-common-datax-bp_organization-name4 = 'X'.
ls_partner-central_data-common-datax-bp_organization-foundationdate = 'X'.
ls_partner-central_data-common-datax-bp_organization-liquidationdate = 'X'.
*-------------------------------税码-----------------------------------------begin
IF is_central-idnumber IS NOT INITIAL OR is_central-type IS NOT INITIAL..
* SELECT SINGLE * INTO @DATA(ls_dfkkbptaxnum)
* FROM dfkkbptaxnum
* WHERE partner = @is_central-partner
* AND taxtype = @is_central-type.
* IF sy-subrc = 0.
* ls_tax-task = 'M'.
* ELSE.
* ls_tax-task = 'I'.
* ENDIF.
* ls_tax-data_key-taxtype = is_central-type.
* ls_tax-data_key-taxnumber = is_central-idnumber.
* ls_tax-data_key-taxnumxl = is_central-idnumber.
* APPEND ls_tax TO lt_tax.
* ls_partner-central_data-taxnumber-taxnumbers = lt_tax.
* ls_partner-central_data-taxnumber-current_state = 'X'.
DATA: lt_ident TYPE bus_ei_bupa_identification_t,
ls_ident TYPE bus_ei_bupa_identification.
SELECT SINGLE * INTO @DATA(ls_but0id)
FROM but0id
WHERE partner = @is_central-partner.
IF ls_but0id-type <> is_central-type OR ls_but0id-idnumber <> is_central-idnumber.
IF ls_but0id-type IS NOT INITIAL OR ls_but0id-idnumber IS NOT INITIAL.
* ls_ident-task = 'D'.
* ls_ident-data_key-identificationcategory = ls_but0id-type.
* ls_ident-data_key-identificationnumber = ls_but0id-idnumber.
* APPEND ls_ident TO lt_ident.
ls_ident-task = 'M'.
ls_ident-data_key-identificationcategory = is_central-type.
ls_ident-data_key-identificationnumber = is_central-idnumber.
APPEND ls_ident TO lt_ident.
ELSE.
ls_ident-task = 'I'.
ls_ident-data_key-identificationcategory = is_central-type.
ls_ident-data_key-identificationnumber = is_central-idnumber.
APPEND ls_ident TO lt_ident.
ENDIF.
ls_partner-central_data-ident_number-ident_numbers = lt_ident.
ls_partner-central_data-ident_number-current_state = 'X'.
ENDIF.
ENDIF.
*-------------------------------税码-----------------------------------------end
* ----------------------------------- 银行信息-------------------------------begin
DATA:gdf_bank1 TYPE bankk.
DATA: gdf_bank_key LIKE bapi1011_key-bank_key.
DATA: ls_bank_address TYPE bapi1011_address,
ld_bankkey TYPE bapi1011_key-bank_key,
ls_bank_return TYPE bapiret2,
lv_num(4) TYPE n.
DATA:lt_return1 TYPE TABLE OF bapiret2.
IF it_knbk[] IS NOT INITIAL.
*---------------------------删除供应商的银行信息--------------------begin
SELECT * INTO TABLE @DATA(lt_bank_o)
FROM but0bk
WHERE partner = @is_central-partner.
LOOP AT lt_bank_o INTO DATA(ls_bank_o).
CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_REMOVE'
EXPORTING
businesspartner = is_central-partner
bankdetailid = ls_bank_o-bkvid
TABLES
return = lt_return1.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
REFRESH lt_return1.
ENDLOOP.
*---------------------------删除供应商的银行信息--------------------end
LOOP AT it_knbk INTO DATA(ls_knbk).
"扩展接口:银行数据
ls_bankdetails-task = 'I'. "'I'. "创建
lv_num = lv_num + 1.
ls_bankdetails-data_key = lv_num.
ls_bankdetails-data-bank_ctry = ls_knbk-banks. "'CN'. "银行国家代码
* CLEAR:gdf_bank1.
* CLEAR ls_bank_address.
* ls_bank_address-bank_name = ls_knbk-banka.
** gdf_bank_key = gdf_bank1.
*
* SELECT SINGLE bankl INTO ls_knbk-bankl
* FROM bnka
* WHERE banks = ls_knbk-banks
* AND banka = ls_knbk-banka.
*
* IF sy-subrc NE 0."没找到的话就创建
*
* CALL FUNCTION 'BAPI_BANK_CREATE'
* EXPORTING
* bank_ctry = ls_knbk-banks
* bank_key = gdf_bank_key
* bank_address = ls_bank_address
* i_xupdate = 'X'
* IMPORTING
* return = ls_bank_return
* bankkey = gdf_bank1.
* IF ls_bank_return-type = 'E'.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
* e_result-type = 'E'.
* e_result-message = ls_bank_return-message.
* RETURN.
* ENDIF.
*
* ls_knbk-bankl = gdf_bank1.
* ENDIF.
ls_bankdetails-data-bank_key = ls_knbk-bankl. "'0000000013'. "银行编号
ls_bankdetails-data-bank_acct = ls_knbk-bankn. "'1231231'. "银行帐户号码
ls_bankdetails-data-bank_ref = ls_knbk-bkref. "参考信息
* ls_bankdetails-datak-banka = gs_lfbk-banka. "银行账户
ls_bankdetails-data-accountholder = ls_knbk-koinh. "'3121321'. "帐户持有人姓名
ls_bankdetails-data-bankaccountname = ls_knbk-ccname.
ls_bankdetails-data-zzhlwyh = ls_knbk-zzhlwyh.
ls_bankdetails-data-zzspyh = ls_knbk-zzspyh.
ls_bankdetails-datax-bank_ctry = 'X'.
ls_bankdetails-datax-bank_key = 'X'.
ls_bankdetails-datax-bank_acct = 'X'.
ls_bankdetails-datax-bank_ref = 'X'.
ls_bankdetails-datax-accountholder = 'X'.
ls_bankdetails-datax-bankaccountname = 'X'.
ls_bankdetails-datax-zzhlwyh = 'X'.
ls_bankdetails-datax-zzspyh = 'X'.
APPEND ls_bankdetails TO lt_bankdetails.
ENDLOOP.
ENDIF.
ls_partner-central_data-bankdetail-bankdetails = lt_bankdetails.
ls_partner-central_data-bankdetail-current_state = 'X'.
* ----------------------------------- 银行信息-------------------------------end
* ----------------------------------- 地址-------------------------------begin
ls_addresses-task = gc_task_create.
IF gc_task_create = 'I'.
TRY.
CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = ls_addresses-data_key-guid.
CATCH cx_uuid_error .
ENDTRY.
ELSE .
SELECT SINGLE address_guid INTO lv_guid
FROM but020
WHERE partner = is_central-partner.
ls_addresses-data_key-guid = lv_guid.
ENDIF.
ls_addresses-data-postal-data-street = is_central-street. "街道
ls_addresses-data-postal-data-str_suppl1 = is_central-zstr_spl1. "街道2
ls_addresses-data-postal-data-str_suppl2 = is_central-zstr_spl2. "街道3
* ls_addresses-data-postal-data-distrct_no = is_central-zscityc. "城市代码
* ls_addresses-data-postal-data-county_no = is_central-zscounc. "县代码
ls_addresses-data-postal-data-house_no = is_central-house_num. "门牌号
ls_addresses-data-postal-data-city = is_central-city1. "城市
ls_addresses-data-postal-data-postl_cod1 = is_central-post_code. "邮政编码
ls_addresses-data-postal-data-country = is_central-country. "国家
ls_addresses-data-postal-data-extaddressnumber = is_central-adext.
ls_addresses-data-postal-data-transpzone = is_central-zslzone. "运输区域
* IF strlen( is_central-street ) > 40.
* ls_addresses-data-postal-data-str_suppl1 = is_central-street+40.
* ENDIF.
* ls_addresses-data-postal-data-str_suppl2 = is_central-kp_street.
* IF strlen( is_central-kp_street ) > 40.
* ls_addresses-data-postal-data-str_suppl3 = is_central-kh_street+40.
* ENDIF.
ls_addresses-data-postal-data-region = is_central-region. "地区
ls_addresses-data-postal-data-langu = lv_spras. "语言
ls_addresses-data-postal-datax-street = 'X'.
ls_addresses-data-postal-datax-str_suppl1 = 'X'.
ls_addresses-data-postal-datax-str_suppl2 = 'X'.
* ls_addresses-data-postal-datax-distrct_no = 'X'.
* ls_addresses-data-postal-datax-county_no = 'X'.
ls_addresses-data-postal-datax-house_no = 'X'.
ls_addresses-data-postal-datax-city = 'X'.
ls_addresses-data-postal-datax-postl_cod1 = 'X'.
ls_addresses-data-postal-datax-country = 'X'.
ls_addresses-data-postal-datax-str_suppl1 = 'X'.
ls_addresses-data-postal-datax-str_suppl2 = 'X'.
ls_addresses-data-postal-datax-str_suppl3 = 'X'.
ls_addresses-data-postal-datax-region = 'X'.
ls_addresses-data-postal-datax-langu = 'X'.
ls_addresses-data-postal-datax-extaddressnumber = 'X'.
ls_addresses-data-postal-datax-transpzone = 'X'.
* IF is_central-country = 'BR'.
* ls_addresses-data-postal-data-postl_cod1 = '69900-000'. "邮政编码
* ls_addresses-data-postal-datax-postl_cod1 = 'X'.
* ls_addresses-data-postal-data-region = 'AC'. "地区
* ls_addresses-data-postal-datax-region = 'X'.
* ls_addresses-data-postal-data-time_zone = 'BRAZIL'.
* ls_addresses-data-postal-datax-time_zone = 'X'.
* ls_addresses-data-postal-data-taxjurcode = 'AC 1200013'.
* ls_addresses-data-postal-datax-taxjurcode = 'X'.
* ENDIF.
"获取地址编号
SELECT SINGLE addrnumber INTO @DATA(lv_addr)
FROM but020
WHERE partner = @is_central-partner.
*----------------------------固定电话-------------------------begin
* ls_phone-contact-task = gc_task_create.
SELECT SINGLE *
INTO @DATA(ls_adr2)
FROM adr2
WHERE addrnumber = @lv_addr
AND r3_user = '1' .
IF sy-subrc = 0.
ls_phone-contact-task = 'M'.
ls_phone-contact-datax-updateflag = 'U'.
ELSE.
ls_phone-contact-task = 'I'.
ENDIF.
ls_phone-contact-data-telephone = is_central-telf2. "联系电话
* ls_phone-contact-data-extension = is_central-tel_extens. "联系电话分机号,
ls_phone-contact-data-r_3_user = ' '. "移动电话标识
ls_phone-contact-datax-telephone = 'X'.
ls_phone-contact-datax-r_3_user = 'X'.
ls_phone-contact-datax-extension = 'X'.
APPEND ls_phone TO lt_phone.
CLEAR:ls_phone.
*----------------------------固定电话-------------------------end
*----------------------------移动电话-------------------------begin
SELECT SINGLE *
INTO ls_adr2
FROM adr2
WHERE addrnumber = lv_addr
AND r3_user = '3' .
IF sy-subrc = 0.
ls_phone-contact-task = 'M'.
ls_phone-contact-datax-updateflag = 'U'.
ELSE.
ls_phone-contact-task = 'I'.
ENDIF.
* ls_phone-contact-task = gc_task_create.
ls_phone-contact-data-telephone = is_central-mob_numbe. "移动电话
ls_phone-contact-data-r_3_user = '3'. "移动电话标识
ls_phone-contact-datax-telephone = 'X'.
ls_phone-contact-datax-r_3_user = 'X'.
APPEND ls_phone TO lt_phone.
CLEAR:ls_phone.
ls_addresses-data-communication-phone-phone = lt_phone.
ls_addresses-data-communication-phone-current_state = 'X'.
*----------------------------移动电话-------------------------end
*----------------------------传真--------------------------begin
CLEAR:ls_fax.
* ls_fax-contact-task = gc_task_create.
SELECT SINGLE *
INTO @DATA(ls_adr3)
FROM adr3
WHERE addrnumber = @lv_addr.
IF sy-subrc = 0.
ls_fax-contact-task = 'M'.
ls_fax-contact-datax-updateflag = 'U'.
ELSE.
ls_fax-contact-task = 'I'.
ENDIF.
ls_fax-contact-data-fax = is_central-fax_numbe. "传真
ls_fax-contact-data-r_3_user = '3'. "
ls_fax-contact-datax-fax = 'X'.
ls_fax-contact-datax-r_3_user = 'X'.
APPEND ls_fax TO lt_fax.
ls_addresses-data-communication-fax-fax = lt_fax.
ls_addresses-data-communication-fax-current_state = 'X'.
*----------------------------传真--------------------------end
*----------------------------电子邮件--------------------------begin
SELECT SINGLE *
INTO @DATA(ls_adr6)
FROM adr6
WHERE addrnumber = @lv_addr.
IF sy-subrc = 0.
ls_smtp-contact-task = 'M'.
ls_smtp-contact-datax-updateflag = 'U'.
ELSE.
ls_smtp-contact-task = 'I'.
ENDIF.
* ls_smtp-contact-task = gc_task_create.
ls_smtp-contact-data-e_mail = is_central-smtp_addr. "电子邮件
ls_smtp-contact-data-r_3_user = '3'. "
ls_smtp-contact-datax-e_mail = 'X'.
ls_smtp-contact-datax-r_3_user = 'X'.
APPEND ls_smtp TO lt_smtp.
ls_addresses-data-communication-smtp-smtp = lt_smtp.
ls_addresses-data-communication-smtp-current_state = 'X'.
*----------------------------电子邮件--------------------------end
APPEND ls_addresses TO lt_addresses.
ls_partner-central_data-address-addresses = lt_addresses.
ls_partner-central_data-address-current_state = 'X'.
* ----------------------------------- 地址-------------------------------end
* PERFORM frm_vendor_data TABLES it_company
* it_purchas
* it_partner
* USING is_central "销售组织及公司代码数据
* gc_task_create
* CHANGING ls_vendor.
ls_data-partner = ls_partner.
* ls_data-vendor = ls_vendor.
* IF gc_task_create = 'I'.
* ls_data-ensure_create-create_vendor = 'X'.
* ENDIF.
APPEND ls_data TO lt_data.
* vmd_ei_api=>initialize( ).
* cl_md_bp_maintain=>reset_temp_ids_from_memory( ).
CALL METHOD cl_md_bp_maintain=>maintain "更新客户
EXPORTING
i_data = lt_data
IMPORTING
e_return = lt_return.
LOOP AT lt_return INTO DATA(ls_ret).
LOOP AT ls_ret-object_msg INTO DATA(ls_msg) WHERE type CA 'EAI'.
DATA(lv_flag) ='X'.
ev_msg = ls_msg-message && '/' && ev_msg.
ENDLOOP.
ENDLOOP.
IF lv_flag = 'X'.
ev_type = 'E'.
* ROLLBACK WORK.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
* COMMIT WORK AND WAIT.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ev_type = 'S'.
SELECT SINGLE partner INTO ev_partner
FROM but000
WHERE partner_guid = ls_partner-header-object_instance-bpartnerguid.
ev_msg = '供应商' && ev_partner && '更新成功' .
* UPDATE lfa1 SET zzyyw = is_central-zzyyw
* zzczj = is_central-zzczj
* znyye = is_central-znyye
* zzdkh = is_central-zzdkh
* zzzzm = is_central-zzzzm
* zycsj = is_central-zycsj
* zthfs = is_central-zthfs
* WHERE lifnr = ev_partner.
* COMMIT WORK.
ENDIF.
ENDFUNCTION.
FORM frm_vendor_data TABLES it_company STRUCTURE zsmm_vendor_company
it_purchas STRUCTURE zsmm_vendor_purchas
it_partner STRUCTURE zsmm_vendor_partner
USING is_central TYPE zsmm_vendor_generals
gc_task_create TYPE c
CHANGING ls_vendor TYPE vmds_ei_extern.
DATA:ls_company TYPE vmds_ei_company,
lt_company TYPE vmds_ei_company_t.
DATA:ls_purchasing TYPE vmds_ei_purchasing,
lt_purchasing TYPE vmds_ei_purchasing_t.
DATA:ls_functions TYPE vmds_ei_functions,
lt_functions TYPE vmds_ei_functions_t.
DATA:lv_num(3) TYPE n.
ls_vendor-header-object_task = gc_task_create.
IF gc_task_create = 'M'.
ls_vendor-header-object_task = 'U'.
ENDIF.
ls_vendor-header-object_instance-lifnr = is_central-partner.
ls_vendor-central_data-central-data-fityp = is_central-fityp.
ls_vendor-central_data-central-datax-fityp = 'X'.
*---------------------------公司数据-------------------------------------------BEGIN
SELECT bukrs INTO TABLE @DATA(lt_lfb1)
FROM lfb1
WHERE lifnr = @is_central-partner.
SORT lt_lfb1 BY bukrs.
LOOP AT it_company INTO DATA(ls_cmy).
READ TABLE lt_lfb1 TRANSPORTING NO FIELDS WITH KEY bukrs = ls_cmy-bukrs BINARY SEARCH.
IF sy-subrc = 0.
ls_company-task = 'M'.
ELSE.
ls_company-task = 'I'.
ENDIF.
ls_company-data-akont = ls_cmy-hkont.
ls_company-data-zterm = ls_cmy-zterm.
ls_company-data-zwels = ls_cmy-zwels.
ls_company-data-sperr = ls_cmy-sperr.
ls_company-data-reprf = ls_cmy-reprf.
ls_company-datax-akont = 'X'.
ls_company-datax-zterm = 'X'.
ls_company-datax-zwels = 'X'.
ls_company-datax-sperr = 'X'.
ls_company-data-reprf = 'X'.
ls_company-data_key-bukrs = ls_cmy-bukrs.
APPEND ls_company TO lt_company.
CLEAR ls_company.
ENDLOOP.
* ls_vendor-company_data-current_state = gc_task_create.
ls_vendor-company_data-company = lt_company.
*---------------------------公司数据-------------------------------------------END
*----------------------------采购数据------------------------------------------BEGIN
SELECT * INTO TABLE @DATA(lt_lfm1)
FROM lfm1
WHERE lifnr = @is_central-partner.
SORT lt_lfm1 BY ekorg.
SELECT * INTO TABLE @DATA(lt_wyt3)
FROM wyt3
WHERE lifnr = @is_central-partner.
SORT lt_wyt3 BY ekorg parvw.
LOOP AT it_purchas INTO DATA(ls_pur).
READ TABLE lt_lfm1 TRANSPORTING NO FIELDS WITH KEY ekorg = ls_pur-ekorg
BINARY SEARCH.
IF sy-subrc <> 0.
ls_purchasing-task = 'I'.
ELSE.
ls_purchasing-task = 'U'.
ENDIF.
ls_purchasing-data_key-ekorg = ls_pur-ekorg. "采购组织
ls_purchasing-data-waers = ls_pur-waers. "货币
ls_purchasing-data-sperm = ls_pur-sperm. "冻结
ls_purchasing-data-zterm = ls_pur-zterm.
ls_purchasing-data-inco1 = ls_pur-inco1.
ls_purchasing-data-inco2_l = ls_pur-inco2_l.
ls_purchasing-data-verkf = ls_pur-verkf.
ls_purchasing-data-telf1 = ls_pur-telf1.
ls_purchasing-data-webre = 'X'.
ls_purchasing-datax-waers = 'X'.
ls_purchasing-datax-sperm = 'X'.
ls_purchasing-datax-zterm = 'X'.
ls_purchasing-datax-inco1 = 'X'.
ls_purchasing-datax-inco2_l = 'X'.
ls_purchasing-datax-verkf = 'X'.
ls_purchasing-datax-telf1 = 'X'.
ls_purchasing-datax-webre = 'X'.
LOOP AT it_partner INTO DATA(ls_part) WHERE ekorg = ls_pur-ekorg.
READ TABLE lt_wyt3 INTO DATA(ls_wyt3) WITH KEY ekorg = ls_pur-ekorg
parvw = ls_part-parvw
BINARY SEARCH.
IF sy-subrc <> 0.
ls_functions-task = 'I'.
ELSE.
ls_functions-task = 'U'.
ENDIF.
ls_functions-data_key-parvw = ls_part-parvw.
ls_functions-data_key-parza = ls_wyt3-parza.
ls_functions-data-partner = ls_part-lifn2.
ls_functions-datax-partner = 'X'.
APPEND ls_functions TO lt_functions.
ENDLOOP.
ls_purchasing-functions-functions = lt_functions.
APPEND ls_purchasing TO lt_purchasing.
CLEAR: ls_purchasing, lt_functions.
ENDLOOP.
ls_vendor-purchasing_data-purchasing = lt_purchasing.
* ls_vendor-purchasing_data-current_state = 'X'.
*----------------------------采购数据------------------------------------------END
ENDFORM.
明细数据:
post SAP-Garson
原文链接:https://blog.csdn.net/weixin_43734184/article/details/119945095文章来自于网络,如果侵犯了您的权益,请联系站长删除!