Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV

Former Member
0 Likes
671

1. how will u call secondary list in ALV? bye using any FM? plz give me FM name?

1. how will u call secondary list in ALV? bye using any FM? plz give me FM name?

4 REPLIES 4
Read only

Former Member
0 Likes
585

Hi

An Interactive ALV Report

&----


*& Report ZZ_22038_22098_002 *

*& *

&----


*& This is an Interactive ALV report, where on line slection we can see

*& the secondry list

*&

*& *

&----


REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650

MESSAGE-ID ZZ_9838 .

TYPE-POOLS: SLIS.

*type declaration for values from ekko

TYPES: BEGIN OF I_EKKO,

EBELN LIKE EKKO-EBELN,

AEDAT LIKE EKKO-AEDAT,

BUKRS LIKE EKKO-BUKRS,

BSART LIKE EKKO-BSART,

LIFNR LIKE EKKO-LIFNR,

END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,

WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo

TYPES: BEGIN OF I_EKPO,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,

WA_EKPO TYPE I_EKPO .

*variable for Report ID

DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog

DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

  • declaration for events table where user comand or set PF status will

  • be defined

DATA: V_EVENTS TYPE SLIS_T_EVENT,

WA_EVENT TYPE SLIS_ALV_EVENT.

  • declartion for layout

DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

  • declaration for variant(type of display we want)

DATA: I_VARIANT TYPE DISVARIANT,

I_VARIANT1 TYPE DISVARIANT,

I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed

DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.

DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.

V_REPID = SY-REPID.

PERFORM BUILD_FIELDCATLOG.

PERFORM EVENT_CALL.

PERFORM POPULATE_EVENT.

START-OF-SELECTION.

PERFORM DATA_RETRIEVAL.

PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_REPORT.

&----


*& Form BUILD_FIELDCATLOG

&----


  • Fieldcatalog has all the field details from ekko

----


FORM BUILD_FIELDCATLOG.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'AEDAT'.

WA_FIELDCAT-SELTEXT_M = 'DATE.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'LIFNR'.

WA_FIELDCAT-NO_OUT = 'X'.

WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG

&----


*& Form EVENT_CALL

&----


  • we get all events - TOP OF PAGE or USER COMMAND in table v_events

----


FORM EVENT_CALL.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = V_EVENTS

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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. "EVENT_CALL

&----


*& Form POPULATE_EVENT

&----


  • Events populated for TOP OF PAGE & USER COMAND

----


FORM POPULATE_EVENT.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

ENDIF.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'USER_COMMAND'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-NAME.

ENDIF.

ENDFORM. "POPULATE_EVENT

&----


*& Form data_retrieval

&----


  • retreiving values from the database table ekko

----


FORM DATA_RETRIEVAL.

SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM. "data_retrieval

&----


*& Form bUild_listheader

&----


  • text

----


  • -->I_LISTHEADEtext

----


FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA HLINE TYPE SLIS_LISTHEADER.

HLINE-INFO = 'this is my first alv pgm'.

HLINE-TYP = 'H'.

ENDFORM. "build_listheader

&----


*& Form display_alv_report

&----


  • text

----


FORM DISPLAY_ALV_REPORT.

V_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

I_GRID_TITLE = I_TITLE_EKKO

  • I_GRID_SETTINGS =

  • IS_LAYOUT = ALV_LAYOUT

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • i_default = 'ZLAY1'

I_SAVE = 'A'

  • is_variant = i_variant

IT_EVENTS = V_EVENTS

TABLES

T_OUTTAB = IT_EKKO

  • 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 TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_LISTHEADER

  • i_logo =

  • I_END_OF_LIST_GRID =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->, text

  • -->RS_SLEFIELDtext

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.

PERFORM BUILD_FIELDCATLOG_EKPO.

PERFORM EVENT_CALL_EKPO.

PERFORM POPULATE_EVENT_EKPO.

PERFORM DATA_RETRIEVAL_EKPO.

PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_EKPO.

ENDCASE.

ENDFORM. "user_command

&----


*& Form BUILD_FIELDCATLOG_EKPO

&----


  • text

----


FORM BUILD_FIELDCATLOG_EKPO.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELP'.

WA_FIELDCAT-SELTEXT_M = 'LINE NO'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MENGE'.

WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MEINS'.

WA_FIELDCAT-SELTEXT_M = 'UOM'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'NETPR'.

WA_FIELDCAT-SELTEXT_M = 'PRICE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG_EKPO

&----


*& Form event_call_ekpo

&----


  • we get all events - TOP OF PAGE or USER COMMAND in table v_events

----


FORM EVENT_CALL_EKPO.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = V_EVENTS

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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. "event_call_ekpo

&----


*& Form POPULATE_EVENT

&----


  • Events populated for TOP OF PAGE & USER COMAND

----


FORM POPULATE_EVENT_EKPO.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

ENDIF.

ENDFORM. "POPULATE_EVENT

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM F_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_LISTHEADER

  • i_logo =

  • I_END_OF_LIST_GRID =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->, text

  • -->RS_SLEFIELDtext

----


*retreiving values from the database table ekko

FORM DATA_RETRIEVAL_EKPO.

SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.

ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA: HLINE1 TYPE SLIS_LISTHEADER.

HLINE1-TYP = 'H'.

HLINE1-INFO = 'CHECKING PGM'.

ENDFORM.

FORM DISPLAY_ALV_EKPO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = I_TITLE_EKPO

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT =

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = V_EVENTS

TABLES

T_OUTTAB = IT_EKPO

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.

Read only

dhruv_shah3
Active Contributor
0 Likes
585

Hi,

&----


*& Report Z_MASTER_DERIVED

*&

&----


*&

*&

&----


REPORT Z_MASTER_DERIVED LINE-SIZE 175 .

TABLES :AGR_1016.

TYPES: BEGIN OF TY_AGR_1016,

AGR_NAME TYPE AGR_1016-AGR_NAME,

COUNTER TYPE AGR_1016-COUNTER,

PROFILE TYPE AGR_1016-PROFILE,

VARIANT TYPE AGR_1016-VARIANT,

END OF TY_AGR_1016,

BEGIN OF TY_AGR_TEXTS,

AGR_NAME TYPE AGR_TEXTS-AGR_NAME,

SPRAS TYPE AGR_TEXTS-SPRAS,

TEXT TYPE AGR_TEXTS-TEXT,

END OF TY_AGR_TEXTS,

BEGIN OF TY_AGR_DEFINE,

AGR_NAME TYPE AGR_DEFINE-AGR_NAME,

PARENT_AGR TYPE AGR_DEFINE-PARENT_AGR,

END OF TY_AGR_DEFINE,

BEGIN OF TY_DR_COUNT,

AGR_NAME TYPE AGR_DEFINE-AGR_NAME,

COUNT TYPE I,

END OF TY_DR_COUNT,

BEGIN OF TY_AGR_TCODES,

AGR_NAME TYPE AGR_TCODES-AGR_NAME,

TCODE TYPE AGR_TCODES-TCODE,

TCODE_COMP TYPE TSTCT-TCODE,

END OF TY_AGR_TCODES,

BEGIN OF TY_TSTCT,

SPRSL TYPE TSTCT-SPRSL,

TCODE TYPE TSTCT-TCODE,

TTEXT TYPE TSTCT-TTEXT,

END OF TY_TSTCT,

BEGIN OF TY_AGR_1252,

