SAP VF01销售开票:BAPI_BILLINGDOC_CREATEMULTIPLE

VF01的界面是这样的:
SAP VF01销售开票:BAPI_BILLINGDOC_CREATEMULTIPLE_第1张图片
界面可以看出,需要传的主要的参数有这么几个,这里的凭证用的是交货单号。
据我了解,销售开票之前的流程是这样的:
生成销售单->销售单生成交货单->交货单过账->销售开票->发票过账。
(以上流程如有疏漏,请大家补充)

经查询:VF01对应的BAPI是:BAPI_BILLINGDOC_CREATEMULTIPLE
所以只要往这个BAPI中传入必要的参数即可。
具体代码如下:

  DATA: LT_BILLINGDATAIN TYPE TABLE OF BAPIVBRK,
        LS_BILLINGDATAIN TYPE BAPIVBRK.
  DATA: LT_RETURN TYPE TABLE OF BAPIRET1,
        LS_RETURN TYPE BAPIRET1.
  DATA: LT_SUCCESS TYPE TABLE OF BAPIVBRKSUCCESS,
        LS_SUCCESS TYPE BAPIVBRKSUCCESS.
  DATA: LV_MESSAGE TYPE STRING.

  CHECK GT_OUTPUT[] IS NOT INITIAL.

  SELECT
    VBAP~VBELN,
    VBAP~POSNR,
    VBAP~WERKS,
    VBAP~MATNR,
    VBAP~MEINS,
    VBAP~KWMENG,
    VBAP~WAERK,

    VBAK~VKORG,
    VBAK~VTWEG,
    VBAK~SPART,
    VBAK~KUNNR,
    VBAK~AUDAT,
    VBAK~VBTYP
    INTO TABLE @DATA(LT_VBAP)
    FROM VBAP
    INNER JOIN VBAK ON VBAP~VBELN EQ VBAK~VBELN
    FOR ALL ENTRIES IN @GT_OUTPUT
    WHERE VBAP~VBELN EQ @GT_OUTPUT-VBELN.

  IF LT_VBAP[] IS NOT INITIAL.
    SELECT LIPS~VBELN,
      POSNR,
      VBTYP,
      VGBEL,
      VGPOS
      INTO TABLE @DATA(LT_LIPS)
      FROM LIPS
      INNER JOIN LIKP ON LIPS~VBELN EQ LIKP~VBELN
      FOR ALL ENTRIES IN @LT_VBAP
      WHERE VGBEL = @LT_VBAP-VBELN AND
                  VGPOS = @LT_VBAP-POSNR.

    SELECT VBELN,
      PARVW,
      KUNNR
      INTO TABLE @DATA(LT_VBPA)
      FROM VBPA
      FOR ALL ENTRIES IN @GT_OUTPUT
      WHERE VBELN = @GT_OUTPUT-VBELN AND
                   PARVW IN ( 'SP','AG','BP','RE','PY','RG&#

你可能感兴趣的:(ABAP,sap,abap)