分享一下批创建客户主数据函数: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的更多相关文章

  1. SAP Cloud for Customer客户主数据的重复检查-Levenshtein算法

    SAP C4C的客户主数据创建时的重复检查,基于底层HANA数据库的模糊查找功能,根据扫描数据库中已有的数据检测出当前正在创建的客户主数据是否和数据库中记录有重复. 在系统里开启重复检查的配置: 在此 ...

  2. 【ABAP系列】SAP ABAP 利用class创建客户/供应商主数据

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 利用class创建 ...

  3. 【SD系列】SAP SD模块-创建供应商主数据BAPI

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD模块-创建供应商主数据B ...

  4. SAP MM01 创建物料主数据 [关注公众号后回复MM01获取更多资料]

    操作内容 物料主数据,适用于所有有物料编码物料相关信息的系统维护 业务流程 新项目设计冻结后—M公司 PD用-物料编码申请表D-BOM Material Number  Application部门内部 ...

  5. 批量创建AD测试账号

    在现场中,有时候客户会要求做一下AD压力测试,需要批量创建很多AD用户.奉献此代码供各位参考.   1: <# 2:   3: .DESCRIPTION 4: 批量创建AD测试账号 5:   6 ...

  6. ABAP 生产订单的创建与修改函数

    ABAP 生产订单的创建与修改函数转自http://www.cnblogs.com/aBaoRong/archive/2012/04/11/2441946.html   如果生产订单过多,可以批量创建 ...

  7. VMD_EI_API=>MAINTAIN_BAPI 去创建供应商主数据

    转自 http://blog.sina.com.cn/s/blog_9ae2f2940102uxyp.html VMD_EI_API=>MAINTAIN_BAPI 去创建供应商主数据的部分数据代 ...

  8. 创建生产订单函数BAPI_PRODORD_CREATE

    创建生产订单,创建订单长文本,订单下达 DATA:gs_bapi_pp_order_create TYPE bapi_pp_order_create. DATA:gt_bapi_order_key T ...

  9. VMware workstation批量创建虚拟机和自动化安装操作系统(一)

    一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...

随机推荐

  1. 验证ASP.NET页生命周期时间的触发顺序

    操作步骤: 在项目中创建文件lifeCycleValidation.aspx文件: 在文件lifeCycleValidation.aspx中添加代码,创建一个label控件,名字为lbText,代码如 ...

  2. htaccess分布式配置文件常用写法

    htaccess 写法 Apache中的.htaccess(或者”分布式配置”了针对目录改变配置的方法,即,在特定的文档目录中放置包含或多个指令的,以作用于此目录及其子目录.作为,所能的命令受到限制. ...

  3. java文件上传和下载

    简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到 ...

  4. JavaScript中的Array

    Array类型是ECMAScript 用的最多的类型了,ECMAScript中的数组每一项可以保存任何类型的数据,也就是说,数组的第一个项保存字符串,用第二个保存数值,用第三个位置来保存对象.二千数据 ...

  5. usb驱动开发11之设备生命线

    暂时先告别媒人,我们去分析各自的生命旅程,最后还会回到usb_device_match函数. 首先当你将usb设备连接在hub的某个端口上,hub检测到有设备连接了进来,它会为设备分配一个struct ...

  6. yii 10.16

    什么是框架? a)         框架就是一个半成品,一个帮助我们完成业务流程的程序 b)        框架融合了很多的功能,但是不会给我们具体功能模块 c)         我们需要在框架的基础 ...

  7. iOS ASIHTTPRequest 使用指南

    http://www.devdiv.com/iOS_iPhone-ASIHTTPRequest使用指南---_lt__lt_翻译稿_gt__gt_---连载-thread-93741-1-1.html

  8. HW6.9

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  9. 申请9位数QQ

    官网:QQ注册第一步:下面手机号不要填写 第二步:验证 第三步:开始填写手机号 注:不行就多试着几次就可以了,是不是很惊喜啊!(漏洞,被腾讯发现就不行了喽)

  10. CentOS7下解决yum install mysql-server 异常:No package mysql-server available.问题

    yum安装mysql-server没有可用包问题解决方法: step 1: wget http://repo.mysql.com/mysql-community-release-el7-5.noarc ...