AGR_NAME TYPE AGR_1252-AGR_NAME,

VARBL TYPE AGR_1252-VARBL,

LOW TYPE AGR_1252-LOW,

HIGH TYPE AGR_1252-HIGH,

DESC(30) TYPE C,

VARBL_DISP TYPE AGR_1252-VARBL,

AGR_NAME_DISP TYPE AGR_1252-AGR_NAME,

END OF TY_AGR_1252,

BEGIN OF TY_USVART,

LANGU TYPE USVART-LANGU, "LANGUAGE KEY

VARBL TYPE USVART-VARBL,

VTEXT TYPE USVART-VTEXT, "DESCRIPTION

END OF TY_USVART,

BEGIN OF TY_AGR_1250,

AGR_NAME TYPE AGR_1250-AGR_NAME,

OBJECT TYPE AGR_1250-OBJECT,

AUTH TYPE AGR_1250-AUTH,

ATEXT TYPE AGR_1250-ATEXT,

END OF TY_AGR_1250,

BEGIN OF TY_AGR_1251,

AGR_NAME TYPE AGR_1251-AGR_NAME,

OBJECT TYPE AGR_1251-OBJECT,

AUTH TYPE AGR_1251-AUTH,

FIELD TYPE AGR_1251-FIELD,

LOW TYPE AGR_1251-LOW,

HIGH TYPE AGR_1251-HIGH,

END OF TY_AGR_1251,

BEGIN OF TY_AUTHX,

ROLLNAME TYPE AUTHX-ROLLNAME,

END OF TY_AUTHX,

BEGIN OF TY_DD04T,

ROLLNAME TYPE DD04T-ROLLNAME,

DDLANGUAGE TYPE DD04T-DDLANGUAGE,

DDTEXT TYPE DD04T-DDTEXT,

END OF TY_DD04T,

BEGIN OF TY_SFINAL,

OBJ_DISP TYPE AGR_1250-OBJECT,

ATEXT_DISP TYPE AGR_1250-ATEXT,

DDTEXT_DISP(80) TYPE C,

END OF TY_SFINAL,

BEGIN OF TY_FINAL_DATA,

OBJECT TYPE AGR_1250-OBJECT,

ATEXT TYPE AGR_1250-ATEXT,

DDTEXT TYPE DD04T-DDTEXT,

DDTEXT_FIELD(60) TYPE C,

VALUE(30) TYPE C,

OBJ_DISP TYPE AGR_1250-OBJECT,

ATEXT_DISP TYPE AGR_1250-ATEXT,

DDTEXT_DISP(60) TYPE C,

END OF TY_FINAL_DATA.

DATA : IT_AGR_1016 TYPE STANDARD TABLE OF TY_AGR_1016,

WA_AGR_1016 TYPE TY_AGR_1016,

IT_AGR_TEXTS TYPE STANDARD TABLE OF TY_AGR_TEXTS,

WA_AGR_TEXTS TYPE TY_AGR_TEXTS,

IT_AGR_DEFINE TYPE STANDARD TABLE OF TY_AGR_DEFINE,

WA_AGR_DEFINE TYPE TY_AGR_DEFINE,

IT_DR_COUNT TYPE STANDARD TABLE OF TY_DR_COUNT,

WA_DR_COUNT TYPE TY_DR_COUNT,

COUNT TYPE I,

IT_AGR_TCODES TYPE STANDARD TABLE OF TY_AGR_TCODES,

WA_AGR_TCODES TYPE TY_AGR_TCODES,

IT_TSTCT TYPE STANDARD TABLE OF TY_TSTCT,

WA_TSTCT TYPE TY_TSTCT,

IT_AGR_1252 TYPE STANDARD TABLE OF TY_AGR_1252,

WA_AGR_1252 TYPE TY_AGR_1252,

IT_AGR_1252_DEL TYPE STANDARD TABLE OF TY_AGR_1252,

WA_AGR_1252_DEL TYPE TY_AGR_1252,

IT_USVART TYPE STANDARD TABLE OF TY_USVART,

WA_USVART TYPE TY_USVART,

IT_AGR_1250 TYPE STANDARD TABLE OF TY_AGR_1250,

WA_AGR_1250 TYPE TY_AGR_1250,

IT_AGR_1251 TYPE STANDARD TABLE OF TY_AGR_1251,

WA_AGR_1251 TYPE TY_AGR_1251,

IT_AUTHX TYPE STANDARD TABLE OF TY_AUTHX,

WA_AUTHX TYPE TY_AUTHX,

IT_DD04T TYPE STANDARD TABLE OF TY_DD04T,

WA_DD04T TYPE TY_DD04T,

IT_SFINAL TYPE STANDARD TABLE OF TY_SFINAL,

WA_SFINAL TYPE TY_SFINAL,

WA_SFINAL1 TYPE TY_SFINAL,

IT_FINAL TYPE STANDARD TABLE OF TY_FINAL_DATA,

WA_FINAL TYPE TY_FINAL_DATA,

IT_FINAL_DATA TYPE STANDARD TABLE OF TY_FINAL_DATA,

WA_FINAL_DATA TYPE TY_FINAL_DATA.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT_001.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(20) TEXT_010 MODIF ID M1 .

SELECT-OPTIONS : S_ROLE FOR AGR_1016-AGR_NAME NO INTERVALS MODIF ID M1 ."roles

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT_002.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: XTR AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN COMMENT 5(50) TEXT_011.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: XAU AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN COMMENT 5(50) TEXT_012.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: XDR AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN COMMENT 5(50) TEXT_013.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B2.

INITIALIZATION.

TEXT_001 = 'Report Specification'.

TEXT_002 = 'Output Specification'.

TEXT_010 = 'Roles'.

TEXT_011 = 'Transection Objects' .

TEXT_012 = 'Authorization Objects' .

TEXT_013 = 'Derived Objects' .

START-OF-SELECTION.

IF S_ROLE IS INITIAL.

MESSAGE 'Please fill required field' TYPE 'S'.

LEAVE LIST-PROCESSING.

CALL TRANSACTION 'ZROLE'.

ENDIF.

PERFORM ROLE_LIST.

AT LINE-SELECTION.

IF SY-LSIND = 1.

FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,

IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,

IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA .

FORMAT COLOR 1.

WRITE 😕 'Role Name : ' , WA_AGR_1016-AGR_NAME .

FORMAT RESET.

SKIP.

IF XTR = 'X'.

PERFORM TCODE_LIST.

ENDIF.

IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.

PERFORM DERIVED_ROLES.

ENDIF.

IF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.

PERFORM ROLE_NAME.

ENDIF.

IF XAU = 'X'.

PERFORM AUTHORIZATION_OBJ.

ENDIF.

ELSEIF SY-LSIND = 2.

IF XDR = 'X' AND WA_DR_COUNT-COUNT <> 0.

FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,

IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,

IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA .

FORMAT COLOR 1 INTENSIFIED ON.

WRITE 😕 'Derived Role Name : ' , WA_AGR_1252_DEL-AGR_NAME .

FORMAT RESET.

SKIP.

PERFORM AUTHORIZATION_OBJ_DER.

ELSEIF XDR = 'X' AND WA_DR_COUNT-COUNT = 0.

FREE : IT_AGR_1016 , IT_AGR_TEXTS ,IT_AGR_DEFINE , IT_DR_COUNT , IT_AGR_TCODES ,

IT_TSTCT , IT_AGR_1252 , IT_AGR_1252_DEL ,IT_USVART , IT_AGR_1250 ,

