输入信息:
- 单位:S_WERKS
- 订单类型:S_BSART
- 订单编号:S_EBELN
- 供应商:S_LIFNR
- 采购组:S_EKFRP
- 订单日期:S_BEDAT
- 操作人员:S_ERNAM
- 单据类型:
输出格式:
打印出A4纸大小的采购订单。
另附:报表格式(略)
选择界面:
结果输出界面
程序主要逻辑:
一、根据搜索条件筛选出相应的采购订单内容:
SELECT eket~ebeln eket~ebelp eket~eindt eket~menge
ekpo~knttp ekpo~matnr ekpo~txz01 ekpo~meins ekpo~mwskz
ekko~bedat ekko~ernam ekko~ekgrp ekko~lifnr
ekko~zterm ekko~waers ekko~inco1 ekko~inco2
ekko~knumv
INTO TABLE itab_main
FROM eket
INNER JOIN ekpo ON ( eket~ebeln = ekpo~ebeln ) AND
( eket~ebelp = ekpo~ebelp )
INNER JOIN ekko ON eket~ebeln = ekko~ebeln
WHERE ekko~bstyp = 'F' AND
ekko~ekgrp IN s_ekgrp AND
eket~ebeln IN s_ebeln AND
ekko~bedat IN s_bedat AND
ekko~lifnr IN s_llief
ORDER BY eket~ebeln.
根据筛选出的符合条件的采购订单,取相关内容:
LOOP AT itab_main.
PERFORM get_anln1. "资产描述ok
PERFORM get_konv."价格信息ok
PERFORM get_dispo."MRP控制者ok
PERFORM get_eknam."采购组的描述ok
PERFORM get_werk."工厂名称ok
PERFORM get_lfa1."供应商ok
PERFORM get_tvzbt."支付条件ok
PERFORM get_usr21."人员编号ok
PERFORM get_mwskz."税码ok
PERFORM get_bmmc. "合并编码名称
MODIFY itab_main.
ENDLOOP.
二、在预览屏幕上按“打印”按钮,打印采购订单:
LOOP AT itab_main.
AT NEW ebeln.
IF NOT sy-tabix = 1.
READ TABLE itab_main INDEX sy-tabix.
PERFORM write_foot USING v_sumtotal.
NEW-PAGE.
v_sumtotal = 0.
v_no = 0.
ENDIF.
READ TABLE itab_main INDEX sy-tabix.
PERFORM write_head.
ENDAT.
IF v_check = '1'.
v_no = 0.
v_sumtotal = 0.
v_check = '0'.
ENDIF.
v_no = v_no + 1.
PERFORM write_body USING v_no.
v_sumtotal = v_sumtotal + itab_main-total.
IF ( v_no = p_count ) OR ( sy-tabix = v_count ).
PERFORM write_foot USING v_sumtotal.
IF sy-tabix < v_count.
NEW-PAGE.
PERFORM write_head.
v_check = '1'.
ENDIF.
ENDIF.
ENDLOOP.