*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(I_KUNNR) TYPE KNA1-KUNNR OPTIONAL
*" VALUE(I_INPUT) LIKE ZCRM_INPUT STRUCTURE ZCRM_INPUT
*" EXPORTING
*" REFERENCE(E_KUNNR) TYPE KNA1-KUNNR
*" REFERENCE(E_RESULT) TYPE CHAR100
*" TABLES
*" T_KNVP STRUCTURE FKNVP OPTIONAL
*"----------------------------------------------------------------------
DATA: WK_KNA1TYPEKNA1,
WK_KNB1TYPEKNB1, “客户主数据 (公司代码)
WK_KNVVTYPEKNVV, ”客户主记录销售数据
WK_ADRCTYPEBAPIADDR1, ”客户地址数据
WK_KNVDTYPEFKNVD, “客户主记录销售查询表
IT_KNVDTYPESTANDARDTABLEOFFKNVD,
WK_KNVITYPEFKNVI, ”客户主税收标识
IT_KNVITYPESTANDARDTABLEOFFKNVI,
WK_KNVPTYPEFKNVP, “客户主记录伙伴功能
IT_KNVPTYPESTANDARDTABLEOFFKNVP.
* 客户基本属性数据
WK_ADRC-TITLE = I_INPUT-ANRED.
WK_ADRC-NAME = I_INPUT-NAME1.
WK_ADRC-SORT1 = I_INPUT-SORTL.
WK_ADRC-CITY = I_INPUT-CITY.
WK_ADRC-STREET = I_INPUT-STREET.
WK_ADRC-POSTL_COD1 = I_INPUT-PSTLZ.
WK_ADRC-COUNTRY = I_INPUT-LAND1.
WK_ADRC-LANGU = I_INPUT-SPRAS.
CLEARWK_KNA1.
MOVE-CORRESPONDINGI_INPUTTOWK_KNA1.
WK_KNA1-KUNNR = I_KUNNR.
CLEARWK_KNB1.
MOVE-CORRESPONDINGI_INPUTTOWK_KNB1.
WK_KNB1-KUNNR = I_KUNNR.
WK_KNB1-XZVER ='X'.
CLEARWK_KNVV.
MOVE-CORRESPONDINGI_INPUTTOWK_KNVV.
WK_KNVV-KUNNR = I_KUNNR.
WK_KNVV-AWAHR =100.
REFRESH: IT_KNVD[],IT_KNVI.
* 判断客户销售数据是否存在
SELECTCOUNT(*)
FROMKNVV
WHEREKUNNR = I_KUNNR
ANDVKORG = I_INPUT-VKORG
ANDVTWEG = I_INPUT-VTWEG
ANDSPART = I_INPUT-SPART.
* 新增
IFSY-SUBRC <>0.
* 客户必填数据
CLEARWK_KNVD.
MOVE-CORRESPONDINGI_INPUTTOWK_KNVD.
WK_KNVD-KUNNR = I_KUNNR.
WK_KNVD-KZ ='I'.
APPENDWK_KNVDTOIT_KNVD.
CLEARWK_KNVI.
WK_KNVI-KUNNR = I_KUNNR.
WK_KNVI-ALAND = I_INPUT-LAND1.
WK_KNVI-TATYP ='MWST'.
WK_KNVI-TAXKD = I_INPUT-TAXKD.
WK_KNVI-KZ ='I'.
APPENDWK_KNVITOIT_KNVI.
* 合作伙伴维护
LOOPATT_KNVPINTOWK_KNVPWHEREKUNNRISNOTINITIAL.
WK_KNVP-KZ ='I'.
MODIFYT_KNVPFROMWK_KNVPTRANSPORTINGKZ.
ENDLOOP.
* 调用客户函数。
CALLFUNCTION'SD_CUSTOMER_MAINTAIN_ALL'
EXPORTING
I_KNA1 = WK_KNA1
I_KNB1 = WK_KNB1
I_KNVV = WK_KNVV
I_BAPIADDR1 = WK_ADRC "有此记录代表从此处维护公司代码标题,地址数据
I_MAINTAIN_ADDRESS_BY_KNA1 ='X'
PI_POSTFLAG ='X'
I_FROM_CUSTOMERMASTER ='X'
IMPORTING
E_KUNNR = E_KUNNR
TABLES
T_XKNVD = IT_KNVD ‘’创建主数据需要带上XKNVD内表
T_XKNVI = IT_KNVI
T_XKNVP = T_KNVP
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.
IFSY-SUBRC <>0.
CALLFUNCTION'BAPI_TRANSACTION_ROLLBACK'.
MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO
WITHSY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
INTOE_RESULT.
ELSEIFI_KUNNRISNOTINITIAL.
CALLFUNCTION'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT='X'.
CONCATENATEI_KUNNR'数据新增成功!'INTOE_RESULT.
ENDIF.
* 修改
ELSE.
* 客户必填数据
CLEARWK_KNVD.
MOVE-CORRESPONDINGI_INPUTTOWK_KNVD.
WK_KNVD-KUNNR = I_KUNNR.
WK_KNVD-KZ ='U'.
APPENDWK_KNVDTOIT_KNVD.
CLEARWK_KNVI.
WK_KNVI-KUNNR = I_KUNNR.
WK_KNVI-ALAND = I_INPUT-LAND1.
WK_KNVI-TATYP ='MWST'.
WK_KNVI-TAXKD = I_INPUT-TAXKD.
WK_KNVI-KZ ='U'.
APPENDWK_KNVITOIT_KNVI.
* 合作伙伴维护列表
LOOPATT_KNVPINTOWK_KNVPWHEREKUNNRISNOTINITIAL.
WK_KNVP-KZ ='U'.
MODIFYT_KNVPFROMWK_KNVPTRANSPORTINGKZ.
ENDLOOP.