IT_AGR_1251 , IT_AUTHX , IT_DD04T , IT_FINAL_DATA .

MESSAGE 'No Further Detail Information ' TYPE 'S'.

ENDIF.

ENDIF.

&----


*& Form role_list

&----


FORM ROLE_LIST .

SELECT AGR_NAME COUNTER PROFILE VARIANT

FROM AGR_1016

INTO TABLE IT_AGR_1016

WHERE AGR_NAME IN S_ROLE.

DELETE ADJACENT DUPLICATES FROM IT_AGR_1016 .

IF IT_AGR_1016 IS NOT INITIAL.

SELECT AGR_NAME SPRAS TEXT FROM AGR_TEXTS

INTO TABLE IT_AGR_TEXTS

FOR ALL ENTRIES IN IT_AGR_1016

WHERE AGR_NAME = IT_AGR_1016-AGR_NAME

AND SPRAS = 'E'.

DELETE ADJACENT DUPLICATES FROM IT_AGR_TEXTS COMPARING AGR_NAME.

WRITE: / 'Roles List :' COLOR 3 INTENSIFIED OFF.

SKIP.

WRITE:/(110) SY-ULINE.

WRITE:/ SY-VLINE ,'SR No',

9 SY-VLINE,10 ' Role Name',

39 SY-VLINE,40 ' Description',

99 SY-VLINE,100 ' DR Count',

110 SY-VLINE.

WRITE:/(110) SY-ULINE.

DATA: CNT TYPE I VALUE 1.

LOOP AT IT_AGR_1016 INTO WA_AGR_1016.

SELECT COUNT(*) FROM AGR_DEFINE

INTO COUNT

WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.

IF SY-SUBRC = 0 .

WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.

WA_DR_COUNT-COUNT = COUNT.

ELSE.

WA_DR_COUNT-AGR_NAME = WA_AGR_1016-AGR_NAME.

WA_DR_COUNT-COUNT = 0.

ENDIF.

APPEND WA_DR_COUNT TO IT_DR_COUNT.

CLEAR WA_DR_COUNT.

READ TABLE IT_AGR_TEXTS INTO WA_AGR_TEXTS

WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.

READ TABLE IT_DR_COUNT INTO WA_DR_COUNT

WITH KEY AGR_NAME = WA_AGR_1016-AGR_NAME.

WRITE:/ SY-VLINE,4(5) CNT,

9 SY-VLINE,10 WA_AGR_1016-AGR_NAME HOTSPOT ON,

39 SY-VLINE,40 WA_AGR_TEXTS-TEXT HOTSPOT ON,

99 SY-VLINE, 100 WA_DR_COUNT-COUNT HOTSPOT ON ,

110 SY-VLINE.

HIDE: WA_AGR_1016-AGR_NAME,WA_DR_COUNT-COUNT.

CNT = CNT + 1.

WRITE:/(110) SY-ULINE.

CLEAR : WA_DR_COUNT , WA_AGR_TEXTS.

ENDLOOP.

ENDIF.

ENDFORM. " role_list

&----


*& Form TCODE_LIST

&----


FORM TCODE_LIST .

IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.

SELECT AGR_NAME TCODE FROM AGR_TCODES

INTO TABLE IT_AGR_TCODES

WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.

IF IT_AGR_TCODES IS NOT INITIAL.

LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.

WA_AGR_TCODES-TCODE_COMP = WA_AGR_TCODES-TCODE.

MODIFY IT_AGR_TCODES FROM WA_AGR_TCODES TRANSPORTING TCODE_COMP.

ENDLOOP.

SELECT SPRSL TCODE TTEXT FROM TSTCT

INTO TABLE IT_TSTCT

FOR ALL ENTRIES IN IT_AGR_TCODES

WHERE TCODE = IT_AGR_TCODES-TCODE_COMP AND SPRSL = 'E'.

ENDIF.

DATA: A1 TYPE I.

A1 = 1.

WRITE:/2 'Transactions List : ' COLOR 3.

WRITE:/(100) SY-ULINE.

WRITE:/ SY-VLINE,'Sr.No',10 SY-VLINE,'Transaction Codes',

30 SY-VLINE,'Description',100 SY-VLINE.

WRITE:/(100) SY-ULINE.

LOOP AT IT_AGR_TCODES INTO WA_AGR_TCODES.

READ TABLE IT_TSTCT INTO WA_TSTCT WITH KEY TCODE = WA_AGR_TCODES-TCODE.

WRITE 😕 SY-VLINE,4(4) A1 ,

10 SY-VLINE,13 WA_AGR_TCODES-TCODE ,

30 SY-VLINE,WA_TSTCT-TTEXT ,

100 SY-VLINE.

A1 = A1 + 1.

ENDLOOP.

FORMAT RESET.

WRITE:/(100) SY-ULINE.

CLEAR : WA_AGR_TCODES , WA_TSTCT-TTEXT.

ENDIF.

ENDFORM. " TCODE_LIST

&----


*& Form authorization_OBJ

&----


FORM AUTHORIZATION_OBJ .

IF WA_AGR_1016-AGR_NAME IS NOT INITIAL.

SELECT AGR_NAME OBJECT AUTH ATEXT

FROM AGR_1250 INTO TABLE IT_AGR_1250

WHERE AGR_NAME = WA_AGR_1016-AGR_NAME

AND OBJECT NE 'S_TCODE'.

IF IT_AGR_1250 IS NOT INITIAL.

SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH

FROM AGR_1251

INTO TABLE IT_AGR_1251

FOR ALL ENTRIES IN IT_AGR_1250

WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND

OBJECT = IT_AGR_1250-OBJECT AND

AUTH = IT_AGR_1250-AUTH.

ENDIF.

SKIP.

WRITE :/2 'Authorization Objects' COLOR 3.

WRITE:/(175) SY-ULINE.

WRITE 😕 SY-VLINE, 'Object',

25 SY-VLINE,26 'Description',

96 SY-VLINE,97 'Activity / Fields',

157 SY-VLINE,158 'Values',

175 SY-VLINE.

SORT IT_AGR_1251.

LOOP AT IT_AGR_1251 INTO WA_AGR_1251.

READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.

SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.

SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.

DATA: TEXT(80) TYPE C.

CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.

DATA: VALUE(25) TYPE C.

IF WA_AGR_1251-HIGH IS INITIAL.

CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.

ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.

CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.

ENDIF.

WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.

WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .

WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.

WA_FINAL-DDTEXT_FIELD = TEXT.

WA_FINAL-VALUE = VALUE.

APPEND WA_FINAL TO IT_FINAL.

CLEAR : TEXT, VALUE.

CLEAR WA_FINAL.

CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX .

ENDLOOP.

SORT IT_FINAL.

DATA: FLAG TYPE I. "VALUE 1.

DATA: FLAG_Y TYPE I. "VALUE 1.

DATA: LINES TYPE I.

LOOP AT IT_FINAL INTO WA_FINAL.

WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.

WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.

WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.

APPEND WA_SFINAL TO IT_SFINAL.

CLEAR WA_SFINAL.

ENDLOOP.

DELETE ADJACENT DUPLICATES FROM IT_SFINAL.

SORT IT_SFINAL.

LOOP AT IT_SFINAL INTO WA_SFINAL.

IF FLAG = 8.

FLAG = 1.

ENDIF.

LINES = 1.

LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.

