送达方创建接口

image.png

NAME1	1 类型	BU_NAMEOR1	CHAR	40	0	组织名称 1
SEARCHTERM1	1 类型	BU_SORT1	CHAR	20	0	业务伙伴的搜索词 1
REGION	1 类型	REGIO	CHAR	3	0	地区(省/自治区/直辖市、市、县) 
ORT01	1 类型	ORT01_GP	CHAR	35	0	城市
STREET	1 类型	AD_STREET	CHAR	60	0	街道
ADR_NOTES	1 类型	AD_REMARK1	CHAR	50	0	地址注释

image.png

FUNCTION ZFM_SD_BP_WE.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IS_DATA) TYPE  ZSDS010
*"     VALUE(I_TESTRUN) TYPE  CHAR1 OPTIONAL
*"  EXPORTING
*"     VALUE(E_CODE) TYPE  CHAR1
*"     VALUE(E_MSG) TYPE  STRING
*"     VALUE(E_PARTNER) TYPE  BU_PARTNER
*"----------------------------------------------------------------------
  IF IS_DATA IS INITIAL.
    E_CODE = 'E'.
    E_MSG = '传入值不允许为空!'.
    RETURN.
  ENDIF.

  SELECT SINGLE PARTNER FROM BUT000
   WHERE NAME_ORG1 EQ @IS_DATA-NAME1
     AND BU_SORT1 EQ @IS_DATA-SEARCHTERM1
    INTO @E_PARTNER.
  IF SY-SUBRC EQ 0.
    E_CODE = 'S'.
    E_MSG = '当前名称BP已存在!'.
    RETURN.
  ENDIF.

  "创建BP基本视图
  DATA :
    LV_BPARTNER     TYPE BAPIBUS1006_HEAD-BPARTNER,
    LV_CATEGORY     TYPE BAPIBUS1006_HEAD-PARTN_CAT,
    LV_PARTNERGROUP TYPE BAPIBUS1006_HEAD-PARTN_GRP,
    LS_CENTRALDATA  TYPE BAPIBUS1006_CENTRAL,
    LS_ORG          TYPE BAPIBUS1006_CENTRAL_ORGAN,
    LS_ADDRESS      TYPE BAPIBUS1006_ADDRESS.

  "执行结果反馈
  DATA:LS_RETURN TYPE BAPIRET2,
       LT_RETURN TYPE STANDARD TABLE OF BAPIRET2.

  DATA:LS_ADDRESSNOTES TYPE  BAPIAD_REM,
       LT_ADDRESSNOTES TYPE STANDARD TABLE OF  BAPIAD_REM.

*销售组织数据
  DATA:LT_KNVV  TYPE TABLE OF KNVV, "销售组织
       LS_KNVV  TYPE KNVV, "销售组织
       LT_XKNVI TYPE TABLE OF FKNVI,
       LS_XKNVI TYPE FKNVI,
       LT_XKNVP  TYPE TABLE OF  FKNVP,
       LS_XKNVP TYPE  FKNVP.

*BP基本视图创建
  LV_CATEGORY = '2'.  " 1 .人员  2.组织   3.组
  LV_PARTNERGROUP    = 'Z004'. "BP组
  LS_ORG-NAME1 = LS_CENTRALDATA-SEARCHTERM2 = IS_DATA-NAME1.
  LS_ORG-NAME2 = LS_CENTRALDATA-SEARCHTERM1 = IS_DATA-SEARCHTERM1.
  LS_ADDRESS-COUNTRY = 'CN'.
  LS_ADDRESS-LANGU   = '1'.
  LS_ADDRESS-STREET  = IS_DATA-STREET && ' ' && IS_DATA-SEARCHTERM1."街道  20210806 by zenglimei 街道后面加上项目编号
  LS_ADDRESS-REGION  = IS_DATA-REGION. "地区码
  IF IS_DATA-ORT01 IS INITIAL.
    E_CODE = 'E'.
    E_MSG = '城市代码不允许为空!'.
    RETURN.
  ENDIF.
  SELECT SINGLE CITY_NAME FROM ADRCITYT
   WHERE CITY_CODE EQ @IS_DATA-ORT01
     AND COUNTRY EQ @LS_ADDRESS-COUNTRY
     AND LANGU EQ @SY-LANGU
    INTO @LS_ADDRESS-CITY.
  IF SY-SUBRC NE 0.
    LS_ADDRESS-CITY    = IS_DATA-ORT01.
  ENDIF.

  IF LS_ADDRESSNOTES-ADR_NOTES IS INITIAL.
    LS_ADDRESSNOTES-ADR_NOTES = IS_DATA-ADR_NOTES.   " 联系人及电话
    LS_ADDRESSNOTES-LANGU     = '1'.
    APPEND LS_ADDRESSNOTES TO LT_ADDRESSNOTES.
  ENDIF.

  CLEAR :LT_RETURN,LT_RETURN[].
  CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
    EXPORTING
      BUSINESSPARTNEREXTERN   = LV_BPARTNER
      PARTNERCATEGORY         = LV_CATEGORY
      PARTNERGROUP            = LV_PARTNERGROUP
      CENTRALDATA             = LS_CENTRALDATA
