客户主数据批导

目录

1.客户基础视图

2.客户长文本

3.客户销售视图

4.客户公司视图

5.税类别

6.客户联系人

7.客户信用数据


背景:ECC升级S4项目,迁移客户主数据

1.客户基础视图

LOOP AT GT_ITAB1  ASSIGNING <FS_ITAB1> WHERE SEL = 'X'.
    CLEAR:LV_BPARTNERGUID,LT_DATA,LS_DATA,LT_RETURN,LS_RETURN,LS_MSG,LS_PARTNER,LS_CUSTOMER,LT_ROLES,LS_ROLES,LT_TAXS,LS_TAXS,LT_ADDRESSES,LS_ADDRESSES,
        LT_PHONE,LS_PHONE,LT_FAX,LS_FAX,LT_SMTP,LS_SMTP,LV_GUID,LV_SPRAS,LT_REMARKS,LS_REMARKS,LS_TAXNUMBERS,LT_TAXNUMBERS,LS_CENTER,LS_CENTERX.

    <FS_ITAB1>-KUNNR = |{  <FS_ITAB1>-KUNNR ALPHA = IN }|.
    "查业务伙伴是否存在
    CLEAR LV_GUID.
    SELECT SINGLE PARTNER_GUID INTO LV_GUID
            FROM BUT000 WHERE PARTNER = <FS_ITAB1>-KUNNR.
    IF SY-SUBRC = 0.  "修改
      LV_BPARTNERGUID = LV_GUID.
      LV_OBJECT_TASK = 'U'.
      LV_TASK = 'U'.
      LV_FUNCTIONS_TASK = 'M'.
    ELSE.             "创建
      LV_OBJECT_TASK = 'I'.
      LV_TASK = 'I'.
      LV_FUNCTIONS_TASK = 'I'.
      TRY .
          CLEAR LV_BPARTNERGUID.
          LV_BPARTNERGUID = CL_UUID_FACTORY=>CREATE_SYSTEM_UUID( )->CREATE_UUID_X16( ).
        CATCH CX_UUID_ERROR.
          "返回消息
          <FS_ITAB1>-MESSAGE = '客户GUID创建失败!'.
          <FS_ITAB1>-ZCHECK = ICON_LED_RED.
      ENDTRY.
    ENDIF.

    CLEAR LS_PARTNER.
    LS_PARTNER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = <FS_ITAB1>-KUNNR.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_BPARTNERGUID.
    LS_CUSTOMER-HEADER-OBJECT_INSTANCE-KUNNR = <FS_ITAB1>-KUNNR.
    LS_CUSTOMER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = '2'.
    <FS_ITAB1>-KTOKD = |{ <FS_ITAB1>-KTOKD ALPHA = IN }|.
    IF <FS_ITAB1>-KTOKD = '0021'.
      LV_KTOKD = 'C021'.
    ELSEIF <FS_ITAB1>-KTOKD = '0001'.
      LV_KTOKD = 'C001'.
    ELSEIF <FS_ITAB1>-KTOKD = 'ZAVN'.
      LV_KTOKD = 'CAVN'.
    ELSEIF <FS_ITAB1>-KTOKD = '0003'.
      LV_KTOKD = 'C003'.
    ELSEIF <FS_ITAB1>-KTOKD = '0004'.
      LV_KTOKD = 'C004'.
    ELSEIF <FS_ITAB1>-KTOKD = '0002'.
      LV_KTOKD = 'C002'.
    ELSEIF <FS_ITAB1>-KTOKD = '0012'.
      LV_KTOKD = 'C012'.
    ELSEIF <FS_ITAB1>-KTOKD = 'CPDA'.
      LV_KTOKD = 'CPDA'.
    ENDIF.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = LV_KTOKD.               "科目组
    IF <FS_ITAB1>-ANRED = '0003'.
      LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY = <FS_ITAB1>-ANRED.          "称谓
    ENDIF.
*    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLELETTER = <FS_ITAB1>-ANRED.          "称谓
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1      = <FS_ITAB1>-NAME1.        "名称1
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME2      = <FS_ITAB1>-NAME2.        "名称1
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME3      = <FS_ITAB1>-NAME3.        "名称1
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME4      = <FS_ITAB1>-NAME4.        "名称1
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = <FS_ITAB1>-SORT1.        "搜索项1  必填校验
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM2 = <FS_ITAB1>-SORT2.        "搜索项1
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM1 = 'X'.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM2 = 'X'.
*    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLELETTER   = 'X'.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY   = 'X'.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME1      = 'X'.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME2      = 'X'.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME3      = 'X'.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME4      = 'X'.

    LS_REMARKS-DATA-COMM_NOTES = <FS_ITAB1>-REMARK.                                "客户联系人
    LS_REMARKS-DATA-LANGU_ISO = SY-LANGU.
    LS_REMARKS-DATAX-COMM_NOTES = 'X'.
    LS_REMARKS-DATAX-LANGU_ISO  = 'X'.
    LS_REMARKS-TASK = LV_TASK.
    APPEND LS_REMARKS TO LT_REMARKS.
    LS_ADDRESSES-DATA-REMARK-REMARKS = LT_REMARKS.

    "地址数据
    LS_ADDRESSES-TASK = LV_TASK.
    IF LV_TASK = 'U'.
      SELECT SINGLE ADDRESS_GUID INTO @DATA(LV_GUID1) FROM BUT020 WHERE PARTNER = @<FS_ITAB1>-KUNNR.
      LS_ADDRESSES-DATA_KEY-GUID = LV_GUID1.
    ENDIF.
*    LS_ADDRESSES-DATA_KEY-GUID = LV_GUID.
    LS_ADDRESSES-DATA-POSTAL-DATA-STR_SUPPL1   = <FS_ITAB1>-STR_SUPPL1.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-STR_SUPPL2   = <FS_ITAB1>-STR_SUPPL2.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-STR_SUPPL3   = <FS_ITAB1>-STR_SUPPL3.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-FLOOR        = <FS_ITAB1>-FLOOR.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-LOCATION     = <FS_ITAB1>-LOCATION.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-HOUSE_NO     = <FS_ITAB1>-HOUSE_NUM1.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-STREET       = <FS_ITAB1>-STREET.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-BUILDING     = <FS_ITAB1>-BUILDING.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-ROOM_NO      = <FS_ITAB1>-ROOMNUMBER.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-DISTRICT     = <FS_ITAB1>-CITY2.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-CITY         = <FS_ITAB1>-CITY1.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-POSTL_COD1   = <FS_ITAB1>-POST_CODE1.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-POSTL_COD2   = <FS_ITAB1>-POST_CODE2.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-REGION     = <FS_ITAB1>-REGIO.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-COUNTRY     = <FS_ITAB1>-LAND1.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-TRANSPZONE   = <FS_ITAB1>-TRANSPZONE.                 "