ON CHANGE OF WA_FINAL-OBJECT.

WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.

WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.

WRITE:/(175) SY-ULINE.

ENDON.

IF LINES = 1.

READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.

IF SY-SUBRC = 0.

WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.

ENDIF.

ENDIF.

IF FLAG = 0.

FLAG_Y = 1.

FORMAT COLOR 1.

ELSEIF FLAG = 1.

FLAG_Y = 1.

FORMAT COLOR 2.

ELSEIF FLAG = 2.

FLAG_Y = 1.

FORMAT COLOR 3.

ELSEIF FLAG = 3.

FLAG_Y = 1.

FORMAT COLOR 4.

ELSEIF FLAG = 4.

FLAG_Y = 1.

FORMAT COLOR 5.

ELSEIF FLAG = 5.

FLAG_Y = 1.

FORMAT COLOR 6.

ELSEIF FLAG = 6.

FLAG_Y = 1.

FORMAT COLOR 7.

ENDIF.

IF FLAG_Y = 1.

WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,

25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,

96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,

157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,

175 SY-VLINE.

ENDIF.

CLEAR WA_FINAL.

CLEAR LINES.

ENDLOOP.

FORMAT COLOR OFF.

FLAG = FLAG + 1.

ENDLOOP.

WRITE:/(175) SY-ULINE.

ENDIF.

ENDFORM. " authorization_OBJ

&----


*& Form DERIVED_ROLES

&----


FORM DERIVED_ROLES .

IF NOT WA_AGR_1016-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.

SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE

INTO TABLE IT_AGR_DEFINE

WHERE PARENT_AGR = WA_AGR_1016-AGR_NAME.

WRITE:/2 'Derived Roles : ' COLOR 3.

IF IT_AGR_DEFINE IS NOT INITIAL.

SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252

INTO TABLE IT_AGR_1252

FOR ALL ENTRIES IN IT_AGR_DEFINE

WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.

IT_AGR_1252_DEL[] = IT_AGR_1252[].

SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.

DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.

ENDIF.

SELECT LANGU VARBL VTEXT FROM USVART

INTO TABLE IT_USVART

FOR ALL ENTRIES IN IT_AGR_1252_DEL

WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.

WRITE:/(81) SY-ULINE.

WRITE : / SY-VLINE , 'Derived Role Name' ,

34 SY-VLINE ,35 'Org. element' ,

44 SY-VLINE , 45 'Description',

69 SY-VLINE , 70 'Low',

75 SY-VLINE , 76 'High',

81 SY-VLINE.

SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.

DATA : FLAG TYPE I.

LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.

ON CHANGE OF WA_AGR_1252_DEL-VARBL.

WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.

READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.

IF SY-SUBRC = 0.

WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.

ENDIF.

MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.

FLAG = 1.

ENDON.

ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.

WRITE:/(81) SY-ULINE.

WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.

MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .

ENDON.

WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP HOTSPOT ON,

34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP HOTSPOT ON,

44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC HOTSPOT ON,

69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW HOTSPOT ON,

75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH HOTSPOT ON,

81 SY-VLINE.

HIDE WA_AGR_1252_DEL-AGR_NAME.

ENDLOOP.

WRITE:/(81) SY-ULINE.

ENDIF.

ENDFORM. "DERIVED_ROLES

&----


*& Form ROLE_NAME

&----


  • text

----


FORM ROLE_NAME.

SELECT AGR_NAME PARENT_AGR FROM AGR_DEFINE

INTO TABLE IT_AGR_DEFINE

WHERE AGR_NAME = WA_AGR_1016-AGR_NAME.

WRITE:/2 'Roles : ' COLOR 3.

IF IT_AGR_DEFINE IS NOT INITIAL.

SELECT AGR_NAME VARBL LOW HIGH FROM AGR_1252

INTO TABLE IT_AGR_1252

FOR ALL ENTRIES IN IT_AGR_DEFINE

WHERE AGR_NAME = IT_AGR_DEFINE-AGR_NAME.

IT_AGR_1252_DEL[] = IT_AGR_1252[].

SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.

DELETE ADJACENT DUPLICATES FROM IT_AGR_1252_DEL COMPARING ALL FIELDS.

ENDIF.

SELECT LANGU VARBL VTEXT FROM USVART

INTO TABLE IT_USVART

FOR ALL ENTRIES IN IT_AGR_1252_DEL

WHERE VARBL = IT_AGR_1252_DEL-VARBL AND LANGU = 'E'.

WRITE:/(81) SY-ULINE.

WRITE : / SY-VLINE , 'Role Name' ,

34 SY-VLINE ,35 'Org. element' ,

44 SY-VLINE , 45 'Description',

69 SY-VLINE , 70 'Low',

75 SY-VLINE , 76 'High',

81 SY-VLINE.

SORT IT_AGR_1252_DEL BY AGR_NAME VARBL LOW HIGH.

DATA : FLAG_Y TYPE I.

LOOP AT IT_AGR_1252_DEL INTO WA_AGR_1252_DEL.

ON CHANGE OF WA_AGR_1252_DEL-VARBL.

WA_AGR_1252_DEL-VARBL_DISP = WA_AGR_1252_DEL-VARBL.

READ TABLE IT_USVART INTO WA_USVART WITH KEY VARBL = WA_AGR_1252_DEL-VARBL.

IF SY-SUBRC = 0.

WA_AGR_1252_DEL-DESC = WA_USVART-VTEXT.

ENDIF.

MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING VARBL_DISP DESC.

FLAG_Y = 1.

ENDON.

ON CHANGE OF WA_AGR_1252_DEL-AGR_NAME.

WRITE:/(81) SY-ULINE.

WA_AGR_1252_DEL-AGR_NAME_DISP = WA_AGR_1252_DEL-AGR_NAME.

MODIFY IT_AGR_1252_DEL FROM WA_AGR_1252_DEL TRANSPORTING AGR_NAME_DISP .

ENDON.

WRITE : / SY-VLINE , WA_AGR_1252_DEL-AGR_NAME_DISP ,

34 SY-VLINE ,35 WA_AGR_1252_DEL-VARBL_DISP ,

44 SY-VLINE , 45 WA_AGR_1252_DEL-DESC,

69 SY-VLINE , 70 WA_AGR_1252_DEL-LOW ,

75 SY-VLINE , 76 WA_AGR_1252_DEL-HIGH,

81 SY-VLINE.

ENDLOOP.

WRITE:/(81) SY-ULINE.

ENDFORM. " DERIVED_ROLES

&----


*& Form AUTHORIZATION_OBJ_DER

&----


FORM AUTHORIZATION_OBJ_DER .

IF NOT WA_AGR_1252_DEL-AGR_NAME IS INITIAL AND WA_DR_COUNT-COUNT <> 0.

SELECT AGR_NAME OBJECT AUTH ATEXT

FROM AGR_1250 INTO TABLE IT_AGR_1250

WHERE AGR_NAME = WA_AGR_1252_DEL-AGR_NAME

AND OBJECT NE 'S_TCODE'.

IF IT_AGR_1250 IS NOT INITIAL.

SELECT AGR_NAME OBJECT AUTH FIELD LOW HIGH

FROM AGR_1251

INTO TABLE IT_AGR_1251

FOR ALL ENTRIES IN IT_AGR_1250

WHERE AGR_NAME = IT_AGR_1250-AGR_NAME AND

OBJECT = IT_AGR_1250-OBJECT AND

