创建客户主数据接口

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.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值