sap客户主数据bapi_SAP Hybris Cloud for Customer接口:批量创建或更新客户主数据

本文介绍如何使用SAP Hybris Cloud for Customer的BAPI接口进行批量创建或更新客户主数据。通过设置不同的输入参数,如客户基本信息、地址、销售数据等,实现客户信息的增改操作。并详细展示了相关数据结构和处理逻辑。
摘要由CSDN通过智能技术生成

*"----------------------------------------------------------------------

*"*"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.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值