AUTH = IT_AGR_1250-AUTH.

ENDIF.

SKIP.

WRITE :/2 'Authorization Objects' COLOR 3.

WRITE:/(175) SY-ULINE.

WRITE 😕 SY-VLINE, 'Object',

25 SY-VLINE,26 'Description',

96 SY-VLINE,97 'Activity / Fields',

157 SY-VLINE,158 'Values',

175 SY-VLINE.

SORT IT_AGR_1251.

REFRESH IT_FINAL.

LOOP AT IT_AGR_1251 INTO WA_AGR_1251.

READ TABLE IT_AGR_1250 INTO WA_AGR_1250 WITH KEY AGR_NAME = WA_AGR_1251-AGR_NAME OBJECT = WA_AGR_1251-OBJECT.

SELECT SINGLE ROLLNAME FROM AUTHX INTO WA_AUTHX WHERE FIELDNAME = WA_AGR_1251-FIELD.

SELECT SINGLE ROLLNAME DDLANGUAGE DDTEXT FROM DD04T INTO WA_DD04T WHERE ROLLNAME = WA_AUTHX-ROLLNAME AND DDLANGUAGE = 'E'.

DATA: TEXT(80) TYPE C.

CONCATENATE WA_DD04T-DDTEXT '/' WA_AGR_1251-FIELD INTO TEXT SEPARATED BY SPACE.

DATA: VALUE(25) TYPE C.

IF WA_AGR_1251-HIGH IS INITIAL.

CONCATENATE WA_AGR_1251-LOW ' ' INTO VALUE SEPARATED BY SPACE.

ELSEIF WA_AGR_1251-HIGH IS NOT INITIAL.

CONCATENATE WA_AGR_1251-LOW ',' WA_AGR_1251-HIGH INTO VALUE SEPARATED BY SPACE.

ENDIF.

WA_FINAL-OBJECT = WA_AGR_1251-OBJECT.

WA_FINAL-ATEXT = WA_AGR_1250-ATEXT .

WA_FINAL-DDTEXT = WA_DD04T-DDTEXT.

WA_FINAL-DDTEXT_FIELD = TEXT.

WA_FINAL-VALUE = VALUE.

APPEND WA_FINAL TO IT_FINAL.

CLEAR : TEXT, VALUE.

CLEAR WA_FINAL.

CLEAR : WA_AGR_1251, WA_AGR_1250 ,WA_DD04T ,WA_AUTHX .

ENDLOOP.

SORT IT_FINAL.

DATA: FLAG TYPE I. "VALUE 1.

DATA: FLAG_Y TYPE I. "VALUE 1.

DATA: LINES TYPE I.

REFRESH IT_SFINAL.

LOOP AT IT_FINAL INTO WA_FINAL.

WA_SFINAL-OBJ_DISP = WA_FINAL-OBJECT.

WA_SFINAL-ATEXT_DISP = WA_FINAL-ATEXT.

WA_SFINAL-DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.

APPEND WA_SFINAL TO IT_SFINAL.

CLEAR WA_SFINAL.

ENDLOOP.

DELETE ADJACENT DUPLICATES FROM IT_SFINAL.

SORT IT_SFINAL.

LOOP AT IT_SFINAL INTO WA_SFINAL.

IF FLAG = 8.

FLAG = 1.

ENDIF.

LINES = 1.

LOOP AT IT_FINAL INTO WA_FINAL WHERE OBJECT = WA_SFINAL-OBJ_DISP AND DDTEXT_FIELD = WA_SFINAL-DDTEXT_DISP.

ON CHANGE OF WA_FINAL-OBJECT.

WA_FINAL-OBJ_DISP = WA_FINAL-OBJECT.

WA_FINAL-ATEXT_DISP = WA_FINAL-ATEXT.

WRITE:/(175) SY-ULINE.

ENDON.

IF LINES = 1.

READ TABLE IT_SFINAL INTO WA_SFINAL1 WITH KEY OBJ_DISP = WA_FINAL-OBJECT DDTEXT_DISP = WA_FINAL-DDTEXT_FIELD.

IF SY-SUBRC = 0.

WA_FINAL-DDTEXT_DISP = WA_SFINAL1-DDTEXT_DISP.

ENDIF.

ENDIF.

IF FLAG = 0.

FLAG_Y = 1.

FORMAT COLOR 1.

ELSEIF FLAG = 1.

FLAG_Y = 1.

FORMAT COLOR 2.

ELSEIF FLAG = 2.

FLAG_Y = 1.

FORMAT COLOR 3.

ELSEIF FLAG = 3.

FLAG_Y = 1.

FORMAT COLOR 4.

ELSEIF FLAG = 4.

FLAG_Y = 1.

FORMAT COLOR 5.

ELSEIF FLAG = 5.

FLAG_Y = 1.

FORMAT COLOR 6.

ELSEIF FLAG = 6.

FLAG_Y = 1.

FORMAT COLOR 7.

ENDIF.

IF FLAG_Y = 1.

WRITE : / SY-VLINE, WA_FINAL-OBJ_DISP ," COLOR 1,

25 SY-VLINE,26 WA_FINAL-ATEXT_DISP ," COLOR 2,

96 SY-VLINE,97 WA_FINAL-DDTEXT_DISP , " COLOR 3,

157 SY-VLINE,158 WA_FINAL-VALUE , "COLOR 4,

175 SY-VLINE.

ENDIF.

CLEAR WA_FINAL.

CLEAR LINES.

ENDLOOP.

FORMAT COLOR OFF.

FLAG = FLAG + 1.

ENDLOOP.

WRITE:/(175) SY-ULINE.

ENDIF.

ENDFORM. " AUTHORIZATION_OBJ_DER

HTH

Regards,

Dhruv Shah

Read only

Former Member
0 Likes
585

Hai.

check the example.

pls find the docu for interactive reporting..

________________________________________________________________

When the system processes event blocks that are not assigned to interactive list events, and when processing dialog modules, the ABAP program writes its list output to the basic list.

The ABAP system field SY-LSIND contains the index of the list currently being created. While the basic list is being created, SY-LSIND is zero.

By default, the basic list has a standard list status and a standard page header. The TOP-OF-PAGE and END-OF-PAGE events can occur while the basic list is being created. All output in these events is placed in the page header or footer of the basic list. In executable programs, the basic list is automatically sent to the list processor and displayed at the end of the END-OF-SELECTION event. Otherwise, it is displayed after the PAI processing block on the screen from which the LEAVE TO LIST-PROCESSING statement occurred.

Creating Detail Lists

Each time the user executes an action on a list, the runtime environment checks whether there is an event block defined that corresponds to the function code. If there is, SY-LSIND is automatically increased by one, and the relevant event block is executed. Any list output arising during this event block places its data into a new list (list level) with the index SY-LSIND. In order to create a new list level, the GUI status of the basic list must allow user actions, and the relevant event blocks must be defined in the program.

All lists created during an interactive list event are detail lists. Each interactive list event creates a new detail list. With one ABAP program, you can maintain one basic list and up to 20 detail lists. If the user creates a list on the next level (that is, SY-LSIND increases), the system stores the previous list and displays the new one. The user can interact with whichever list is currently displayed.

The system displays this list after processing the entire processing block of the event keyword or after leaving the processing block due to EXIT or CHECK. By default, the new list overlays the previous list completely. However, you can display a list in a dialog box. If no other dialog status is set in the event block for the detail list, the system uses the status from the previous list level. However, there is no standard page header for detail lists (see below).

