创建客户主数据 CVI_EI_INBOUND_MAIN

**定义调用CVI_EI_INBOUND_MAIN创建的输入参数
DATA:LV_BPARTNERGUID TYPE BU_PARTNER_GUID_BAPI.
DATA:LT_RETURN_TAX TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
     LT_RETURN_FRG TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
DATA:LT_RETURN_UKMBP TYPE UKM_T_MONITOR_RETURN .

DATA : LS_PARTNER   TYPE BUS_EI_EXTERN,
       LS_CUSTOMER  TYPE CMDS_EI_EXTERN,
       LT_ADDRESSES TYPE BUS_EI_BUPA_ADDRESS_T,
       LS_ADDRESSES TYPE BUS_EI_BUPA_ADDRESS,
       LT_PHONE     TYPE BUS_EI_BUPA_TELEPHONE_T,
       LS_PHONE     TYPE BUS_EI_BUPA_TELEPHONE,
       LT_COMPANY   TYPE CMDS_EI_COMPANY_T,
       LS_COMPANY   TYPE CMDS_EI_COMPANY,
       LT_SALES     TYPE CMDS_EI_SALES_T,
       LS_SALES     TYPE CMDS_EI_SALES,
       LT_TAX_IND   TYPE CMDS_EI_TAX_IND_T,
       LS_TAX_IND   TYPE CMDS_EI_TAX_IND,
       LT_ROLES     TYPE BUS_EI_BUPA_ROLES_T,
       LS_ROLES     TYPE BUS_EI_BUPA_ROLES,
       LT_FUNCTIONS TYPE CMDS_EI_FUNCTIONS_T,
       LS_FUNCTIONS TYPE CMDS_EI_FUNCTIONS,
       LT_BANKS     TYPE BUS_EI_BUPA_BANKDETAIL_T,
       LS_BANKS     TYPE BUS_EI_BUPA_BANKDETAIL.

DATA : LS_HEADER       TYPE CMDS_EI_HEADER,
       LS_CENTRAL_DATA TYPE CMDS_EI_CENTRAL_DATA,
       LS_COMPANY_DATA TYPE CMDS_EI_CMD_COMPANY,
       LS_SALES_DATA   TYPE CMDS_EI_CMD_SALES.

DATA : LS_CENTRAL       TYPE CMDS_EI_CMD_CENTRAL.

DATA : LS_DATA   TYPE  CVIS_EI_EXTERN,
       LT_DATA   TYPE  CVIS_EI_EXTERN_T,
       LT_RETURN TYPE  BAPIRETM,
       LS_RETURN TYPE  BAPIRETI,
       LS_MSG    TYPE BAPIRETC.

* 根据伙伴GUID取出客户编号
DATA : LT_PARTNERGUID_LIST TYPE BU_PARTNER_GUID_T,
       LS_PARTNERGUID_LIST LIKE LINE OF LT_PARTNERGUID_LIST.
DATA : LT_CUSTOMER_LIST TYPE CVIS_CUST_LINK_T,
       LS_CUSTOMER_LIST TYPE CVI_CUST_LINK.

"创建信用等相关信息
DATA: IO_FACADE        TYPE REF TO CL_UKM_FACADE,
      IO_BUPA_FACTORY  TYPE REF TO CL_UKM_BUPA_FACTORY,
      IO_PARTNER       TYPE REF TO CL_UKM_BUSINESS_PARTNER,
      IO_ACCOUNT       TYPE REF TO CL_UKM_ACCOUNT,
      LW_BP_CREDIT_SGM TYPE UKM_S_BP_CMS_SGM.

DATA: LWA_UKM_S_BP_CMS TYPE UKM_S_BP_CMS.
DATA: LV_PARTNER      TYPE BU_PARTNER,
      LV_CREDIT_SGMNT TYPE UKM_CREDIT_SGMNT.

DATA : LTC_RETURN TYPE UKM_T_MONITOR_RETURN,
       LSC_RETURN TYPE UKM_S_MONITOR_RETURN,
       LV_MSG1    TYPE CHAR100.

" 标识模拟导入还是正式导入
CONSTANTS : C_PARVW1 TYPE PARVW VALUE 'SP', "售达方
            C_PARVW2 TYPE PARVW VALUE 'BP', "收票方
            C_PARVW3 TYPE PARVW VALUE 'PY', "付款方
            C_PARVW4 TYPE PARVW VALUE 'SH'. "送达方


DATA: EV_ZMSG  TYPE CHAR100,
      STATUS   TYPE CHAR100,
      EV_ZTYPE TYPE C,
      KUNNR    TYPE KUNNR,
      BUKRS    TYPE BUKRS,
      AKONT    TYPE AKONT,
      VKORG    TYPE VKORG.


