废话少说,上源码
**定义调用bapiSD_CUSTOMER_MAINTAIN_ALL创建的输入参数
DATA:i_kna1 TYPE kna1,
i_knb1 TYPE knb1,
i_bapiaddr1 TYPE bapiaddr1,
t_xknbk TYPE STANDARD TABLE OF fknbk,
ls_xknbk TYPE fknbk,
i_knvv TYPE knvv,
* t_yknbk TYPE STANDARD TABLE OF fknbk,
* ls_yknbk TYPE fknbk,
t_xknva TYPE STANDARD TABLE OF fknva,
ls_xknva TYPE fknva,
t_xknvk TYPE STANDARD TABLE OF fknvk,
ls_xknvk TYPE fknvk,
t_xknvi TYPE STANDARD TABLE OF fknvi,
ls_xknvi TYPE fknvi,
e_kunnr TYPE kna1-kunnr,
o_kna1 TYPE kna1,
e_sd_cust_1321_done TYPE c,
i_customer_is_consumer TYPE wdl_flag-xflag.
"response结构
"反馈
DATA: output_hd TYPE zmmi005_dt_mesg_hd,
output_body TYPE zun_dt_un_resp_msgbd_tab,
output_line TYPE zun_dt_un_resp_msgbd.
DATA: r_obj TYPE REF TO zun_co_si_un_resp_out.
DATA: out TYPE zun_mt_un_resp.
"反馈头信息
out-mt_un_resp-msghd-msgid = input-mt_kcxsst-msghd-msgid.
out-mt_un_resp-msghd-tlgid = input-mt_kcxsst-msghd-tlgid.
out-mt_un_resp-msghd-tlgname = input-mt_kcxsst-msghd-tlgname.
out-mt_un_resp-msghd-dtsend = sy-datum && sy-uzeit .
out-mt_un_resp-msghd-sender = 'ERP'.
out-mt_un_resp-msghd-receiver = input-mt_kcxsst-msghd-sender.
LOOP AT input-mt_kcxsst-msgbd INTO DATA(ls_input).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_input-kunnr
IMPORTING
output = i_knvv-kunnr.
* i_knvv-kunnr = ls_input-kunnr.
i_knvv-vkorg = ls_input-vkorg. "销售组织
i_knvv-vtweg = ls_input-vtweg. "分销渠道
i_knvv-spart = ls_input-spart. "产品组
i_knvv-bzirk = ls_input-bzirk. "销售地区
i_knvv-konda = ls_input-konda. "价格组
i_knvv-kalks = ls_input-kalks. "客户定价过程
i_knvv-vwerk = ls_input-vwerk. "交货工厂
i_knvv-inco1 = ls_input-inco1. "国际贸易条款国际贸易条款
i_knvv-zterm = ls_input-zterm. "付款条件
i_knvv-inco2 = ls_input-inco2. "描述
i_knvv-ktgrd = ls_input-ktgrd. "账户分配组
i_knvv-waers = 'RMB'.
**--财务数据
IF ls_input-bukrs IS NOT INITIAL .
ls_xknvi-kunnr = i_knvv-kunnr.
ls_xknvi-taxkd = ls_input-taxkd_01.. "税分类
ls_xknvi-aland = 'CN'.
ls_xknvi-tatyp = 'MWST'.
APPEND ls_xknvi TO t_xknvi.
i_knb1-kunnr = i_knvv-kunnr.
i_knb1-bukrs = ls_input-bukrs.
i_knb1-akont = ls_input-akont.
ENDIF.
**--客户主文件的一般数据
i_kna1-kunnr = i_knvv-kunnr. "0003 0004 0009 人工授码
i_kna1-ktokd = ls_input-ktokd. "客户帐户组
** i_kna1-lifnr = ls_cus-lifnr. "供应商或债权人的帐号
** i_kna1-vbund = ls_cus-vbund. "贸易伙伴
** i_kna1-stceg = ls_cus-stceg. "纳税登记号
** i_kna1-rpmkr = ls_cus-rpmkr. "地区市场
** IF ls_cus-ktokd = '0002'. "国外客户
** i_kna1-civve = 'X'.
** ENDIF.
****--客户主数据 (银行细目)
** ls_xknbk-kunnr = ls_cus-kunnr. "自动授码0001 0002为空 人工先授码0003 0004 0009不为空
** ls_xknbk-banks = ls_cus-banks. "银行国家代码
** ls_xknbk-bankl = ls_cus-bankl. "银行码
** ls_xknbk-bankn = ls_cus-bankn. "帐号
** ls_xknbk-koinh = ls_cus-koinh. "帐户持有人姓名
** APPEND ls_xknbk TO t_xknbk.
**--客户主装货点
ls_xknva-kunnr = i_knvv-kunnr. "自动授码0001 0002为空 人工先授码0003 0004 0009不为空
IF ls_input-ktgrd = 'AG04' .
ls_xknva-ablad = ls_input-ablad. . "卸货点
ls_xknva-knfak = ls_input-knfak. "客户的工厂日历
ENDIF.
APPEND ls_xknva TO t_xknva.
i_customer_is_consumer = 'X'.
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
EXPORTING
i_kna1 = i_kna1
i_knb1 = i_knb1
i_knvv = i_knvv
* i_bapiaddr1 = i_bapiaddr1
* i_maintain_address_by_kna1 = 'X'
pi_postflag = 'X'
i_from_customermaster = 'X'
i_customer_is_consumer = i_customer_is_consumer
IMPORTING
e_kunnr = e_kunnr
o_kna1 = o_kna1
TABLES
t_xknvi = t_xknvi
* t_xknbk = t_xknbk
* 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 output_line-rettxt
WHERE sprsl = '1'
AND arbgb = sy-msgid
AND msgnr = sy-msgno.
DO 4 TIMES.
SEARCH output_line-rettxt FOR '&'.
IF sy-subrc = 0.
CASE sy-index.
WHEN 1.
REPLACE '&' WITH sy-msgv1 INTO output_line-rettxt.
WHEN 2.
REPLACE '&' WITH sy-msgv2 INTO output_line-rettxt.
WHEN 3.
REPLACE '&' WITH sy-msgv3 INTO output_line-rettxt.
WHEN 4.
REPLACE '&' WITH sy-msgv4 INTO output_line-rettxt.
ENDCASE.
CONDENSE output_line-rettxt. "replace会将SY-MSGV&50位替换,压缩空格 ERR_TAB-MESSAGE也要足够长
ENDIF.
ENDDO.
output_line-order1 = ls_input-kunnr.
output_line-retid = 'E'.
IF output_line-rettxt IS INITIAL.
output_line-rettxt = '视图未创建成功'.
ENDIF.
APPEND output_line TO output_body.
CLEAR output_line.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
IF sy-subrc = 0.
output_line-order1 = ls_input-kunnr.
output_line-retid = 'S'.
* output_line-rettxt = o_kna1-kunnr."'客户创建成功'.
ELSE.
output_line-order1 = ls_input-kunnr.
output_line-retid = 'E'.
output_line-rettxt = '视图未创建成功'.
ENDIF.
* ls_return-index = curline.
APPEND output_line TO output_body.
CLEAR output_line.
ENDIF.
CLEAR:
i_kna1,i_bapiaddr1,e_kunnr,o_kna1,
t_xknbk[],t_xknva[],t_xknvk[],
ls_xknvk,ls_xknbk , ls_xknva.
ENDLOOP.
"反馈行信息
out-mt_un_resp-msgbd = output_body.
转载请@年少不知学习好,错把游戏当成宝。
愿所有开发人员少走弯路!!!