*    LS_ADDRESSES-DATA-POSTAL-DATA-TRANSPZONE = |{ LS_ADDRESSES-DATA-POSTAL-DATA-TRANSPZONE ALPHA = IN }|.            "pce生产不需要加前导零
    LS_ADDRESSES-DATA-POSTAL-DATA-TIME_ZONE    = <FS_ITAB1>-TIME_ZONE.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-TAXJURCODE   = <FS_ITAB1>-TXJCD.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-PO_BOX       = <FS_ITAB1>-PO_BOX.                 "
    LS_ADDRESSES-DATA-POSTAL-DATA-PO_BOX_CIT   = <FS_ITAB1>-PO_BOX_LOC.                 "
    CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
      EXPORTING
        INPUT            = <FS_ITAB1>-SPRAS
      IMPORTING
        OUTPUT           = LV_SPRAS
      EXCEPTIONS
        UNKNOWN_LANGUAGE = 1
        OTHERS           = 2.
    LS_ADDRESSES-DATA-POSTAL-DATA-LANGU   = LV_SPRAS.                           "语言

    LS_ADDRESSES-DATA-POSTAL-DATA-STANDARDADDRESS       = 'X'.                 "
    LS_ADDRESSES-DATA-POSTAL-DATAX-STR_SUPPL1  = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-STR_SUPPL2  = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-STR_SUPPL3  = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-FLOOR       = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-LOCATION    = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-HOUSE_NO    = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-STREET      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-BUILDING    = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-ROOM_NO     = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-DISTRICT    = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-CITY        = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-POSTL_COD1  = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-POSTL_COD2  = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-COUNTRY     = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-REGION      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-STANDARDADDRESS      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-LANGU      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-TRANSPZONE      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-TIME_ZONE      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-TAXJURCODE      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-PO_BOX      = 'X'.
    LS_ADDRESSES-DATA-POSTAL-DATAX-PO_BOX_CIT      = 'X'.

    LS_LOCATION-LOCATION_1 = <FS_ITAB1>-BBBNR.
    LS_LOCATION-LOCATION_2 = <FS_ITAB1>-BBSNR.
    LS_LOCATION-LOCATION_3 = <FS_ITAB1>-BUBKZ.
    LS_LOCATIONX-LOCATION_1 = 'X'.
    LS_LOCATIONX-LOCATION_2 = 'X'.
    LS_LOCATIONX-LOCATION_3 = 'X'.
    LS_ADDRESSES-DATA-ADDR_DEP_ATTR-DATA = LS_LOCATION.
    LS_ADDRESSES-DATA-ADDR_DEP_ATTR-DATAX = LS_LOCATIONX.

    LS_PHONE-CONTACT-TASK = LV_TASK.
    LS_PHONE-CONTACT-DATA-TELEPHONE = <FS_ITAB1>-TEL_NUMBER.                      "移动电话
    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.

    LS_SMTP-CONTACT-TASK = LV_TASK.
    LS_SMTP-CONTACT-DATA-E_MAIL = <FS_ITAB1>-SMTP_ADDR.                       "邮件
    LS_SMTP-CONTACT-DATAX-E_MAIL = ABAP_TRUE.
    APPEND LS_SMTP TO LT_SMTP.
    LS_ADDRESSES-DATA-COMMUNICATION-SMTP-SMTP = LT_SMTP.

    LS_REMARKS-DATA-COMM_NOTES = <FS_ITAB1>-REMARK.                                "客户联系人
    LS_REMARKS-DATA-LANGU_ISO = SY-LANGU.
    LS_REMARKS-DATAX-COMM_NOTES = 'X'.
    LS_REMARKS-DATAX-LANGU_ISO  = 'X'.
    LS_REMARKS-TASK = LV_TASK.
    APPEND LS_REMARKS TO LT_REMARKS.
    CLEAR :LS_REMARKS.
    LS_ADDRESSES-DATA-REMARK-REMARKS = LT_REMARKS.
    CLEAR LT_REMARKS.


*--传真 WD
    CLEAR:LS_FAX.
    REFRESH LT_FAX[].
    LS_FAX-CONTACT-TASK = LV_TASK.
    LS_FAX-CONTACT-DATA-FAX = <FS_ITAB1>-FAX_NUMBER .                             "传真
    LS_FAX-CONTACT-DATAX-FAX = ABAP_TRUE.
    APPEND LS_FAX TO LT_FAX .
    LS_ADDRESSES-DATA-COMMUNICATION-FAX-FAX = LT_FAX.

    APPEND LS_ADDRESSES TO LT_ADDRESSES.
    LS_PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES = LT_ADDRESSES.

    LS_CENTER-STCD1 = <FS_ITAB1>-STCD1.
    LS_CENTER-STCD2 = <FS_ITAB1>-STCD2.
    LS_CENTER-STCEG = <FS_ITAB1>-STCEG.
    LS_CENTER-LIFNR = <FS_ITAB1>-LIFNR .
    LS_CENTER-VBUND = <FS_ITAB1>-VBUND .
    LS_CENTER-AUFSD = <FS_ITAB1>-AUFSD .
    LS_CENTER-LIFSD = <FS_ITAB1>-LIFSD .
    LS_CENTER-FAKSD = <FS_ITAB1>-FAKSD .
    LS_CENTER-CASSD = <FS_ITAB1>-CASSD .
    LS_CENTERX-STCD1 = 'X'.
    LS_CENTERX-STCD2 = 'X'.
    LS_CENTERX-STCEG = 'X'.
    LS_CENTERX-LIFNR = 'X'.
    LS_CENTERX-VBUND = 'X'.
    LS_CENTERX-AUFSD = 'X'.
    LS_CENTERX-LIFSD = 'X'.
    LS_CENTERX-FAKSD = 'X'.
    LS_CENTERX-CASSD = 'X'.
    LS_CUSTOMER-CENTRAL_DATA-CENTRAL-DATA = LS_CENTER.
    LS_CUSTOMER-CENTRAL_DATA-CENTRAL-DATAX = LS_CENTERX.

    IF LV_TASK = 'I'.                                                       "创建角色
      CLEAR:LS_ROLES,LT_ROLES[].
      LS_ROLES-TASK     = 'I'.
      LS_ROLES-DATA_KEY = 'FLCU01'.
      APPEND LS_ROLES TO LT_ROLES.
      LS_PARTNER-CENTRAL_DATA-ROLE-ROLES = LT_ROLES.
    ENDIF.

    LS_DATA-PARTNER  = LS_PARTNER.
    LS_DATA-CUSTOMER = LS_CUSTOMER.
    APPEND LS_DATA TO LT_DATA.

    "正式执行
    CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
      EXPORTING
        I_DATA   = LT_DATA
*       I_EXT_DATA       =
      IMPORTING
        E_RETURN = LT_RETURN.

    CLEAR:LV_MSG,LS_DATA,LT_DATA,LS_PARTNER,LS_CUSTOMER.
    LOOP AT LT_RETURN INTO LS_RETURN.
      LOOP AT LS_RETURN-OBJECT_MSG INTO LS_MSG WHERE TYPE = 'E' OR TYPE = 'A'.
        CONCATENATE LV_MSG LS_MSG-MESSAGE INTO LV_MSG.
      ENDLOOP.
    ENDLOOP.
    IF LV_MSG IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = ABAP_TRUE.
      LV_NUM1 = LV_NUM1 + 1.
      IF LV_TASK <> 'I'.
        CONCATENATE '客户-' <FS_ITAB1>-KUNNR '扩展成功!' INTO <FS_ITAB1>-MESSAGE.
      ELSE.
        CONCATENATE '客户-' <FS_ITAB1>-KUNNR '创建成功!' INTO <FS_ITAB1>-MESSAGE.
      ENDIF.
      <FS_ITAB1>-ZCHECK = ICON_GREEN_LIGHT.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      <FS_ITAB1>-MESSAGE = LV_MSG.
      <FS_ITAB1>-ZCHECK = ICON_RED_LIGHT.
      LV_NUM2 = LV_NUM2 + 1.
    ENDIF.
    <FS_ITAB1>-KTOKD = |{ <FS_ITAB1>-KTOKD ALPHA = OUT }|.
    <FS_ITAB1>-KUNNR = |{ <FS_ITAB1>-KUNNR ALPHA = OUT }|.
  ENDLOOP.