****数据处理,开始创建客户主数据*************************************************

"创建伙伴GUID
TRY .
    LV_BPARTNERGUID = CL_UUID_FACTORY=>CREATE_SYSTEM_UUID( )->CREATE_UUID_X16( ).
  CATCH CX_UUID_ERROR.
    "返回消息
    EV_ZMSG = '客户GUID创建失败!'.
    STATUS = 'S03'.
    EV_ZTYPE = 'E'.
    EXIT.
ENDTRY.

CHECK LV_BPARTNERGUID IS NOT INITIAL.
KUNNR = 'ZTTJ555'.

LS_PARTNER-HEADER-OBJECT_TASK = 'I'.
LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_BPARTNERGUID.
LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = KUNNR ."客户号 导入的客户代码
LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = 2.     "业务伙伴类别
LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = 'Z001'. "KTOKD.  " 账户组
LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 = '深圳市顶呱呱有限公司'."NAME1. " 客户名称
LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = '顶呱呱'."SORTL. "搜素词
LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY =  '0003'.   "称谓
LS_PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY = ABAP_TRUE.
LS_PARTNER-FINSERV_DATA-COMMON-DATA-FSBP_CENTRL-VBUND  = '009999'.
LS_PARTNER-FINSERV_DATA-COMMON-DATAX-FSBP_CENTRL-VBUND = 'X'.

*LS_PARTNER-CENTRAL_DATA-BANKDETAIL-DATA-BANK_KEY = BANKL."银行代码

"角色
LS_ROLES-TASK = 'I'.


LS_ROLES-DATA_KEY = 'FLCU01'.   "角色
APPEND LS_ROLES TO LT_ROLES.

LS_ROLES-DATA_KEY = 'FLCU00'.   "角色
APPEND LS_ROLES TO LT_ROLES.

LS_ROLES-DATA_KEY = 'UKM000'.   "角色
APPEND LS_ROLES TO LT_ROLES.

"LS_ROLES-DATA_KEY = 'Z_CUS1X'.   "角色
"APPEND LS_ROLES TO LT_ROLES.

LS_PARTNER-CENTRAL_DATA-ROLE-ROLES = LT_ROLES.

****客户地址数据***********************************************
CLEAR : LS_ADDRESSES,LT_ADDRESSES.
LS_ADDRESSES-TASK = 'I'.
"LS_ADDRESSES-DATA-POSTAL-DATA-COUNTRY = 'CN' ."LAND1. "国家
LS_ADDRESSES-DATA-POSTAL-DATA-COUNTRY = 'HK'.
LS_ADDRESSES-DATA-POSTAL-DATAX-COUNTRY = 'X'.


"LS_ADDRESSES-DATA-POSTAL-DATA-REGION = '330'."REGIO. "省份
"LS_ADDRESSES-DATA-POSTAL-DATAX-REGION = 'X'.
LS_ADDRESSES-DATA-POSTAL-DATA-STREET =  '北京市海淀区安宁庄路小米科技园' ."STRAS. "注册地址
LS_ADDRESSES-DATA-POSTAL-DATAX-STREET = 'X'.
LS_ADDRESSES-DATA-POSTAL-DATA-LANGUISO = 'ZH'.
LS_ADDRESSES-DATA-POSTAL-DATA-POSTL_COD1 = '999999'."PSTLZ . "邮政编码
LS_ADDRESSES-DATA-POSTAL-DATAX-POSTL_COD2 = 'X' .
LS_ADDRESSES-DATA-POSTAL-DATA-CITY = '中国北京'."ORT01. "城市
LS_ADDRESSES-DATA-POSTAL-DATAX-CITY =  'X'.
LS_ADDRESSES-DATA-POSTAL-DATA-HOUSE_NO = 'X'. "门牌号
LS_ADDRESSES-DATA-POSTAL-DATAX-HOUSE_NO = '301'."HOUSE_NUM1.

CLEAR: LS_PHONE,LT_PHONE.
LS_PHONE-CONTACT-DATA-TELEPHONE =  '178663333' ."TELF1 ."电话
LS_PHONE-CONTACT-DATAX-TELEPHONE =  ABAP_TRUE .
APPEND LS_PHONE TO LT_PHONE.

LS_ADDRESSES-DATA-COMMUNICATION-PHONE-PHONE = LT_PHONE.
APPEND LS_ADDRESSES TO LT_ADDRESSES.
LS_PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES = LT_ADDRESSES.

****客户数据表头************************************************
LS_HEADER-OBJECT_TASK = 'I'.
LS_CUSTOMER-HEADER = LS_HEADER.


