【SD】客户主数据批导CVI_EI_INBOUND_MAIN

源代码

1主函数部分,根据接口传入的标识,判断

FUNCTION ZZSD_CUSTOMER_CREATE.
*"----------------------------------------------------------------------
*"*"本地接口
*"  IMPORTING
*"     VALUE(I_RLTGR) TYPE  BU_RLGROUP DEFAULT 'ZCUST'
*"     VALUE(I_BU_GROUP) TYPE  BU_GROUP DEFAULT 'Z001'
*"  EXPORTING
*"     VALUE(E_CODE) TYPE  MSGTY
*"     VALUE(E_MSG) TYPE  MSGTXT
*"  TABLES
*"      T_INPUT STRUCTURE  ZSSD0040
*"      T_OUTPUT STRUCTURE  ZSSD0041
*"----------------------------------------------------------------------
*"*"本地接口
*"  IMPORTING
*"     VALUE(I_RLTGR) TYPE  BU_RLGROUP DEFAULT 'ZCUST'
*"     VALUE(I_BU_GROUP) TYPE  BU_GROUP DEFAULT 'Z001'
*"  EXPORTING
*"     VALUE(E_CODE) TYPE  MSGTY
*"     VALUE(E_MSG) TYPE  MSGTXT
*"  TABLES
*"      T_INPUT STRUCTURE  ZSSD0040
*"      T_OUTPUT STRUCTURE  ZSSD0041
  " PROGRAMMED BY HANDYY 20181108   创建和修改日志记录同步到自建表ZTSD0041
*"----------------------------------------------------------------------
  MACRO_SAVE_LOG_BEFORE_PROC.     "日志保存——保存函数名称

  MACRO_SAVE_LOG_AFTER_PROC 'IN'"日志保存——输入参数

  DATA:S_INPUT TYPE ZSSD0040,
       T_IN    TYPE STANDARD TABLE OF ZSSD0040.

  DATAE_RTYPE TYPE MSGTY,
        E_RTMSG TYPE MSGTXT.


  LOOP AT T_INPUT INTO S_INPUT.
    APPEND S_INPUT TO T_IN.
    CASE S_INPUT-ZUDID.
      WHEN 'A'.
        "创建客户主数据(基本视图,公司视图,销售视图)
        PERFORM FRM_CUSTOMER_CREATGE TABLES T_IN
                                            T_OUTPUT
                                     
USING  I_RLTGR
                                            I_BU_GROUP
                                     
CHANGING E_CODE
                                              E_MSG
.
        CLEAR T_IN[].
      WHEN 'C'.
        "创建客户主数据(公司视图,销售视图)
        PERFORM FRM_CUSTOMER_CREATGE2 TABLES T_IN
                                            T_OUTPUT
                                     
USING  I_RLTGR
                                            I_BU_GROUP
                                     
CHANGING E_CODE
                                              E_MSG
.
        CLEAR T_IN[].
      WHEN 'B'.
        "修改客户主数据(修改账期【付款条件】字段)
        PERFORM FRM_CUSTOMER_CHANGE TABLES T_IN
                                           T_OUTPUT
                                    
USING  I_RLTGR
                                           I_BU_GROUP
                                    
CHANGING E_CODE
                                             E_MSG
.

        CLEAR T_IN[].
      WHEN OTHERS.
        E_CODE 'E'.
        E_MSG '您输入的标识错误,请重新输入'.
        CLEAR T_IN[].
    ENDCASE.
    CLEAR S_INPUT.
  ENDLOOP.

  E_RTYPE E_CODE.
  E_RTMSG E_MSG.

  MACRO_SAVE_LOG_AFTER_PROC 'OUT'"日志保存——输出参数

ENDFUNCTION.

2.客户主数据的创建(全部视图)


*----------------------------------------------------------------------*
***INCLUDE LZSDI001F03.           PROGRAMMED BY HANDYY 20181108
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  FRM_CUSTOMER_CREATGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_CUSTOMER_CREATGE TABLES PT_IN STRUCTURE ZSSD0040
                                 PT_OUTPUT 
STRUCTURE ZSSD0041
                          
USING   PV_RLTGR
                                  PV_BU_GROUP
                          
CHANGING PV_CODE
                                   PV_MSG
