Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 20

INTERACTIVE REPORTS

INTERACTIVE REPORTS

Display the basic information on the basic list and the detailed information in
the Secondary list is called Interactive report.
The first list is called basic list and the number is 0.
The remaining lists are called as secondary lists and the number start from 1
to 20. So totally there are 21 lists.
The lists no are stored in a system variable SY-LSIND.
If you select any line, then the selected line data is stored in SY-LISEL.

Interactive Reports Events:-

AT Line selection
AT User command
Top of page during line selection
AT PF <Function Key>.

AT Line Selection: - This event is triggered whenever the user double clicks on
any list line. To know the selected line contents, we have two keywords or
statements

1)HIDE
2)GET CURSOR

HIDE: - It is a keyword which is used to hide the data into a temporarily


memory called as hide area for further processing. We use the hide statement
within the loop….end loop, so that the HIDE keyword will hide the values into
hide area.

Functionality of hide: - Whenever the user double clicks on any list line, the event
at line selection will be triggered.
The system automatically identifies the line no where the user has double
clicked and reads the corresponding record into hide variable.

Ex Program: Will be discussed separately.

GET CURSOR: - This statement is used to read or get the selected line content
i.e. fieldname, field value into the variables.

Syntax: -
GET CURSOR field <v_fname>
Value <v_fvalue>.

The main Advantage of get cursor is,


We don’t have any hide area or temporary memory
We can generate interactive report based on field name and field value which
is not possible with HIDE statement.
The other difference between hide and get cursor is, with the hide statement
the system uses line no and gets the value into hide variable without knowing
what is the fieldname.
Whereas the get cursor will get the exact field name and field value with
which we can generate various interactive reports based on filed names.

Ex Program: Will be discussed separately.

AT User command: - This event is triggered whenever the user clicks on custom
GUI buttons.

Top of page during line selection: - This event is used for providing the constant page
heading for all the secondary lists.

AT PF <Function Key>: - This event is used or triggered whenever the user clicks
on function keys (f1, f2, .etc)
This event is obsolete in new versions (ECC 5.0 or 6.0)
Conversion Routine: - It is a function module which is used to convert a value from
internal format to external format and vice-versa.
Conversion exits are maintained at domain level.
Go to the domain and double click on conversion exit.
Conversion exit function module will be displayed
Example: -
Conversion_exit_Alpha_input :- used to convert a value from exeternal format to
internal format.
Conversion_exit_Alpha_output:- used to convert a value from internal format to
external format
AT user command: - This event is triggered whenever the user clicks on Custom
GUI button.
Custom GUI: - It is used to create our menus in the menu bar, our own buttons in
the application toolbar, enabling or disabling the standard buttons on the
standard toolbar.
Syntax: - SET PF-status <CustomGUI MenuName>
‘SE41’is the tcode for creating custom GUI (also called as MENU PAINTER)
FCT CODE (Function code):- It is a shortcut code assigned to a button or menu to
identify the button or menu which is clicked .
The FCT codes are automatically stored in a system variable SY-UCOMM.

Ex Program: Will be discussed separately.

EXAMPLESS OF INTERACTIVE REPORTS :

INTERACTIVE REPORTS USING HIDE


1)Business Req: Develop a Material master Report to display data in BASIC list and Desc details in
SECONDARY list.
REPORT ZINTERACTIVE.

TYPES: BEGIN OF TY_MARA,


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
TYPES: BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
MAKTG TYPE MAKT-MAKTG,
END OF TY_MAKT.

DATA: I_MARA TYPE TABLE OF TY_MARA.


DATA: WA_MARA TYPE TY_MARA.

DATA: I_MAKT TYPE TABLE OF TY_MAKT.


DATA: WA_MAKT TYPE TY_MAKT.
PARAMETERS P_MAKTL TYPE MARA-MATKL.
SELECT MATNR
MTART
MBRSH
MATKL
MEINS FROM MARA
INTO TABLE I_MARA WHERE MATKL = P_MAKTL.LOOP AT I_MARA INTO WA_MA
RA.
WRITE:/ WA_MARA-MATNR,
WA_MARA-MTART,
WA_MARA-MBRSH,
WA_MARA-MATKL,
WA_MARA-MEINS.
HIDE: WA_MARA-MATNR.
ENDLOOP.
AT LINE-SELECTION.

