1. 报表查询条件有“项目定义”,“WBS元素”
2. 处理方法:将项目定义转成多个WBS元素,然后在查询条件里面使用IN
"保存WBS的数组
RANGES:p_pspnr FOR ebkn-ps_psp_pnr.
"选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK blk_01 WITH FRAME TITLE TEXT-001.
p_posid FOR prps-posid, "WBS元素
p_pspid FOR proj-pspid, "项目定义
SELECTION-SCREEN END OF BLOCK blk_01.
"如果查询条件不为空
IF p_posid[] IS NOT INITIAL OR p_pspid[] IS NOT INITIAL.
SELECT prps~pspnr,prps~posid
FROM proj INNER JOIN prps ON proj~pspnr = prps~psphi
INTO TABLE @DATA(lt_prps)
WHERE proj~pspid IN @p_pspid
AND prps~posid IN @p_posid.
LOOP AT lt_prps INTO DATA(ls_prps).
CLEAR p_pspnr.
p_pspnr = 'IEQ'.
p_pspnr-low = ls_prps-pspnr.
APPEND p_pspnr.
ENDLOOP.
ENDIF.
"查询采购订单
SELECT ekko~bsart AS ekko_bsart,
ekko~ernam,
ekko~aedat,
ekko~lifnr,
ekko~ebeln,
ekko~ekgrp AS ekko_ekgrp,
ekpo~knttp AS ekpo_knttp,
ekpo~menge AS ekpo_menge,
ekpo~bprme,
ekpo~peinh,
ekpo~meins,
* ekpo~netpr,
ekpo~mwskz,
ekpo~elikz,
ekpo~matnr,
ekpo~pstyp AS ekpo_pstyp,
ekpo~loekz AS ekpo_loekz,
ekpo~ebelp,
ekpo~werks,
eket~eindt,
eket~wemng,
ekkn~ps_psp_pnr AS pspnr
INTO TABLE @DATA(lt_kopo)
FROM ekpo INNER JOIN ekko ON ekpo~ebeln = ekko~ebeln
LEFT JOIN eket ON eket~ebeln = ekpo~ebeln AND eket~ebelp = ekpo~ebelp
LEFT JOIN ekkn ON ekkn~ebeln = ekpo~ebeln AND ekkn~ebelp = ekpo~ebelp
WHERE ekko~aedat IN @p_aedat
AND ekpo~matnr IN @p_matnr
AND ekko~ekorg IN @p_ekorg
AND ekko~ekgrp IN @p_ekgrp
AND eket~eindt IN @p_eindt
AND ekkn~ps_psp_pnr IN @p_pspnr "去ekkn里面查WBS元素
AND ekpo~elikz IN @p_elikz
AND ekpo~loekz IN @p_loekz.