2.客户长文本

  1. XD03查看客户销售视图的长文本
  2. 获取客户长文本方法(我是在ECC这边写了个接口,S4调用接口获取ECC的文本数据)
    ​
    FUNCTION GET_KUNNR_TEXT.
    *"----------------------------------------------------------------------
    *"*"局部接口:
    *"  TABLES
    *"      T_LINES STRUCTURE  ZSD_STXH_TLINE
    *"----------------------------------------------------------------------
      TABLES: ZSD_STXH_TLINE.
      DATA: LV_VKORG TYPE VKORG,
            LV_VTWEG TYPE VTWEG,
            LV_TWEG  TYPE VTWEG,
            LV_TDOBJECT TYPE TDOBJECT,
            LV_TDNAME   TYPE TDNAME,
            LV_TDID     TYPE  TDID,
            LV_TDSPRAS  TYPE TDSPRAS.
      DATA: LT_KNVV TYPE TABLE OF KNVV,
            LS_KNVV LIKE LINE OF LT_KNVV,
    *        LT_STXH_TLINE TYPE TABLE OF ZSD_STXH_TLINE,
    *        LS_STXH_TLINE TYPE ZSD_STXH_TLINE,
    *        LT_STXH TYPE TABLE OF STXH,
    *        LS_STXH TYPE STXH,
            LT_LINES TYPE TABLE OF TLINE,
            LS_LINES LIKE LINE OF LT_LINES.
    *  DATA: GT_STXH TYPE TABLE OF STXH,
    *        GS_STXH LIKE LINE OF GT_STXH.
    
      TYPES: BEGIN OF TY_STXH.
              INCLUDE TYPE STXH.
      TYPES:
      KUNNR TYPE KUNNR,
      VKORG TYPE VKORG,
      VTWEG TYPE VTWEG,
      SPART TYPE SPART.
      TYPES: END OF   TY_STXH.
    
      TYPES:BEGIN OF TY_ZSD_STXH_TLINE.
              INCLUDE TYPE ZSD_STXH_TLINE.
      TYPES END OF TY_ZSD_STXH_TLINE.
    
      DATA:LT_STXH TYPE TABLE OF TY_STXH,
            GT_STXH TYPE TABLE OF TY_STXH,
            GS_STXH TYPE TY_STXH.
      FIELD-SYMBOLS: <FS_VALUE> TYPE TY_STXH.
    
      DATA: LT_STXH_TLINE TYPE TABLE OF TY_ZSD_STXH_TLINE,
            LS_STXH_TLINE TYPE TY_ZSD_STXH_TLINE.
      FIELD-SYMBOLS: <FS_STXH_TLINE> TYPE TY_ZSD_STXH_TLINE.
    
      SELECT
        KUNNR
        VKORG
        VTWEG
        SPART
        FROM KNVV
        INTO CORRESPONDING FIELDS OF TABLE LT_KNVV.
    *    WHERE KUNNR = LV_KUNNR.
    
      "1.循环客户的销售数据
      LOOP AT LT_KNVV INTO LS_KNVV.
    
        DATA: LV_STR TYPE STRING.
        CONCATENATE LS_KNVV-KUNNR LS_KNVV-VKORG LS_KNVV-VTWEG LS_KNVV-SPART INTO LV_STR.
    
        SELECT
          TDOBJECT
          TDNAME
          TDID
          TDSPRAS
          FROM STXH
          INTO CORRESPONDING FIELDS OF TABLE LT_STXH
          WHERE TDNAME = LV_STR AND TDOBJECT = 'KNVV'.
    
        IF LT_STXH IS NOT INITIAL.
    
          LOOP AT LT_STXH ASSIGNING <FS_VALUE>.
            <FS_VALUE>-KUNNR = LS_KNVV-KUNNR.
            <FS_VALUE>-VKORG = LS_KNVV-VKORG.
            <FS_VALUE>-VTWEG = LS_KNVV-VTWEG.
            <FS_VALUE>-SPART = LS_KNVV-SPART.
          ENDLOOP.
    
        ENDIF.
    
    
    
        APPEND LINES OF LT_STXH TO GT_STXH.
        CLEAR LT_STXH[].
    
      ENDLOOP.
    
      "2.循环客户的文本抬头数据
      LOOP AT GT_STXH INTO GS_STXH.
    
    
        CALL FUNCTION 'READ_TEXT'
          EXPORTING
    *     CLIENT                        = SY-MANDT
            ID                            = GS_STXH-TDID
            LANGUAGE                      = GS_STXH-TDSPRAS
            NAME                          = GS_STXH-TDNAME
            OBJECT                        = GS_STXH-TDOBJECT
          TABLES
            LINES                         = LT_LINES
            .
        IF SY-SUBRC = 0.
    
          LOOP AT LT_LINES INTO LS_LINES.
    
            MOVE-CORRESPONDING LS_LINES TO LS_STXH_TLINE.
            LS_STXH_TLINE-TDID     = GS_STXH-TDID.
            LS_STXH_TLINE-TDSPRAS  = GS_STXH-TDSPRAS.
            LS_STXH_TLINE-TDNAME   = GS_STXH-TDNAME.
            LS_STXH_TLINE-TDOBJECT = GS_STXH-TDOBJECT.
            LS_STXH_TLINE-KUNNR    = GS_STXH-KUNNR.
            LS_STXH_TLINE-VKORG    = GS_STXH-VKORG.
            LS_STXH_TLINE-VTWEG    = GS_STXH-VTWEG.
            LS_STXH_TLINE-SPART    = GS_STXH-SPART.
    
    
            APPEND LS_STXH_TLINE TO LT_STXH_TLINE.
    
          ENDLOOP.
    
        ENDIF.
    
        CLEAR GS_STXH.
      ENDLOOP.
    
      APPEND LINES OF LT_STXH_TLINE TO T_LINES.
    
      MODIFY ZSD_STXH_TLINE FROM TABLE T_LINES.
    
    ENDFUNCTION.
    
    ​
  3. S4这边创建客户长文本
    FORM FRM_DATA_DR14.
    
      DATA: LT_RETURNX TYPE TABLE OF BAPIRET2.
      DATA: LV_MSG TYPE STRING.
    
      DATA: LV_RESULT TYPE P LENGTH 6 DECIMALS 2.
      DATA: LV_STXT TYPE STRING.
      DATA: LV_RESTEX TYPE CHAR8.
      DATA: LV_NUM  TYPE I,
            LV_NUM1 TYPE I,
            LV_NUM2 TYPE I.
      DATA: LT_TLINES      TYPE TABLE OF ZSD_STXH_TLINE,
            LT_COPY_TLINES TYPE TABLE OF ZSD_STXH_TLINE.
      DATA(LV_LINE1) = LINES( GT_ITAB14 ).
      DATA:LV_TDNAME TYPE THEAD-TDNAME.
    
      DATA: FLINES_TAB TYPE TABLE OF TLINE,
            FLINES_WA  TYPE TLINE.
    
      CALL FUNCTION 'GET_KUNNR_TEXT' DESTINATION GV_RFC
        TABLES
          T_LINES = LT_TLINES.
    
      LOOP AT GT_ITAB14 ASSIGNING FIELD-SYMBOL(<FS_ITAB14>) WHERE SEL = 'X' AND MESSAGE IS INITIAL AND ZCHECK IS INITIAL.
    
    *------显示导入进程 重点
        CLEAR:LV_RESULT,LV_RESTEX,LV_STXT.
        LV_NUM = LV_NUM + 1.
        LV_RESULT = LV_NUM  / LV_LINE1.
        LV_RESTEX = LV_RESULT * 100.
    
        CLEAR LT_RETURNX.
    
        CONCATENATE <FS_ITAB14>-KUNNR <FS_ITAB14>-VKORG <FS_ITAB14>-VTWEG <FS_ITAB14>-SPART INTO LV_TDNAME.
    
        LOOP AT LT_TLINES INTO DATA(LS_TLINE) WHERE TDNAME = LV_TDNAME.
    
          "将当前客户的所有文本添加到LT_COPY_TLINES当中
          APPEND LS_TLINE TO LT_COPY_TLINES.
          CLEAR: LS_TLINE.
    
        ENDLOOP.
    
        "根据TDID分组进行create_text
        LOOP AT LT_COPY_TLINES INTO DATA(LS_COPY_TLINES) GROUP BY ( TDID = LS_COPY_TLINES-TDID )
            ASCENDING  ASSIGNING FIELD-SYMBOL(<GROUP>).
    
          LOOP AT GROUP <GROUP> ASSIGNING FIELD-SYMBOL(<LS_MEMBER>).
            MOVE-CORRESPONDING <LS_MEMBER> TO FLINES_WA.
            APPEND FLINES_WA TO FLINES_TAB.
            CLEAR:FLINES_WA.
          ENDLOOP.
    
          "拿到当前用户某个TDID 的文本内容,然后调用create_text
          CALL FUNCTION 'CREATE_TEXT'
            EXPORTING
              FID         = <LS_MEMBER>-TDID
              FLANGUAGE   = <LS_MEMBER>-TDSPRAS
              FNAME       = LV_TDNAME
              FOBJECT     = 'KNVV'
              SAVE_DIRECT = 'X'
    *          FFORMAT     = '*'
              FFORMAT     = LS_COPY_TLINES-TDFORMAT
            TABLES
              FLINES      = FLINES_TAB
    *       EXCEPTIONS
    *         NO_INIT     = 1
    *         NO_SAVE     = 2
    *         OTHERS      = 3
            .
          IF SY-SUBRC <> 0.
            CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
            LV_NUM2 = LV_NUM2 + 1.
    
            <FS_ITAB14>-MESSAGE = '当前客户' && <FS_ITAB14>-KUNNR  &&'创建长文本失败'.
            <FS_ITAB14>-ZCHECK  = ICON_RED_LIGHT.
          ENDIF.
    
          CLEAR FLINES_TAB.
        ENDLOOP.
    
    
        IF <FS_ITAB14>-MESSAGE IS INITIAL AND LT_COPY_TLINES IS NOT INITIAL.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              WAIT = ABAP_TRUE.
          LV_NUM1 = LV_NUM1 + 1.
    
          <FS_ITAB14>-MESSAGE = '当前客户' && <FS_ITAB14>-KUNNR  &&'创建长文本成功'.
          <FS_ITAB14>-ZCHECK  = ICON_GREEN_LIGHT.
        ELSEIF LT_COPY_TLINES IS INITIAL.
          <FS_ITAB14>-MESSAGE = '当前客户' && <FS_ITAB14>-KUNNR  &&'无长文本'.
          <FS_ITAB14>-ZCHECK  = ICON_YELLOW_LIGHT.
        ENDIF.
    
        CLEAR:LT_COPY_TLINES.
    
        MODIFY GT_ITAB14 FROM <FS_ITAB14> TRANSPORTING MESSAGE ZCHECK WHERE KUNNR = <FS_ITAB14>-KUNNR.
        LV_STXT =   '正在拼命加载中 : ' &&   LV_RESTEX && '%'  && '总共' && LV_LINE1 && '条,现在批导第' && LV_NUM && '条,成功导入-' && LV_NUM1 && '条,失败-' && LV_NUM2 &&  '条'.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING
            PERCENTAGE = LV_RESULT
            TEXT       = LV_STXT.
    
    
      ENDLOOP.
    
    ENDFORM.

 3.客户销售视图

 LOOP AT GT_ITAB2  ASSIGNING <FS_ITAB2> WHERE SEL = 'X'.
    CLEAR:LV_BPARTNERGUID,LT_DATA,LS_DATA,LT_RETURN,LS_RETURN,LS_MSG,LS_PARTNER,LS_CUSTOMER,LT_ROLES,LS_ROLES,LT_FUNCTIONS, LS_FUNCTIONS ,
          LV_GUID,LT_SALES,LS_SALES ,LV_RLTYP,LV_KUNNR,LV_KTOKD.


    <FS_ITAB2>-KUNNR = |{  <FS_ITAB2>-KUNNR ALPHA = IN }|.
    "查业务伙伴是否存在
    CLEAR LV_GUID.
    SELECT SINGLE PARTNER_GUID INTO LV_GUID
            FROM BUT000 WHERE PARTNER = <FS_ITAB2>-KUNNR.
    IF SY-SUBRC <> 0.  "不存在
      <FS_ITAB2>-ZCHECK = ICON_RED_LIGHT.
      <FS_ITAB2>-MESSAGE = 'THE KUNNR DOES NOT EXIST'.
      LV_NUM2 = LV_NUM + 1.
      CONTINUE.
    ELSE.             "修改
      LV_OBJECT_TASK = 'U'.
      LV_TASK = 'U'.
      LV_FUNCTIONS_TASK = 'M'.
      LV_BPARTNERGUID = LV_GUID.
    ENDIF.

    CLEAR LS_PARTNER.
    LS_PARTNER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = <FS_ITAB2>-KUNNR.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_BPARTNERGUID.
    LS_CUSTOMER-HEADER-OBJECT_INSTANCE-KUNNR = <FS_ITAB2>-KUNNR.
    LS_CUSTOMER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = '2'.
    SELECT SINGLE KTOKD INTO LV_KTOKD FROM KNA1 WHERE KUNNR = <FS_ITAB2>-KUNNR.
    IF SY-SUBRC = 0.
      LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = LV_KTOKD.               "科目组
    ENDIF.
    SELECT SINGLE KUNNR INTO LV_KUNNR FROM KNVV WHERE KUNNR = <FS_ITAB2>-KUNNR AND VKORG = <FS_ITAB2>-VKORG
                                                 AND  VTWEG = <FS_ITAB2>-VTWEG AND SPART = <FS_ITAB2>-SPART.
    IF LV_KUNNR IS NOT INITIAL.
      LS_SALES-TASK = 'U'.
    ELSE.
      LS_SALES-TASK = 'I'.
    ENDIF.
    <FS_ITAB2>-VTWEG = |{  <FS_ITAB2>-VTWEG ALPHA = IN }|.
    <FS_ITAB2>-SPART = |{  <FS_ITAB2>-SPART ALPHA = IN }|.
    LS_SALES-DATA_KEY-VKORG = <FS_ITAB2>-VKORG.                     "销售组织
    LS_SALES-DATA_KEY-VTWEG = <FS_ITAB2>-VTWEG.                     "分销渠道
    LS_SALES-DATA_KEY-SPART = <FS_ITAB2>-SPART.                     "产品组

    LS_SALES-DATA-BZIRK     = <FS_ITAB2>-BZIRK.                     "销售区域
    LS_SALES-DATA-VKBUR     = <FS_ITAB2>-VKBUR.                     "销售办公室
    LS_SALES-DATA-VKGRP     = <FS_ITAB2>-VKGRP.                     "销售组
    LS_SALES-DATA-WAERS     = <FS_ITAB2>-WAERS.                     "货币

    LS_SALES-DATA-KONDA     = <FS_ITAB2>-KONDA.                     "价格组
    LS_SALES-DATA-KONDA = |{ LS_SALES-DATA-KONDA ALPHA = IN }|.
    LS_SALES-DATA-INCO1     = <FS_ITAB2>-INCO1.                     "国际贸易条款
    LS_SALES-DATA-INCO2     = <FS_ITAB2>-INCO2.                     "国际贸易条款2
    LS_SALES-DATA-KTGRD = |{ <FS_ITAB2>-KTGRD ALPHA = IN }|.        "科目分配组
    LS_SALES-DATA-ZTERM     = <FS_ITAB2>-ZTERM.                    "付款条件
    LS_SALES-DATA-VSBED = |{ <FS_ITAB2>-VSBED ALPHA = IN }|.        "装运条件
    LS_SALES-DATA-KALKS     = <FS_ITAB2>-KALKS.                     "客户定价过程
    LS_SALES-DATA-LPRIO    = <FS_ITAB2>-LPRIO.                     "
    LS_SALES-DATA-VERSG    = <FS_ITAB2>-VERSG.                     "
    LS_SALES-DATA-KDGRP    = <FS_ITAB2>-KDGRP.                     "
    LS_SALES-DATA-AWAHR    = <FS_ITAB2>-AWAHR.                     "
    LS_SALES-DATA-KALKS    = <FS_ITAB2>-KALKS.                     "
    LS_SALES-DATA-PLTYP    = <FS_ITAB2>-PLTYP.                     "
    LS_SALES-DATA-VWERK    = <FS_ITAB2>-VWERK.                     "
    LS_SALES-DATA-KZTLF    = <FS_ITAB2>-KZTLF.                     "
    LS_SALES-DATA-ANTLF    = <FS_ITAB2>-ANTLF.                     "
    LS_SALES-DATA-AUTLF    = <FS_ITAB2>-AUTLF.                     "
    LS_SALES-DATA-KZAZU    = <FS_ITAB2>-KZAZU.                     "
    LS_SALES-DATA-KKBER    = <FS_ITAB2>-KKBER.                     "
    LS_SALES-DATA-MRNKZ    = <FS_ITAB2>-MRNKZ.                     "
    LS_SALES-DATA-PRFRE    = <FS_ITAB2>-PRFRE.                     "
    LS_SALES-DATA-PERFK    = <FS_ITAB2>-PERFK.                     "
    LS_SALES-DATA-CASSD    = <FS_ITAB2>-CASSD.                     "
    LS_SALES-DATA-AUFSD    = <FS_ITAB2>-AUFSD.                     "
    LS_SALES-DATA-LIFSD    = <FS_ITAB2>-LIFSD.                     "
    LS_SALES-DATA-FAKSD    = <FS_ITAB2>-FAKSD.                     "
    LS_SALES-DATA-LOEVM    = <FS_ITAB2>-LOEVM.                     "

    LS_SALES-DATAX-KALKS     = 'X'.
    LS_SALES-DATAX-LPRIO     = 'X'.
    LS_SALES-DATAX-ZTERM     = 'X'.
    LS_SALES-DATAX-KTGRD     = 'X'.
    LS_SALES-DATAX-INCO1     = 'X'.
    LS_SALES-DATAX-INCO2     = 'X'.
    LS_SALES-DATAX-VSBED     = 'X'.
    LS_SALES-DATAX-VKBUR     = 'X'.
    LS_SALES-DATAX-BZIRK     = 'X'.
    LS_SALES-DATAX-VKGRP     = 'X'.
    LS_SALES-DATAX-WAERS     = 'X'.
    LS_SALES-DATAX-KONDA     = 'X'.
    LS_SALES-DATAX-VERSG     = 'X'.
    LS_SALES-DATAX-KDGRP     = 'X'.
    LS_SALES-DATAX-AWAHR     = 'X'.
    LS_SALES-DATAX-KALKS    = 'X'.
    LS_SALES-DATAX-PLTYP    = 'X'.
    LS_SALES-DATAX-VWERK    = 'X'.
    LS_SALES-DATAX-KZTLF    = 'X'.
    LS_SALES-DATAX-ANTLF    = 'X'.
    LS_SALES-DATAX-AUTLF    = 'X'.
    LS_SALES-DATAX-AUTLF    = 'X'.
    LS_SALES-DATAX-KKBER    = 'X'.
    LS_SALES-DATAX-MRNKZ    = 'X'.
    LS_SALES-DATAX-PRFRE    = 'X'.
    LS_SALES-DATAX-PERFK    = 'X'.
    LS_SALES-DATAX-CASSD    = 'X'.
    LS_SALES-DATAX-AUFSD    = 'X'.
    LS_SALES-DATAX-LIFSD    = 'X'.
    LS_SALES-DATAX-FAKSD    = 'X'.
    LS_SALES-DATAX-LOEVM    = 'X'.