SELECT MATNR SPRAS MAKTX MAKTG


FROM MAKT
INTO TABLE I_MAKT
WHERE MATNR = WA_MARA-MATNR.LOOP AT I_MAKT INTO WA_MAKT.
WRITE:/ WA_MAKT-MATNR,
WA_MAKT-SPRAS,
WA_MAKT-MAKTG,
WA_MAKT-MAKTX.
ENDLOOP.
The Input Screen is:
The Output Screen is:
Double Click on Any Material no , It will displays Secondary List As Below.
Unit Testing (In Depth Subject):

Go to MM03
Give any Material no, Ex: AS-200
Press Enter
Select BASIC DATA1, Press Enter
2)Business Req: Develop a Purchase order Report to display PO Header data in BASIC list and PO
Item details in SECONDARY list .

TYPES: BEGIN OF TY_EKKO,


EBELN TYPE EKKO-EBELN,
BUKRS TYPE EKKO-BUKRS,
AEDAT TYPE EKKO-AEDAT,
ERNAM TYPE EKKO-ERNAM,
LIFNR TYPE EKKO-LIFNR,
END OF TY_EKKO.TYPES : BEGIN OF TY_EKPO,
EBELN TYPE EKPO-EBELN,
EBELP TYPE EKPO-EBELP,
MATNR TYPE EKPO-MATNR,
MENGE TYPE EKPO-MENGE,
NETPR TYPE EKPO-NETPR,
END OF TY_EKPO.

DATA: I_EKKO TYPE TABLE OF TY_EKKO.


DATA: WA_EKKO TYPE TY_EKKO.

DATA: I_EKPO TYPE TABLE OF TY_EKPO.


DATA: WA_EKPO TYPE TY_EKPO.
PARAMETERS : P_BUKRS TYPE EKKO-BUKRS.
SELECT EBELN BUKRS AEDAT ERNAM LIFNR FROM EKKO INTO TABLE I_EKKO
WHERE BUKRS = P_BUKRS .
LOOP AT I_EKKO INTO WA_EKKO.
WRITE : / WA_EKKO-EBELN,
WA_EKKO-BUKRS,
WA_EKKO-AEDAT,
WA_EKKO-ERNAM,
WA_EKKO-LIFNR .
HIDE : WA_EKKO-EBELN .
ENDLOOP.

AT LINE-SELECTION .
SELECT EBELN EBELP MATNR MENGE NETPR FROM EKPO
INTO TABLE I_EKPO
WHERE EBELN = WA_EKKO-EBELN .
LOOP AT I_EKPO INTO WA_EKPO.
WRITE : / WA_EKPO-EBELN,
WA_EKPO-EBELP,
WA_EKPO-MATNR,
WA_EKPO-MENGE,
WA_EKPO-NETPR.
ENDLOOP.

The Input Screen is:


The Output Screen is:
Double Click on Any Purchaseno , It will displays Secondary List As Below.
Unit Testing (In Depth Subject):

Go to ME23N
Click On OtherPurchaseOrder Button,
Give the PurchaseNo Ex: 4500017125
Press Enter
INTERACTIVE REPORTS USING GET CURSOR

1)Business Req: Develop a Material master Report to display Material general data in BASIC list
with below functionality.
On double-click of material no, display description details.
On double-click of material type , display material type details.
On double-click of material group , display material group details.

DATA: I_MARA TYPE TABLE OF MARA.


DATA: WA_MARA TYPE MARA.

DATA: I_MAKT TYPE TABLE OF MAKT.


DATA: WA_MAKT TYPE MAKT.

DATA: WA_T134 TYPE T134.


DATA: WA_T023 TYPE T023.

DATA: V_FNAME TYPE STRING.


DATA: V_FVAL(20) TYPE C .

DATA: V_MATNR TYPE MARA-MATNR.


SELECT * FROM MARA INTO TABLE I_MARA UP TO 100 ROWS.
LOOP AT I_MARA INTO WA_MARA.
WRITE:/ WA_MARA-MATNR,
WA_MARA-MTART,
wa_mara-matkl.
ENDLOOP.
AT LINE-SELECTION.
GET CURSOR FIELD V_FNAME
VALUE V_FVAL.