Consequences of Event Control

The fact that you program detail lists in event blocks has important consequences. You cannot nest processing blocks (see Structure of an ABAP Program). Therefore, you cannot process other events within the processing blocks of interactive lists.

Especially, you cannot

&#149; use separate processing blocks to process further interactive events. A certain user action always triggers the same processing block in your program. You must use control statements (IF, CASE) within the processing block to make sure that the system processes the desired statements. There is a range of system field that you can use for this.

&#149; use the event TOP-OF-PAGE to influence the list structure of secondary lists. To layout the page headers of the secondary lists, you must use the event TOP-OF-PAGE DURING LINE-SELECTION (see below). However, the system does process the event END-OF-PAGE in secondary lists.

&#149; use events such as GET and GET LATE to retrieve data for secondary lists, but must use SELECT statements. You can use the logical database assigned to the executable program (report) only for the basic list. If you want to use a logical database during interactive events, you must either call another executable program using SUMIT, or (better) call the logical database using a function module.

Navigating in Lists:

To return from a high list level to the next-lower level (SY-LSIND), the user can choose back from a detail list. The system releases the last list to have been displayed, and returns to the previous list level. The system deletes the contents of the released list.

To determine the list level in which the output from an event block will be displayed, you can change the value of the system fields SY-LSIND. This is one of the few exceptions to the rule that states that you must never overwrite ABAP system fields. The system accepts only index values which correspond to existing list levels. It then deletes all existing list levels whose index is greater or equal to the index you specify. For example, if you set SY-LSIND to 0, the system deletes all secondary lists and overwrites the basic list with the current secondary list.

When you change SY-LSIND, the change only takes effect at the end of the corresponding event. If you work with statements that access the list with index SY-LSIND (using the INDEX addition - for example, SCROLL), you should set the new value of SY-LISND after these statements. The best place to set it is in the last statement of the event block.

System Fields for Details Lists

After each user action on a list, the following ABAP system fields will be set in the corresponding event block:

System field

SY-LSIND Index of the list created during the current event (basic list = 0)SY-LISTI Index of the list level from which the event was triggered

SY-LILLI Absolute number of the line from which the event was triggered

SY-LISEL Contents of the line from which the event was triggered

SY-CUROW Position of the line in the window from which the event was triggered (counting starts with 1)

SY-CUCOL Position of the column in the window from which the event was triggered (counting starts with 2)

SY-CPAGE Page number of the first displayed page of the list from which the event was triggered

SY-STARO Number of the first line of the first page displayed of the list from which the event was triggered (counting starts with 1). This line may contain the page header.

SY-STACO Number of the first column displayed in the list from which the event was triggered (counting starts with 1)

SY-UCOMM Function code that triggered the event

SY-PFKEY Status of the list currently being displayed.

Page Headers for Detail Lists

On detail lists, the system does not display a standard page header and it does not trigger the event TOP-OF-PAGE. To create page headers for detail list, you must use a different TOP-OF-PAGE event:

TOP-OF-PAGE DURING LINE-SELECTION.

The system triggers this event for each detail list. If you want to create different page headers for different list levels, you must program the processing block of this event accordingly, for example by using system fields such as SY-LSIND or SY-PFKEY in control statements (IF, CASE).

As on the basic list, the page header of a detail list remains displayed even when you scroll vertically.

Messages on Detail Lists

ABAP allows you to react to incorrect or possibly-incorrect user input by displaying messages. The seriousness of the error determines how program processing continues.

In list processing, the message processing for the individual message types is as follows:

A (=Abend): Termination

The system displays the message in a dialog box. After the user confirms the message using ENTER , the system terminates the entire transaction (for example SE38).

E (=Error) or W (=Warning):

The system displays the message in the status bar. Once the user has confirmed the error by pressing ENTER, the current event block is terminated and the previous list level remains displayed. If you use an error or warning message while creating the basic list, the entire program is terminated.

I (=Information):

The system displays the message in a dialog box. Once the user has confirmed the message (ENTER), the program continues processing after the MESSAGE statement.

S (= status)

The system displays the message in the status bar of the current list.

X (= Exit) Runtime error:

This message type triggers a runtime error and generates a short dump.

Using Detail Lists

A classic report is a program that generates a single list, which must contain all of the required detail information. This procedure may result in extensive lists from which the user has to pick the relevant data. For background processing, this is the only possible method. After starting a background job, there is no way of influencing the program. The desired selections must be made beforehand and the list must provide detailed information.

For dialog sessions, there are no such restrictions. The user is present during the execution of the program and can control and manipulate the program flow directly. To be able to use all advantages of the online environment, classical reporting was developed into interactive reporting.

Interactive reporting allows the user to participate actively in retrieving and presenting data during the session. Instead of one extensive and detailed list, with interactive reporting you create a condensed basic list from which the user can call detailed information by positioning the cursor and entering commands. Interactive reporting thus reduces information retrieval to the data actually required. Detailed information is presented in detail lists.

Apart from creating detail lists, interactive reporting also allows you to call transactions or other executable programs (reports) from lists. These programs then use values displayed in the list as input values. The user can, for example, call a transaction from within a list to change the database table whose data is displayed in the list.

EXAMPLES

Creating Detail Lists

REPORT demo_list_interactive_1.

START-OF-SELECTION.

WRITE: 'Basic List, SY-LSIND =', sy-lsind.

AT LINE-SELECTION.

WRITE: 'Secondary List, SY-LSIND =', sy-lsind.

When you run the program, the basic list appears. The GUI status automatically permits the function Choose (F2). When you choose a list line, the system triggers the AT LINE-SELECTION event, and the first detail list overlays the basic list. This list has no standard page header. It also inherits the GUI status of the basic list. By choosing Choose, the user can now create up to 19 of these lists. Trying to produce more than 19 lists results in a runtime error. Using Back , the user can return to previous lists.

Navigation in detail lists.

REPORT demo_list_interactive_2.

START-OF-SELECTION.

WRITE: 'Basic List, SY-LSIND =', sy-lsind.

AT LINE-SELECTION.

IF sy-lsind = 3.

sy-lsind = 0.

ENDIF.

WRITE: 'Secondary List, SY-LSIND =', sy-lsind.

When you run the program, the basic list appears:

Basic List, SY-LSIND = 0

The GUI status automatically permits the function Choose (F2). If the user positions the cursor on the list line and chooses Choose to trigger the AT LINE-SELECTION event, the system displays a detail list that contains the following line:

Secondary List, SY-LSIND = 1

Choosing Choose again produces:

Secondary List, SY-LSIND = 2

Back leads to the previous list level. Choosing Choose for the third time produces a detail list that contains the following line (because of the IF condition):

Secondary List, SY-LSIND = 0

The system deletes list levels 1 and 2. Choosing Back returns to the point at which the list processing started. If you choose Choose, the system creates a detail list with index 1. However, the list on level 0 is no longer a basic list (no page header), but is itself a detail list.

Page Headers for Detail Lists

REPORT demo_list_interactive_3.

START-OF-SELECTION.

WRITE 'Basic List'.

AT LINE-SELECTION.

WRITE 'Secondary List'.

TOP-OF-PAGE DURING LINE-SELECTION.

CASE sy-lsind.

WHEN 1.

WRITE 'First Secondary List'.

WHEN 2.

WRITE 'Second Secondary List'.

WHEN OTHERS.

WRITE: 'Secondary List, Level:', sy-lsind.