*     CENTRALDATAPERSON       =
      CENTRALDATAORGANIZATION = LS_ORG
*     CENTRALDATAGROUP        =
      ADDRESSDATA             = LS_ADDRESS
*     DUPLICATE_MESSAGE_TYPE  =
      ACCEPT_ERROR            = 'X'
    IMPORTING
      BUSINESSPARTNER         = E_PARTNER
    TABLES
*     TELEFONDATA             = LT_BAPIADTEL
*     FAXDATA                 =
*     TELETEXDATA             =
*     TELEXDATA               =
*     E_MAILDATA              =
*     RMLADDRESSDATA          =
*     X400ADDRESSDATA         =
*     RFCADDRESSDATA          =
*     PRTADDRESSDATA          =
*     SSFADDRESSDATA          =
*     URIADDRESSDATA          =
*     PAGADDRESSDATA          =
      ADDRESSNOTES            = LT_ADDRESSNOTES
*     COMMUNICATIONNOTES      =
*     COMMUNICATIONUSAGE      =
*     TELEFONDATANONADDRESS   =
*     FAXDATANONADDRESS       =
*     TELETEXDATANONADDRESS   =
*     TELEXDATANONADDRESS     =
*     E_MAILDATANONADDRESS    =
*     RMLADDRESSDATANONADDRESS           =
*     X400ADDRESSDATANONADDRESS          =
*     RFCADDRESSDATANONADDRESS           =
*     PRTADDRESSDATANONADDRESS           =
*     SSFADDRESSDATANONADDRESS           =
*     URIADDRESSDATANONADDRESS           =
*     PAGADDRESSDATANONADDRESS           =
*     COMMUNICATIONNOTESNONADDRESS       =
*     COMMUNICATIONUSAGENONADDRESS       =
      RETURN                  = LT_RETURN
*     ADDRESSDUPLICATES       =
    .
  IF E_PARTNER IS INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.  "如没返回BP号,则判断为失败,回滚数据
    E_CODE = 'E'.
    E_MSG = 'BP基础视图创建失败!'.
    DELETE LT_RETURN WHERE TYPE NE 'E' AND TYPE NE 'A'.
    LOOP AT LT_RETURN INTO LS_RETURN.
      E_MSG = E_MSG &&  LS_RETURN-MESSAGE.
    ENDLOOP.
    RETURN.
  ELSE.
    IF I_TESTRUN IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
      E_CODE = 'S'.
      E_MSG = 'BP基础视图创建成功!'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      E_CODE = 'S'.
      E_MSG = 'BP基础视图校验成功!'.
      RETURN.
    ENDIF.
  ENDIF.

*  扩展BP组
  CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
    EXPORTING
      BUSINESSPARTNER             = E_PARTNER
      BUSINESSPARTNERROLECATEGORY = 'FLCU01'