******合作伙伴角色详细信息开始*****
    LOOP AT LT_ITAB5 INTO LS_ITAB5 WHERE KUNNR = <FS_ITAB2>-KUNNR AND VKORG = <FS_ITAB2>-VKORG
                                    AND  VTWEG = <FS_ITAB2>-VTWEG AND SPART = <FS_ITAB2>-SPART.
      LOOP AT GT_ITAB5 INTO GS_ITAB5 WHERE  KUNNR = LS_ITAB5-KUNNR AND VKORG = LS_ITAB5-VKORG
                                            AND VTWEG = LS_ITAB5-VTWEG AND SPART = LS_ITAB5-SPART
                                            AND KUNN2 <> ''."mod by luoyx on 20250417
*                                            AND PARVW <> 'AG' AND KUNN2 <> ''..
*        CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
*          EXPORTING
*            INPUT  = GS_ITAB5-PARVW
*          IMPORTING
*            OUTPUT = GS_ITAB5-PARVW.

*        IF GS_ITAB5-PARVW = 'AG'.
*          CONTINUE.
*        ENDIF.

        IF LS_SALES-TASK = 'I'.
          LS_FUNCTIONS-TASK = 'I'.
        ELSE.
          LS_FUNCTIONS-TASK = 'M'.
        ENDIF.
        LV_JS = LV_JS + 1.
        LS_FUNCTIONS-DATA_KEY-PARZA = LV_JS.
        LS_FUNCTIONS-DATAX-PARTNER = 'X'.
        IF GS_ITAB5-KUNN2 IS NOT INITIAL.
          LS_FUNCTIONS-DATA-PARTNER = GS_ITAB5-KUNN2.
          LS_FUNCTIONS-DATA-PARTNER = |{ LS_FUNCTIONS-DATA-PARTNER ALPHA = IN }|.
        ENDIF.
        LS_FUNCTIONS-DATA_KEY-PARVW = GS_ITAB5-PARVW.
        APPEND LS_FUNCTIONS TO LT_FUNCTIONS.
        CLEAR LS_FUNCTIONS.
      ENDLOOP.
      CLEAR LV_JS.
    ENDLOOP.
    LS_SALES-FUNCTIONS-CURRENT_STATE = 'X'.
    LS_SALES-FUNCTIONS-FUNCTIONS = LT_FUNCTIONS[].

    APPEND LS_SALES TO LT_SALES.
    LS_CUSTOMER-SALES_DATA-SALES = LT_SALES.

    LS_DATA-PARTNER  = LS_PARTNER.
    LS_DATA-CUSTOMER = LS_CUSTOMER.
    APPEND LS_DATA TO LT_DATA.

    "正式执行
    CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
      EXPORTING
        I_DATA   = LT_DATA
