BAPI:创建退货订单-BAPI_CUSTOMERRETURN_CREATE

DATA: la_header TYPE bapisdhd1, "表头
la_headerx TYPE bapisdhd1x, "表头标志
l_salesdocumentin TYPE bapivbeln-vbeln,
l_salesdocument TYPE bapivbeln-vbeln,
lt_return TYPE STANDARD TABLE OF bapiret2,
lt_item TYPE STANDARD TABLE OF bapisditm,
lt_itemx TYPE STANDARD TABLE OF bapisditmx,
la_partner TYPE bapiparnr,
lt_partner TYPE STANDARD TABLE OF bapiparnr,
lt_schdl TYPE STANDARD TABLE OF bapischdl,
lt_schdlx TYPE STANDARD TABLE OF bapischdlx,
lt_cond TYPE STANDARD TABLE OF bapicond,
lt_condx TYPE STANDARD TABLE OF bapicondx,
lt_text TYPE STANDARD TABLE OF bapisdtext,
lt_extensionin TYPE STANDARD TABLE OF bapiparex,
la_bape_vbak TYPE bape_vbak,
la_bape_vbakx TYPE bape_vbakx,
la_extensionin TYPE bapiparex,
la_item TYPE bapisditm,
la_itemx TYPE bapisditmx,
la_cond TYPE bapicond,
la_condx TYPE bapicondx,
la_schdl TYPE bapischdl,
la_text TYPE bapisdtext,
la_schdlx TYPE bapischdlx,
lv_itemno TYPE posnr_va,
la_bape_vbap TYPE bape_vbap,
la_bape_vbapx TYPE bape_vbapx.

LOOP AT pt_ztxnth INTO DATA(ps_ztxnth) .

MOVE ps_ztxnth TO ls_ztxnth.

AT FIRST.
  •   表头数据
    la_header-doc_type   =  ls_ztxnth-auart.            "销售凭证类型
    la_header-sales_org  =  ls_ztxnth-vkorg.            "销售组织
    la_header-distr_chan =  ls_ztxnth-vtweg.            "分销渠道
    la_header-division   =  ls_ztxnth-spart.            "产品组
    la_header-price_grp  =  ls_ztxnth-konda.            "价格组(客户)
    la_header-ord_reason = '009'.                       "订购原因( 业务原因 )
    
    la_headerx-doc_type   =  'X'.                       "销售凭证类型
    la_headerx-sales_org  =  'X'.                       "销售组织
    la_headerx-distr_chan =  'X'.                       "分销渠道
    la_headerx-division   =  'X'.                       "产品组
    la_headerx-price_grp  =  'X'.                       "价格组(客户)
    la_headerx-ord_reason =  'X'.                       "订购原因( 业务原因 )
    
    CLEAR lv_itemno.
    

    ENDAT.

  • 客户数据
    

    CLEAR: la_partner.
    la_partner-partn_role = ‘AG’. "AG 售达方
    la_partner-partn_numb = ls_ztxnth-kunnr.
    APPEND la_partner TO lt_partner.

  • 明细数据
    CLEAR la_item.
    lv_itemno = lv_itemno + 10.
    la_item-itm_number = lv_itemno. "行项目号
    CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
    EXPORTING
    input = ls_ztxnth-matnr
    IMPORTING
    output = la_item-material. "物料

    la_item-purch_no_s = ls_ztxnth-barcode.

    APPEND la_item TO lt_item.

    CLEAR la_itemx.
    la_itemx-itm_number = lv_itemno.
    la_itemx-material = ‘X’.
    la_itemx-purch_no_s = ‘X’.

    APPEND la_itemx TO lt_itemx.

    CLEAR la_schdl.
    la_schdl-itm_number = lv_itemno.
    la_schdl-sched_line = 1.
    la_schdl-req_qty = ls_ztxnth-menge. "数量
    APPEND la_schdl TO lt_schdl.

    CLEAR la_schdlx.
    la_schdlx-itm_number = lv_itemno.
    la_schdlx-sched_line = 1.
    la_schdlx-req_qty = ‘X’. "数量
    APPEND la_schdlx TO lt_schdlx.

ENDLOOP.

IF lt_item[] IS NOT INITIAL.

PERFORM sapgui_progress_indicator USING '正在创建退货销售订单'."进度条显示

CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
  EXPORTING
    salesdocumentin      = l_salesdocumentin
    return_header_in     = la_header
    return_header_inx    = la_headerx
  •   testrun              = pu_testrun "测试
    IMPORTING
      salesdocument        = l_salesdocument
    TABLES
      return               = lt_return
      return_items_in      = lt_item
      return_items_inx     = lt_itemx
      return_partners      = lt_partner
      return_schedules_in  = lt_schdl
      return_schedules_inx = lt_schdlx
      return_conditions_in = lt_cond
      return_text          = lt_text
      extensionin          = lt_extensionin.   "
    

    IF sy-subrc = 0 AND l_salesdocument IS NOT INITIAL.
    COMMIT WORK AND WAIT.

    "取条码对应的退货订单行
    WHILE lt_vbkd[] IS INITIAL.
      SELECT vbeln,
             posnr,
             bstkd_e
        INTO CORRESPONDING FIELDS OF TABLE @lt_vbkd
        FROM vbkd
        WHERE bstkd_e <> '' AND
          vbeln = @l_salesdocument.
    ENDWHILE.
    

    ELSE.

    ROLLBACK WORK.
    
    LOOP AT lt_return INTO DATA(la_return)
          WHERE type = 'E'
          OR type = 'A'
          OR ( type = 'W' AND id = 'V1' AND number = '555' ).
      IF lv_msgtxt NS la_return-message.
        CONCATENATE lv_msgtxt la_return-message  INTO lv_msgtxt SEPARATED BY '/'  .
      ENDIF.
    ENDLOOP.
    

    ENDIF.
    ENDIF.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值