"客户销售的出发票
IF LS_ADDRESSES-DATA-POSTAL-DATA-COUNTRY  EQ  'CN' .
  LS_TAX_IND-TASK = 'I'.
  LS_TAX_IND-DATA_KEY-ALAND = 'CN'.
  LS_TAX_IND-DATA_KEY-TATYP = 'MWST'.
  LS_TAX_IND-DATA-TAXKD = '1' ."TAXKD. "税分类
  LS_TAX_IND-DATAX-TAXKD = 'X'.
  APPEND LS_TAX_IND TO LT_TAX_IND.
  LS_CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX_IND.
ELSE.
  LS_TAX_IND-TASK = 'I'.
  LS_TAX_IND-DATA_KEY-ALAND = 'CN'.
  LS_TAX_IND-DATA_KEY-TATYP = 'MWST'.
  LS_TAX_IND-DATA-TAXKD = '1' ."TAXKD. "税分类
  LS_TAX_IND-DATAX-TAXKD = 'X'.
  APPEND LS_TAX_IND TO LT_TAX_IND.
  LS_CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX_IND.

  LS_TAX_IND-TASK = 'I'.
  LS_TAX_IND-DATA_KEY-ALAND = 'HK'.
  LS_TAX_IND-DATA_KEY-TATYP = 'MWST'.
  LS_TAX_IND-DATA-TAXKD = '1' ."TAXKD. "税分类
  LS_TAX_IND-DATAX-TAXKD = 'X'.
  APPEND LS_TAX_IND TO LT_TAX_IND.
  LS_CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX_IND.
ENDIF.
"LS_CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX_IND.
LS_CUSTOMER-CENTRAL_DATA = LS_CENTRAL_DATA.



****公司代码数据************************************************
BUKRS = 'GX10'.
AKONT = '0011220100'.
IF BUKRS IS NOT INITIAL.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   " 统驭科目补零
    EXPORTING
      INPUT  = AKONT
    IMPORTING
      OUTPUT = AKONT.
  LS_COMPANY-TASK = 'I'.
  LS_COMPANY-DATA_KEY-BUKRS = BUKRS. " 公司代码
  LS_COMPANY-DATA-AKONT = AKONT. " 统驭科目
  LS_COMPANY-DATA-ZTERM = 'T013'.
  APPEND LS_COMPANY TO LT_COMPANY.
  LS_COMPANY_DATA-COMPANY = LT_COMPANY.
  LS_CUSTOMER-COMPANY_DATA = LS_COMPANY_DATA.
ENDIF.

*****销售数据****************************************************
VKORG = 'HK12'.
IF VKORG IS NOT INITIAL .
  LS_SALES-TASK = 'I'.
  LS_SALES-DATA_KEY-VKORG = VKORG. " 销售组织
  LS_SALES-DATA_KEY-VTWEG = '20'. " 分销渠道
  LS_SALES-DATA_KEY-SPART = '00'. " 产品组

  LS_SALES-DATA-KDGRP =  '02'."KDGRP. "客户组
  LS_SALES-DATAX-KDGRP = ABAP_TRUE.
  "LS_SALES-DATA-VKBUR = VKBUR. "销售部门
  "LS_SALES-DATAX-VKBUR = ABAP_TRUE.
  "LS_SALES-DATA-VKGRP = VKGRP. "销售组
  "LS_SALES-DATAX-VKGRP = ABAP_TRUE.
  LS_SALES-DATA-KALKS = '1' ."KALKS. "客户定价过程
  LS_SALES-DATAX-KALKS = ABAP_TRUE.

  "LS_SALES-DATA-VWERK = VWERK. "工厂
  "LS_SALES-DATAX-VWERK = ABAP_TRUE.
  LS_SALES-DATA-VSBED = 'Z1'. "装运条件
  LS_SALES-DATAX-VSBED = ABAP_TRUE.

  LS_SALES-DATA-WAERS = 'CNY'."币种
  LS_SALES-DATAX-WAERS = ABAP_TRUE.

  LS_SALES-DATA-ZTERM = 'T013'."ZTERM."付款条件
  LS_SALES-DATAX-ZTERM = ABAP_TRUE.

  LS_SALES-DATA-KTGRD = '01'."KTGRD."客户科目分配组
  LS_SALES-DATAX-KTGRD = ABAP_TRUE.

  LS_SALES-DATA-BZIRK = 'CH001'.
  LS_SALES-DATAX-BZIRK = ABAP_TRUE.

  LS_SALES-DATA-KONDA = '01'.
  LS_SALES-DATAX-KONDA = ABAP_TRUE.

  LS_SALES-DATA-INCO1 = 'FOB'."<FS_DATA>-INCO1."国际贸易术语解释通则
  LS_SALES-DATA-INCO2_L ='离岸价'." <FS_DATA>-INCO2."国际贸易条款位置1
  LS_SALES-DATAX-INCO1 = ABAP_TRUE.
  LS_SALES-DATAX-INCO2_L = ABAP_TRUE.

  "Function伙伴功能
  "PARVW = 'ZP'.  "销售员类别

  LS_FUNCTIONS-TASK = 'I'.
  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      INPUT  = C_PARVW1  "售达方
    IMPORTING
      OUTPUT = LS_FUNCTIONS-DATA_KEY-PARVW.
  APPEND LS_FUNCTIONS TO LT_FUNCTIONS.

  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      INPUT  = C_PARVW2 "收票方
    IMPORTING
      OUTPUT = LS_FUNCTIONS-DATA_KEY-PARVW.
  APPEND LS_FUNCTIONS TO LT_FUNCTIONS.

  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      INPUT  = C_PARVW3 "付款方
    IMPORTING
      OUTPUT = LS_FUNCTIONS-DATA_KEY-PARVW.
  APPEND LS_FUNCTIONS TO LT_FUNCTIONS.

  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      INPUT  = C_PARVW4 "送达方
    IMPORTING
      OUTPUT = LS_FUNCTIONS-DATA_KEY-PARVW.
  APPEND LS_FUNCTIONS TO LT_FUNCTIONS.



  LS_SALES-FUNCTIONS-FUNCTIONS = LT_FUNCTIONS.
  APPEND LS_SALES TO LT_SALES.
  LS_SALES_DATA-SALES = LT_SALES.
  LS_CUSTOMER-SALES_DATA = LS_SALES_DATA.