*       I_EXT_DATA       =
      IMPORTING
        E_RETURN = LT_RETURN.

    CLEAR:LV_MSG,LS_DATA,LT_DATA,LS_PARTNER,LS_CUSTOMER.
    LOOP AT LT_RETURN INTO LS_RETURN.
      LOOP AT LS_RETURN-OBJECT_MSG INTO LS_MSG WHERE TYPE = 'E' OR TYPE = 'A'.
        CONCATENATE LV_MSG LS_MSG-MESSAGE INTO LV_MSG.
      ENDLOOP.
    ENDLOOP.
    IF LV_MSG IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = ABAP_TRUE.
      LV_NUM1 = LV_NUM1 + 1.
      IF LV_TASK <> 'I'.
        CONCATENATE '客户-' <FS_ITAB2>-KUNNR '销售视图扩展成功!' INTO <FS_ITAB2>-MESSAGE.
      ELSE.
        CONCATENATE '客户-' <FS_ITAB2>-KUNNR '销售视图创建成功!' INTO <FS_ITAB2>-MESSAGE.
      ENDIF.
      CONCATENATE '客户-' <FS_ITAB2>-KUNNR '销售视图创建成功!' INTO <FS_ITAB2>-MESSAGE.
      <FS_ITAB2>-ZCHECK = ICON_GREEN_LIGHT.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      <FS_ITAB2>-MESSAGE = LV_MSG.
      <FS_ITAB2>-ZCHECK = ICON_RED_LIGHT.
      LV_NUM2 = LV_NUM2 + 1.
    ENDIF.
    <FS_ITAB2>-KUNNR = |{ <FS_ITAB2>-KUNNR ALPHA = OUT }|.

  ENDLOOP.

4.客户公司视图

 LOOP AT GT_ITAB3  ASSIGNING <FS_ITAB3> WHERE SEL = 'X'.
    CLEAR:LV_BPARTNERGUID,LT_DATA,LS_DATA,LT_RETURN,LS_RETURN,LS_MSG,LS_PARTNER,LS_CUSTOMER,LT_ROLES,LS_ROLES,LT_FUNCTIONS, LS_FUNCTIONS ,
          LV_GUID,LT_SALES,LS_SALES ,LV_RLTYP,LT_COMPANY,LS_COMPANY,LS_COMPANY_DATA,LS_DUNNIN,LT_DUNNIN[],LV_KUNNR.

    <FS_ITAB3>-KUNNR = |{  <FS_ITAB3>-KUNNR ALPHA = IN }|.
    "查业务伙伴是否存在
    CLEAR LV_GUID.
    SELECT SINGLE PARTNER_GUID INTO LV_GUID
            FROM BUT000 WHERE PARTNER = <FS_ITAB3>-KUNNR.
    IF SY-SUBRC = 0.  "修改
      LV_BPARTNERGUID = LV_GUID.
      LV_OBJECT_TASK = 'U'.
      LV_TASK = 'U'.
      LV_FUNCTIONS_TASK = 'M'.
    ELSE.             "创建
      LV_NUM2 = LV_NUM2 + 1.
      <FS_ITAB3>-ZCHECK = ICON_RED_LIGHT.
      <FS_ITAB3>-MESSAGE = 'THE KUNNR DOES NOT EXIST'.
      CONTINUE.
    ENDIF.

    CLEAR LS_PARTNER.
    LS_PARTNER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = <FS_ITAB3>-KUNNR.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_BPARTNERGUID.
    LS_CUSTOMER-HEADER-OBJECT_INSTANCE-KUNNR = <FS_ITAB3>-KUNNR.
    LS_CUSTOMER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = '2'.

    SELECT SINGLE KUNNR INTO LV_KUNNR FROM KNB1 WHERE KUNNR = <FS_ITAB3>-KUNNR AND BUKRS = <FS_ITAB3>-BUKRS.
    IF SY-SUBRC = 0.
      LS_COMPANY-TASK = 'U'.
    ELSE.
      LS_COMPANY-TASK = 'I'.
    ENDIF.
    LS_COMPANY-DATA_KEY-BUKRS = <FS_ITAB3>-BUKRS.
    LS_COMPANY-DATA-AKONT  = <FS_ITAB3>-AKONT.
    LS_COMPANY-DATA-ZTERM = <FS_ITAB3>-ZTERM.
    LS_COMPANY-DATA-FDGRV = <FS_ITAB3>-FDGRV.
    LS_COMPANY-DATA-XZVER = <FS_ITAB3>-XZVER.
    LS_COMPANY-DATA-ZWELS = <FS_ITAB3>-ZWELS.
    LS_COMPANY-DATA-XPORE = <FS_ITAB3>-XPORE.
    LS_COMPANY-DATA-XAUSZ = <FS_ITAB3>-XAUSZ.
    IF <FS_ITAB3>-BUSAB IS NOT INITIAL.
      LS_COMPANY-DATA-BUSAB = <FS_ITAB3>-BUSAB.
      LS_COMPANY-DATAX-BUSAB = 'X'.
    ENDIF.
    LS_COMPANY-DATAX-AKONT = 'X'.
    LS_COMPANY-DATAX-ZTERM = 'X'.
    LS_COMPANY-DATAX-FDGRV = 'X'.
    LS_COMPANY-DATAX-XZVER = 'X'.
    LS_COMPANY-DATAX-ZWELS = 'X'.
    LS_COMPANY-DATAX-XPORE = 'X'.
    IF <FS_ITAB3>-MAHNA IS NOT INITIAL.
      LS_DUNNIN-DATA-MAHNA = <FS_ITAB3>-MAHNA.
      LS_DUNNIN-DATAX-MAHNA = 'X'.
    ENDIF.
    IF <FS_ITAB3>-BUSAB1 IS NOT INITIAL.
      LS_DUNNIN-DATA-BUSAB = <FS_ITAB3>-BUSAB1.
      LS_DUNNIN-DATAX-BUSAB = 'X'.
    ENDIF.
    LS_DUNNIN-DATA-BUSAB = <FS_ITAB3>-BUSAB.
    LS_DUNNIN-DATA-MADAT = <FS_ITAB3>-MADAT.
    LS_DUNNIN-DATA-MAHNS = <FS_ITAB3>-MAHNS.
    LS_DUNNIN-DATA-MANSP = <FS_ITAB3>-MANSP.

    LS_DUNNIN-DATAX-BUSAB = 'X'.
    LS_DUNNIN-DATAX-MADAT = 'X'.
    LS_DUNNIN-DATAX-MAHNS = 'X'.
    LS_DUNNIN-DATAX-MANSP = 'X'.

    APPEND LS_DUNNIN TO LT_DUNNIN.
    CLEAR LS_DUNNIN.
    LS_COMPANY-DUNNING-DUNNING = LT_DUNNIN[].
    APPEND LS_COMPANY TO LT_COMPANY.
    LS_COMPANY_DATA-COMPANY = LT_COMPANY.
    LS_CUSTOMER-COMPANY_DATA = LS_COMPANY_DATA.
    "判断是否已有销售角色
    SELECT SINGLE RLTYP INTO LV_RLTYP FROM BUT100 WHERE PARTNER = <FS_ITAB3>-KUNNR AND RLTYP = 'FLCU00'.
    IF LV_RLTYP IS INITIAL.
      CLEAR:LS_ROLES,LT_ROLES[].
      LS_ROLES-TASK     = 'I'.
      LS_ROLES-DATA_KEY = 'FLCU00'.
      APPEND LS_ROLES TO LT_ROLES.
      LS_PARTNER-CENTRAL_DATA-ROLE-ROLES = LT_ROLES.
    ENDIF.

    LS_DATA-PARTNER  = LS_PARTNER.
    LS_DATA-CUSTOMER = LS_CUSTOMER.
    APPEND LS_DATA TO LT_DATA.

    "正式执行
    CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
      EXPORTING
        I_DATA   = LT_DATA