ENDCASE.

ULINE.

When you run the program, the basic list appears. The user can choose Choose to create detail lists. The detail lists have page headers that are set according to the value of SY-LSIND.

Messages on Detail Lists

REPORT demo_list_interactive_4 NO STANDARD PAGE HEADING.

AT LINE-SELECTION.

WRITE 'Basic List'.

MESSAGE s888(sabapdocu) WITH text-001.

AT LINE-SELECTION.

IF sy-lsind = 1.

MESSAGE i888(sabapdocu) WITH text-002.

ENDIF.

IF sy-lsind = 2.

MESSAGE e888(sabapdocu) WITH text-003 sy-lsind text-004.

ENDIF.

WRITE: 'Secondary List, SY-LSIND:', sy-lsind.

When the program runs, the system displays the basic list and the success message 100 in the status line. A single click triggers the AT-LINE-SELECTION event. When the system creates the first detail list, it displays a dialog box with the information message 100. You cannot create the second detail list, because the message 200 has message type E:

regards.

sowjanya.b

Read only

Former Member
0 Likes
585

Hi

TYPE-POOLS : slis.

TYPES : BEGIN OF st_ekko,

ebeln TYPE ekko-ebeln, "Purchasing Document Number

bstyp TYPE ekko-bstyp, "Purchasing Document Category

bsart TYPE ekko-bsart, "Purchasing Document Type

aedat TYPE ekko-aedat, "record created on

ernam TYPE ekko-ernam, "Person who Created the Object

check(1),

END OF st_ekko.

TYPES : BEGIN OF st_ekpo,

ebeln TYPE ekko-ebeln,

ebelp TYPE ekpo-ebelp, "Item Number of Purchasing Document

ematn TYPE ekpo-ematn, "Material number

matkl TYPE ekpo-matkl, "Material group

netpr TYPE ekpo-netpr, "Net price in purchasing document

END OF st_ekpo.

TYPES : BEGIN OF st_ebeln,

ebeln TYPE ekpo-ebeln,

END OF st_ebeln.

TYPES : BEGIN OF st_eine,

ebeln TYPE ekko-ebeln,

ekorg TYPE eine-ekorg,

ekgrp TYPE eine-ekgrp,

END OF st_eine.

TYPES : BEGIN OF st_check,

check(1),

END OF st_check.

DATA : it_ekpo TYPE STANDARD TABLE OF st_ekpo,

it_ekko TYPE STANDARD TABLE OF st_ekko,

wa_ekko LIKE LINE OF it_ekko,

it_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat LIKE LINE OF it_fieldcat,

wa_layout TYPE slis_layout_alv,

it_events TYPE slis_t_event,

st_event LIKE LINE OF it_events,

it_listheadr TYPE slis_t_listheader ,

wa_listheadr LIKE LINE OF it_listheadr,

st_printparams TYPE slis_print_alv,

it_sortinfo TYPE slis_t_sortinfo_alv,

wa_sortinfo LIKE LINE OF it_sortinfo,

it_ekposortinfo TYPE slis_t_sortinfo_alv,

wa_ekposortinfo LIKE LINE OF it_ekposortinfo,

it_filter TYPE slis_t_filter_alv,

it_ebeln TYPE STANDARD TABLE OF st_ebeln,

it_eine TYPE STANDARD TABLE OF st_eine,

wa_eine TYPE st_eine,

it_popup TYPE STANDARD TABLE OF st_eine,

wa_popup TYPE st_eine,

it_check TYPE STANDARD TABLE OF st_check,

wa_check TYPE st_check.

DATA : v_ebeln TYPE ekko-ebeln.

----


  • SELECTION-SCREEN

----


SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE tit.

SELECT-OPTIONS: so_ebeln FOR v_ebeln OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b.

----


  • INITIALIZATION

----


INITIALIZATION.

tit = text-000.

----


  • AT SELECTION-SCREEN ON

----


AT SELECTION-SCREEN ON so_ebeln.

PERFORM validate_ebeln.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

PERFORM get_ekko_data.

PERFORM get_eine_data.

----


  • END-OF-SELECTION

----


END-OF-SELECTION.

PERFORM populate_fieldcat1.

PERFORM populate_layout.

PERFORM get_eventlist.

PERFORM get_ekkosortinfo.

PERFORM ekkodisplay_onalv.

&----


*& Form POPULATE_FIELDCAT1

&----


FORM populate_fieldcat1.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-no_zero = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSTYP'.

wa_fieldcat-seltext_l = text-005.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSART'.

wa_fieldcat-seltext_l = text-006.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'AEDAT'.

wa_fieldcat-seltext_l = text-007.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'ERNAM'.

wa_fieldcat-seltext_l = text-008.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "POPULATE_FIELDCAT1

&----


*& Form populate_fieldcat2

&----


FORM populate_fieldcat2 .

CLEAR wa_fieldcat.

CLEAR it_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-hotspot = 'X'.

  • wa_fieldcat-no_zero = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EBELP'.

wa_fieldcat-seltext_l = text-009.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EMATN'.

wa_fieldcat-seltext_l = text-010.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'MATKL'.

wa_fieldcat-seltext_l = text-011.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'NETPR'.

wa_fieldcat-seltext_l = text-012.

wa_fieldcat-datatype = 'CURR'. "Obligatory to perform SUM

wa_fieldcat-do_sum = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "populate_fieldcat2

&----


*& Form GET_EVENTLIST

&----


FORM get_eventlist.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = it_events[]

EXCEPTIONS

list_type_wrong = 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.

READ TABLE it_events WITH KEY name = slis_ev_pf_status_set INTO st_event.

IF sy-subrc EQ 0.

st_event-form = 'SET_PF_STATUS1'.

APPEND st_event TO it_events.

CLEAR st_event.

ENDIF.

READ TABLE it_events WITH KEY name = slis_ev_end_of_page INTO st_event.

IF sy-subrc EQ 0.

st_event-form = 'END_OF_PAGE'.

APPEND st_event TO it_events.

CLEAR st_event.

ENDIF.

ENDFORM. "GET_EVENTLIST

&----


*& Form ekpodisplay_onalv

&----


FORM ekpodisplay_onalv .

IF it_ekpo[] IS INITIAL.

MESSAGE 'NO DATA FOUND' TYPE 'I'.

ELSE.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_pf_status_set = 'SET_PF_STATUS'

i_callback_user_command = 'AT_USER_COMMAND1'

i_callback_top_of_page = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE = I_GRID_TITLE

  • I_GRID_SETTINGS = I_GRID_SETTINGS

is_layout = wa_layout

it_fieldcat = it_fieldcat

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

it_sort = it_ekposortinfo[]

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

  • it_events = it_events

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = IS_REPREP_ID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS = IT_ALV_GRAPHICS

  • IT_HYPERLINK = IT_HYPERLINK

  • IT_ADD_FIELDCAT = IT_ADD_FIELDCAT

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

t_outtab = it_ekpo

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.

ENDIF.

ENDFORM. "ekpodisplay_onalv

&----


*& Form SET_PF_STATUS1

&----


FORM set_pf_status1 USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'MENU' excluding rt_extab. "Copy from SALV .

ENDFORM. "SET_PF_STATUS1

&----


*& Form SET_PF_STATUS

&----


FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD' excluding rt_extab. "Copy from SALV .

ENDFORM. "SET_PF_STATUS

&----


*& Form AT_user_command

&----


