Create Customer in SAP though ABAP Function

Customer is a important Master Data in SD Module. Our Third party sales  Project Required that System will automatically Build  Customer information According to Vendor information.

I Find out a Sap Function in internet and exame in Our Sap System,It`s  called 'SD_CUSTOMER_MAINTAIN_ALL'  and could give me a correct Result. Below is my Sample Programe.

  DATA:L_CUSTOMER(15),
       L_CUSCURRENCY(15),
       L_SOURCECUSTOMER(15).
  L_SOURCECUSTOMER = 'PP01U1'.
  data:l_lifnr type lifnr,
       l_adrnr type adrnr,
       l_title type ad_title,
       l_name1 type ad_name1,
       l_name2 type ad_name2,
       l_name3 type ad_name3,
       l_name4 type ad_name4,
       l_street type AD_STREET,
       l_house_num1 type ad_hsnm1,
       l_post_code1 type AD_PSTCD1,
       l_country type LAND1,
       l_city type AD_CITY1,
       l_region type regio,
       l_sort1 type AD_SORT1,
       l_langu type spras,
       l_tel_number type ad_tlnmbr1,
       l_fax_number type ad_fxnmbr1,
       l_waers type waers,
       l_zterm type zterm,
       l_inco1 type inco1,
       l_inco2 type inco2.

  DATA:IN_KNA1 TYPE KNA1,
       IN_KNB1 TYPE KNB1,
       IN_KNVV TYPE KNVV,
       IN_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,
       T_XKNVI type FKNVI occurs 0 with header line,
       E_KUNNR LIKE KNA1-KUNNR,
       O_KNA1 LIKE KNA1,
       E_SD_CUST_1321_DONE TYPE C.
  data:begin of t_return occurs 0,
     type(3),
     message  type natxt,
     index type int4,
    end of t_return.
"Getting parameters  From Vendor table for Customer infor 
  select single lfa1~lifnr lfa1~adrnr adrc~TITLE  adrc~Name1 adrc~name2 adrc~name3 adrc~name4 adrc~street  adrc~HOUSE_NUM1
         adrc~POST_CODE1 adrc~country  adrc~CITY1  adrc~REGION adrc~sort1 adrc~langu adrc~tel_number adrc~fax_number
   into (l_lifnr,l_adrnr,l_title,l_name1,l_name2,l_name3,l_name4,l_street,l_house_num1,l_post_code1,l_country,l_city,l_region,
        l_sort1,l_langu,l_tel_number,l_fax_number)
    from lfa1 left join  adrc on  lfa1~adrnr = adrc~addrnumber
    where lfa1~LIFNR = L_SOURCECUSTOMER+0(10).
  IF sy-subrc = 0.
    select single waers zterm inco1 inco2
      into (l_waers,l_zterm,l_inco1,l_inco2)
      from lfm1
      where lifnr = L_SOURCECUSTOMER+0(10) and ekorg = 'S101'.
    IN_KNA1-KUNNR = 'ZC04U'.          "Customer Code
    IN_KNA1-KTOKD = 'ZC01'.          "Customer Account Group
"Company Level
    IN_KNB1-KUNNR = 'ZC04U'.
    IN_KNB1-BUKRS = 'S101'.         "Customer Code
    IN_KNB1-AKONT = '1122000000'.   "Finance Account
"Saler Orgnization
    IN_KNVV-KUNNR = 'ZC04U'.
    IN_KNVV-VKORG = '4011'.       "Sales Organization
    IN_KNVV-VTWEG = '10'.         "Distribution Channel
    IN_KNVV-SPART = '10'.         "Division
    IN_KNVV-VSBED = '01'.         "Shipping Condition
    IN_KNVV-WAERS = l_waers.      "Currency
    IN_KNVV-VWERK = 'S001'.       "Plant
    in_knvv-zterm = l_zterm.      "Term of Payment
    in_knvv-inco1 = l_inco1.
    in_knvv-inco2 = l_inco2.
    in_knvv-KALKS = '1'.          "Customer Price Process
    in_knvv-KTGRD = '01'.         "Account assignment group
"Address
    IN_BAPIADDR1-NAME = l_name1.
    IN_BAPIADDR1-NAME_2 = l_name2.
    IN_BAPIADDR1-NAME_3 = l_name3.
    IN_BAPIADDR1-NAME_4 = l_name4.
    IN_BAPIADDR1-STREET = l_street.
    IN_BAPIADDR1-STR_SUPPL1 = l_house_num1.
    IN_BAPIADDR1-COUNTRY = l_country.
    IN_BAPIADDR1-LANGU = l_langu.
    IN_BAPIADDR1-TEL1_NUMBR  = l_tel_number.
    IN_BAPIADDR1-FAX_NUMBER = l_fax_number.

"Tax information
    T_XKNVI-KUNNR = 'ZC04U'.
    T_XKNVI-ALAND = 'SG'.
    T_XKNVI-TATYP = 'MWST'.
    T_XKNVI-TAXKD = '0'.
    T_XKNVI-KZ = 'I'.
    APPEND T_XKNVI.
"Call Function
    CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
      EXPORTING
        I_KNA1                     = IN_KNA1
        I_KNB1                     = IN_KNB1
        I_KNVV                     = IN_KNVV
        I_BAPIADDR1                = IN_BAPIADDR1
        I_MAINTAIN_ADDRESS_BY_KNA1 = 'X'
        PI_POSTFLAG                = 'X'
        I_FROM_CUSTOMERMASTER      = ' '
      IMPORTING
        E_KUNNR                    = E_KUNNR
        O_KNA1                     = O_KNA1
      TABLES
        T_XKNVI                    = T_XKNVI
   "     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. 
        ENDIF.
      ENDDO.
      T_RETURN-INDEX = 1.
      T_RETURN-TYPE = 'E'.
      IF T_RETURN-MESSAGE IS INITIAL.
        T_RETURN-MESSAGE = 'Customer Build Success'.
      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 = 'Customer Build Fail'.
      ENDIF.
      T_RETURN-INDEX = 1.
      APPEND T_RETURN.
      CLEAR T_RETURN.
    ENDIF.
  endif.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值