S4 HANA BP-客商共用编码处理(示例:已存在的供应商编码扩展客户数据)
BP经常遇到 客户和供应商使用相同编码情况,以已存在的供应商编码扩展客户数据为例
DATA: CS_BPDATA TYPE CVIS_EI_EXTERN.
cs_bpdata-partner-header-object_instance-bpartner = is_data-partner.
cs_bpdata-partner-header-object_task = 'M'.
SELECT SINGLE *
INTO @DATA(ls_but000)
FROM but000
WHERE partner = @is_data-partner.
IF sy-subrc NE 0 .
ls_but000-partner_guid = cl_system_uuid=>create_uuid_x16_static( ).
ENDIF.
cs_bpdata-partner-header-object_instance-bpartnerguid = ls_but000-partner_guid.
cs_bpdata-customer-header-object_instance-kunnr = is_data-partner.
SELECT COUNT(*)
FROM kna1
WHERE kunnr = is_data-partner.
IF sy-subrc NE 0.
cs_bpdata-customer-header-object_task = 'I'.
cs_bpdata-ensure_create-create_customer = 'X'.
ELSE.
cs_bpdata-customer-header-object_task = 'U'.
ENDIF.
"扩展客户角色
"检查角色是否已经存在
SELECT COUNT(*)
FROM but100
WHERE partner = is_data-partner
AND rltyp = cn_role_flcu00.
IF sy-subrc NE 0.
CLEAR ls_role.
ls_role-task = 'I'.
ls_role-data_key = 'FLCU00'.
ls_role-data-valid_from = sy-datum.
ls_role-data-valid_to = '99991231'.
APPEND ls_role TO cs_bpdata-partner-central_data-role-roles.
ENDIF.
SELECT COUNT(*)
FROM but100
WHERE partner = is_data-partner
AND rltyp = cn_role_flcu01.
IF sy-subrc NE 0.
CLEAR ls_role.
ls_role-task = 'I'.
ls_role-data_key = 'FLCU01'.
ls_role-data-valid_from = sy-datum.
ls_role-data-valid_to = '99991231'.
APPEND ls_role TO cs_bpdata-partner-central_data-role-roles.
ENDIF.
"CALL BP CLASS
DATA: lt_msgmap TYPE mdg_bs_bp_msgmap_t,
ls_output TYPE zmddt_vender_rsp_ztable_return,
lt_bpdata TYPE STANDARD TABLE OF cvis_ei_extern,
lt_bpret TYPE bapiretm,
lv_message TYPE string.
APPEND is_bpdata TO lt_bpdata.
CALL METHOD cl_md_bp_maintain=>maintain
EXPORTING
i_data = lt_bpdata
IMPORTING
e_return = lt_bpret.
CLEAR: lv_message.
LOOP AT lt_bpret INTO DATA(ls_bpret).
LOOP AT ls_bpret-object_msg INTO DATA(ls_msg) WHERE type CA 'AEX'.
lv_message = COND #( WHEN lv_message IS INITIAL THEN ls_msg-message
ELSE |{ lv_message }/{ ls_msg-message }| ).
ENDLOOP.
ENDLOOP.
根据KNA1中是否存在编码对应的值,确定对参数赋值
cs_bpdata-customer-header-object_task = 'I'.
cs_bpdata-ensure_create-create_customer = 'X'.
根据but100中是否存在编码对应的角色,确定是否创建角色
post SAP-Garson
原文链接:https://blog.csdn.net/wanglei880526/article/details/103277468文章来自于网络,如果侵犯了您的权益,请联系站长删除!