VF01的界面是这样的:
界面可以看出,需要传的主要的参数有这么几个,这里的凭证用的是交货单号。
据我了解,销售开票之前的流程是这样的:
生成销售单->销售单生成交货单->交货单过账->销售开票->发票过账。
(以上流程如有疏漏,请大家补充)
经查询: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