ABAP-报表根据项目定义和WBS元素查询

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.
posted @ 2023-07-06 16:19  yddwinter  阅读(145)  评论(0编辑  收藏  举报