*       I_EXT_DATA       =
      IMPORTING
        E_RETURN = LT_RETURN.

    CLEAR:LV_MSG,LS_DATA,LT_DATA.
    LOOP AT LT_RETURN INTO LS_RETURN.
      LOOP AT LS_RETURN-OBJECT_MSG INTO LS_MSG WHERE TYPE = 'E' OR TYPE = 'A'.
        CONCATENATE LV_MSG LS_MSG-MESSAGE INTO LV_MSG.
      ENDLOOP.
    ENDLOOP.
    IF LV_MSG IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = ABAP_TRUE.
      LV_NUM1 = LV_NUM1 + 1.
      IF LV_TASK <> 'I'.
        CONCATENATE '客户-' <FS_ITAB3>-KUNNR '公司视图扩展成功!' INTO <FS_ITAB3>-MESSAGE.
      ELSE.
        CONCATENATE '客户-' <FS_ITAB3>-KUNNR '公司视图创建成功!' INTO <FS_ITAB3>-MESSAGE.
      ENDIF.
      <FS_ITAB3>-ZCHECK = ICON_GREEN_LIGHT.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      <FS_ITAB3>-MESSAGE = LV_MSG.
      <FS_ITAB3>-ZCHECK = ICON_RED_LIGHT.
      LV_NUM2 = LV_NUM2 + 1.
    ENDIF.
    <FS_ITAB3>-KUNNR = |{ <FS_ITAB3>-KUNNR ALPHA = OUT }|.

  ENDLOOP.

5.税类别

LOOP AT GT_ITAB4  ASSIGNING <FS_ITAB4> WHERE SEL = 'X'.
    CLEAR:LV_BPARTNERGUID,LT_DATA,LS_DATA,LT_RETURN,LS_RETURN,LS_MSG,LS_PARTNER,LS_CUSTOMER,
          LV_GUID,LS_TAX,LT_TAX,LV_KUNNR,LV_TASK,LV_TASK1,LS_TAXNUMBERS,LT_TAXNUMBERS[].

    CLEAR: LV_VATTAX,LV_CD1TAX,LV_CD2TAX.
*    SELECT SINGLE LAND1 FROM KNA1 INTO LV_LAND WHERE KUNNR = <FS_ITAB4>-KUNNR.
    SELECT SINGLE TAXTYPE FROM ZTFKTAXNUMTYPE_T WHERE SPRAS = 'E' AND LAND1 = @<FS_ITAB4>-LAND1  AND FLAG   = 'X'  INTO @LV_VATTAX.
    SELECT SINGLE TAXTYPE FROM ZTFKTAXNUMTYPE_T WHERE SPRAS = 'E' AND LAND1 = @<FS_ITAB4>-LAND1  AND FLAG2  = 'X'  INTO @LV_CD1TAX.
    SELECT SINGLE TAXTYPE FROM ZTFKTAXNUMTYPE_T WHERE SPRAS = 'E' AND LAND1 = @<FS_ITAB4>-LAND1  AND FLAG3  = 'X'  INTO @LV_CD2TAX.


    CLEAR LT_RETURNX[].
    IF <FS_ITAB4>-STCEG IS NOT INITIAL.
      PERFORM FRM_BAPI_BUPA_TAX_ADD TABLES LT_RETURNX
                                     USING <FS_ITAB4>-KUNNR
                                           LV_VATTAX
                                           <FS_ITAB4>-STCEG
                                           ''.
    ENDIF.
    IF <FS_ITAB4>-STCD1 IS NOT INITIAL.
      PERFORM FRM_BAPI_BUPA_TAX_ADD TABLES LT_RETURNX
                                     USING <FS_ITAB4>-KUNNR
                                           LV_CD1TAX
                                          <FS_ITAB4>-STCD1
                                           ''.
    ENDIF.
    IF <FS_ITAB4>-STCD2 IS NOT INITIAL.
      PERFORM FRM_BAPI_BUPA_TAX_ADD TABLES LT_RETURNX
                                     USING <FS_ITAB4>-KUNNR
                                           LV_CD2TAX
                                           <FS_ITAB4>-STCD2
                                           ''.
    ENDIF.

*    DATA(LV_INDEX) = 0.
*    LOOP AT LT_ITAB11 INTO DATA(LS_KNAS) WHERE KUNNR = <FS_ITAB4>-KUNNR.
*      LV_INDEX = LV_INDEX + 1.
*      CLEAR LV_TAX.
*      READ TABLE LT_ZTFKTAXNUMTYPE INTO LS_ZTFKTAXNUMTYPE WITH KEY LAND1 = LS_KNAS-LAND1 FLAG = 'X'.
*      IF SY-SUBRC = 0.
*        PERFORM FRM_BAPI_BUPA_TAX_ADD TABLES LT_RETURNX
*                                      USING  <FS_ITAB4>-KUNNR
*                                             LS_ZTFKTAXNUMTYPE-TAXTYPE
*                                             LS_KNAS-STCEG
*                                             ''.
*        IF LINE_EXISTS( LT_RETURNX[ TYPE = 'E' ] ) OR LINE_EXISTS( LT_RETURNX[ TYPE = 'A' ] ).
*          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*        ELSE.
*          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*            EXPORTING
*              WAIT = ABAP_TRUE.
*        ENDIF.
*      ENDIF.
*    ENDLOOP.
    "税号和税分类的取值逻辑




