SAP_ABAP_SD_BAPI清单案例教程——销售订单开票_BAPI_BILLINGDOC_CREATEMULTIPLE_VF01_S4版本

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提参考ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977


一 背景说明


        SAP BAPI(Business Application Programming Interface)是SAP系统中的一组规范和标准,用于从SAP系统中获取数据、输入数据和更新数据。这些API允许开发者以编程方式与SAP系统交互,而无需编写大量的自定义代码。

1.1 BAPI清单

销售订单创建BAPI_BILLINGDOC_CREATEMULTIPLE
交货单创建BAPI_OUTB_DELIVERY_CREATE_SLS
交货单过帐WS_DELIVERY_UPDATE
销售订单开票BAPI_BILLINGDOC_CREATEMULTIPLE

二 实施步骤


2.1 Copy代码 直接可使用

FORM create_invoice .
* 作为抬头
  gt_head = gt_itab.
  DELETE gt_head             WHERE sel IS INITIAL.
  DELETE ADJACENT DUPLICATES FROM gt_head COMPARING code.

  DATA i_index TYPE sy-index.

  LOOP AT gt_head ASSIGNING FIELD-SYMBOL(<gt_head>).

    CLEAR: gt_billingdatain,gt_conditiondatain,gt_return,gt_success,i_index,lv_message.

    LOOP AT gt_itab ASSIGNING FIELD-SYMBOL(<gt_itab>) WHERE sel = 'X' AND code = <gt_head>-code.

      i_index = i_index + 1.

      CLEAR: gw_billingdatain.
      gw_billingdatain-ref_doc  = <gt_itab>-vgbel."参考单据的单据编号 - 交货单号
      gw_billingdatain-ref_item = <gt_itab>-vgpos."参考项目的项目号   - 交货单行号
      gw_billingdatain-req_qty  = <gt_itab>-fkimg."交货单位
      IF <gt_itab>-auart = 'YV01'.
        gw_billingdatain-ordbilltyp = 'YBF8'."以销售单位表示的累计订购数量
      ENDIF.

	 *根据DN查出对应的SO销售订单号
      SELECT SINGLE vgbel,vgpos INTO ( @gw_billingdatain-doc_number,@gw_billingdatain-itm_number ) FROM lips WHERE vbeln = @<gt_itab>-vgbel AND posnr = @<gt_itab>-vgpos.
      gw_billingdatain-ref_doc_ca = 'J'. " ?
      APPEND gw_billingdatain TO gt_billingdatain.

 	  CLEAR: gw_conditiondatain.
      gw_conditiondatain-data_index = i_index.        "行号
      gw_conditiondatain-cond_type  = 'ZPR3'.         "条件类型
      gw_conditiondatain-cond_value = <gt_itab>-kbetr."开票金额
      gw_conditiondatain-cond_curr  = <gt_itab>-waerk."货币
      gw_conditiondatain-cond_p_unt = <gt_itab>-umvkn."价格因子
      APPEND gw_conditiondatain TO gt_conditiondatain.
 

    ENDLOOP.

    CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
*      EXPORTING
*        testrun         = 'X'
      TABLES
        billingdatain   = gt_billingdatain
        conditiondatain = gt_conditiondatain
        return          = gt_return
        success         = gt_success.

    LOOP AT gt_return ASSIGNING FIELD-SYMBOL(<gt_return>) WHERE type = 'A'.
      <gt_return>-type = 'E'.
    ENDLOOP.

    READ TABLE gt_return ASSIGNING FIELD-SYMBOL(<rt3>) WITH KEY type = 'E'.
    IF sy-subrc = 0.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

      WAIT UP TO ( 1 / 4 ) SECONDS.

* 将行项目备注写进行项目表
      LOOP AT gt_success ASSIGNING FIELD-SYMBOL(<gt_success>).
          UPDATE vbrp SET zitem_remark = @<wa_itab>-zitem_remak WHERE vbeln = @<gt_success>-bill_doc AND posnr = @<gt_success>-bill_doc_item.
          COMMIT WORK AND WAIT.
      ENDLOOP.

* 将地址编码的数据,抬头备注写进抬头表

      LOOP AT gt_h_suc INTO DATA(ls_h_suc).
          UPDATE vbrk SET zhead_remark = @<wa_itab>-zhead_remark WHERE vbeln = @ls_h_suc-bill_doc.
          COMMIT WORK AND WAIT.
      ENDLOOP.

  ENDLOOP.


ENDFORM.

2.2 VF01开票

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Terry谈企业数字化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值