Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
ccc_ccc
Active Contributor

Objective:


Every organization use multiple reports like Sales, Shipping, Billing and Profit & Loss to make good business decision. In this all areas we might have developed and used huge BEx reports, in all reports we might restrict (include/exclude) characteristics(like 0MATERIAL, 0PLANT) values 1001, 2002 for company codes, S01, S02 for Sales organization , Doc Type , Plant to meet business report requirement.


Every organization will expand their business, as part of business growth organization might merge or establish new plant, company codes, sales organizations etc.


Technical Impact due to organization changes.


Due to organization changes we might get into technical challenges/issues for example as part of business expand Company ABC new plant has been acquired (Plant 0567) and now I would like to include this new plant wherever already nearby plants (0545) included to same area manager to analysis inbound/outbound business data,  for this I need to search where existing plant 0545 is restricted so that I can include new plant 0567.


Approaches to find 0545.




  • Search manually respective reports in BEx designer like Filters Area, Default Area, Restricted Key Figure  and Selections, etc....might be restricted anywhere in report like cells, so its very tough job if its complex report's

  • Search in table level,  however its required skill like BEx tables and relationship between tables

  • Search through FM however its gives unstructured data, need to format and also it works one report at a time.


Solution "One Click Away"


So, I had written ABAP program which will give list of reports which are restricted by given Infoprovider/InfoObect and characteristics value.

Here we can search based on Multiprovider/InfoCube/DSO OR Infoset wise, we have to select Radio button based on requirement as like below

 



Example for Mulitprovider.

 

Example 1

Now, I am searching based on Mulitprovider/InfoCube and selections as like below

 

Multi/Cube Tech Name: ALL (Means all Mulitproviders and Infocubes)

 

Infoobject Tech Name: 0PLANT (For Plant) You can give more infoobjects at a time.

 

Infoobject Value          : ALL (Means for All Plants).

 

 



Output:

 

Provides list of reports restricted by All 0PLANT values


 

Example 2

Now, I am searching based on Mulitprovider/InfoCube and selections as like below

 

Multi/Cube Tech Name: ALL (Means all Mulitproviders and Infocubes)

 

Infoobject Tech Name: 0PLANT (For to Plant) you can give more infoobjects at a time.

 

Infoobject Value            : 1111 (Where Plant equal to 1111).

 



Output

 

Provides list of reports where plant restricted by 1111


 




Example for InfoSet.

Example 1

 

Now, I am searching based on Infoset and selections as like below

 

Multi/Cube Tech Name : ALL (Means all Infosets)

 

Infoobject Tech Name  : 0PLANT (For Plant) You can give more infoobjects at a time.

 

Infoobject Value            : ALL (Means for All Plants).

 


Output:


 


Provides list of reports restricted by All 0PLANT values


 


Example 2

Now, I am searching based on Infoset and selections as like below

 

Multi/Cube Tech Name: ALL (Means all Infosets)

 

Infoobject Tech Name: 0PLANT (For Plant), You can give more infoobjects at a time.

 

Infoobject Value            : 111 (Where Plant equal to 111).

 



Output

 

Provides list of reports where plant restricted by 111




Selection Screen Names



































I_CHAR InfoObject Value
I_CHARM InfoObject Value
I_INFSET InfoSet Tech Name
I_MULTI Multi/Cube Tech Name
I_OBJECM InfoObject Tech Name
I_OBJECT InfoObject Tech Name
P_IS Infoset
P_MC Multiprovider/InfoCube

 


Attached ABAP Code.


REPORT ZBW_ BEX_SEL_TRACK.

 

TABLES: RSZRANGE,RSZ_X_RANGE. "Comment this line in 7.5 BW version
TYPE-POOLSSLIS.