.

  TYPES:BEGIN OF TY_KNA1,
          NAME1 TYPE KNA1-NAME1,
          KUNNR TYPE KNA1-KUNNR,
        END OF TY_KNA1.

  DATALT_KNA1  TYPE STANDARD TABLE OF TY_KNA1,
        LT_KUNNR TYPE STANDARD TABLE OF TY_KNA1,
        LS_KUNNR TYPE TY_KNA1.

  DATALS_OUTPUT TYPE ZSSD0041,
        LT_RECORD TYPE STANDARD TABLE OF ZTSD0041"同步日志到自建表
        LS_RECORD TYPE ZTSD0041.


  DATA LT_PARTNERGUID_LIST TYPE BU_PARTNER_GUID_T,
         LS_PARTNERGUID_LIST LIKE LINE OF LT_PARTNERGUID_LIST.
  DATA LT_CUSTOMER_LIST TYPE CVIS_CUST_LINK_T,
         LS_CUSTOMER_LIST TYPE CVI_CUST_LINK.

  DATA LS_DATA   TYPE  CVIS_EI_EXTERN,
         LT_DATA   TYPE  CVIS_EI_EXTERN_T,
         LT_RETURN TYPE  BAPIRETM,
         LS_RETURN TYPE  BAPIRETI,
         LS_MSG    TYPE  BAPIRETC.

  DATA LS_PARTNER  TYPE BUS_EI_EXTERN,
         LS_CUSTOMER TYPE CMDS_EI_EXTERN.


  DATA LS_HEADER       TYPE CMDS_EI_HEADER,
         LS_CENTRAL_DATA TYPE CMDS_EI_CENTRAL_DATA,
         LS_COMPANY_DATA TYPE CMDS_EI_CMD_COMPANY,
         LS_SALES_DATA   TYPE CMDS_EI_CMD_SALES.

  DATA LT_ROLES         TYPE BUS_EI_BUPA_ROLES_T,
         LS_ROLES         TYPE BUS_EI_BUPA_ROLES,
         LT_IDENT_NUMBERS TYPE BUS_EI_BUPA_IDENTIFICATION_T,
         LS_IDENT_NUMBERS TYPE BUS_EI_BUPA_IDENTIFICATION,
         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,
         LT_FAX           TYPE BUS_EI_BUPA_FAX_T,
         LS_FAX           TYPE BUS_EI_BUPA_FAX,
         LT_SMTP          TYPE BUS_EI_BUPA_SMTP_T,
         LS_SMTP          TYPE BUS_EI_BUPA_SMTP,
         LS_REMARKS       TYPE BUS_EI_BUPA_COMREM,
         LT_REMARKS       TYPE BUS_EI_BUPA_COMREM_T,
         LT_COMPANY       TYPE CMDS_EI_COMPANY_T,
         LS_COMPANY       TYPE CMDS_EI_COMPANY,
         LT_SALES         TYPE CMDS_EI_SALES_T,
         LS_SALES         TYPE CMDS_EI_SALES,
         LT_FUNCTIONS     TYPE CMDS_EI_FUNCTIONS_T,
         LS_FUNCTIONS     TYPE CMDS_EI_FUNCTIONS,
         LS_CENTRAL       TYPE CMDS_EI_CMD_CENTRAL,
         LT_TAX_IND       TYPE CMDS_EI_TAX_IND_T,
         LS_TAX_IND       TYPE CMDS_EI_TAX_IND.

  FIELD-SYMBOLS<FS_DATA> TYPE ZSSD0040.


  DATA LV_BPARTNERGUID TYPE BU_PARTNER_GUID_BAPI.

  LOOP AT PT_IN ASSIGNING <FS_DATA>.    "创建时需要获取唯一标识ID
    TRY .
        LV_BPARTNERGUID CL_UUID_FACTORY=>CREATE_SYSTEM_UUID( )->CREATE_UUID_X16( ).
      CATCH CX_UUID_ERROR.
        "返回消息

    ENDTRY.
    IF <FS_DATA>-NAME1 IS INITIAL.   "不输入公司名称会导致后面的公司代码视图和销售你视图扩充失败,故此处创建时需要校验名称不为空
      PV_CODE 'E'.
      PV_MSG '请输入公司名称'.
    ELSE.
      SELECT
        NAME1
        
INTO TABLE LT_KNA1
        
FROM KNA1
        
WHERE NAME1 <FS_DATA>-NAME1.
      IF SY-SUBRC <> 0.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'    "客户编号加前导零
          EXPORTING
            INPUT  <FS_DATA>-KUNNR
          
IMPORTING
            OUTPUT <FS_DATA>-KUNNR.

        LS_PARTNER-HEADER-OBJECT_TASK 'I'.         "I插入 U更新 M修改 D删除 C当前状态
        LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID LV_BPARTNERGUID.                     "唯一标识
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY 2.               "业务伙伴类别
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING PV_BU_GROUP.    "业务伙伴分组


        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 <FS_DATA>-NAME1名称1
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME2 <FS_DATA>-NAME2名称2
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME3 <FS_DATA>-NAME3名称3
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME4 <FS_DATA>-NAME4名称4
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 <FS_DATA>-SORTL.  搜索项
        LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY =  <FS_DATA>-ANRED称谓


        LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME1 ABAP_TRUE.
        LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME2 ABAP_TRUE.
        LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME3 ABAP_TRUE.
        LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME4 ABAP_TRUE.
        LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM1 ABAP_TRUE.
        LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY ABAP_TRUE.

        "必须扩充业务伙伴角色分组下的全部业务伙伴角色才能扩充出该业务伙伴角色分组
        CLEAR:LS_ROLES,LT_ROLES.
        LS_ROLES-TASK 'I'.
        LS_ROLES-DATA_KEY 'FLCU00'.            "业务伙伴角色