IF V_FNAME = 'WA_MARA-MATNR' .
PERFORM DISPLAY_DESC_DETAILS.
ELSEIF V_FNAME = 'WA_MARA-MTART'.
PERFORM DISPALY_MTART_DETAILS.
ELSEIF V_FNAME = 'WA_MARA-MATKL'.
PERFORM DISPLAY_MAKTL_DETAILS.
ENDIF.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DESC_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_DESC_DETAILS .CALL FUNCTION 'CONVERSION_EXIT_MATN1_
INPUT'
EXPORTING
INPUT = V_FVAL
IMPORTING
OUTPUT = V_MATNR.
REFRESH i_makt.
SELECT * FROM MAKT INTO TABLE I_MAKT
WHERE MATNR = V_MATNR.LOOP AT I_MAKT INTO WA_MAKT.
WRITE:/ WA_MAKT-MATNR,
WA_MAKT-SPRAS,
WA_MAKT-MAKTX.
ENDLOOP.
ENDFORM. " DISPLAY_DESC_DETAILS
*&---------------------------------------------------------------------*
*& Form DISPALY_MTART_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPALY_MTART_DETAILS .CLEAR WA_T134.SELECT SINGLE * FROM T1
34
INTO WA_T134 WHERE MTART = V_FVAL.

WRITE:/ wa_t134-mtart,
WA_T134-MTREF,
WA_T134-PSTAT.
ENDFORM. " DISPALY_MTART_DETAILS
*&---------------------------------------------------------------------*
*& Form DISPLAY_MAKTL_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_MAKTL_DETAILS .CLEAR wa_t023.SELECT SINGLE * FROM T023
INTO WA_T023 WHERE MATKL = V_FVAL.

WRITE:/ WA_T023-MATKL,
WA_T023-SPART,
WA_T023-ABTNR.
ENDFORM. " DISPLAY_MAKTL_DETAILS

2)Business Req: Develop a Purchase order Report to display PO Header data in BASIC list with
below functionality.

On double-click of PO no, display Item details.


On double-click of Vendor No , display Vendor details.

TYPES : BEGIN OF TY_EKKO,


EBELN TYPE EKKO-EBELN,
BUKRS TYPE EKKO-BUKRS,
AEDAT TYPE EKKO-AEDAT,
ERNAM TYPE EKKO-ERNAM,
LIFNR TYPE EKKO-LIFNR,
END OF TY_EKKO.
TYPES : BEGIN OF TY_EKPO,
EBELN TYPE EKPO-EBELN,
EBELP TYPE EKPO-EBELP,
MATNR TYPE EKPO-MATNR,
MENGE TYPE EKPO-MENGE,
NETPR TYPE EKPO-NETPR,
END OF TY_EKPO.
DATA : I_EKKO TYPE TABLE OF TY_EKKO.DATA : I_EKPO TYPE TABLE OF TY_E
KPO.DATA : WA_EKKO TYPE TY_EKKO .DATA : WA_EKPO TYPE TY_EKPO .DAT
A : WA_LFA1 TYPE LFA1.
DATA : V_FNAME TYPE STRING .DATA : V_FVAL(25) TYPE C .DATA : V_LIFNR T
YPE LFA1-LIFNR .DATA : V_EBELN TYPE EKKO-EBELN .
PARAMETERS : P_BUKRS TYPE EKKO-BUKRS.
SELECT EBELN BUKRS AEDAT ERNAM LIFNR FROM EKKO
INTO TABLE I_EKKO WHERE BUKRS = P_BUKRS .
LOOP AT I_EKKO INTO WA_EKKO.
WRITE : / WA_EKKO-EBELN,
WA_EKKO-BUKRS,
WA_EKKO-AEDAT,
WA_EKKO-ERNAM,
WA_EKKO-LIFNR .
ENDLOOP.

AT LINE-SELECTION .
GET CURSOR FIELD V_FNAME
VALUE V_FVAL .

IF V_FNAME = 'WA_EKKO-EBELN' .
PERFORM DISPLAY_PO_ITEMS .
ELSEIF V_FNAME = 'WA_EKKO-LIFNR' .
PERFORM DISPLAY_VENDOR_DETAILS.
ENDIF .

