‎2007 Mar 05 4:03 AM
Dear Guys
I want to give my user a selection having only WBS element for selection,
Users requirment is that if he enters a WBS element then the report will show details of all related WBS element below it but not all un related WBS as CJ23N do it.
How the above thing is achievable.
‎2007 Mar 05 4:52 AM
Hi,
You can declare a selection screen like:
select-options: s_wbs for PRPS-PSPNR.
then fetch data from PRPS and PROJ tables and display.
Regards,
Anji
‎2007 Mar 05 5:47 AM
Hi,
I am sending the model report for WBS element . It will be very useful for u.
REPORT YMS_WBSNEWN LINE-SIZE 250 NO STANDARD PAGE HEADING.
TYPE-POOLS:SLIS.
TABLES:EKPO,PRPS,MSEG,MAKT,EKKO,MKPF,EKET,LFA1,MDSB,MBEW,ekkn.
DATA: BEGIN OF ITAB OCCURS 0,
NAME1 LIKE LFA1-NAME1, "VENDOR NAME
POSID LIKE PRPS-POSID, "WBS element
PSPNR LIKE PRPS-PSPNR,
EBELN LIKE MSEG-EBELN, "Purchasing Document Number
EBELP LIKE MSEG-EBELP, "Item Number ofPurchasing Document
EMATN LIKE EKPO-EMATN, "Ouput material no
TXZ01 LIKE EKPO-TXZ01, "OUTPUT MATERIAL DESCRIPTION
MENGE LIKE ekpo-MENGE, "OP Quantity
MEINS LIKE ekpo-MEINS, "UOM
ELIKZ LIKE EKPO-ELIKZ, "DELIVERY COMPLETED INDICATOR
MATNR LIKE EKPO-MATNR, "Input material no
BWART LIKE MSEG-BWART, "Movement type
EINDT LIKE EKET-EINDT, "ITEM DELIVERY DATE(PO)
LIFNR LIKE MSEG-LIFNR, "Vendor's account number
BUDAT LIKE MKPF-BUDAT, "POSTING DATE
MATNR LIKE MSEG-MATNR, "Input material no
MBLNR LIKE MSEG-MBLNR, "MAT DOC NO
MJAHR LIKE MSEG-MJAHR, "MAT DOC YR
EMATN LIKE MSEG-EMATN, "Output material No
ERFMG LIKE MDSB-ERFMG, " i/p material reqd qty
ERFME LIKE MDSB-ERFME, "UOM
BWART LIKE MSEG-BWART, "MOVMENT TYPE
PS_PSP_PNR LIKE ekkn-PS_PSP_PNR, "WBS element
MAKTX LIKE MAKT-MAKTX, "MATERIAL DESCRIPTION
EKGRP LIKE EKKO-EKGRP, "PURCHASING GROUP
BEDAT LIKE EKKO-BEDAT, "Purchasing document date
EKORG LIKE EKKO-EKORG, "PURCHASING ORGANISATION
STPRS LIKE MBEW-STPRS, "STANDARD PRICE
DMENG TYPE P DECIMALS 3, "DIFFERENCE
UMENG TYPE P DECIMALS 3, "TOTAL VALUE
END OF ITAB.
DATA: DIFF TYPE P DECIMALS 3.
DATA: TOTAL TYPE P DECIMALS 3.
DATA: REPID LIKE SY-REPID,
AFIELD TYPE SLIS_T_FIELDCAT_ALV,
FIELDCAT TYPE SLIS_FIELDCAT_ALV,
FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
I_EVENTS TYPE SLIS_T_EVENT,
S_EVENTS TYPE SLIS_ALV_EVENT,
SORTCAT TYPE SLIS_T_SORTINFO_ALV,
SORTCAT_LN TYPE SLIS_SORTINFO_ALV,
LAYOUT_IN TYPE SLIS_LAYOUT_ALV,
LAYOUT_IN1 TYPE SLIS_LAYOUT_ALV,
EVENTCAT TYPE SLIS_T_EVENT,
EVENTCAT_LN LIKE LINE OF EVENTCAT,
LS_KEYINFO TYPE SLIS_KEYINFO_ALV.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS WBS FOR PRPS-POSID NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS VENDOR FOR ekko-LIFNR. "NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS PDATE FOR ekko-bedat. "NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS PGROUP FOR EKKO-EKGRP. "NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS PURORG FOR EKKO-EKORG. "NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS PURDOCNO FOR EKPO-EBELN. "NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
REPID = SY-REPID.
PERFORM GET_VAL.
*SELECT EBELN EBELP FROM EKPO INTO (ITAB-EBELN, ITAB-EBELP) WHERE EBELN
*IN PURDOCNO.
*
SELECT APOSID BMENGE BMEINS BBWART
BLIFNR BEBELN BEBELP CNAME1 DEMATN EMATNR F~STPRS
"EERFMGEERFME
INTO CORRESPONDING FIELDS OF
*TABLE ITAB FROM PRPS AS A INNER JOIN MSEG AS B ON A~PSPNR =
*B~PS_PSP_PNR
INNER JOIN LFA1
AS C ON CLIFNR = BLIFNR INNER JOIN EKPO AS D ON DEBELN = BEBELN
AND DEBELP = BEBELP
INNER JOIN MDSB AS E ON EEBELN = BEBELN AND E~EBELP
= BEBELP INNER JOIN MBEW AS F ON FMATNR = EMATNR WHERE APOSID IN
*WBS AND
**B~LIFNR IN VENDOR."AND BWART IN ('101').
select aematn aebeln aebelp amenge ameins aTXZ01 a~elikz
b~PS_PSP_PNR
cekgrp cbedat clifnr cekorg
dposid ematnr gstprs "flifnr fmblnr fmjahr ferfmg ferfme
from ekpo as a inner join ekkn as b
on aebeln eq bebeln and aebelp eq bebelp
inner join ekko as c on aebeln eq cebeln
inner join prps as d on bps_psp_pnr eq dpspnr
inner join mdsb as e
on aebeln eq eebeln and aebelp eq eebelp
inner join mbew as g on gmatnr eq ematnr
inner join mseg as f on fmatnr eq ematnr
into corresponding fields of table itab where
d~posid in wbs and
c~ekgrp in pgroup and
c~ekorg in purorg and
a~ebeln in purdocno and
c~bedat in pdate and
c~lifnr in vendor .
*AND A~ELIKZ NE 'X'.
and f~bwart eq '122'.
"and f~lifnr in vendor
*DELETE ITAB WHERE MATNR IS INITIAL.
LOOP AT ITAB.
clear sy-subrc.
IF ITAB-ELIKZ EQ 'X'.
SELECT SINGLE MBLNR MJAHR MENGE MEINS BWART INTO (ITAB-MBLNR,
ITAB-MJAHR, ITAB-ERFMG, ITAB-ERFME, ITAB-BWART) FROM MSEG WHERE MATNR EQ
ITAB-ematn AND BWART EQ '122' AND EBELN EQ ITAB-EBELN AND EBELP EQ
ITAB-EBELP.
IF SY-SUBRC NE 0.
CLEAR: ITAB-MBLNR,ITAB-MJAHR,ITAB-ERFMG, ITAB-ERFME.
delete ITAB index sy-tabix.
continue.
ELSE.
ITAB-ELIKZ = ''.
ENDIF.
ENDIF.
SELECT SINGLE MBLNR MJAHR MENGE MEINS INTO (ITAB-MBLNR, ITAB-MJAHR,
ITAB-ERFMG, ITAB-ERFME) FROM MSEG WHERE
MATNR EQ ITAB-MATNR AND BWART EQ '541'
and ebeln eq itab-ebeln.
IF SY-SUBRC NE 0.
CLEAR: ITAB-MBLNR,ITAB-MJAHR,ITAB-ERFMG, ITAB-ERFME.
delete ITAB index sy-tabix.
continue.
ENDIF.
*select single stprs into itab-stprs from mbew where matnr eq itab-matnr
*.
select single name1 into itab-name1 from lfa1 where lifnr eq itab-lifnr.
IF SY-SUBRC NE 0.
CLEAR itab-name1 .
CLEAR ITAB-ERFMG.
CLEAR: ITAB-ERFME,ITAB-MBLNR,ITAB-MJAHR.
ENDIF.
SELECT SINGLE BUDAT FROM MKPF
INTO (itab-BUDAT) WHERE MBLNR EQ ITAB-MBLNR AND MJAHR EQ ITAB-MJAHR.
ITAB-BUDAT = MKPF-BUDAT.
IF SY-SUBRC NE 0.
CLEAR ITAB-BUDAT.
ENDIF.
*
SELECT EEINDT FEBELN INTO CORRESPONDING FIELDS OF TABLE ITAB FROM
*EKET AS E INNER JOIN EKKO AS F ON E~EBELN EQ F~EBELN "INTO ITAB-EINDT
WHERE EEBELN EQ ITAB-EBELN AND FEKGRP IN PGROUP AND F~EKORG IN
PURORG.
AND A~PSPNR EQ ITAB-PS_PSP_PNR.
ITAB-EMATN = EKPO-EMATN.
ITAB-MENGE = EKPO-MENGE.
ITAB-MEINS = EKPO-MEINS.
ITAB-EBELN = EKPO-EBELN.
ITAB-EBELP = EKPO-EBELP.
ITAB-EINDT = EKET-EINDT.
IF SY-SUBRC NE 0.
CLEAR ITAB.
CLEAR ITAB-EMATN.
CLEAR ITAB-MENGE.
CLEAR ITAB-MEINS.
CLEAR ITAB-EBELN.
CLEAR ITAB-EBELP.
CLEAR ITAB-EINDT.
ENDIF.
SELECT SINGLE MAKTX FROM MAKT INTO (itab-MAKTX) WHERE
MATNR EQ ITAB-MATNR. "AND PSPNR EQ ITAB-PS_PSP_PNR.
ITAB-MAKTX = MAKT-MAKTX.
IF SY-SUBRC NE 0.
CLEAR ITAB-MAKTX.
ENDIF.
SELECT SINGLE MATNR FROM MDSB INTO (MDSB-MATNR) WHERE
MATNR EQ ITAB-MATNR AND EBELN EQ EKPO-EBELN AND EBELP EQ
EKPO-EBELP . "AND PSPNR EQ ITAB-PS_PSP_PNR.
*
ITAB-MATNR = MDSB-MATNR.
*
IF SY-SUBRC NE 0.
CLEAR ITAB-MATNR.
ENDIF.
SELECT SINGLE EINDT FROM EKET INTO (itab-EINDT) WHERE
EBELN EQ ITAB-EBELN AND EBELP EQ ITAB-EBELP.
"AND PSPNR EQ ITAB-PS_PSP_PNR.
ITAB-EINDT = EKET-EINDT.
IF SY-SUBRC NE 0.
CLEAR ITAB-EINDT.
ENDIF.
SELECT SINGLE TXZ01 FROM EKPO INTO (EKPO-TXZ01) WHERE
EBELN EQ ITAB-EBELN AND EBELP EQ ITAB-EBELP AND EMATN EQ
ITAB-EMATN.
"AND PSPNR EQ ITAB-PS_PSP_PNR.
*
ITAB-TXZ01 = EKPO-TXZ01.
*
IF SY-SUBRC NE 0.
CLEAR ITAB-TXZ01.
ENDIF.
*
SELECT SINGLE BEDAT FROM EKKO INTO (EKKO-BEDAT) WHERE
EBELN EQ ITAB-EBELN AND EKGRP IN PGROUP AND EKORG IN PURORG AND
BEDAT IN PDATE .
"AND PSPNR EQ ITAB-PS_PSP_PNR.
*
ITAB-BEDAT = EKKO-BEDAT.
**
IF SY-SUBRC NE 0.
CLEAR ITAB.
ENDIF.
MODIFY ITAB INDEX SY-TABIX.
clear itab.
ENDLOOP.
LOOP AT ITAB.
CLEAR DIFF.
DIFF = ITAB-ERFMG - ITAB-MENGE.
DIFF = ITAB-BPMNG - ITAB-MENGE.
ITAB-DMENG = DIFF.
MODIFY ITAB INDEX SY-TABIX.
clear itab.
ENDLOOP.
*
*
LOOP AT ITAB.
CLEAR TOTAL.
TOTAL = ITAB-MENGE * ITAB-STPRS.
DIFF = ITAB-BPMNG - ITAB-MENGE.
ITAB-UMENG = TOTAL.
MODIFY ITAB INDEX SY-TABIX.
clear itab.
ENDLOOP.
SORT ITAB BY EMATN .
DELETE ITAB WHERE ELIKZ eq 'X' .
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING EMATN.
sort itab by ebeln ebelp ascending.
LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT_IN-ZEBRA = 'X'.
EVENTCAT_LN-NAME = 'TOP_OF_PAGE'.
EVENTCAT_LN-FORM = 'SUBROUTINE1'.
APPEND EVENTCAT_LN TO EVENTCAT.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPID
IT_FIELDCAT = AFIELD
IT_SORT = SORTCAT
I_SAVE = 'X '
IT_EVENTS = EVENTCAT
TABLES
T_OUTTAB = ITAB.
----
FORM SUBROUTINE1 *
----
........ *
----
FORM SUBROUTINE1.
WRITE:/ 'SERVALL ENGG P LTD.',
/,
/25 'REPORT DATE:', SY-DATUM, 128 'PAGE NO.:' , SY-PAGNO.
*ULINE.
ENDFORM.
----
FORM GET_VAL *
----
........ *
----
FORM GET_VAL.
FIELDCAT-COL_POS = '1'.
FIELDCAT-FIELDNAME = 'NAME1'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'LFA1'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'VENDOR NAME'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '2'.
FIELDCAT-FIELDNAME = 'EBELN'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKPO'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'PURDOCNO'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '3'.
FIELDCAT-FIELDNAME = 'BEDAT'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKKO'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'PURDOCDT'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '4'.
FIELDCAT-FIELDNAME = 'EBELP'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'ITEMNO'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '5'.
FIELDCAT-FIELDNAME = 'BUDAT'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MKPF'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = '541ISSUE DT'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '6'.
FIELDCAT-FIELDNAME = 'EMATN'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKPO'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'O/P MATERIAL NO'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '7'.
FIELDCAT-FIELDNAME = 'TXZ01'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKPO'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'O/P MAT.DESC'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '8'.
FIELDCAT-FIELDNAME = 'MATNR'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'MATERIAL NO'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '9'.
FIELDCAT-FIELDNAME = 'MAKTX'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MAKT'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'MAT DESC.'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '10'.
FIELDCAT-FIELDNAME = 'EINDT'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKET'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'PO DELY DATE.'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '6'.
FIELDCAT-FIELDNAME = 'BWART'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'MOVEMENT TYPE'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '11'.
FIELDCAT-FIELDNAME = 'ERFMG'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'I/P MAT REQD QTY'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '12'.
FIELDCAT-FIELDNAME = 'ERFME'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'UOM'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '13'.
FIELDCAT-FIELDNAME = 'MENGE'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKPO'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'PO QTY'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '14'.
FIELDCAT-FIELDNAME = 'MEINS'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'EKPO'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'UOM'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '15'.
FIELDCAT-FIELDNAME = 'STPRS'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MBEW'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'STD PRICE'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '16'.
FIELDCAT-FIELDNAME = 'UMENG'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MBEW'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'TOTAL VALUE'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '17'.
FIELDCAT-FIELDNAME = 'DMENG'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'DIFF QTY'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '18'.
FIELDCAT-FIELDNAME = 'POSID'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'PRPS'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'WBS ELEMENT'.
APPEND FIELDCAT TO AFIELD.
FIELDCAT-COL_POS = '19'.
FIELDCAT-FIELDNAME = 'MBLNR'.
FIELDCAT-TABNAME = 'ITAB'.
FIELDCAT-REF_TABNAME = 'MSEG'.
FIELDCAT-DO_SUM = ''.
FIELDCAT-SELTEXT_l = 'MATDOCNO'.
APPEND FIELDCAT TO AFIELD.
*
*
SORTCAT_LN-TABNAME = ITAB.
SORTCAT_LN-FIELDNAME = 'EBELN'.
sortcat_ln-down = 'x'.
*
SORTCAT_LN-SUBTOT = 'X'.
SORCAT_LN-UP = 'X'.
APPEND SORTCAT_LN TO SORTCAT.
ENDFORM.
Thanks,
Shankar