FUNCTION zfm_oa_customer01_tosap .
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(INPUT) TYPE ZSSD_OA_CUSTOMER01
*" EXPORTING
*" VALUE(OUTPUT) TYPE ZSSD_OA_CUSTOMER01O
*"----------------------------------------------------------------------
DATA: lv_errmsg TYPE string.
DATA: lv_errflag TYPE abap_bool.
DATA: ls_ifsort TYPE zsall_iflog_zfield.
*-----------------------------------------------------------------------
* 启用接口日志
/log/start. output-uuid = /log/data-uuid.
*-----------------------------------------------------------------------
DATA:ls_input TYPE zssd_customeri.
DATA:ls_output TYPE zssd_customero.
* DATA:ls_redata LIKE LINE OF output-data.
DATA:lv_ptn_guid TYPE bu_partner_guid.
DATA:lv_langu TYPE langu.
DATA:wa_in TYPE zssd_oa_customer01.
wa_in = input.
CLEAR:lv_langu,ls_input,ls_output,lv_ptn_guid.
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
EXPORTING
input = wa_in-langu
IMPORTING
output = lv_langu
EXCEPTIONS
unknown_language = 1
OTHERS = 2.
IF sy-subrc <> 0.
lv_langu = 1.
ENDIF.
IF wa_in-partner IS NOT INITIAL.
wa_in-partner = |{ wa_in-partner ALPHA = IN }|.
SELECT SINGLE partner_guid INTO lv_ptn_guid FROM but000 WHERE partner = wa_in-partner.
ENDIF.
IF lv_ptn_guid IS INITIAL AND ( wa_in-operation = 'B' OR wa_in-operation = 'U').
output-status = 'E'.
output-message = '客户编号不能为空'.
RETURN.
ENDIF.
IF lines( wa_in-saledata ) > 1.
output-status = 'E'.
output-message = '只允许传单条销售组织数据'.
RETURN.
ENDIF.
* IF wa_in-operation = 'B'.
* CALL FUNCTION 'ZFM_OA_DELETECUSTOMER'
* EXPORTING
* partner = wa_in-partner
* IMPORTING
* status = output-status
* message = output-message.
* RETURN.
* ENDIF.
LOOP AT wa_in-companydata ASSIGNING FIELD-SYMBOL(<fs_cmp>).
IF <fs_cmp>-akont IS INITIAL.
CASE wa_in-ktokd.
WHEN 'Z100'. "集团内部客商
<fs_cmp>-akont = '1122020100'."应收账款_内部往来
WHEN 'Z600'. "外部业务客商
<fs_cmp>-akont = '1122010100'."应收账款_外部往来
WHEN 'Z700'. "虚拟客户
<fs_cmp>-akont = '1122010100'."应收账款_外部往来
WHEN 'Z800'. "财务专用客商
<fs_cmp>-akont = '1122010100'."应收账款_外部往来
WHEN 'Z900'. "云鲸员工客商
<fs_cmp>-akont = '1221010600'."其他应收款_内部往来_员工往来
WHEN OTHERS.
ENDCASE.
ENDIF.
ENDLOOP.
ls_input = VALUE #( partner = |{ wa_in-partner ALPHA = IN }|
general = VALUE #( name1 = wa_in-name1
ktokd = wa_in-ktokd
bu_sort1 = wa_in-bu_sort1
loevm = wa_in-loevm
country = wa_in-country
langu = lv_langu
region = wa_in-region
city1 = wa_in-city1
street = wa_in-street
zcity = wa_in-zcity
zcounty = wa_in-zcounty
zdpfl = wa_in-zdpfl
ZYCBM = wa_in-ZYCBM
tel_number = wa_in-tel_number
taxnumxl = wa_in-taxnumxl
kukla = wa_in-kukla
name_co = wa_in-name_co
telf1 = wa_in-telf1
smtp_addr = wa_in-smtp_addr
* taxkd = wa_in-taxkd
* aland = wa_in-country
* tatyp = 'MWST'
)
company = VALUE #( FOR wa_company IN wa_in-companydata
( bukrs = wa_company-bukrs
akont = wa_company-akont
zterm = wa_company-zterm ) )
sale = VALUE #( FOR wa_sale IN wa_in-saledata
( vkorg = wa_sale-vkorg
vtweg = wa_sale-vtweg
spart = wa_sale-spart
vkbur = wa_sale-vkbur
vkgrp = wa_sale-vkgrp
kdgrp = wa_sale-kdgrp
kvgr1 = wa_sale-kvgr1
kvgr3 = wa_sale-kvgr3
kvgr2 = wa_sale-kvgr2
waers = wa_sale-waers
zterm = wa_sale-zterm
* kalks = wa_in-kalks"定价过程
* klabc = wa_in-klabc
* agrel = wa_in-agrel
* vsbed = wa_in-vsbed
* podkz = wa_in-podkz
* lprio = wa_in-lprio
ktgrd = wa_sale-ktgrd
taxkd = wa_sale-taxkd ) )
function = VALUE #( FOR wa_partner IN wa_in-partnerdata
( vkorg = wa_partner-vkorg
vtweg = wa_partner-vtweg
spart = wa_partner-spart
parvw = wa_partner-parvw
kunn2 = wa_partner-kunn2 ) )
bank = VALUE #( FOR wa_bank IN wa_in-bankdata
( bkvid = wa_bank-bkvid
banks = wa_bank-banks
accname = wa_bank-accname
bankl = wa_bank-bankl
bankn = wa_bank-bankn
koinh = wa_bank-koinh
bkext = wa_bank-bkext
bkref = wa_bank-bkref ) ) ).
SELECT tvkwz~vkorg,
tvkwz~vtweg,
tvkwz~werks,
t001w~land1
FROM tvkwz
INNER JOIN t001w ON tvkwz~werks = t001w~werks
INTO TABLE @DATA(lt_vland1).
IF ls_input-general-taxnumxl IS NOT INITIAL.
ls_input-general-taxtype = 'CN5'.
ENDIF.
LOOP AT ls_input-sale ASSIGNING FIELD-SYMBOL(<fs_sale>).
IF <fs_sale>-vtweg IS INITIAL.
<fs_sale>-vtweg = '00'.
ENDIF.
IF <fs_sale>-spart IS INITIAL.
<fs_sale>-spart = '00'.
ENDIF.
IF <fs_sale>-kalks IS INITIAL.
<fs_sale>-kalks = '1'.
ENDIF.
IF <fs_sale>-kzazu IS INITIAL.
<fs_sale>-kzazu = 'X'.
ENDIF.
IF <fs_sale>-podkz IS INITIAL.
<fs_sale>-podkz = 'X'.
ENDIF.
IF <fs_sale>-taxkd <> ''.
READ TABLE lt_vland1 WITH KEY vkorg = <fs_sale>-vkorg vtweg = <fs_sale>-vtweg INTO DATA(ls_vland1).
IF sy-subrc = 0.
<fs_sale>-aland = ls_vland1-land1.
<fs_sale>-tatyp = 'MWSI'.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT ls_input-function ASSIGNING FIELD-SYMBOL(<fs_fn>).
IF <fs_fn>-vtweg IS INITIAL.
<fs_fn>-vtweg = '00'.
ENDIF.
IF <fs_fn>-spart IS INITIAL.
<fs_fn>-spart = '00'.
ENDIF.
ENDLOOP.
"fix 结构错误,用第一条数据
IF ls_input-sale IS NOT INITIAL.
APPEND 'TAXKD' TO ls_input-fields.
ENDIF.
ls_input-fields = VALUE #( BASE ls_input-fields
( 'LOEVM' )
( 'SORT1' )
( 'NAME1' )
( 'REGION' )
( 'ZCITY' )
( 'ZCOUNTY' )
( 'ZDPFL' )
( 'ZYCBM' )
( 'ROLES' )
( 'TB_ADDRESS' )
( 'STREET' )
( 'COUNTRY' )
( 'CITY1' )
( 'NAME_CO' )
( 'LANGU' )
( 'TEL_NUMBER' )
( 'TELF1' )
( 'SMTP_ADDR' )
( 'TAXNUMXL' )
( 'KUKLA' )
( 'VKBUR' )
( 'VKGRP' )
( 'KDGRP' )
( 'KVGR1' )
( 'KVGR2' )
( 'KVGR3' )
( 'WAERS' )
( 'KALKS' )
( 'VSBED' )
( 'PODKZ' )
( 'LPRIO' )
( 'ZTERM2')
( 'KTGRD' )
( 'TB_BANK_COVER' ) ).
CALL FUNCTION 'ZSD_RF_CUSTOMER02'
EXPORTING
input = ls_input
IMPORTING
output = ls_output.
output-partner = ls_output-partner.
output-status = ls_output-status.
output-message = ls_output-message.
*-----------------------------------------------------------------------
* 结束接口日志 &1状态码 &2消息 &3搜索项 &4反写UUID
/log/end output-status output-message ls_ifsort.
*-----------------------------------------------------------------------
ENDFUNCTION.
创建客户主数据接口
最新推荐文章于 2024-07-24 17:27:32 发布