*&---------------------------------------------------------------------*
*& Form DISPLAY_PO_ITEMS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DISPLAY_PO_ITEMS .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = V_FVAL
IMPORTING
OUTPUT = V_EBELN.
SELECT EBELN EBELP MATNR MENGE NETPR FROM EKPO INTO TABLE
I_EKPO WHERE EBELN = V_EBELN .
LOOP AT I_EKPO INTO WA_EKPO.
WRITE : / WA_EKPO-EBELN,
WA_EKPO-EBELP,
WA_EKPO-MATNR,
WA_EKPO-MENGE,
WA_EKPO-NETPR.
ENDLOOP.ENDFORM . "DISPLAY_PO_ITEMS
*&---------------------------------------------------------------------*
*& Form FORM
*&---------------------------------------------------------------------*
FORM DISPLAY_VENDOR_DETAILS.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = V_FVAL
IMPORTING
OUTPUT = V_LIFNR.
SELECT SINGLE * FROM LFA1 INTO WA_LFA1 WHERE LIFNR = V_LIFNR .
WRITE : / WA_LFA1-LIFNR ,
WA_LFA1-LAND1 ,
WA_LFA1-NAME1 ,
WA_LFA1-ORT01 .ENDFORM . "FORM ENDLOOP.

INTERACTIVE REPORTS USING CUSTOM BUTTONS

1)Business Req: Develop a Material Master Report with below functionality.


Place 3 custom buttons on Application Tool Bar
SelectAll, De-SelectAll, Download
Whenever the userclick on Download, The selected records should be downloaded into FlatFile

TYPES: BEGIN OF TY_MARA,


CHK(1) TYPE C,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.

TYPES: BEGIN OF TY_MARA2,


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA2.

TYPES: BEGIN OF TY_MARA3,


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA3.

DATA: I_MARA TYPE TABLE OF TY_MARA.


DATA: WA_MARA TYPE TY_MARA.

DATA: I_MARA2 TYPE TABLE OF TY_MARA2.


DATA: WA_MARA2 TYPE TY_MARA2.

DATA: I_MARA3 TYPE TABLE OF TY_MARA3.


DATA: WA_MARA3 TYPE TY_MARA3.

DATA: V_LINES TYPE I.


DATA: V_LINES1 TYPE I.
DATA: V_LINES2 TYPE I.
SET PF-STATUS 'MENU'.------>Double click and Create 3

Similarly, Activate BACK Button.


Save->Activate

SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE I_MARA


WHERE MTART = 'FERT'.LOOP AT I_MARA INTO WA_MAR
A.

WRITE:/ WA_MARA-CHK AS CHECKBOX,


WA_MARA-MATNR,
WA_MARA-MTART,
WA_MARA-MBRSH,
WA_MARA-MEINS.

ENDLOOP.AT USER-COMMAND.

SY-LSIND = 0.

IF SY-UCOMM = 'SALL'.
LOOP AT I_MARA INTO WA_MARA.
WA_MARA-CHK = 'X'.
WRITE:/ WA_MARA-CHK AS CHECKBOX,
WA_MARA-MATNR,
WA_MARA-MTART,
WA_MARA-MBRSH,
WA_MARA-MEINS.

ENDLOOP.
ELSEIF SY-UCOMM = 'DALL'.
LOOP AT I_MARA INTO WA_MARA.
WA_MARA-CHK = ' '.
WRITE:/ WA_MARA-CHK AS CHECKBOX,
WA_MARA-MATNR,
WA_MARA-MTART,
WA_MARA-MBRSH,
WA_MARA-MEINS.
ENDLOOP.

ELSEIF SY-UCOMM = 'DLOAD'.

DESCRIBE TABLE I_MARA LINES V_LINES.


DO V_LINES TIMES.
READ LINE SY-INDEX FIELD VALUE WA_MARA-CHK
WA_MARA-MATNR
WA_MARA-MTART
WA_MARA-MBRSH
WA_MARA-MEINS.

IF WA_MARA-CHK = 'X'.
MOVE-CORRESPONDING WA_MARA TO WA_MARA2.
APPEND WA_MARA2 TO I_MARA2.

