批量创建客户主数据函数SD_CUSTOMER_MAINTAIN_ALL
分享一下批创建客户主数据函数:SD_CUSTOMER_MAINTAIN_ALL
TABLES:T077D,ZCITY,T005S,BNKA,ADRC,KNA1.
DATA: TMP_KTOKD(4) TYPE N,
TMP_REGIO(3) TYPE N.
DATA: CURLINE LIKE SY-TABIX.
**定义调用bapiSD_CUSTOMER_MAINTAIN_ALL创建的输入参数
DATA:I_KNA1 TYPE KNA1,
I_KNB1 TYPE KNB1,
I_BAPIADDR1 TYPE BAPIADDR1,
T_XKNBK LIKE FKNBK OCCURS 0 WITH HEADER LINE,
T_YKNBK LIKE FKNBK OCCURS 0 WITH HEADER LINE,
T_XKNVA LIKE FKNVA OCCURS 0 WITH HEADER LINE,
T_XKNVK LIKE FKNVK OCCURS 0 WITH HEADER LINE,
E_KUNNR LIKE KNA1-KUNNR,
O_KNA1 LIKE KNA1,
E_SD_CUST_1321_DONE TYPE C.
LOOP AT T_CUSTOMER.
**--客户主文件的一般数据
I_KNA1-KUNNR = T_CUSTOMER-KUNNR. "0003 0004 0009 人工授码
I_KNA1-KTOKD = T_CUSTOMER-KTOKD. "客户帐户组
I_KNA1-LIFNR = T_CUSTOMER-LIFNR. "供应商或债权人的帐号
I_KNA1-VBUND = T_CUSTOMER-VBUND. "贸易伙伴
I_KNA1-STCEG = T_CUSTOMER-STCEG. "纳税登记号
I_KNA1-RPMKR = T_CUSTOMER-RPMKR. "地区市场
IF T_CUSTOMER-KTOKD = '0002'. "国外客户
I_KNA1-CIVVE = 'X'.
ENDIF.
**--地址数据
I_BAPIADDR1-TITLE = T_CUSTOMER-TITLE. "标题文本
I_BAPIADDR1-NAME = T_CUSTOMER-NAME. "名称 1
I_BAPIADDR1-NAME_2 = T_CUSTOMER-NAME_2. "名称 2
I_BAPIADDR1-SORT1 = T_CUSTOMER-SORT1. "排序字段
I_BAPIADDR1-STR_SUPPL1 = T_CUSTOMER-STR_SUPPL1. "街道2
I_BAPIADDR1-STREET = T_CUSTOMER-STREET. "街道名
I_BAPIADDR1-CITY = T_CUSTOMER-CITY. "城市
I_BAPIADDR1-COUNTRY = T_CUSTOMER-COUNTRY. "国家代码
I_BAPIADDR1-REGION = T_CUSTOMER-REGION. "地区 (州、省、县)
I_BAPIADDR1-LANGU = T_CUSTOMER-LANGU. "语言代码
**--客户主数据 (银行细目)
T_XKNBK-KUNNR = T_CUSTOMER-KUNNR. "自动授码0001 0002为空 人工先授码0003 0004 0009不为空
T_XKNBK-BANKS = T_CUSTOMER-BANKS. "银行国家代码
T_XKNBK-BANKL = T_CUSTOMER-BANKL. "银行码
T_XKNBK-BANKN = T_CUSTOMER-BANKN. "帐号
T_XKNBK-KOINH = T_CUSTOMER-KOINH. "帐户持有人姓名
APPEND T_XKNBK.
**--客户主装货点
T_XKNVA-KUNNR = T_CUSTOMER-KUNNR. "自动授码0001 0002为空 人工先授码0003 0004 0009不为空
T_XKNVA-ABLAD = T_CUSTOMER-ABLAD. "卸货点
T_XKNVA-KNFAK = T_CUSTOMER-KNFAK. "客户的工厂日历
APPEND T_XKNVA.
**--客户主要联系伙伴
T_XKNVK-NAME1 = T_CUSTOMER-NAME1. "联系人名称
T_XKNVK-NAMEV = T_CUSTOMER-NAMEV. "电话
APPEND T_XKNVK.
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
EXPORTING
I_KNA1 = I_KNA1
* I_KNB1 =
I_BAPIADDR1 = I_BAPIADDR1
I_MAINTAIN_ADDRESS_BY_KNA1 = 'X'
PI_POSTFLAG = 'X'
I_FROM_CUSTOMERMASTER = ' '
IMPORTING
E_KUNNR = E_KUNNR
O_KNA1 = O_KNA1
TABLES
T_XKNBK = T_XKNBK
T_XKNVA = T_XKNVA
T_XKNVK = T_XKNVK
EXCEPTIONS
CLIENT_ERROR = 1
KNA1_INCOMPLETE = 2
KNB1_INCOMPLETE = 3
KNB5_INCOMPLETE = 4
KNVV_INCOMPLETE = 5
KUNNR_NOT_UNIQUE = 6
SALES_AREA_NOT_UNIQUE = 7
SALES_AREA_NOT_VALID = 8
INSERT_UPDATE_CONFLICT = 9
NUMBER_ASSIGNMENT_ERROR = 10
NUMBER_NOT_IN_RANGE = 11
NUMBER_RANGE_NOT_EXTERN = 12
NUMBER_RANGE_NOT_INTERN = 13
ACCOUNT_GROUP_NOT_VALID = 14
PARNR_INVALID = 15
BANK_ADDRESS_INVALID = 16
TAX_DATA_NOT_VALID = 17
NO_AUTHORITY = 18
COMPANY_CODE_NOT_UNIQUE = 19
DUNNING_DATA_NOT_VALID = 20
KNB1_REFERENCE_INVALID = 21
CAM_ERROR = 22
OTHERS = 23
.
* 当前处理出现异常,回滚操作
IF SY-SUBRC NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
SELECT SINGLE TEXT FROM T100 INTO T_RETURN-MESSAGE
WHERE SPRSL = '1'
AND ARBGB = SY-MSGID
AND MSGNR = SY-MSGNO.
DO 4 TIMES.
SEARCH T_RETURN-MESSAGE FOR '&'.
IF SY-SUBRC = 0.
CASE SY-INDEX.
WHEN 1.
REPLACE '&' WITH SY-MSGV1 INTO T_RETURN-MESSAGE.
WHEN 2.
REPLACE '&' WITH SY-MSGV2 INTO T_RETURN-MESSAGE.
WHEN 3.
REPLACE '&' WITH SY-MSGV3 INTO T_RETURN-MESSAGE.
WHEN 4.
REPLACE '&' WITH SY-MSGV4 INTO T_RETURN-MESSAGE.
ENDCASE.
CONDENSE T_RETURN-MESSAGE. "replace会将SY-MSGV&50位替换,压缩空格 ERR_TAB-MESSAGE也要足够长
ENDIF.
ENDDO.
T_RETURN-INDEX = CURLINE.
T_RETURN-TYPE = 'E'.
IF T_RETURN-MESSAGE IS INITIAL.
T_RETURN-MESSAGE = '客户创建未成功'.
ENDIF.
APPEND T_RETURN.
CLEAR T_RETURN.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF SY-SUBRC = 0.
T_RETURN-TYPE = 'S'.
T_RETURN-MESSAGE = O_KNA1-KUNNR."'客户创建成功'.
ELSE.
T_RETURN-TYPE = 'E'.
T_RETURN-MESSAGE = '客户创建未成功'.
ENDIF.
T_RETURN-INDEX = CURLINE.
APPEND T_RETURN.
CLEAR T_RETURN.
ENDIF.
CLEAR:T_CUSTOMER,T_RETURN,
I_KNA1,I_BAPIADDR1,E_KUNNR,O_KNA1,
T_XKNBK[],T_XKNVA[],T_XKNVK[].
ENDLOOP.
批量创建客户主数据函数SD_CUSTOMER_MAINTAIN_ALL的更多相关文章
- SAP Cloud for Customer客户主数据的重复检查-Levenshtein算法
SAP C4C的客户主数据创建时的重复检查,基于底层HANA数据库的模糊查找功能,根据扫描数据库中已有的数据检测出当前正在创建的客户主数据是否和数据库中记录有重复. 在系统里开启重复检查的配置: 在此 ...
- 【ABAP系列】SAP ABAP 利用class创建客户/供应商主数据
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 利用class创建 ...
- 【SD系列】SAP SD模块-创建供应商主数据BAPI
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD模块-创建供应商主数据B ...
- SAP MM01 创建物料主数据 [关注公众号后回复MM01获取更多资料]
操作内容 物料主数据,适用于所有有物料编码物料相关信息的系统维护 业务流程 新项目设计冻结后—M公司 PD用-物料编码申请表D-BOM Material Number Application部门内部 ...
- 批量创建AD测试账号
在现场中,有时候客户会要求做一下AD压力测试,需要批量创建很多AD用户.奉献此代码供各位参考. 1: <# 2: 3: .DESCRIPTION 4: 批量创建AD测试账号 5: 6 ...
- ABAP 生产订单的创建与修改函数
ABAP 生产订单的创建与修改函数转自http://www.cnblogs.com/aBaoRong/archive/2012/04/11/2441946.html 如果生产订单过多,可以批量创建 ...
- VMD_EI_API=>MAINTAIN_BAPI 去创建供应商主数据
转自 http://blog.sina.com.cn/s/blog_9ae2f2940102uxyp.html VMD_EI_API=>MAINTAIN_BAPI 去创建供应商主数据的部分数据代 ...
- 创建生产订单函数BAPI_PRODORD_CREATE
创建生产订单,创建订单长文本,订单下达 DATA:gs_bapi_pp_order_create TYPE bapi_pp_order_create. DATA:gt_bapi_order_key T ...
- VMware workstation批量创建虚拟机和自动化安装操作系统(一)
一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...
随机推荐
- c#调用c++的dll,错误篇
"LIPS.vshost.exe"(托管(v4.0.30319)): 已加载"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Sys ...
- ACM题目————Team Queue
Queues and Priority Queues are data structures which are known to most computer scientists. The Team ...
- c# ReaderWriterLock类
先前也知道,Monitor实现的是在读写两种情况的临界区中只可以让一个线程访问,那么如果业务中存在”读取密集型“操作,就 好比数据库一样,读取的操作永远比写入的操作多.针对这种情况,我们使用Monit ...
- easyui datagrid 可过滤行的数据表格 导出
//过滤栏表格导出数据 /* xukf * id datagrid id * url Action 路 ...
- 【Unix环境编程】select、poll、epoll机制的联系与区别
在linux设计并发网络程序,主要有如下几种模型:Apache模型(Process Per Connection, PPC).TPC(Thread Per Connection)模型,select机制 ...
- JAVA基础知识之Map集合
Map的内部结构Entry Set与Map的关系 Map的内部类Entry Map的通用方法及Map的简单用法 HashMap和HashTable的区别 HashMap和HashTable判断元素相等 ...
- Linux sync命令的作用
adb shell sync 写缓存命令——sync 在用reboot命令启动unix系统后,系统提示出错信息,部分应用程序不能正常工作.经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确 ...
- JAVA学习随笔-.class
类名.class是获得这个类所对应的Class实例.从面向对象的角度上来看,类也是对象,它们是类这个类对象,听起来有些抽象,但是在java中的实现就是所有的加载进来的类在虚拟机中都是一个java.la ...
- Android JUnit Test——批量运行测试代码
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ Android测试三要素 写Android测试用例有三要素,一是我们用的“安卓模拟器device” ...
- jquery easyui中文培训文档
目 录 1.... Accordion(可折叠标签)... 2 1.1 实例... 2 1.2 参数... 3 2.... DateBox(日期框)... 4 2 ...