*     ALL_BUSINESSPARTNERROLES    = ' '
*     BUSINESSPARTNERROLE         =
*     DIFFERENTIATIONTYPEVALUE    =
*     VALIDFROMDATE               =
*     VALIDUNTILDATE              = '99991231'
    TABLES
      RETURN                      = LT_RETURN.
  IF LINE_EXISTS( LT_RETURN[ TYPE = 'E' ] ).
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    E_CODE = 'E'.
    E_MSG = E_MSG && 'BP组扩展失败!请手工处理!'.
    LOOP AT LT_RETURN INTO LS_RETURN.
      E_MSG = E_MSG &&  LS_RETURN-MESSAGE.
    ENDLOOP.
    RETURN.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'.
    E_MSG = E_MSG && '/BP组扩展成功!'.
  ENDIF.

  LS_XKNVP-KUNNR = LS_KNVV-KUNNR = E_PARTNER.
  LS_XKNVP-VKORG = LS_KNVV-VKORG = '1130'.
  LS_XKNVP-VTWEG = LS_KNVV-VTWEG = '50'.
  LS_XKNVP-SPART = LS_KNVV-SPART = '00'.
  APPEND LS_XKNVP TO LT_XKNVP.
  APPEND LS_KNVV TO LT_KNVV.
  CLEAR:LS_XKNVP,LS_KNVV.

  LS_XKNVP-KUNNR = LS_KNVV-KUNNR = E_PARTNER.
  LS_XKNVP-VKORG = LS_KNVV-VKORG = '1150'.
  LS_XKNVP-VTWEG = LS_KNVV-VTWEG = '50'.
  LS_XKNVP-SPART = LS_KNVV-SPART = '00'.
  APPEND LS_XKNVP TO LT_XKNVP.
  APPEND LS_KNVV TO LT_KNVV.
  CLEAR:LS_XKNVP,LS_KNVV.

  LS_XKNVP-KUNNR = LS_KNVV-KUNNR = E_PARTNER.
  LS_XKNVP-VKORG = LS_KNVV-VKORG = '2130'.
  LS_XKNVP-VTWEG = LS_KNVV-VTWEG = '50'.
  LS_XKNVP-SPART = LS_KNVV-SPART = '00'.
  APPEND LS_XKNVP TO LT_XKNVP.
  APPEND LS_KNVV TO LT_KNVV.
  CLEAR:LS_XKNVP,LS_KNVV.

  LS_XKNVP-KUNNR = LS_KNVV-KUNNR = E_PARTNER.
  LS_XKNVP-VKORG = LS_KNVV-VKORG = '4000'.
  LS_XKNVP-VTWEG = LS_KNVV-VTWEG = '50'.
  LS_XKNVP-SPART = LS_KNVV-SPART = '00'.
  APPEND LS_XKNVP TO LT_XKNVP.
  APPEND LS_KNVV TO LT_KNVV.
  CLEAR:LS_XKNVP,LS_KNVV.

  LS_XKNVP-KUNNR = LS_KNVV-KUNNR = E_PARTNER.
  LS_XKNVP-VKORG = LS_KNVV-VKORG = '3000'.
  LS_XKNVP-VTWEG = LS_KNVV-VTWEG = '20'.
  LS_XKNVP-SPART = LS_KNVV-SPART = '00'.
  APPEND LS_XKNVP TO LT_XKNVP.
  APPEND LS_KNVV TO LT_KNVV.
  CLEAR:LS_XKNVP,LS_KNVV.

  LS_XKNVP-KUNNR = LS_KNVV-KUNNR = E_PARTNER.
  LS_XKNVP-VKORG = LS_KNVV-VKORG = '3010'.
  LS_XKNVP-VTWEG = LS_KNVV-VTWEG = '20'.
  LS_XKNVP-SPART = LS_KNVV-SPART = '00'.
  APPEND LS_XKNVP TO LT_XKNVP.
  APPEND LS_KNVV TO LT_KNVV.
  CLEAR:LS_XKNVP,LS_KNVV.

  LS_XKNVI-KUNNR = E_PARTNER.
  LS_XKNVI-ALAND = 'CN'.
  LS_XKNVI-TATYP = 'MWST'.
  LS_XKNVI-TAXKD = '2'.
  LS_XKNVI-KZ = 'U'.
  APPEND LS_XKNVI TO LT_XKNVI.

*  扩展销售组织
  LOOP AT LT_KNVV INTO LS_KNVV.

    LS_KNVV-KUNNR = E_PARTNER.
    LS_KNVV-KALKS = '1'.
    LS_KNVV-WAERS = 'CNY'.

    SELECT SINGLE * FROM KNA1
     WHERE KUNNR EQ @E_PARTNER
      INTO @DATA(LS_KNA1).
    BREAK LUOLIN.
    CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
      EXPORTING
        I_KNA1                  = LS_KNA1
*       I_KNB1                  =
        I_KNVV                  = LS_KNVV
*       I_BAPIADDR1             =
*       I_BAPIADDR2             =
*       I_MAINTAIN_ADDRESS_BY_KNA1          = ' '
*       I_KNB1_REFERENCE        = ' '
*       I_FORCE_EXTERNAL_NUMBER_RANGE       = ' '
*       I_NO_BANK_MASTER_UPDATE = ' '
*       I_CUSTOMER_IS_CONSUMER  = ' '
*       I_RAISE_NO_BTE          = ' '
*       PI_POSTFLAG             = ' '
*       PI_CAM_CHANGED          = ' '
*       PI_ADD_ON_DATA          =
*       I_FROM_CUSTOMERMASTER   = ' '
*   IMPORTING
*       E_KUNNR                 =
*       O_KNA1                  =
*       E_SD_CUST_1321_DONE     =
      TABLES
*       T_XKNAS                 =
*       T_XKNBK                 =
*       T_XKNB5                 =
*       T_XKNVA                 =
*       T_XKNVD                 =
        T_XKNVI                 = LT_XKNVI
*       T_XKNVK                 =
*       T_XKNVL                 =
*       T_XKNVP                 = LT_XKNVP
*       T_XKNZA                 =
*       T_YKNAS                 =
*       T_YKNBK                 =
*       T_YKNB5                 =
*       T_YKNVA                 =
*       T_YKNVD                 =
*       T_YKNVI                 =
*       T_YKNVK                 =
*       T_YKNVL                 =
*       T_YKNVP                 =
*       T_YKNZA                 =
*       T_UPD_TXT               =
      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 EQ 0.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
      E_MSG = E_MSG && '/销售组织' && LS_KNVV-VKORG && LS_KNVV-VKORG &&'扩展成功!'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      E_CODE = 'E'.
      E_MSG = E_MSG && ',' && '销售组织扩展失败。请手工处理!'.
      RETURN.
    ENDIF.
    CLEAR LS_KNVV.
  ENDLOOP.

ENDFUNCTION.


关键词: ABAP SD

网友评论

发表评论