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.