*    SELECT SINGLE TAXTYPE FROM ZTFKTAXNUMTYPE_T WHERE SPRAS = 'E' AND LAND1 = @LV_LAND  AND FLAG  = 'X'  INTO @LV_VATTAX.
*
*
*    "税号添加处理 (下面的BAPI  CVI_EI_INBOUND_MAIN生成税号不会写入KNA1表中)
*    CLEAR LT_RETURNX[].
*    CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
*      EXPORTING
*        BUSINESSPARTNER = <FS_ITAB4>-KUNNR
*        TAXTYPE         = LV_VATTAX
*        TAXNUMBER       = <FS_ITAB4>-STCEG
**       TAXNUMXL        = <FS_ITAB4>-STCEG
*      TABLES
*        RETURN          = LT_RETURNX.

    CLEAR LV_MSG.
    LOOP AT LT_RETURNX INTO DATA(LS_RETURNX) WHERE TYPE = 'E' OR TYPE = 'A'.
      CONCATENATE LV_MSG LS_RETURNX-MESSAGE INTO LV_MSG.
    ENDLOOP.

    IF LV_MSG IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = ABAP_TRUE.
      LV_NUM1 = LV_NUM1 + 1.
      IF LV_TASK <> 'I'.
        CONCATENATE '客户-' <FS_ITAB4>-KUNNR '税数据扩展成功!' INTO <FS_ITAB4>-MESSAGE.
      ELSE.
        CONCATENATE '客户-' <FS_ITAB4>-KUNNR '税数据创建成功!' INTO <FS_ITAB4>-MESSAGE.
      ENDIF.
      <FS_ITAB4>-ZCHECK = ICON_GREEN_LIGHT.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      <FS_ITAB4>-MESSAGE = LV_MSG.
      <FS_ITAB4>-ZCHECK = ICON_RED_LIGHT.
      LV_NUM2 = LV_NUM2 + 1.
    ENDIF.

    MODIFY GT_ITAB4 FROM <FS_ITAB4> TRANSPORTING MESSAGE ZCHECK WHERE KUNNR = <FS_ITAB4>-KUNNR
                                                                  AND LAND1 = <FS_ITAB4>-LAND1
                                                                  AND STCEG = <FS_ITAB4>-STCEG
                                                                  AND ALAND = <FS_ITAB4>-ALAND
                                                                  AND STCD1 = <FS_ITAB4>-STCD1
                                                                  AND STCD2 = <FS_ITAB4>-STCD2.

    <FS_ITAB4>-KUNNR = |{ <FS_ITAB4>-KUNNR ALPHA = OUT }|.
  ENDLOOP.
FORM FRM_BAPI_BUPA_TAX_ADD  TABLES P_RETURNX STRUCTURE BAPIRET2
                             USING   P_KUNNR
                                     P_TAX
                                     P_STCEG
                                     P_STCD.
  .
  CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
    EXPORTING
      BUSINESSPARTNER = P_KUNNR
      TAXTYPE         = P_TAX
      TAXNUMBER       = P_STCEG
      TAXNUMXL        = P_STCD
    TABLES
      RETURN          = P_RETURNX.

ENDFORM.

6.客户联系人

 LT_COPY = GT_ITAB8.

  DELETE ADJACENT DUPLICATES FROM GT_ITAB8 COMPARING KUNNR PARNR.

  SELECT * FROM ZSD_INT008 INTO TABLE @DATA(LT_SMTP_INI008).
  SELECT * FROM ZSD_ADR2 INTO TABLE @DATA(LT_ADR2).
  SELECT * FROM ZSD_ADR3 INTO TABLE @DATA(LT_ADR3).
  SELECT * FROM ZSD_ADR6 INTO TABLE @DATA(LT_ADR6).



  LOOP AT GT_ITAB8 ASSIGNING <FS_ITAB8> WHERE SEL = 'X' AND MESSAGE IS INITIAL.
    IF <FS_ITAB8>-S4_PARNR IS NOT INITIAL AND <FS_ITAB8>-S4_PARNR <> '0000000000'.
      <FS_ITAB8>-MESSAGE = '当前客户联系人已经添加!'.
      <FS_ITAB8>-ZCHECK  = ICON_RED_LIGHT.
      CONTINUE.
    ENDIF.



    LS_PERSON-FIRSTNAME = <FS_ITAB8>-NAMEV.
    LS_PERSON-LASTNAME  = <FS_ITAB8>-NAME1.
*    LS_PERSON-NATIONALITYISO  = <FS_ITAB8>-LAND1.
*    LS_PERSON-NAMCOUNTRYISO   = <FS_ITAB8>-LAND1.
    LS_PERSON-NATIONALITY   = <FS_ITAB8>-LAND1.
    LS_ADDRESS-COUNTRY = <FS_ITAB8>-LAND1.
    CLEAR: LT_BAPIADSMTP[],lt_TELEFONDATA[],Lt_FAXDATA.

*    LOOP AT LT_SMTP_INI008 INTO DATA(LS_SMTP_INI008) WHERE KUNNR = <FS_ITAB8>-KUNNR AND PARNR = <FS_ITAB8>-PARNR.
*      LS_BAPIADSMTP-E_MAIL = LS_SMTP_INI008-E_MAIL.
*      APPEND LS_BAPIADSMTP TO LT_BAPIADSMTP.
*      CLEAR LS_BAPIADSMTP.
*    ENDLOOP.
    LOOP AT LT_ADR6 INTO DATA(LS_ADR6) WHERE PERSNUMBER = <FS_ITAB8>-PRSNR.
      LS_BAPIADSMTP-E_MAIL = LS_ADR6-SMTP_ADDR.
      LS_BAPIADSMTP-STD_NO = LS_ADR6-FLGDEFAULT.
      APPEND LS_BAPIADSMTP TO LT_BAPIADSMTP.
      CLEAR LS_BAPIADSMTP.
    ENDLOOP.

    LOOP AT LT_ADR2 INTO DATA(LS_ADR2) WHERE PERSNUMBER = <FS_ITAB8>-PRSNR.
      lS_TELEFONDATA-TELEPHONE = LS_ADR2-TEL_NUMBER.
      lS_TELEFONDATA-R_3_USER = LS_ADR2-R3_USER.
      APPEND lS_TELEFONDATA TO lt_TELEFONDATA.
    ENDLOOP.


*    lS_TELEFONDATA-TELEPHONE = <FS_ITAB8>-TELF1.
*    APPEND lS_TELEFONDATA TO lt_TELEFONDATA.
    READ TABLE LT_ADR3 INTO DATA(LS_ADR3) WITH KEY PERSNUMBER = <FS_ITAB8>-PRSNR.
    IF  SY-SUBRC = 0.
      LS_FAXDATA-FAX    = LS_ADR3-FAX_NUMBER.
      APPEND LS_FAXDATA TO Lt_FAXDATA.
    ENDIF.

    LS_CENTRAL-SEARCHTERM2 = <FS_ITAB8>-PARNR.

    "1.先创建人员
    CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
      EXPORTING
*       BUSINESSPARTNEREXTERN              =
        PARTNERCATEGORY   = '1'
        PARTNERGROUP      = 'P001'
        CENTRALDATA       = LS_CENTRAL
        CENTRALDATAPERSON = LS_PERSON
        ADDRESSDATA       = LS_ADDRESS
      IMPORTING
        BUSINESSPARTNER   = <FS_ITAB8>-S4_PARNR
      TABLES
        FAXDATA           = Lt_FAXDATA
        TELEFONDATA       = lt_TELEFONDATA
        E_MAILDATA        = LT_BAPIADSMTP
        RETURN            = LT_RETURNX
*       ADDRESSDUPLICATES =
      .

    "2.添加角色
    CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
      EXPORTING
        BUSINESSPARTNER             = <FS_ITAB8>-S4_PARNR
        BUSINESSPARTNERROLECATEGORY = 'BUP001'
*       ALL_BUSINESSPARTNERROLES    = ' '
*       BUSINESSPARTNERROLE         =
*       DIFFERENTIATIONTYPEVALUE    =
*       VALIDFROMDATE               =
*       VALIDUNTILDATE              = '99991231'
      TABLES
        RETURN                      = LT_RETURNX.

*    LS_CONTP_CEN-FUNCTION   = <FS_ITAB8>-PAFKT.
    LS_CONTP_CEN-FUNCTION   = <FS_ITAB8>-PAKN4.  "属性9
    LS_CONTP_CEN-DEPARTMENT = <FS_ITAB8>-ABTNR.
*    LS_CONTP_CEN-TEL1_NUMBR = <FS_ITAB8>-TELF1.
*    LS_CONTP_CEN-FAX_NUMBER = <FS_ITAB8>-FAX_NUMBER.

    "3.关联联系人
    CALL FUNCTION 'BAPI_BUPR_CONTP_CREATE'
      EXPORTING
        BUSINESSPARTNER = <FS_ITAB8>-KUNNR
        CONTACTPERSON   = <FS_ITAB8>-S4_PARNR
*       VALIDFROMDATE   = '00010101'
*       VALIDUNTILDATE  = '99991231'
*       DEFAULTRELATIONSHIP          =
*       ADDRESSGUID     =
        CENTRALDATA     = LS_CONTP_CEN
