客户主数据参考接口示例
2018-07-11 14:06
253 查看
FUNCTION ZSD_091_UPDATE .
*"----------------------------------------------------------------------
*"*"本地接口:
*" TABLES
*" T_INPUT STRUCTURE ZSD091
*" T_RETURN STRUCTURE BAPIRETC OPTIONAL
*"----------------------------------------------------------------------
* CONSTANTS:
* g_object_task_i TYPE bus_ei_object_task VALUE 'I'.
* g_object_task_c TYPE bus_ei_object_task VALUE 'C',
* g_object_task_m TYPE bus_ei_object_task VALUE 'M',
* g_object_task_u TYPE bus_ei_object_task VALUE 'U',
* g_object_task_d TYPE bus_ei_object_task VALUE 'D'.
DATA : g_object_task TYPE bus_ei_object_task.
data : g_partner type but000-partner.
DATA:
lt_data TYPE cvis_ei_extern_t,
ls_data TYPE cvis_ei_extern,
lt_return TYPE bapiretm,
ls_return TYPE bapireti,
ls_partner TYPE bus_ei_extern,
ls_customer TYPE cmds_ei_extern,
lt_roles TYPE bus_ei_bupa_roles_t,
ls_roles TYPE bus_ei_bupa_roles,
lt_addresses TYPE bus_ei_bupa_address_t,
ls_addresses TYPE bus_ei_bupa_address,
lt_phone TYPE bus_ei_bupa_telephone_t,
ls_phone TYPE bus_ei_bupa_telephone,
lv_partner_guid TYPE bu_partner_guid,
lt_tb003i TYPE TABLE OF tb003i,
ls_tb003i TYPE tb003i,
lv_error TYPE c,
ls_cvis_error TYPE cvis_error,
lt_partnerguid_list TYPE bu_partner_guid_t,
ls_partnerguid_list TYPE bu_partner_guid,
lt_customer_list TYPE cvis_cust_link_t,
ls_customer_list TYPE cvi_cust_link,
lt_but020 TYPE TABLE OF but020,
ls_but020 TYPE but020,
lt_n_ukmbp_cms TYPE TABLE OF ukm_s_bp_cms_upd,
lt_n_ukmbp_cms_sgm TYPE TABLE OF ukm_s_bp_cms_sgm_upd,
lt_ukm_chck_rule TYPE TABLE OF ukm_chck_rule,
lt_ukm_limit_rules TYPE TABLE OF ukm_limit_rules.
SELECT *
INTO TABLE lt_tb003i
FROM tb003i
WHERE rltgr LIKE 'Z%'.
SELECT *
INTO TABLE lt_ukm_chck_rule
FROM ukm_chck_rule.
SELECT *
INTO TABLE lt_ukm_limit_rules
FROM ukm_limit_rules.
LOOP AT t_input.
select
partner
into g_partner
from but000
where partner = t_input-partner
.
endselect.
IF g_partner is initial.
g_object_task = 'C'.
ELSE.
g_object_task = 'U'.
ENDIF.
CLEAR:
ls_data,
lt_data,
lv_error.
* if t_input-BU_GROUP = 'ZC01' .
* SELECT MAX( kunnr ) INTO @DATA(lv_partner) FROM kna1 WHERE kunnr LIKE '000001%' .
* ELSEIF t_input-BU_GROUP = 'ZC02' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000002%' .
* ELSEIF t_input-BU_GROUP = 'ZC04' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000003%' .
* ELSEIF t_input-BU_GROUP = 'ZC05' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000005%' .
* ELSEIF t_input-BU_GROUP = 'ZC06' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000009%' .
* endif.
" 10001~19999
"20001~29999
"公司编码
"3001~39999
"50001~59999
"900000
* IF t_input-BU_GROUP <> 'ZC03' .
* t_input-partner = lv_partner + 1 .
* ENDIF.
ls_partner-header-object_instance-bpartner = t_input-partner.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_partner-header-object_instance-bpartner
IMPORTING
output = ls_partner-header-object_instance-bpartner.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = t_input-kunnr
IMPORTING
output = t_input-kunnr.
SELECT SINGLE PARZA into @data(v_PARZA) from KNVP where KUNNR = @ls_partner-header-object_instance-bpartner and PARVW = 'Z1'.
* SELECT SINGLE but000~partner
* INTO @lv_partner
* FROM but000
* WHERE partner = @t_input-partner .
* IF sy-subrc = 0 .
*
* t_return-type = 'E'.
* t_return-message = '此经销商' && t_input-partner && '已存在!'.
*
* APPEND t_return.
*
* CONTINUE.
* ENDIF.
IF t_input-limit_rule IS INITIAL.
t_return-type = 'E'.
t_return-message = '信贷限额的规则不能为空!'.
APPEND t_return.
CONTINUE.
ELSE.
READ TABLE lt_ukm_limit_rules WITH KEY limit_rule = t_input-limit_rule
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
t_return-type = 'E'.
t_return-message = '信贷限额的规则' && t_input-limit_rule && '不存在!'.
APPEND t_return.
CONTINUE.
ENDIF.
ENDIF.
IF t_input-check_rule IS NOT INITIAL.
READ TABLE lt_ukm_chck_rule WITH KEY check_rule = t_input-check_rule
TRANSPORTING NO FIELDS .
IF sy-subrc <> 0.
t_return-type = 'E'.
t_return-message = '信用检查的规则' && t_input-check_rule && '不存在!'.
APPEND t_return.
CONTINUE.
ENDIF.
ENDIF.
"基本信息
* TRY .
* lv_partner_guid = cl_uuid_factory=>create_system_uuid( )->create_uuid_x16( ).
* IF lines( t_return ) > 0.
* t_return-MESSAGE_V2 = t_input-partner .
* MODIFY t_return .
* endif.
* CATCH cx_uuid_error.
*
* "返回消息
* ENDTRY.
* ls_partner-header-object_task = g_object_task_c.
ls_partner-header-object_task = g_object_task.
ls_partner-header-object_instance-bpartnerguid = ls_partner-header-object_instance-bpartner.
****业务合作伙伴数据的中心数据***********************************
SELECT SINGLE partner_guid
INTO lv_partner_guid
FROM but000
WHERE partner = ls_partner-header-object_instance-bpartner.
ls_partner-header-object_instance-bpartnerguid = lv_partner_guid.
ls_partner-central_data-common-data-bp_control-category = 2. "业务伙伴类别
ls_partner-central_data-common-data-bp_control-grouping = t_input-bu_group. "业务伙伴分组
* ls_partner-central_data-common-data-bp_centraldata-partnerexternal = t_input-adext.
ls_partner-central_data-common-data-bp_centraldata-title_key = '0003'. "称谓
ls_partner-central_data-common-data-bp_centraldata-searchterm1 = t_input-sortl. "检索项
ls_partner-central_data-common-datax-bp_centraldata-searchterm1 = abap_true.
ls_partner-central_data-common-data-bp_organization-name1 = t_input-name1. "名称
ls_partner-central_data-common-datax-bp_organization-name1 = abap_true.
CLEAR:lt_roles.
READ TABLE lt_tb003i WITH KEY rltgr = t_input-role
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
LOOP AT lt_tb003i INTO ls_tb003i WHERE rltgr = t_input-role.
CLEAR ls_roles.
* ls_roles-task = g_object_task_c.
ls_roles-task = g_object_task.
ls_roles-data_key = ls_tb003i-role.
APPEND ls_roles TO lt_roles.
ENDLOOP.
ELSE.
* ls_roles-task = g_object_task_c.
ls_roles-task = g_object_task.
ls_roles-data_key = t_input-role.
APPEND ls_roles TO lt_roles.
ENDIF.
ls_partner-central_data-role-roles = lt_roles.
CLEAR: ls_but020,ls_but020.
SELECT *
INTO TABLE lt_but020
FROM but020
WHERE partner = ls_partner-header-object_instance-bpartner.
"取最新地址guid
SORT lt_but020 BY partner addrnumber DESCENDING.
READ TABLE lt_but020 INTO ls_but020 INDEX 1.
"地址信息
CLEAR lt_addresses.
* ls_addresses-task = g_object_task_m.
ls_addresses-task = g_object_task.
ls_addresses-data_key-guid = ls_but020-address_guid.
ls_addresses-data-postal-data-city = t_input-ort01.
ls_addresses-data-postal-data-street = t_input-stras. "街道
ls_addresses-data-postal-data-country = t_input-land1. "国家
ls_addresses-data-postal-data-langu = t_input-spras. "语言
ls_addresses-data-postal-data-extaddressnumber = t_input-adext.
ls_addresses-data-postal-data-region = t_input-regio.
ls_addresses-data-postal-datax-city = abap_true.
ls_addresses-data-postal-datax-street = abap_true.
ls_addresses-data-postal-datax-country = abap_true.
ls_addresses-data-postal-datax-langu = abap_true.
ls_addresses-data-postal-datax-extaddressnumber = abap_true.
ls_addresses-data-postal-datax-region = abap_true.
"电话
CLEAR lt_phone.
* ls_phone-contact-task = g_object_task_c.
ls_phone-contact-task = g_object_task.
ls_phone-contact-data-telephone = t_input-telf1. "电话1
ls_phone-contact-datax-telephone = abap_true.
ls_phone-contact-datax-r_3_user = abap_true.
ls_phone-contact-datax-tel_no = abap_true.
APPEND ls_phone TO lt_phone.
"移动电话
CLEAR lt_phone.
* ls_phone-contact-task = g_object_task_c.
ls_phone-contact-task = g_object_task.
ls_phone-contact-data-telephone = t_input-mob_number. "电话1
ls_phone-contact-data-r_3_user = '3'. "移动电话
ls_phone-contact-datax-telephone = abap_true.
ls_phone-contact-datax-r_3_user = abap_true.
APPEND ls_phone TO lt_phone.
ls_addresses-data-communication-phone-phone = lt_phone.
APPEND ls_addresses TO lt_addresses.
ls_partner-central_data-address-addresses = lt_addresses.
****客户的通用数据***********************************
* ls_customer-header-object_task = g_object_task_c.
ls_customer-header-object_task = g_object_task.
ls_customer-header-object_instance-kunnr = ls_partner-header-object_instance-bpartner.
* ls_customer-header-object_instance-kunnr = t_input-kunnr.
ls_customer-central_data-central = VALUE #( data-kukla = t_input-kukla
data-bahns = t_input-bahns
data-bahne = t_input-bahne
data-katr1 = t_input-katr1
data-katr2 = t_input-katr2
data-katr3 = t_input-katr3
data-katr4 = t_input-katr4
data-katr5 = t_input-katr5
datax-kukla = abap_true
datax-bahns = abap_true
datax-bahne = abap_true
datax-katr1 = abap_true
datax-katr2 = abap_true
datax-katr3 = abap_true
datax-katr4 = abap_true
datax-katr5 = abap_true
).
****税率数据************************************************
ls_customer-central_data-tax_ind-tax_ind = VALUE #( (
* task = g_object_task_c
task = g_object_task
data_key-aland = 'CN'
data_key-tatyp = 'MWST'
data-taxkd = t_input-taxkd
datax-taxkd = abap_true )
).
****公司代码数据************************************************
ls_customer-company_data-company = VALUE #( (
* task = g_object_task_c
task = g_object_task
data_key-bukrs = t_input-bukrs
data-akont = t_input-akont
data-zuawa = t_input-zuawa
data-zterm = t_input-zterm
datax-akont = abap_true
datax-zuawa = abap_true
datax-zterm = abap_true )
).
****销售数据************************************************
ls_customer-sales_data-sales = VALUE #( (
* task = g_object_task_u
task = g_object_task
data_key-vkorg = t_input-vkorg
data_key-spart = t_input-spart
data_key-vtweg = t_input-vtweg
data-bzirk = t_input-bzirk
data-konda = t_input-konda
data-kalks = t_input-kalks
data-vsbed = t_input-vsbed
data-zterm = t_input-zterm1
data-waers = t_input-waers
data-ktgrd = t_input-ktgrd
data-inco1 = t_input-inco1
* data-inco1 = ''
data-inco2_l = t_input-inco2_l
***************************************** BY HAND 13074 KANGDI 20180625
data-inco2 = t_input-inco1
*
******************************************************************************
data-vwerk = t_input-vwerk
datax-bzirk = abap_true
datax-konda = abap_true
datax-kalks = abap_true
datax-vsbed = abap_true
datax-zterm = abap_true
datax-waers = abap_true
datax-ktgrd = abap_true
datax-inco1 = abap_true
datax-inco2_l = abap_true
***************************************** BY HAND 13074 KANGDI 20180625
*
datax-inco2 = abap_true
*
******************************************************************************
datax-vwerk = abap_true
functions-functions = VALUE #( (
* task = g_object_task_u
task = g_object_task
data_key-parvw = 'Z1'
data_key-PARZA = v_PARZA
data-partner = t_input-kunnr
datax-partner = abap_true )
"默认以下合作伙伴功能,必须全部传入。。。否则客户相关数据创建失败
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'AG'
* data-partner = t_input-kunnr
datax-partner = abap_true )
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'RE'
datax-partner = abap_true )
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'RG'
datax-partner = abap_true )
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'WE'
datax-partner = abap_true )
)
)
).
ls_data-partner = ls_partner.
ls_data-customer = ls_customer.
APPEND ls_data TO lt_data.
cl_md_bp_maintain=>maintain(
EXPORTING
i_data = lt_data
IMPORTING
e_return = lt_return ).
LOOP AT lt_return INTO ls_return.
LOOP AT ls_return-object_msg INTO t_return WHERE type = 'E' OR type = 'A'.
lv_error = abap_true.
APPEND t_return.
ENDLOOP.
ENDLOOP.
IF lv_error = space.
CLEAR t_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
* 根据伙伴GUID取出客户编号
CLEAR:
lt_partnerguid_list,
lt_customer_list.
ls_partnerguid_list = ls_partner-header-object_instance-bpartnerguid.
APPEND ls_partnerguid_list TO lt_partnerguid_list.
lt_customer_list = cvi_mapper=>get_instance( )->get_assigned_customers_for_bps(
i_partner_guids = lt_partnerguid_list ).
READ TABLE lt_customer_list INDEX 1 TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
CONCATENATE '经销商客户' t_input-partner '修改成功!' INTO t_return-message.
t_return-type = 'S'.
* OUT_RETURN-type = 'S'.
"创建客户信贷数据
lt_n_ukmbp_cms = VALUE #( ( partner = ls_partner-header-object_instance-bpartner
check_rule = t_input-check_rule
limit_rule = t_input-limit_rule
risk_class = t_input-risk_class
risk_class_chgdt = sy-datum
change_id = g_object_task
* change_id = g_object_task_c
)
).
lt_n_ukmbp_cms_sgm = VALUE #( ( partner = ls_partner-header-object_instance-bpartner
credit_limit = t_input-credit_limit
limit_chg_date = sy-datum
change_id = g_object_task
* change_id = g_object_task_c
)
).
CALL FUNCTION 'UKM_DB_UKMBP_CMS_EXECUTE'
TABLES
n_ukmbp_cms = lt_n_ukmbp_cms
n_ukmbp_cms_sgm = lt_n_ukmbp_cms_sgm
EXCEPTIONS
error_message = 1.
IF sy-subrc <> 0.
t_return-message = t_return-message && '经销商客户修改信贷出错!'.
* OUT_RETURN-message = OUT_RETURN-message && '网点客户创建信贷出错!'.
ENDIF.
ELSE.
"可能创建成功了BP,但未创建成功Customer
ls_cvis_error = cvi_mapper=>get_instance( )->undo_assignments(
i_for_partners = lt_partnerguid_list ).
t_return-message = '经销商客户创建出错,经销商客户户部分数据出错,请检查是否是BP伙伴功能问题'.
t_return-type = 'S'.
* OUT_RETURN-message = '网点客户创建出错,网点客户部分数据出错,请检查是否是BP伙伴功能问题'.
* OUT_RETURN-type = 'S'.
ENDIF.
APPEND t_return.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDLOOP.
ENDFUNCTION.
阅读更多
*"----------------------------------------------------------------------
*"*"本地接口:
*" TABLES
*" T_INPUT STRUCTURE ZSD091
*" T_RETURN STRUCTURE BAPIRETC OPTIONAL
*"----------------------------------------------------------------------
* CONSTANTS:
* g_object_task_i TYPE bus_ei_object_task VALUE 'I'.
* g_object_task_c TYPE bus_ei_object_task VALUE 'C',
* g_object_task_m TYPE bus_ei_object_task VALUE 'M',
* g_object_task_u TYPE bus_ei_object_task VALUE 'U',
* g_object_task_d TYPE bus_ei_object_task VALUE 'D'.
DATA : g_object_task TYPE bus_ei_object_task.
data : g_partner type but000-partner.
DATA:
lt_data TYPE cvis_ei_extern_t,
ls_data TYPE cvis_ei_extern,
lt_return TYPE bapiretm,
ls_return TYPE bapireti,
ls_partner TYPE bus_ei_extern,
ls_customer TYPE cmds_ei_extern,
lt_roles TYPE bus_ei_bupa_roles_t,
ls_roles TYPE bus_ei_bupa_roles,
lt_addresses TYPE bus_ei_bupa_address_t,
ls_addresses TYPE bus_ei_bupa_address,
lt_phone TYPE bus_ei_bupa_telephone_t,
ls_phone TYPE bus_ei_bupa_telephone,
lv_partner_guid TYPE bu_partner_guid,
lt_tb003i TYPE TABLE OF tb003i,
ls_tb003i TYPE tb003i,
lv_error TYPE c,
ls_cvis_error TYPE cvis_error,
lt_partnerguid_list TYPE bu_partner_guid_t,
ls_partnerguid_list TYPE bu_partner_guid,
lt_customer_list TYPE cvis_cust_link_t,
ls_customer_list TYPE cvi_cust_link,
lt_but020 TYPE TABLE OF but020,
ls_but020 TYPE but020,
lt_n_ukmbp_cms TYPE TABLE OF ukm_s_bp_cms_upd,
lt_n_ukmbp_cms_sgm TYPE TABLE OF ukm_s_bp_cms_sgm_upd,
lt_ukm_chck_rule TYPE TABLE OF ukm_chck_rule,
lt_ukm_limit_rules TYPE TABLE OF ukm_limit_rules.
SELECT *
INTO TABLE lt_tb003i
FROM tb003i
WHERE rltgr LIKE 'Z%'.
SELECT *
INTO TABLE lt_ukm_chck_rule
FROM ukm_chck_rule.
SELECT *
INTO TABLE lt_ukm_limit_rules
FROM ukm_limit_rules.
LOOP AT t_input.
select
partner
into g_partner
from but000
where partner = t_input-partner
.
endselect.
IF g_partner is initial.
g_object_task = 'C'.
ELSE.
g_object_task = 'U'.
ENDIF.
CLEAR:
ls_data,
lt_data,
lv_error.
* if t_input-BU_GROUP = 'ZC01' .
* SELECT MAX( kunnr ) INTO @DATA(lv_partner) FROM kna1 WHERE kunnr LIKE '000001%' .
* ELSEIF t_input-BU_GROUP = 'ZC02' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000002%' .
* ELSEIF t_input-BU_GROUP = 'ZC04' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000003%' .
* ELSEIF t_input-BU_GROUP = 'ZC05' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000005%' .
* ELSEIF t_input-BU_GROUP = 'ZC06' .
* SELECT MAX( kunnr ) INTO lv_partner FROM kna1 WHERE kunnr LIKE '000009%' .
* endif.
" 10001~19999
"20001~29999
"公司编码
"3001~39999
"50001~59999
"900000
* IF t_input-BU_GROUP <> 'ZC03' .
* t_input-partner = lv_partner + 1 .
* ENDIF.
ls_partner-header-object_instance-bpartner = t_input-partner.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_partner-header-object_instance-bpartner
IMPORTING
output = ls_partner-header-object_instance-bpartner.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = t_input-kunnr
IMPORTING
output = t_input-kunnr.
SELECT SINGLE PARZA into @data(v_PARZA) from KNVP where KUNNR = @ls_partner-header-object_instance-bpartner and PARVW = 'Z1'.
* SELECT SINGLE but000~partner
* INTO @lv_partner
* FROM but000
* WHERE partner = @t_input-partner .
* IF sy-subrc = 0 .
*
* t_return-type = 'E'.
* t_return-message = '此经销商' && t_input-partner && '已存在!'.
*
* APPEND t_return.
*
* CONTINUE.
* ENDIF.
IF t_input-limit_rule IS INITIAL.
t_return-type = 'E'.
t_return-message = '信贷限额的规则不能为空!'.
APPEND t_return.
CONTINUE.
ELSE.
READ TABLE lt_ukm_limit_rules WITH KEY limit_rule = t_input-limit_rule
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
t_return-type = 'E'.
t_return-message = '信贷限额的规则' && t_input-limit_rule && '不存在!'.
APPEND t_return.
CONTINUE.
ENDIF.
ENDIF.
IF t_input-check_rule IS NOT INITIAL.
READ TABLE lt_ukm_chck_rule WITH KEY check_rule = t_input-check_rule
TRANSPORTING NO FIELDS .
IF sy-subrc <> 0.
t_return-type = 'E'.
t_return-message = '信用检查的规则' && t_input-check_rule && '不存在!'.
APPEND t_return.
CONTINUE.
ENDIF.
ENDIF.
"基本信息
* TRY .
* lv_partner_guid = cl_uuid_factory=>create_system_uuid( )->create_uuid_x16( ).
* IF lines( t_return ) > 0.
* t_return-MESSAGE_V2 = t_input-partner .
* MODIFY t_return .
* endif.
* CATCH cx_uuid_error.
*
* "返回消息
* ENDTRY.
* ls_partner-header-object_task = g_object_task_c.
ls_partner-header-object_task = g_object_task.
ls_partner-header-object_instance-bpartnerguid = ls_partner-header-object_instance-bpartner.
****业务合作伙伴数据的中心数据***********************************
SELECT SINGLE partner_guid
INTO lv_partner_guid
FROM but000
WHERE partner = ls_partner-header-object_instance-bpartner.
ls_partner-header-object_instance-bpartnerguid = lv_partner_guid.
ls_partner-central_data-common-data-bp_control-category = 2. "业务伙伴类别
ls_partner-central_data-common-data-bp_control-grouping = t_input-bu_group. "业务伙伴分组
* ls_partner-central_data-common-data-bp_centraldata-partnerexternal = t_input-adext.
ls_partner-central_data-common-data-bp_centraldata-title_key = '0003'. "称谓
ls_partner-central_data-common-data-bp_centraldata-searchterm1 = t_input-sortl. "检索项
ls_partner-central_data-common-datax-bp_centraldata-searchterm1 = abap_true.
ls_partner-central_data-common-data-bp_organization-name1 = t_input-name1. "名称
ls_partner-central_data-common-datax-bp_organization-name1 = abap_true.
CLEAR:lt_roles.
READ TABLE lt_tb003i WITH KEY rltgr = t_input-role
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
LOOP AT lt_tb003i INTO ls_tb003i WHERE rltgr = t_input-role.
CLEAR ls_roles.
* ls_roles-task = g_object_task_c.
ls_roles-task = g_object_task.
ls_roles-data_key = ls_tb003i-role.
APPEND ls_roles TO lt_roles.
ENDLOOP.
ELSE.
* ls_roles-task = g_object_task_c.
ls_roles-task = g_object_task.
ls_roles-data_key = t_input-role.
APPEND ls_roles TO lt_roles.
ENDIF.
ls_partner-central_data-role-roles = lt_roles.
CLEAR: ls_but020,ls_but020.
SELECT *
INTO TABLE lt_but020
FROM but020
WHERE partner = ls_partner-header-object_instance-bpartner.
"取最新地址guid
SORT lt_but020 BY partner addrnumber DESCENDING.
READ TABLE lt_but020 INTO ls_but020 INDEX 1.
"地址信息
CLEAR lt_addresses.
* ls_addresses-task = g_object_task_m.
ls_addresses-task = g_object_task.
ls_addresses-data_key-guid = ls_but020-address_guid.
ls_addresses-data-postal-data-city = t_input-ort01.
ls_addresses-data-postal-data-street = t_input-stras. "街道
ls_addresses-data-postal-data-country = t_input-land1. "国家
ls_addresses-data-postal-data-langu = t_input-spras. "语言
ls_addresses-data-postal-data-extaddressnumber = t_input-adext.
ls_addresses-data-postal-data-region = t_input-regio.
ls_addresses-data-postal-datax-city = abap_true.
ls_addresses-data-postal-datax-street = abap_true.
ls_addresses-data-postal-datax-country = abap_true.
ls_addresses-data-postal-datax-langu = abap_true.
ls_addresses-data-postal-datax-extaddressnumber = abap_true.
ls_addresses-data-postal-datax-region = abap_true.
"电话
CLEAR lt_phone.
* ls_phone-contact-task = g_object_task_c.
ls_phone-contact-task = g_object_task.
ls_phone-contact-data-telephone = t_input-telf1. "电话1
ls_phone-contact-datax-telephone = abap_true.
ls_phone-contact-datax-r_3_user = abap_true.
ls_phone-contact-datax-tel_no = abap_true.
APPEND ls_phone TO lt_phone.
"移动电话
CLEAR lt_phone.
* ls_phone-contact-task = g_object_task_c.
ls_phone-contact-task = g_object_task.
ls_phone-contact-data-telephone = t_input-mob_number. "电话1
ls_phone-contact-data-r_3_user = '3'. "移动电话
ls_phone-contact-datax-telephone = abap_true.
ls_phone-contact-datax-r_3_user = abap_true.
APPEND ls_phone TO lt_phone.
ls_addresses-data-communication-phone-phone = lt_phone.
APPEND ls_addresses TO lt_addresses.
ls_partner-central_data-address-addresses = lt_addresses.
****客户的通用数据***********************************
* ls_customer-header-object_task = g_object_task_c.
ls_customer-header-object_task = g_object_task.
ls_customer-header-object_instance-kunnr = ls_partner-header-object_instance-bpartner.
* ls_customer-header-object_instance-kunnr = t_input-kunnr.
ls_customer-central_data-central = VALUE #( data-kukla = t_input-kukla
data-bahns = t_input-bahns
data-bahne = t_input-bahne
data-katr1 = t_input-katr1
data-katr2 = t_input-katr2
data-katr3 = t_input-katr3
data-katr4 = t_input-katr4
data-katr5 = t_input-katr5
datax-kukla = abap_true
datax-bahns = abap_true
datax-bahne = abap_true
datax-katr1 = abap_true
datax-katr2 = abap_true
datax-katr3 = abap_true
datax-katr4 = abap_true
datax-katr5 = abap_true
).
****税率数据************************************************
ls_customer-central_data-tax_ind-tax_ind = VALUE #( (
* task = g_object_task_c
task = g_object_task
data_key-aland = 'CN'
data_key-tatyp = 'MWST'
data-taxkd = t_input-taxkd
datax-taxkd = abap_true )
).
****公司代码数据************************************************
ls_customer-company_data-company = VALUE #( (
* task = g_object_task_c
task = g_object_task
data_key-bukrs = t_input-bukrs
data-akont = t_input-akont
data-zuawa = t_input-zuawa
data-zterm = t_input-zterm
datax-akont = abap_true
datax-zuawa = abap_true
datax-zterm = abap_true )
).
****销售数据************************************************
ls_customer-sales_data-sales = VALUE #( (
* task = g_object_task_u
task = g_object_task
data_key-vkorg = t_input-vkorg
data_key-spart = t_input-spart
data_key-vtweg = t_input-vtweg
data-bzirk = t_input-bzirk
data-konda = t_input-konda
data-kalks = t_input-kalks
data-vsbed = t_input-vsbed
data-zterm = t_input-zterm1
data-waers = t_input-waers
data-ktgrd = t_input-ktgrd
data-inco1 = t_input-inco1
* data-inco1 = ''
data-inco2_l = t_input-inco2_l
***************************************** BY HAND 13074 KANGDI 20180625
data-inco2 = t_input-inco1
*
******************************************************************************
data-vwerk = t_input-vwerk
datax-bzirk = abap_true
datax-konda = abap_true
datax-kalks = abap_true
datax-vsbed = abap_true
datax-zterm = abap_true
datax-waers = abap_true
datax-ktgrd = abap_true
datax-inco1 = abap_true
datax-inco2_l = abap_true
***************************************** BY HAND 13074 KANGDI 20180625
*
datax-inco2 = abap_true
*
******************************************************************************
datax-vwerk = abap_true
functions-functions = VALUE #( (
* task = g_object_task_u
task = g_object_task
data_key-parvw = 'Z1'
data_key-PARZA = v_PARZA
data-partner = t_input-kunnr
datax-partner = abap_true )
"默认以下合作伙伴功能,必须全部传入。。。否则客户相关数据创建失败
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'AG'
* data-partner = t_input-kunnr
datax-partner = abap_true )
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'RE'
datax-partner = abap_true )
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'RG'
datax-partner = abap_true )
* ( task = g_object_task_u
( task = g_object_task
data_key-parvw = 'WE'
datax-partner = abap_true )
)
)
).
ls_data-partner = ls_partner.
ls_data-customer = ls_customer.
APPEND ls_data TO lt_data.
cl_md_bp_maintain=>maintain(
EXPORTING
i_data = lt_data
IMPORTING
e_return = lt_return ).
LOOP AT lt_return INTO ls_return.
LOOP AT ls_return-object_msg INTO t_return WHERE type = 'E' OR type = 'A'.
lv_error = abap_true.
APPEND t_return.
ENDLOOP.
ENDLOOP.
IF lv_error = space.
CLEAR t_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
* 根据伙伴GUID取出客户编号
CLEAR:
lt_partnerguid_list,
lt_customer_list.
ls_partnerguid_list = ls_partner-header-object_instance-bpartnerguid.
APPEND ls_partnerguid_list TO lt_partnerguid_list.
lt_customer_list = cvi_mapper=>get_instance( )->get_assigned_customers_for_bps(
i_partner_guids = lt_partnerguid_list ).
READ TABLE lt_customer_list INDEX 1 TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
CONCATENATE '经销商客户' t_input-partner '修改成功!' INTO t_return-message.
t_return-type = 'S'.
* OUT_RETURN-type = 'S'.
"创建客户信贷数据
lt_n_ukmbp_cms = VALUE #( ( partner = ls_partner-header-object_instance-bpartner
check_rule = t_input-check_rule
limit_rule = t_input-limit_rule
risk_class = t_input-risk_class
risk_class_chgdt = sy-datum
change_id = g_object_task
* change_id = g_object_task_c
)
).
lt_n_ukmbp_cms_sgm = VALUE #( ( partner = ls_partner-header-object_instance-bpartner
credit_limit = t_input-credit_limit
limit_chg_date = sy-datum
change_id = g_object_task
* change_id = g_object_task_c
)
).
CALL FUNCTION 'UKM_DB_UKMBP_CMS_EXECUTE'
TABLES
n_ukmbp_cms = lt_n_ukmbp_cms
n_ukmbp_cms_sgm = lt_n_ukmbp_cms_sgm
EXCEPTIONS
error_message = 1.
IF sy-subrc <> 0.
t_return-message = t_return-message && '经销商客户修改信贷出错!'.
* OUT_RETURN-message = OUT_RETURN-message && '网点客户创建信贷出错!'.
ENDIF.
ELSE.
"可能创建成功了BP,但未创建成功Customer
ls_cvis_error = cvi_mapper=>get_instance( )->undo_assignments(
i_for_partners = lt_partnerguid_list ).
t_return-message = '经销商客户创建出错,经销商客户户部分数据出错,请检查是否是BP伙伴功能问题'.
t_return-type = 'S'.
* OUT_RETURN-message = '网点客户创建出错,网点客户部分数据出错,请检查是否是BP伙伴功能问题'.
* OUT_RETURN-type = 'S'.
ENDIF.
APPEND t_return.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDLOOP.
ENDFUNCTION.
阅读更多
相关文章推荐
- IP地址/域名查询-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- Android中Volley的接口回调机制传回数据的示例
- 数据发送接口源码示例
- 手机号码查询-整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- 数据接口示例
- UNIX网络编程——为每个客户现场分派一个线程(简单示例参考)
- 身份证号码查询-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- Java编程通过list接口实现数据的增删改查代码示例
- [VB.NET]remoting客户和服务器共享成员或接口的示例
- SAP用户增强总结-采购订单建立增加客户数据增强示例
- 数据接口示例
- 快递查询(快递单号智能识别/快递公司+快递单号)-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- java读取其他服务接口返回的json数据示例代码
- 天气查询-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- SAP用户增强总结-采购订单建立增加客户数据增强示例
- jdbc,数据库案例:客户信息管理系统:业务层接口和实现,数据控制servlet
- 行政区划代码查询-完整提供 Demo 代码示例及数据专业且全面的 API 查询接口
- php curl请求接口并获取数据的示例代码
- Pull解析xml文件,并用HttpUtils请求数据接口(示例方法)
- 基于PHP的聚合数据车辆违章查询接口调用代码示例