销售发票创建-BAPI_BILLINGDOC_CREATEMULTIPLE

    DATA: lt_billing TYPE STANDARD TABLE OF bapivbrk,
          lt_return  TYPE STANDARD TABLE OF bapireturn1.
    DATA: lt_errors  TYPE STANDARD TABLE OF bapivbrkerrors,
          lt_success TYPE STANDARD TABLE OF bapivbrksuccess.

 lt_billing = VALUE #( ( ref_doc   = cs_head-vbeln_vl bill_date = lv_budat ref_doc_ca = 'J'  ) ).

    CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
      EXPORTING
        testrun       = abap_true
      TABLES
        billingdatain = lt_billing
        errors        = lt_errors
        return        = lt_return
        success       = lt_success.
    LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type = 'E' OR type = 'A'.
      EXIT.
    ENDLOOP.
    IF sy-subrc = 0.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      LOOP AT lt_return INTO DATA(ls_ret).
        mt_ret = VALUE #( BASE mt_ret ( CORRESPONDING #( ls_ret ) ) ).
      ENDLOOP.
      RETURN.
    ENDIF.

    FREE: lt_errors,lt_return,lt_success.
    lt_billing = VALUE #( ( ref_doc   = cs_head-vbeln_vl bill_date = lv_budat ref_doc_ca = 'J'  ) ).
    CALL FUNCTION 'BAPI_BILLINGDOC_CREATEMULTIPLE'
      TABLES
        billingdatain = lt_billing
        errors        = lt_errors
        return        = lt_return
        success       = lt_success.

    LOOP AT lt_return TRANSPORTING NO FIELDS WHERE type = 'E' OR type = 'A'.
      EXIT.
    ENDLOOP.
    IF sy-subrc <> 0.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = abap_true.
      cs_head-vbeln_vf = VALUE #( lt_success[ 1 ]-bill_doc OPTIONAL ).
      IF cs_head-vbeln_vf IS INITIAL.
        RETURN.
      ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值