VF01公司间开票是可以直接在BTE的1120中做增强的(一张单可以这样,同时多张的时候这样就不行了,需要用到另外下面的方法)
因为同一张单第二次VF01时,在1120这边BKPF和BSEG中只有即将开出的凭证号,没有对应的销售订单或者交货单,所以要找全局变量来用----就是中间调用程序的全局变量,LIKP是交货抬头,也有LIPS交货行项目
TYPES: zxlikpvb TYPE TABLE OF likp.
FIELD-SYMBOLS:<ls_likp> TYPE likp.
FIELD-SYMBOLS:<lt_likp> TYPE zxlikpvb.
IF sy-tcode = 'VF01' OR sy-tcode = 'VF11'.
LOOP AT t_bkpf.
LOOP AT t_bseg WHERE gjahr = t_bkpf-gjahr AND bukrs = t_bkpf-bukrs AND belnr = t_bkpf-belnr.
CLEAR l_akont. "ztfico001是科目维护表,此为根据科目进行替代
SELECT SINGLE akont INTO @l_akont FROM ztfico001 WHERE akont = @t_bseg-hkont .
IF sy-subrc = 0.
sytabix = sy-tabix.
SELECT SINGLE vbeln FROM lips INTO @DATA(l_vbeln) WHERE vgbel = @t_bkpf-xblnr. "根据销售订单找到发货单