*       ADDRESSDATA     =
*       DUPLICATE_MESSAGE_TYPE       =
      TABLES
        RETURN          = LT_RETURNX.

    IF  NOT ( LINE_EXISTS( LT_RETURNX[ TYPE = 'E' ] ) OR LINE_EXISTS( LT_RETURNX[ TYPE = 'A' ] ) ).
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = ABAP_TRUE.
      LV_NUM1 = LV_NUM1 + 1.

      <FS_ITAB8>-ZCHECK  = ICON_GREEN_LIGHT.
      <FS_ITAB8>-MESSAGE = '客户' && <FS_ITAB8>-KUNNR && '添加联系人' && <FS_ITAB8>-S4_PARNR && '成功!'.

      MOVE-CORRESPONDING <FS_ITAB8> TO LS_ZSD_INT008.
      MODIFY ZSD_INT008 FROM LS_ZSD_INT008.

    ELSE.
      CLEAR LV_MSG.
      LOOP AT LT_RETURNX INTO DATA(LS_RETURNX) WHERE TYPE = 'E' OR TYPE = 'A'.
        CONCATENATE LV_MSG LS_RETURNX-MESSAGE INTO LV_MSG.
      ENDLOOP.

      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      LV_NUM2 = LV_NUM2 + 1.
      <FS_ITAB8>-ZCHECK  = ICON_RED_LIGHT.
      <FS_ITAB8>-MESSAGE = '客户' && <FS_ITAB8>-KUNNR && '添加联系人失败!' && LV_MSG.
    ENDIF.
  ENDLOOP.

7.客户信用数据

LOOP AT GT_ITAB9  ASSIGNING <FS_ITAB9> WHERE SEL = 'X'.
    CLEAR:LV_BPARTNERGUID,LT_DATA,LS_DATA,LT_RETURN,LS_RETURN,LS_MSG,LS_PARTNER,LS_CUSTOMER,LT_ROLES,LS_ROLES,
          LV_GUID,LV_KUNNR,LV_TASK,LV_TASK1,LV_MSG1,LS_CMS_PROFILE,LT_CMS_SEGMENTS,LS_CMS_SEGMENTS.
*------显示导入进程 重点
    CLEAR:LV_RESULT,LV_RESTEX,LV_STXT.
    LV_NUM = LV_NUM + 1.
    LV_RESULT = LV_NUM  / LV_LINE1.
    LV_RESTEX = LV_RESULT * 100.

    <FS_ITAB9>-KUNNR = |{  <FS_ITAB9>-KUNNR ALPHA = IN }|.
    "查业务伙伴是否存在
    CLEAR LV_GUID.
    SELECT SINGLE PARTNER_GUID INTO LV_GUID
            FROM BUT000 WHERE PARTNER = <FS_ITAB9>-KUNNR.
    IF SY-SUBRC = 0.  "修改
      LV_BPARTNERGUID = LV_GUID.
      LV_OBJECT_TASK = 'U'.
      LV_TASK = 'U'.
      LV_FUNCTIONS_TASK = 'M'.
    ELSE.             "创建
      LV_NUM2 = LV_NUM2 + 1.
      <FS_ITAB9>-MESSAGE = 'THE KUNNR DOES NOT EXIST'.
      <FS_ITAB9>-ZCHECK = ICON_RED_LIGHT.
      CONTINUE.
    ENDIF.

    CLEAR LS_PARTNER.
    LS_PARTNER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = <FS_ITAB9>-KUNNR.
    LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_BPARTNERGUID.
    LS_CUSTOMER-HEADER-OBJECT_INSTANCE-KUNNR = <FS_ITAB9>-KUNNR.
    LS_CUSTOMER-HEADER-OBJECT_TASK = LV_OBJECT_TASK.
    LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = '2'.

    LS_CMS_PROFILE-DATA-RISK_CLASS = <FS_ITAB9>-CTLPC.              " 风险类
    LS_CMS_PROFILE-DATAX-RISK_CLASS = ABAP_TRUE.
    LS_CMS_PROFILE-DATA-LIMIT_RULE = 'STANDARD'.                    " 规则
    LS_CMS_PROFILE-DATA-CREDIT_GROUP = <FS_ITAB9>-SBGRP.            " 信用组
    LS_CMS_PROFILE-DATAX-CREDIT_GROUP = ABAP_TRUE.
    LS_CMS_PROFILE-DATAX-LIMIT_RULE = ABAP_TRUE.
*      LS_CMS_PROFILE-DATA-CHECK_RULE = 'Z1'.                          " 检查规则
    LS_CMS_PROFILE-DATA-CHECK_RULE = <FS_ITAB9>-CTLPC.                          " 检查规则
    LS_CMS_PROFILE-DATAX-CHECK_RULE = ABAP_TRUE.
    LS_CMS_SEGMENTS-DATA_KEY-CREDIT_SGMNT = <FS_ITAB9>-KKBER.       "信贷区域
    LS_CMS_SEGMENTS-DATA_KEY-PARTNER = <FS_ITAB9>-KUNNR.            "合作伙伴
    LS_CMS_SEGMENTS-DATA-CREDIT_LIMIT = <FS_ITAB9>-KLIMK.
    LS_CMS_SEGMENTS-DATA-XBLOCKED = <FS_ITAB9>-CRBLB.
    LS_CMS_SEGMENTS-DATAX-CREDIT_LIMIT = ABAP_TRUE.
    LS_CMS_SEGMENTS-DATAX-XBLOCKED = ABAP_TRUE.

    "判断信用段走什么方式
    SELECT SINGLE CREDIT_SGMNT INTO @DATA(LV_SGMNT) FROM UKMBP_CMS_SGM WHERE PARTNER = @<FS_ITAB9>-KUNNR AND CREDIT_SGMNT = @<FS_ITAB9>-KKBER.
    IF SY-SUBRC = 0.
      LS_CMS_SEGMENTS-TASK = 'M'.
    ELSE.
      LS_CMS_SEGMENTS-TASK = 'I'.
    ENDIF.
    SELECT SINGLE PARTNER INTO @DATA(LV_PARTNER) FROM BUT100 WHERE PARTNER = @<FS_ITAB9>-KUNNR AND RLTYP = 'UKM000'..
    IF SY-SUBRC <> 0.
      LS_ROLES-TASK     = 'I'.
      LS_ROLES-DATA_KEY = 'UKM000'.
      APPEND LS_ROLES TO LT_ROLES.
      CLEAR:LS_ROLES.
      LS_PARTNER-CENTRAL_DATA-ROLE-ROLES = LT_ROLES.
    ENDIF.

    APPEND LS_CMS_SEGMENTS TO LT_CMS_SEGMENTS.
    LS_PARTNER-UKMBP_DATA-PROFILE = LS_CMS_PROFILE.
    LS_PARTNER-UKMBP_DATA-SEGMENTS-SEGMENTS = LT_CMS_SEGMENTS.

    LS_DATA-PARTNER  = LS_PARTNER.
    LS_DATA-CUSTOMER = LS_CUSTOMER.
    APPEND LS_DATA TO LT_DATA.

    "正式执行
    CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
      EXPORTING
        I_DATA   = LT_DATA
*       I_EXT_DATA       =
      IMPORTING
        E_RETURN = LT_RETURN.

    CLEAR:LV_MSG,LS_DATA,LT_DATA.

    LOOP AT LT_RETURN INTO LS_RETURN.
      LOOP AT LS_RETURN-OBJECT_MSG INTO LS_MSG WHERE TYPE = 'E' OR TYPE = 'A'.
        CONCATENATE LV_MSG LS_MSG-MESSAGE INTO LV_MSG.
      ENDLOOP.
    ENDLOOP.

    IF LV_MSG IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = ABAP_TRUE.
      LV_NUM1 = LV_NUM1 + 1.
      IF LV_TASK <> 'I'.
        CONCATENATE '客户-' <FS_ITAB9>-KUNNR '信用数据扩展成功!' INTO <FS_ITAB9>-MESSAGE.
      ELSE.
        CONCATENATE '客户-' <FS_ITAB9>-KUNNR '信用数据创建成功!' INTO <FS_ITAB9>-MESSAGE.
      ENDIF.
      <FS_ITAB9>-ZCHECK = ICON_GREEN_LIGHT.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      <FS_ITAB9>-MESSAGE = LV_MSG.
      <FS_ITAB9>-ZCHECK = ICON_RED_LIGHT.
      LV_NUM2 = LV_NUM2 + 1.
    ENDIF.

    LV_STXT =   '正在拼命加载中 : ' &&   LV_RESTEX && '%'  && '总共' && LV_LINE1 && '条,现在批导第' && LV_NUM && '条,成功导入-' && LV_NUM1 && '条,失败-' && LV_NUM2 &&  '条'.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        PERCENTAGE = LV_RESULT
        TEXT       = LV_STXT.
    <FS_ITAB9>-KUNNR = |{ <FS_ITAB9>-KUNNR ALPHA = OUT }|.
  ENDLOOP.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值