客户主数据创建接口示例
FUNCTION zsd_091_new.
*"----------------------------------------------------------------------
*"*"本地接口:
*" TABLES
*" T_INPUT STRUCTURE ZSD091
*" T_RETURN STRUCTURE BAPIRETC OPTIONAL
*"----------------------------------------------------------------------
CONSTANTS:
g_object_task_i TYPE bus_ei_object_task VALUE 'I'.
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_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.
* t_input-BU_GROUP = 'ZC01' .
* t_input-ROLE = 'ZC01' .
* t_input-SORTL = '有效' .
* t_input-LAND1 = 'CN' .
* t_input-SPRAS = '1' .
* t_input-KUKLA = '10' .
* t_input-KATR1 = '1A' .
* t_input-KATR2 = '2D' .
* t_input-KATR3 = '3L' .
* t_input-KATR4 = '4J' .
* t_input-KATR5 = '5A' .
* t_input-LIMIT_RULE = 'B2B-EXIST' .
* t_input-RISK_CLASS = 'E' .
* t_input-CHECK_RULE = '01' .
* t_input-BUKRS = '1000' .
* t_input-AKONT = '1122010200'.
* t_input-ZUAWA = '001' .
* t_input-ZTERM = 'Z000' .
* t_input-VKORG = 1000 .
* t_input-VTWEG = '00' .
* t_input-SPART = '00' .
* t_input-BZIRK = '000002' .
* t_input-KALKS = 5 .
* t_input-WAERS = 'CNY' .
* t_input-VWERK = '1000' .
* t_input-VSBED = '01' .
* t_input-ZTERM1 = 'Z000' .
* t_input-KTGRD = '01' .
* t_input-TAXKD = 1 .
* t_input-INCO1 = 'CFR' .
* t_input-INCO2_L = 'SKG条款' .
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%' .
SELECT MAX( partner )
INTO @DATA(lv_partner)
FROM but000
WHERE partner 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 but000~partner
* INTO @lv_partner
* FROM but000
* WHERE partner = @t_input-partner .
SELECT SINGLE but000~partner
INTO @lv_partner
FROM but000
WHERE partner = @ls_partner-header-object_instance-bpartner .
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_i.
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_i.
ls_roles-data_key = ls_tb003i-role.
APPEND ls_roles TO lt_roles.
ENDLOOP.
ELSE.
ls_roles-task = g_object_task_i.
ls_roles-data_key = t_input-role.
APPEND ls_roles TO lt_roles.
ENDIF.
ls_partner-central_data-role-roles = lt_roles.
"地址信息
CLEAR lt_addresses.
ls_addresses-task = g_object_task_i.
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_i.
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_i.
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_i.
ls_customer-header-object_instance-kunnr = ls_partner-header-object_instance-bpartner.
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_i
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_i
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_i
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-inco2_l = t_input-inco2_l
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
datax-vwerk = abap_true
functions-functions = VALUE #( ( task = g_object_task_i
data_key-parvw = 'Z1'
data-partner = t_input-kunnr
datax-partner = abap_true )
"默认以下合作伙伴功能,必须全部传入。。。否则客户相关数据创建失败
( task = g_object_task_i
data_key-parvw = 'AG'
datax-partner = abap_true )
( task = g_object_task_i
data_key-parvw = 'RE'
datax-partner = abap_true )
( task = g_object_task_i
data_key-parvw = 'RG'
datax-partner = abap_true )
( task = g_object_task_i
data_key-parvw = 'WE'
datax-partner = abap_true ) )
)
).
ls_data-partner = ls_partner.
ls_data-customer = ls_customer.
ls_data-ensure_create-create_customer = abap_true.
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'.
t_return-id = t_input-partner.
* 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_i
)
).
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_i
)
).
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 = 'E'.
* OUT_RETURN-message = '网点客户创建出错,网点客户部分数据出错,请检查是否是BP伙伴功能问题'.
* OUT_RETURN-type = 'S'.
ENDIF.
APPEND t_return.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
ENDLOOP.
ENDFUNCTION.
客户主数据创建接口示例相关推荐
- SAP RFC_CVI_EI_INBOUND_MAIN BP主数据创建/修改示例(仅演示客户)
==> 此函数在指定ERP版本中已经废弃,请自行评估 2506041 - S4TWL - API RFC_CVI_EI_INBOUND_MAIN is not supported from th ...
- SAP ABAP 客户主数据的 查询-创建-修改-锁定 API或BAPI
文章目录 前言 范例代码 总结 前言 采用BDC创建客商主数据复用性低,且时常发生错误,比如字段必输性调整造成报错等 现通过API或BAPI去查询,创建,修改,锁定 以下为实际做的一个RFC接口 范例 ...
- SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...
- 公众号向特定用户主动推送消息_SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据...
这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上: https://blogs ...
- 第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
最近收到一位朋友的咨询: 作为第三方外部 Saas提供商,想要跟使用 SAP 系统的客户进行对接接口集成,需要了解哪些 SAP 的版本?和常见对接技术语言,方式,协议,注意事项? 首先这个问题范畴确实 ...
- sap客户主数据bapi_SAP SD实施笔记-客户主数据(一)
做实施项目,SD模块的静态主数据主要是客户主数据和价格主数据,这篇主要记录项目过程中关于客户主数据遇到的一些问题和看法. 业务 在HANA系统里,客户主数据和供应商主数据的创建.修改.查看都是用的T ...
- SAP Cloud for Customer客户主数据的重复检查-Levenshtein算法
SAP C4C的客户主数据创建时的重复检查,基于底层HANA数据库的模糊查找功能,根据扫描数据库中已有的数据检测出当前正在创建的客户主数据是否和数据库中记录有重复. 在系统里开启重复检查的配置: 在此 ...
- sap客户主数据bapi_【SD系列】SAP SD模块-创建供应商主数据BAPI
公众号:matinal 本文作者:matinal 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 关于创建供应商主数据BAPI:SD_CUSTOMER_MAINTAIN_ ...
- SAP创建客户主数据事务码和透明表
XK01与MK01的关系 问: 我最开始使用mk01创建供应商,开始就一直很奇怪为何不能创建"公司"级别的数据,还以为是可以为多个公司供货,在流程中输入公司就可以了.也就没有管它, ...
最新文章
- Rectangular inference 矩形推理
- IntelliJ IDEA 的安装、配置与使用
- “亚信科技杯”南邮第七届大学生程序设计竞赛之网络预赛 (K L题解)
- 趣味编程:C#中Specification模式的实现
- 中关键字 表示空类型_C语言数据类型
- python利用opencv去除图片logo_利用python和opencv批量去掉图片黑边
- Could not load oracle/sql/converter_xcharset/lx20354.glb.
- JavaScript学习之ES6学习之Promise
- ad如何设置pcb板子形状_FAQ031:如何将Altium的PCB板子导入CST
- linux下iconv命令转换字符编码
- lopatkin俄大神精简Windows 10 Pro 19042.487 20H2 PreRelease x86-x64 ZH-CN BIZ(2020-09-01)
- 卓有成效的管理者(笔记)——如何发挥人的长处
- 计算机思维在英语专业的应用,英语专业在计算机科学中的重要性
- 挖个大坑:挑战用纯micropython写一个nes模拟器(一)
- 宇宙APP简单的性能测试
- UCOS 杂项 笔记
- 装机大师无法发现linux硬盘,如何解决PE无法识别硬盘的问题
- git 常用的命令行
- 遗传算法之扇贝的进化(python代码实现)
- Java工作4年来应聘要16K最后没要,细节如下。。。