*      LS_ROLES-DATA-ROLECATEGORY = 'FLCU00'.     "业务伙伴角色类别
        APPEND LS_ROLES TO LT_ROLES.

        CLEAR:LS_ROLES.
        LS_ROLES-TASK 'I'.
        LS_ROLES-DATA_KEY 'FLCU01'.            "业务伙伴角色
*      LS_ROLES-DATA-ROLECATEGORY = 'FLCU01'.     "业务伙伴角色类别
        APPEND LS_ROLES TO LT_ROLES.
        LS_PARTNER-CENTRAL_DATA-ROLE-ROLES LT_ROLES.

        CLEAR:LS_ADDRESSES,LT_ADDRESSES.
        LS_ADDRESSES-TASK 'I'.                "I插入 U更新 M修改 D删除 C当前状态
        LS_ADDRESSES-DATA-POSTAL-DATA-PO_CTRYISO <FS_DATA>-LAND1.   国家代码
        LS_ADDRESSES-DATA-POSTAL-DATA-CITY <FS_DATA>-ORT01.         "城市
        LS_ADDRESSES-DATA-POSTAL-DATA-REGION <FS_DATA>-REGIO.       地区代码
        LS_ADDRESSES-DATA-POSTAL-DATA-C_O_NAME <FS_DATA>-NAME1_LXR联系人姓名
        LS_ADDRESSES-DATA-POSTAL-DATA-STREET <FS_DATA>-STRAS.       街道
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  <FS_DATA>-LIFNR
          
IMPORTING
            OUTPUT LS_ADDRESSES-DATA-POSTAL-DATA-POSTL_COD1.


*      LS_ADDRESSES-DATA-POSTAL-DATA-POSTL_COD1 = <FS_DATA>-LIFNR.     "邮政编码
        LS_ADDRESSES-DATA-POSTAL-DATA-STR_SUPPL1 <FS_DATA>-STR_SUPPL1街道2
        LS_ADDRESSES-DATA-POSTAL-DATA-STR_SUPPL2 <FS_DATA>-STR_SUPPL2街道3
        LS_ADDRESSES-DATA-POSTAL-DATA-STR_SUPPL3 <FS_DATA>-STR_SUPPL3街道4

        CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
          EXPORTING
            INPUT            <FS_DATA>-SPRAS
          
IMPORTING
            OUTPUT           LS_ADDRESSES-DATA-POSTAL-DATA-LANGU
          
EXCEPTIONS
            UNKNOWN_LANGUAGE 1
            OTHERS           2.
        IF SY-SUBRC <> 0.
* Implement suitable error handling here
        ENDIF.

*      LS_ADDRESSES-DATA-POSTAL-DATA-LANGU = <FS_DATA>-SPRAS.           "语言

        LS_ADDRESSES-DATA-POSTAL-DATAX-PO_CTRYISO ABAP_TRUE国家代码
        LS_ADDRESSES-DATA-POSTAL-DATAX-CITY ABAP_TRUE.       "城市
        LS_ADDRESSES-DATA-POSTAL-DATAX-REGION ABAP_TRUE.     地区代码
        LS_ADDRESSES-DATA-POSTAL-DATAX-C_O_NAME ABAP_TRUE.   代收人
        LS_ADDRESSES-DATA-POSTAL-DATAX-POSTL_COD1 ABAP_TRUE.       邮政编码
        LS_ADDRESSES-DATA-POSTAL-DATAX-STREET ABAP_TRUE.           街道
        LS_ADDRESSES-DATA-POSTAL-DATAX-STR_SUPPL1 ABAP_TRUE.     街道2
        LS_ADDRESSES-DATA-POSTAL-DATAX-STR_SUPPL2 ABAP_TRUE.     街道3
        LS_ADDRESSES-DATA-POSTAL-DATAX-STR_SUPPL3 ABAP_TRUE.     街道4
        LS_ADDRESSES-DATA-POSTAL-DATAX-LANGU ABAP_TRUE.         "语言

        CLEAR:LS_PHONE,LT_PHONE.
        LS_PHONE-CONTACT-TASK 'I'.  "I插入 U更新 M修改 D删除 C当前状态
        LS_PHONE-CONTACT-DATA-TELEPHONE <FS_DATA>-TELF1.  "电话
        LS_PHONE-CONTACT-DATAX-TELEPHONE ABAP_TRUE.
        APPEND LS_PHONE TO LT_PHONE.
        CLEAR:LS_PHONE.
        LS_PHONE-CONTACT-TASK 'I'.  "I插入 U更新 M修改 D删除 C当前状态
        LS_PHONE-CONTACT-DATA-TELEPHONE <FS_DATA>-TELF2"手机
        LS_PHONE-CONTACT-DATA-R_3_USER '3'.    "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.

        CLEAR:LS_FAX,LT_FAX.
        LS_FAX-CONTACT-TASK 'I'.   "I插入 U更新 M修改 D删除 C当前状态
        LS_FAX-CONTACT-DATA-FAX = <

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值