ENDIF.

*****银行数据****************************************************
"LS_BANKS-DATA-BANK_KEY =  BANKL. "银行代码
"LS_BANKS-DATAX-BANK_KEY =  ABAP_TRUE.
"LS_BANKS-DATA-BANKACCOUNTNAME =  BANKA. "开户行
"LS_BANKS-DATAX-BANKACCOUNTNAME = ABAP_TRUE. "开户行
"LS_BANKS-DATA-BANK_ACCT =  BANKN. "账号
"LS_BANKS-DATAX-BANK_ACCT =  ABAP_TRUE. "
"LS_BANKS-DATA-BANK_CTRY =  'CN'. "银行国家代码
"LS_BANKS-DATAX-BANK_CTRY =  ABAP_TRUE. "
"APPEND LS_BANKS TO LT_BANKS.
"LS_PARTNER-CENTRAL_DATA-BANKDETAIL-BANKDETAILS = LT_BANKS.

"拿到PARTNER和CUSTOMER数据开始创建客户
LS_DATA-PARTNER = LS_PARTNER.
LS_DATA-CUSTOMER = LS_CUSTOMER.
APPEND LS_DATA TO LT_DATA.

CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
  EXPORTING
    I_DATA   = LT_DATA
*   I_EXT_DATA       =
  IMPORTING
    E_RETURN = LT_RETURN.


LOOP AT LT_RETURN INTO LS_RETURN.
  LOOP AT LS_RETURN-OBJECT_MSG INTO LS_MSG WHERE TYPE = 'E' OR TYPE = 'A'.
    CONCATENATE EV_ZMSG LS_MSG-MESSAGE INTO EV_ZMSG.
  ENDLOOP.
ENDLOOP.

IF EV_ZMSG IS INITIAL.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = ABAP_TRUE.

*  根据伙伴GUID取出客户编号
  LS_PARTNERGUID_LIST = LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID.
  APPEND LS_PARTNERGUID_LIST TO LT_PARTNERGUID_LIST.
  LT_CUSTOMER_LIST = CVI_MAPPER=>GET_INSTANCE( )->GET_ASSIGNED_CUSTOMERS_FOR_BPS(
                                            I_PARTNER_GUIDS = LT_PARTNERGUID_LIST ).
  IF LT_CUSTOMER_LIST IS NOT INITIAL.
    READ TABLE LT_CUSTOMER_LIST INTO LS_CUSTOMER_LIST INDEX 1 .
    IF SY-SUBRC EQ 0.
      CONCATENATE '客户' LS_CUSTOMER_LIST-CUSTOMER '创建成功!' INTO EV_ZMSG.
      KUNNR = LS_CUSTOMER_LIST-CUSTOMER.  "导出KUNNR
      EV_ZTYPE = 'S'.
      STATUS = 'S02'.
    ENDIF.
  ENDIF.
  WRITE:KUNNR,EV_ZTYPE.
ELSE.

  EV_ZMSG = '客户创建出错,客户部分数据出错,请检查是否是BP伙伴功能问题。'.
  EV_ZTYPE = 'E'.
  STATUS = 'S03'.
  WRITE:KUNNR,EV_ZTYPE.

ENDIF.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值