SAP 扩充销售视图

废话少说,上源码

**定义调用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.

转载请@年少不知学习好,错把游戏当成宝。
愿所有开发人员少走弯路!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\],MM17是一个用来批量维护物料主数据的工具,它可以用来扩充物料视图,比如仓库号和库存地点。这个工具特别方便,尤其适用于只需要简单扩充视图的情况。以前扩充物料的仓库号时,可能会使用录屏程序,但是由于不同的物料类型可维护的视图可能不同,录屏程序可能会出错。 根据引用\[2\],在使用这个代码时,需要注意以下几点: 1. 这个代码适用于接口、Excel导入或者按钮点击后的循环逻辑之后的逻辑。 2. ls_alv和gs_alv是自定义的结构,你可以根据需要导入哪些字段来进行收集。 3. 对于财务会计1视图的价格控制字段,如果赋值为S,可以成功创建物料,但是如果赋值为V,会返回错误信息,提示不能修改价格控制标识。这是因为要修改价格控制字段,需要同时修改价格确定字段。 综上所述,如果你想批量扩充SAP物料主数据的质量视图,可以使用MM17工具,并注意以上提到的注意事项。 #### 引用[.reference_title] - *1* [SAP MM MM17物料主数据批量扩充视图](https://blog.csdn.net/wangwangqingu/article/details/127317618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [SAP 物料主数据创建与更改](https://blog.csdn.net/lmf496891416/article/details/124947661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值