DESCRIBE TABLE I_MARA2 LINES V_LINES1.


ELSEIF WA_MARA-CHK = ' '.
MOVE-CORRESPONDING WA_MARA TO WA_MARA3.
APPEND WA_MARA3 TO I_MARA3.

DESCRIBE TABLE I_MARA3 LINES V_LINES2.


ENDIF.
ENDDO.
IF V_LINES2 <> '0' AND V_LINES1 = '0'.
MESSAGE 'PLEASE SELECT THE RECORDS FOR DOWNLOAD' TYPE 'I'.
ELSE.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING

FILENAME = 'E:\RAT.TXT'
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = I_MARA2.
IF SY-SUBRC = 0.
MESSAGE 'DATA SUCCESSFULLY DOWNLOADED' TYPE 'I'.
ENDIF.
ENDIF.
ENDIF.

INTERACTIVE REPORTS USING TOP-OF-PAGE DURING LINE SELECTION

DATA: I_MARA TYPE TABLE OF MARA.


DATA: WA_MARA TYPE MARA.

DATA: I_MAKT TYPE TABLE OF MAKT.


DATA: WA_MAKT TYPE MAKT.

DATA: WA_T134 TYPE T134.


DATA: WA_T023 TYPE T023.
DATA : V_FNAME TYPE STRING.DATA : V_FVAL(25) TYPE C.data : vline type i.
DATA : V_MATNR TYPE MARA-MATNR.
SELECT * FROM MARA INTO TABLE I_MARA
UP TO 100 ROWS.LOOP AT I_MARA INTO WA_MARA.
WRITE:/ WA_MARA-MATNR,
WA_MARA-MTART,
WA_MARA-MATKL.
ENDLOOP.

TOP-OF-PAGE.
WRITE:/33 'BASIC LIST WITH MATERIAL DATA' COLOR 7.
WRITE:/ SY-ULINE.
AT LINE-SELECTION.
GET CURSOR FIELD V_FNAME
VALUE V_FVAL.
IF V_FNAME = 'WA_MARA-MATNR'.
PERFORM DISPLAY_MATNR.ELSEIF V_FNAME = 'WA_MARA-MTART'.
PERFORM DISPLAY_MTART.ELSEIF V_FNAME = 'WA_MARA-MATKL'.
PERFORM DISPLAY_MAKTL.
ENDIF.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE:/ SY-ULINE.
WRITE:/33 'SECONDARY SCREEN WITH ITEM DATA' COLOR 6.
WRITE:/ SY-ULINE.

END-OF-PAGE.
write:/ sy-uline.
write:/33 'all rights reserved' color 6.
write:/ sy-uline.
*&---------------------------------------------------------------------*
*& Form DISPLAY_MATNR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_MATNR .CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = V_FVAL
IMPORTING
OUTPUT = V_MATNR.REFRESH I_MAKT.SELECT * FROM MAKT INTO TA
BLE I_MAKT
WHERE MATNR = V_MATNR.LOOP AT I_MAKT INTO WA_MAKT.
WRITE:/ WA_MAKT-MATNR,
WA_MAKT-SPRAS,
WA_MAKT-MAKTX.
ENDLOOP.
vline = sy-linct - sy-linno.skip vline.
ENDFORM. " DISPLAY_MATNR
*&---------------------------------------------------------------------*
*& Form DISPLAY_MTART
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_MTART .CLEAR WA_T134.SELECT * FROM T134 INTO WA_T134
WHERE MTART = V_FVAL.
ENDSELECT.
WRITE:/ WA_T134-MTART,
WA_T134-MTREF,
WA_T134-MBREF.
vline = sy-linct - sy-linno.skip vline.
ENDFORM. " DISPLAY_MTART
*&---------------------------------------------------------------------*
*& Form DISPLAY_MAKTL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_MAKTL .CLEAR WA_T023.SELECT * FROM T023 INTO WA_T023
WHERE MATKL = V_FVAL.
ENDSELECT.
WRITE:/ WA_T023-MATKL,
WA_T023-SPART,
WA_T023-LREF3.
vline = sy-linct - sy-linno.skip vline.
ENDFORM. " DISPLAY_MAKTL

You might also like