FORM at_user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

IF rs_selfield-fieldname EQ 'EBELN'.

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

SELECT ebeln ebelp ematn matkl netpr

FROM ekpo

INTO TABLE it_ekpo

WHERE ebeln EQ wa_ekko-ebeln.

PERFORM populate_fieldcat2.

PERFORM populate_layout2.

PERFORM get_ekposortinfo.

PERFORM ekpodisplay_onalv.

ELSE.

MESSAGE i020(z50871msg) WITH text-013.

ENDIF.

WHEN 'SE16'.

CALL TRANSACTION 'SE16'.

WHEN 'SE37'.

CALL TRANSACTION 'SE37'.

WHEN 'DISP'.

PERFORM get_popupdata.

PERFORM get_popupfcat.

PERFORM display_popup.

ENDCASE.

ENDFORM. "AT_user_command

&----


*& Form TOP_OF_PAGE

&----


FORM top_of_page.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = text-001.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[]

i_logo = 'ENJOYSAP_LOGO'. "From OAER transaction

ENDFORM. "TOP_OF_PAGE

&----


*& Form build_print_params

&----


FORM build_print_params.

st_printparams-reserve_lines = '3'. "Lines reserved for footer

st_printparams-no_coverpage = 'X'.

ENDFORM. "build_print_params

&----


*& Form end_of_page

&----


FORM end_of_page.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = sy-pagno.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[].

ENDFORM. "end_of_page

&----


*& Form GET_EKPOSORTINFO

&----


FORM get_ekposortinfo.

wa_ekposortinfo-up = 'X'.

wa_ekposortinfo-spos = 1.

wa_ekposortinfo-fieldname = 'EBELP'.

wa_ekposortinfo-tabname = 'EKPO'.

APPEND wa_ekposortinfo TO it_ekposortinfo.

CLEAR wa_ekposortinfo.

wa_ekposortinfo-up = 'X'.

wa_ekposortinfo-spos = 2.

wa_ekposortinfo-fieldname = 'EMATN'.

wa_ekposortinfo-tabname = 'EKPO'.

APPEND wa_ekposortinfo TO it_ekposortinfo.

CLEAR wa_ekposortinfo.

ENDFORM. "GET_EKPOSORTINFO

*

&----


*& Form POPULATE_LAYOUT

&----


FORM populate_layout.

wa_layout-colwidth_optimize = 'X'. "column width

wa_layout-zebra = 'X'.

  • wa_layout-no_hline = 'X'.

  • wa_layout-no_vline = 'X'.

  • wa_layout-cell_merge = 'X'.

wa_layout-box_fieldname = 'CHECK'.

wa_layout-box_tabname = 'IT_EKKO'.

wa_layout-window_titlebar = 'PURCHASE ORDER HEADER DETAILS'.

ENDFORM. "POPULATE_LAYOUT

&----


*& Form get_EKKOsortinfo

&----


FORM get_ekkosortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 1.

wa_sortinfo-fieldname = 'EBELN'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 2.

wa_sortinfo-fieldname = 'BSTYP'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

wa_sortinfo-up = 'X'.

wa_sortinfo-spos = 3.

wa_sortinfo-fieldname = 'AEDAT'.

wa_sortinfo-tabname = 'EKKO'.

APPEND wa_sortinfo TO it_sortinfo.

CLEAR wa_sortinfo.

ENDFORM. "get_EKKOsortinfo

&----


*& Form EKKODISPLAY_ONALV

&----


FORM ekkodisplay_onalv.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_pf_status_set = 'SET_PF_STATUS1'

i_callback_user_command = 'AT_USER_COMMAND'

is_layout = wa_layout

it_fieldcat = it_fieldcat

it_sort = it_sortinfo[]

it_filter = it_filter

it_events = it_events[]

TABLES

t_outtab = it_ekko[]

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. "EKKODISPLAY_ONALV

&----


*& Form validate_ebeln

&----


FORM validate_ebeln.

SELECT ebeln

FROM ekpo

INTO TABLE it_ebeln

WHERE ebeln IN so_ebeln.

IF sy-subrc NE 0.

MESSAGE e020(z50871msg) WITH text-014.

ENDIF.

ENDFORM. "validate_ebeln

&----


*& Form populate_layout2

&----


FORM populate_layout2 .

CLEAR wa_layout.

wa_layout-colwidth_optimize = 'X'. "column width

  • wa_layout-zebra = 'X'.

  • wa_layout-no_hline = 'X'.

  • wa_layout-no_vline = 'X'.

  • wa_layout-cell_merge = 'X'.

wa_layout-window_titlebar = 'PURCHASE ORDER DETAILS SECOND SCREEN'.

ENDFORM. " populate_layout2

&----


*& Form GET_POPUPDATA

&----


FORM get_popupdata .

LOOP AT it_ekko INTO wa_ekko WHERE check = 'X'.

READ TABLE it_eine INTO wa_eine WITH KEY ebeln = wa_ekko-ebeln.

IF sy-subrc NE 0.

MESSAGE i020(z50871msg) WITH text-015 wa_ekko-ebeln .

ELSE.

wa_popup-ebeln = wa_eine-ebeln.

wa_popup-ekorg = wa_eine-ekorg.

wa_popup-ekgrp = wa_eine-ekgrp.

APPEND wa_popup TO it_popup.

ENDIF.

ENDLOOP.

ENDFORM. " GET_POPUPDATA

&----


*& Form GET_POPUPFCAT

&----


FORM get_popupfcat .

CLEAR wa_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = text-004.

wa_fieldcat-hotspot = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EKORG'.

wa_fieldcat-seltext_l = text-016.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EKGRP'.

wa_fieldcat-seltext_l = text-017.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. " GET_POPUPFCAT

&----


*& Form DISPLAY_POPUP

&----


FORM display_popup .

LOOP AT it_ekko INTO wa_ekko WHERE check EQ 'X'.

wa_check-check = wa_ekko-check.

APPEND wa_check TO it_check.

ENDLOOP.

IF it_check[] IS INITIAL.

MESSAGE i020(z50871msg) WITH text-018.

ENDIF.

IF NOT it_popup[] IS INITIAL.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_title = text-003

i_allow_no_selection = 'X'

i_scroll_to_sel_line = 'X'

i_tabname = 'IT_POPUP'

it_fieldcat = it_fieldcat

i_callback_program = sy-repid

TABLES

t_outtab = it_popup

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.

ENDIF.

REFRESH it_check.

REFRESH it_popup.

ENDFORM. " DISPLAY_POPUP

&----


*& Form get_ekko_data

&----


FORM get_ekko_data .

SELECT ebeln bstyp bsart aedat ernam

FROM ekko

INTO CORRESPONDING FIELDS OF TABLE it_ekko

WHERE ebeln IN so_ebeln.

IF sy-subrc NE 0.

MESSAGE e020(z50871msg) WITH text-019.

ENDIF.

ENDFORM. " get_ekko_data

&----


*& Form get_eine_data

&----


FORM get_eine_data .

SELECT ebeln ekorg ekgrp

FROM eine

INTO TABLE it_eine

WHERE ebeln IN so_ebeln.

ENDFORM. " get_eine_data

&----


*& Form at_user_command1

&----


FORM at_user_command1 USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN 'SE16'.

CALL TRANSACTION 'SE16'.

WHEN 'SE37'.

CALL TRANSACTION 'SE37'.

ENDCASE.

ENDFORM. "at_user_command1