DATAI_CHAR_D(80)   TYPE C,
I_OBJECT_D(30TYPE C,
I_INFOSET_D    TYPE RSQINFOSET,
I_INFOCUBE     TYPE RSINFOPROV.

DATASYTABIX     LIKE SY-TABIX,
W_TXTLG     TYPE RSTXTLG,
W_FALIAS    TYPE RSQALIAS,
W_INFOSET   TYPE RSQINFOSET,
W_DEFTP     TYPE RSZDEFTP,
W_MAPNAME   TYPE RSZCOMPID,
W_FNAME     TYPE RSINFOPROV,
W_IOBJNMR   TYPE RSIOBJNM,
FLAG_Q(1)   TYPE C,
FLAG_O(1)   TYPE C,
FLAG_S(1)   TYPE C,
LD_COLOR(1TYPE C.

DATAFIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
GD_REPID     LIKE SY-REPID.

DATALD_LENGTH TYPE I.

DATAGT_EVENTS     TYPE SLIS_T_EVENT.

*Types declaration

TYPESBEGIN OF TY_ODS,
ODSOBJECT TYPE RSDODSOBJECT,
END OF TY_ODS.

TYPESBEGIN OF TY_PROVIDER,
PROVIDER TYPE RSQINFOSET,
END OF TY_PROVIDER.

TYPESBEGIN OF TY_INFOSET,
INFOSET TYPE RSQINFOSET,
FALIAS  TYPE RSQALIAS,
TALIAS  TYPE RSQALIAS,
FNAME   TYPE RSINFOPROV,
END OF TY_INFOSET.

TYPESBEGIN OF TY_NAV,
ATRNAVNM TYPE RSATRNAVNM,
END OF TY_NAV.

TYPESBEGIN OF QRY_DET,
COMPUID  TYPE RSRREPDIR-COMPUID,
INFOCUBE TYPE RSRREPDIR-INFOCUBE,
COMPID   TYPE RSRREPDIR-COMPID,
LASTUSER TYPE RSRREPDIR-LASTUSER,
END OF QRY_DET.

TYPESBEGIN OF QRY_DESC,
ELTUID TYPE RSZELTTXT-ELTUID,
TXTLG  TYPE RSZELTTXT-TXTLG,
END OF QRY_DESC.

TYPESC_T_ELTDIR TYPE RSZ_X_ELTDIR,
C_T_RANGE  TYPE RSZ_X_RANGE.

TYPESBEGIN OF OUTPUT,
COMPID        TYPE RSRREPDIR-COMPID,
TXTLG         TYPE RSZELTTXT-TXTLG,
INFOCUBE      TYPE RSRREPDIR-INFOCUBE,
DEFTP         TYPE RSZELTDIR-DEFTP,
MAPNAME       TYPE RSZELTDIR-MAPNAME,
SIGN(10)      TYPE C,
OPT           TYPE RSZ_OPERATOR,
LOW           TYPE RSCHAVLEXT,
HIGH          TYPE RSCHAVLEXT,
INFOBJ(40)    TYPE C,
INFOBJI(40)   TYPE C,
LASTUSER      TYPE RSRREPDIR-LASTUSER,
LINE_COLOR(4TYPE C,
END OF OUTPUT.

TYPESBEGIN OF TY_RSQFOBJ,
INFOSET TYPE RSQINFOSET,
FALIAS  TYPE RSQALIAS,
FNAME   TYPE RSINFOPROV,
END OF TY_RSQFOBJ.

TYPESBEGIN OF TY_RSZSELECT,
ELTUID TYPE SYSUUID_25,
IOBJNM TYPE RSIOBJNM,
END OF TY_RSZSELECT.
TYPESBEGIN OF TY_IOBJ,
IOBJNM TYPE RSDIOBJNM,
END OF TY_IOBJ.

*Table declartion
DATAT_ODS       TYPE STANDARD TABLE OF TY_ODS,
T_IOBJ      TYPE STANDARD TABLE OF TY_IOBJ,
T_INFOSET   TYPE STANDARD TABLE OF TY_INFOSET,
T_PROVIDER  TYPE STANDARD TABLE OF  TY_PROVIDER,
T_NAV       TYPE STANDARD TABLE OF TY_NAV,
T_RSZSELECT TYPE STANDARD TABLE OF TY_RSZSELECT,
T_QRY_DET   TYPE STANDARD TABLE OF QRY_DET,
T_QRY_DESC  TYPE STANDARD TABLE OF QRY_DESC,
T_ELTDIR    TYPE STANDARD TABLE OF  C_T_ELTDIR,
T_RANGE     TYPE STANDARD TABLE OF  C_T_RANGE,
T_OUTPUT    TYPE STANDARD TABLE OF OUTPUT,
T_RSQFOBJ   TYPE STANDARD TABLE OF TY_RSQFOBJ.

*Workarea declartion:
DATAWA_ODS       TYPE TY_ODS,
WA_IOBJ      TYPE TY_IOBJ,
WA_INFOSET   TYPE TY_INFOSET,
WA_PROVIDER  TYPE TY_PROVIDER,
WA_NAV       TYPE TY_NAV,
WA_RSZSELECT TYPE TY_RSZSELECT,
WA_QRY_DET   TYPE QRY_DET,
WA_QRY_DESC  TYPE QRY_DESC,
WA_ELTDIR    TYPE RSZ_X_ELTDIR,
WA_RANGE     TYPE RSZ_X_RANGE,
WA_OUTPUT    TYPE OUTPUT,
WA_RSQFOBJ   TYPE TY_RSQFOBJ.

PARAMETERSP_MC RADIOBUTTON GROUP SEL DEFAULT 'X' USER-COMMAND AC,
P_IS RADIOBUTTON GROUP SEL.

SELECTION-SCREEN BEGIN OF BLOCK MULTI
WITH FRAME TITLE TITLE2.

SELECT-OPTIONSI_MULTI FOR I_INFOSET_D DEFAULT 'ALL' OBLIGATORY MODIF ID UC2.
SELECT-OPTIONSI_OBJECM FOR I_OBJECT_D  DEFAULT '0PLANT' OBLIGATORY MODIF ID UC2.
SELECT-OPTIONSI_CHARM FOR I_CHAR_D  DEFAULT 'ALL' OBLIGATORY MODIF ID UC2.

SELECTION-SCREEN END   OF BLOCK MULTI.

SELECTION-SCREEN BEGIN OF BLOCK INFOSET
WITH FRAME TITLE TITLE1.

SELECT-OPTIONSI_INFSET FOR  I_INFOCUBE DEFAULT 'ALL' OBLIGATORY MODIF ID UC1.
SELECT-OPTIONSI_OBJECT FOR I_OBJECT_D  DEFAULT '0PLANT' OBLIGATORY MODIF ID UC1.
SELECT-OPTIONSI_CHAR FOR I_CHAR_D  DEFAULT 'ALL' OBLIGATORY MODIF ID UC1.

SELECTION-SCREEN END   OF BLOCK INFOSET.

***************************** Performs *******************************

CLEART_PROVIDER,T_NAV,T_QRY_DET,T_QRY_DESCT_RANGE,T_ELTDIR,T_RSQFOBJ,T_ODS.

*Error handling
IF I_OBJECT-LOW EQ 'ALL'.
MESSAGE E208(00WITH '(ALL) is invalid InfoObject,enter Valid InfoObject' .
ENDIF.

IF I_OBJECM-LOW EQ 'ALL'.
MESSAGE E208(00WITH '(ALL) is invalid InfoObject,enter Valid InfoObject' .
ENDIF.

INITIALIZATION.
TITLE1 'Infoset'.
TITLE2 'Multiprovider/Infocube/ODS'.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
IF P_MC 'X'.
IF SCREEN-GROUP1 'UC1'.
SCREEN-INPUT '0'.
ENDIF.
IF SCREEN-GROUP1 'UC2'.
SCREEN-INPUT '1'.
ENDIF.
ELSEIF P_IS 'X'.
IF SCREEN-GROUP1 'UC2'.
SCREEN-INPUT '0'.
ENDIF.
IF SCREEN-GROUP1 'UC1'.
SCREEN-INPUT '1'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

START-OF-SELECTION.

PERFORM SELECTION_FILL.
PERFORM QUERY_DETAILS.
PERFORM PROCESSDATA.
PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_EVENTS.
PERFORM DISPLAY_ALV_REPORT.
PERFORM CLEAR_TABS.

***************************** Forms *******************************

FORM SELECTION_FILL .
IF P_IS EQ 'X'.
IF I_INFSET-LOW EQ 'ALL'.
SELECT INFOSET FROM RSQISET INTO TABLE T_PROVIDER
WHERE OBJVERS 'A'.

ELSE.
SELECT INFOSET FROM RSQISET INTO TABLE T_PROVIDER
FOR ALL ENTRIES IN  I_INFSET WHERE INFOSET I_INFSET-LOW.

ENDIF.

IF I_OBJECT-LOW IS NOT INITIAL.
SELECT ATRNAVNM FROM RSDATRNAV INTO TABLE T_NAV FOR ALL ENTRIES IN
I_OBJECT WHERE ATTRINM I_OBJECT-LOW AND
OBJVERS 'A'.

IF T_NAV IS NOT INITIAL.
LOOP AT T_NAV INTO WA_NAV.
I_OBJECT-LOW WA_NAV-ATRNAVNM.
I_OBJECT-SIGN 'I'.
I_OBJECT-OPTION 'EQ'.
APPEND I_OBJECT.
ENDLOOP.
ENDIF.

SORT I_OBJECT BY LOW.
DELETE ADJACENT DUPLICATES FROM I_OBJECT COMPARING LOW.

SELECT ELTUID IOBJNM FROM RSZSELECT INTO TABLE T_RSZSELECT WHERE IOBJNM IN I_OBJECM AND
OBJVERS 'A'.
IF SY-SUBRC 0.
SORT T_RSZSELECT BY ELTUID IOBJNM.
ENDIF.

ENDIF.

ELSEIF P_MC EQ 'X'.

IF I_MULTI-LOW EQ 'ALL'.
SELECT INFOCUBE FROM RSDCUBE INTO TABLE T_PROVIDER
WHERE CUBETYPE NE 'A' AND
OBJVERS 'A'.

SELECT ODSOBJECT FROM RSDODSO INTO TABLE T_ODS
WHERE OBJVERS 'A'.

IF SY-SUBRC 0.

LOOP AT T_ODS INTO WA_ODS.
WA_PROVIDER-PROVIDER  WA_ODS-ODSOBJECT.
APPEND WA_PROVIDER TO T_PROVIDER.
ENDLOOP.

ENDIF.
SELECT IOBJNM FROM RSDIOBJ INTO TABLE T_IOBJ WHERE OBJVERS 'A' AND
OBJSTAT 'ACT' AND
ATRONLYFL ''   .
IF SY-SUBRC 0.

LOOP AT T_IOBJ INTO WA_IOBJ.
WA_PROVIDER-PROVIDER WA_IOBJ-IOBJNM.
APPEND WA_PROVIDER TO T_PROVIDER.
ENDLOOP.
ENDIF.
ELSE.
SELECT INFOCUBE FROM RSDCUBE INTO TABLE T_PROVIDER
FOR ALL ENTRIES IN  I_MULTI WHERE INFOCUBE I_MULTI-LOW AND
OBJVERS 'A'.

SELECT ODSOBJECT FROM RSDODSO INTO TABLE T_ODS
FOR ALL ENTRIES IN I_MULTI WHERE ODSOBJECT I_MULTI-LOW AND
OBJVERS 'A'.

IF SY-SUBRC EQ 0.
LOOP AT T_ODS INTO WA_ODS.
WA_PROVIDER-PROVIDER  WA_ODS-ODSOBJECT.
APPEND WA_PROVIDER TO T_PROVIDER.
ENDLOOP.
ENDIF.

SELECT IOBJNM FROM RSDIOBJ INTO TABLE T_IOBJ WHERE IOBJNM IN I_MULTI AND
OBJVERS 'A' AND
OBJSTAT 'ACT' AND
ATRONLYFL ''   .
IF SY-SUBRC 0.
LOOP AT T_IOBJ INTO WA_IOBJ.
WA_PROVIDER-PROVIDER WA_IOBJ-IOBJNM.
APPEND WA_PROVIDER TO T_PROVIDER.
ENDLOOP.
ENDIF.

ENDIF.

IF I_OBJECM-LOW IS NOT INITIAL.
SELECT ATRNAVNM FROM RSDATRNAV INTO TABLE T_NAV FOR ALL ENTRIES IN
I_OBJECM WHERE ATTRINM I_OBJECM-LOW AND
OBJVERS 'A'.

IF T_NAV IS NOT INITIAL.
LOOP AT T_NAV INTO WA_NAV.
I_OBJECM-LOW WA_NAV-ATRNAVNM.
I_OBJECM-SIGN 'I'.
I_OBJECM-OPTION 'EQ'.
APPEND I_OBJECM.
ENDLOOP.
ENDIF.

SORT I_OBJECM BY LOW.
DELETE ADJACENT DUPLICATES FROM I_OBJECM COMPARING LOW.

SELECT ELTUID IOBJNM FROM RSZSELECT INTO TABLE T_RSZSELECT WHERE IOBJNM IN I_OBJECM AND
OBJVERS 'A'.
IF SY-SUBRC 0.
SORT T_RSZSELECT BY ELTUID IOBJNM.
ENDIF.

ENDIF.

ENDIF.

ENDFORM.                    " SELECTION_FILL

*&---------------------------------------------------------------------*
*&      Form  query_details
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM QUERY_DETAILS .
SELECT COMPUID INFOCUBE COMPID LASTUSER FROM RSRREPDIR INTO TABLE T_QRY_DET FOR ALL ENTRIES IN
T_PROVIDER WHERE INFOCUBE T_PROVIDER-PROVIDER AND
OBJVERS 'A'.
SORT T_QRY_DET BY COMPUID.

SELECT ELTUID TXTLG FROM RSZELTTXT INTO CORRESPONDING FIELDS OF TABLE T_QRY_DESC
FOR ALL ENTRIES IN T_QRY_DET WHERE ELTUID T_QRY_DET-COMPUID AND OBJVERS 'A'.
SORT T_QRY_DESC BY ELTUID.

IF P_IS EQ 'X'.
SELECT INFOSET FALIAS FNAME FROM RSQFOBJ INTO TABLE T_RSQFOBJ FOR ALL ENTRIES IN
T_PROVIDER WHERE INFOSET =  T_PROVIDER-PROVIDER AND
FNAME IN I_OBJECT AND
OBJVERS 'A'.
SORT T_RSQFOBJ BY INFOSET FALIAS FNAME.
ENDIF.
ENDFORM.                   " QUERY_DETAILS
*&---------------------------------------------------------------------*
*&      Form  PROCESSDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PROCESSDATA .
LOOP AT T_QRY_DET  INTO WA_QRY_DET.
CLEARSYTABIX.
SYTABIX SY-TABIX.

CALL FUNCTION 'RSZ_X_COMPONENT_GET'
EXPORTING
I_COMPUID  WA_QRY_DET-COMPUID
I_OBJVERS  'A'
TABLES
C_T_ELTDIR T_ELTDIR
C_T_RANGE  T_RANGE.

IF P_IS EQ 'X'.

SORT T_RANGE BY SELTP.
DELETE T_RANGE WHERE SELTP NE 1.
SORT T_RANGE BY LOWFLAG.
DELETE T_RANGE WHERE LOWFLAG EQ OR LOWFLAG EQ 3.
SORT T_RANGE BY LOW.
ELSEIF P_MC EQ 'X'.

SORT T_RANGE BY SELTP.
DELETE T_RANGE WHERE SELTP NE AND SELTP NE 2.
SORT T_RANGE BY LOWFLAG.
DELETE T_RANGE WHERE LOWFLAG EQ OR LOWFLAG EQ 3.
SORT T_RANGE BY LOW.
ENDIF.

IF P_IS EQ 'X'.

IF I_CHAR-LOW EQ 'ALL'.
ELSE.
SORT T_RANGE BY LOW.
DELETE T_RANGE WHERE LOW NOT IN I_CHAR.
ENDIF.

ELSEIF P_MC EQ 'X'.

IF  I_CHARM-LOW EQ 'ALL'.
ELSE.
SORT T_RANGE BY LOW.
DELETE T_RANGE WHERE LOW NOT IN I_CHARM.
ENDIF.

SORT T_RANGE BY IOBJNM.
DELETE T_RANGE WHERE IOBJNM NOT IN I_OBJECM.

ENDIF.

SORT T_RANGE BY ELTUID.
SORT T_ELTDIR BY ELTUID.

LOOP AT T_RANGE INTO WA_RANGE.
CLEARW_TXTLGW_FALIASW_INFOSET,W_DEFTP,W_MAPNAME,W_FNAME,W_IOBJNMR,
FLAG_QFLAG_OFLAG_S.

IF P_IS EQ 'X'.

SPLIT WA_RANGE-IOBJNM AT '___' INTO W_INFOSET W_FALIAS.
READ TABLE T_RSQFOBJ INTO WA_RSQFOBJ WITH KEY
INFOSET W_INFOSET
FALIAS W_FALIAS BINARY SEARCH.
IF SY-SUBRC EQ 0.
FLAG_O 'X'.
W_FNAME WA_RSQFOBJ-FNAME.
W_IOBJNMR WA_RANGE-IOBJNM.
ENDIF.

ELSEIF  P_MC EQ 'X'.
FLAG_O 'X'.
W_IOBJNMR WA_RANGE-IOBJNM.
ENDIF.

READ TABLE T_QRY_DESC INTO WA_QRY_DESC WITH KEY ELTUID
WA_QRY_DET-COMPUID BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_TXTLG WA_QRY_DESC-TXTLG.
FLAG_Q 'X'.
ENDIF.

READ TABLE T_ELTDIR INTO WA_ELTDIR WITH KEY ELTUID
WA_RANGE-ELTUID BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_DEFTP WA_ELTDIR-DEFTP.
W_MAPNAME WA_ELTDIR-MAPNAME.
FLAG_S 'X'.
ENDIF.

IF FLAG_Q EQ 'X' AND
FLAG_O EQ 'X' AND
FLAG_S EQ 'X'.
CLEAR FLAG_S.
LD_COLOR LD_COLOR + 1.
IF LD_COLOR 3.
LD_COLOR 1.
ENDIF.
CONCATENATE 'C' LD_COLOR '10' INTO WA_OUTPUT-LINE_COLOR.

WA_OUTPUT-COMPID  WA_QRY_DET-COMPID.
WA_OUTPUT-TXTLG  W_TXTLG.
WA_OUTPUT-INFOCUBE  WA_QRY_DET-INFOCUBE.
WA_OUTPUT-DEFTP W_DEFTP.
WA_OUTPUT-MAPNAME W_MAPNAME.
IF WA_RANGE-SIGN EQ 'I'.
WA_OUTPUT-SIGN  'Include'.
ELSEIF WA_RANGE-SIGN EQ 'E'.
WA_OUTPUT-SIGN  'Exclude'.
ENDIF.
WA_OUTPUT-OPT  WA_RANGE-OPT.
WA_OUTPUT-LOW WA_RANGE-LOW.
WA_OUTPUT-HIGH WA_RANGE-HIGH.
IF P_IS EQ 'X'.
WA_OUTPUT-INFOBJ W_FNAME.
ELSEIF P_MC EQ 'X'.
WA_OUTPUT-INFOBJ W_IOBJNMR.
ENDIF.
WA_OUTPUT-INFOBJI W_IOBJNMR.
WA_OUTPUT-LASTUSER  WA_QRY_DET-LASTUSER.

APPEND WA_OUTPUT  TO T_OUTPUT.

ENDIF.

ENDLOOP.
CLEART_RANGE.

IF  T_RANGE IS NOT INITIAL"07/09/2018
LOOP AT T_RSZSELECT INTO WA_RSZSELECT.
IF P_IS EQ 'X'.
*LD_COLOR = 0.

SPLIT WA_RSZSELECT-IOBJNM AT '___' INTO W_INFOSET W_FALIAS.
READ TABLE T_RSQFOBJ INTO WA_RSQFOBJ WITH KEY
INFOSET W_INFOSET
FALIAS W_FALIAS BINARY SEARCH.
IF SY-SUBRC EQ 0.
FLAG_O 'X'.
W_FNAME WA_RSQFOBJ-FNAME.
W_IOBJNMR WA_RSZSELECT-IOBJNM.
ENDIF.

ELSEIF  P_MC EQ 'X'.
FLAG_O 'X'.
W_IOBJNMR WA_RSZSELECT-IOBJNM.
ENDIF.

READ TABLE T_QRY_DESC INTO WA_QRY_DESC WITH KEY ELTUID
WA_QRY_DET-COMPUID BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_TXTLG WA_QRY_DESC-TXTLG.
FLAG_Q 'X'.
ENDIF.

READ TABLE T_ELTDIR INTO WA_ELTDIR WITH KEY ELTUID
WA_RSZSELECT-ELTUID BINARY SEARCH.
IF SY-SUBRC EQ 0.
W_DEFTP WA_ELTDIR-DEFTP.
W_MAPNAME WA_ELTDIR-MAPNAME.
FLAG_S 'X'.
ENDIF.

*        LD_COLOR = LD_COLOR + 1.

IF FLAG_Q EQ 'X' AND
FLAG_O EQ 'X' AND
FLAG_S EQ 'X'.
CLEAR FLAG_S.
*        LD_COLOR = LD_COLOR + 1.
*        IF LD_COLOR = 1.
*          LD_COLOR = 0.
*        ENDIF.
*          CONCATENATE 'C' LD_COLOR '10' INTO WA_OUTPUT-LINE_COLOR.
*          CONCATENATE 'C'  '10' INTO WA_OUTPUT-LINE_COLOR.
*          LD_COLOR = 1.

WA_OUTPUT-COMPID  WA_QRY_DET-COMPID.
WA_OUTPUT-TXTLG  W_TXTLG.
WA_OUTPUT-INFOCUBE  WA_QRY_DET-INFOCUBE.
WA_OUTPUT-DEFTP W_DEFTP.
WA_OUTPUT-MAPNAME W_MAPNAME.
IF WA_RANGE-SIGN EQ 'I'.
WA_OUTPUT-SIGN  'Include'.
ELSEIF WA_RANGE-SIGN EQ 'E'.
WA_OUTPUT-SIGN  'Exclude'.
ENDIF.
WA_OUTPUT-OPT  ''."WA_RANGE-OPT.
WA_OUTPUT-LOW ''."WA_RANGE-LOW.
WA_OUTPUT-HIGH ''."WA_RANGE-HIGH.
IF P_IS EQ 'X'.
WA_OUTPUT-INFOBJ W_FNAME.
ELSEIF P_MC EQ 'X'.
WA_OUTPUT-INFOBJ W_IOBJNMR.
ENDIF.
WA_OUTPUT-INFOBJI W_IOBJNMR.
WA_OUTPUT-LASTUSER  WA_QRY_DET-LASTUSER.

APPEND WA_OUTPUT  TO T_OUTPUT.
ENDIF.

ENDLOOP.
REFRESH T_RANGE.
DELETE T_QRY_DET  INDEX SYTABIX.
ENDIF.    "07/09/2018 "if given value not exist report then do not add to output.

*    IF LD_COLOR = 1.
*       LD_COLOR = 0.
*    ENDIF.

ENDLOOP.
SORT T_OUTPUT.
DELETE ADJACENT DUPLICATES FROM T_OUTPUT COMPARING ALL FIELDS.
ENDFORM.                    " PROCESSDATA

*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'COMPID'.
FIELDCATALOG-SELTEXT_M    'Report Tech Name'.
FIELDCATALOG-OUTPUTLEN    10.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      1.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'TXTLG'.
FIELDCATALOG-SELTEXT_M    'Report Name'.
FIELDCATALOG-OUTPUTLEN    60.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      2.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'INFOCUBE'.
FIELDCATALOG-SELTEXT_M    'InfoProvider'.
FIELDCATALOG-OUTPUTLEN    10.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      3.

APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'DEFTP'.
FIELDCATALOG-SELTEXT_M    'Element Type'.
FIELDCATALOG-OUTPUTLEN    10.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      4.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'MAPNAME'.
FIELDCATALOG-SELTEXT_M    'Element Name'.
FIELDCATALOG-OUTPUTLEN    40.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      5.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'SIGN'.
FIELDCATALOG-SELTEXT_M    'Include/Exclude'.
FIELDCATALOG-OUTPUTLEN    10.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      6.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'OPT'.
FIELDCATALOG-SELTEXT_M    'Option'.
FIELDCATALOG-OUTPUTLEN    20.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      7.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'LOW'.
FIELDCATALOG-SELTEXT_M    'Low'.
FIELDCATALOG-OUTPUTLEN    80.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      8.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'HIGH'.
FIELDCATALOG-SELTEXT_M    'High'.
FIELDCATALOG-OUTPUTLEN    20.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      9.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'INFOBJ'.
FIELDCATALOG-SELTEXT_M    'InfoObject'.
FIELDCATALOG-OUTPUTLEN    40.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      10.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'INFOBJI'.
FIELDCATALOG-SELTEXT_M    'Reference Object'.
FIELDCATALOG-OUTPUTLEN    15.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      11.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

FIELDCATALOG-FIELDNAME    'LASTUSER'.
FIELDCATALOG-SELTEXT_M    'Changed By'.
FIELDCATALOG-OUTPUTLEN    20.
FIELDCATALOG-EMPHASIZE    'X'.
FIELDCATALOG-COL_POS      12.
APPEND FIELDCATALOG  TO FIELDCATALOG.
CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG

*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT.

GD_LAYOUT-NO_INPUT           'X'.
GD_LAYOUT-COLWIDTH_OPTIMIZE  'X'.
GD_LAYOUT-TOTALS_TEXT        'Totals'(201).
GD_LAYOUT-TOTALS_ONLY        'X'.
GD_LAYOUT-INFO_FIELDNAME =      'LINE_COLOR'.

*  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
*                                         "click(press f2)
GD_LAYOUT-ZEBRA             'X'.
*  gd_layout-group_change_edit = 'X'.
GD_LAYOUT-HEADER_TEXT       'Report List'.
ENDFORM.                    " BUILD_LAYOUT

*&---------------------------------------------------------------------*
*&      Form  build_events
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_EVENTS.
DATALS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE 0
IMPORTING
ET_EVENTS   GT_EVENTS[].
READ TABLE GT_EVENTS  WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
INTO  LS_EVENT.
IF SY-SUBRC 0.
MOVE 'TOP-OF-PAGE' TO LS_EVENT-FORM.
APPEND LS_EVENT  TO GT_EVENTS.
ENDIF.

READ TABLE GT_EVENTS  WITH KEY NAME =  SLIS_EV_END_OF_LIST
INTO  LS_EVENT.
IF SY-SUBRC 0.
MOVE 'END_OF_LIST' TO LS_EVENT-FORM.
APPEND LS_EVENT  TO GT_EVENTS.
ENDIF.
ENDFORM.                    " BUILD_EVENTS

*&---------------------------------------------------------------------*
*&      Form  display_alv_report
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT.
GD_REPID SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM GD_REPID
*     i_callback_user_command = 'USER_COMMAND'
*     i_grid_title       = outtext
IS_LAYOUT          GD_LAYOUT
IT_FIELDCAT        FIELDCATALOG[]
*     it_special_groups  = gd_tabgroup
IT_EVENTS          GT_EVENTS
I_SAVE             'X'
*     is_variant         = z_template
TABLES
T_OUTTAB           T_OUTPUT
EXCEPTIONS
PROGRAM_ERROR      1
OTHERS             2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.                    " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*&      Form  CLEAR_TABS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CLEAR_TABS .
CLEAR:T_INFOSET,
T_PROVIDER,
T_NAV,
T_QRY_DET,
T_QRY_DESC,
T_ELTDIR,
T_RANGE,
T_OUTPUT,
T_RSQFOBJ,
T_RANGE,
T_ELTDIR,
T_ODS.
ENDFORM.                    " CLEAR_TABS

 

Note:


  • Added code, provided option to  search ODS wise also,

  • And changed selection screen sequence for more convenient


 

Thanks for reading Blog.


 


 

8 Comments
Labels in this area