Вы находитесь на странице: 1из 14

Interactive Reports -> In these type of report user can actively control data retrieval and display during

the session. -> Detailed information appears in secondary lists. -> Allows user to interact so that a new list is populated based on user selection. -> Secondary list may either overlay the Basic list completely or you can display them in an extra window or screen. -> These lists can themselves be interactive again -> System field that gets affected is: Sy-lsind -> It contains the list no. -> The secondary list can go up to 20 levels. An interactive report generally works in the following fashion: 1. Basic list is displayed. 2. User double clicks on any valid line or User selects a line and presses as button on the tool bar. 3. The corresponding event is triggered 4. Then in the code, the line on which action was done, is read. 5. Depending on the values in that selected line, a secondary list is displayed. 6. Steps from 2-5 are repeated till the end. The 20th list, will essentially depend on the "selected line" of 19th list. EVENTS TOP-OF-PAGE DURING LINE-SELECTION : Displays the Header data for the lists. AT LINE-SELECTION : When a particular line is clicked ,this event is triggered.

Developing simple interactive report REQUIREMENT: Get the Plant and storage location from the user and to get the available materials in the particular storage location and display in a report. When the material number in the report is selected the material description and other complete details are displayed in a new screen using interactive report. STEPS FOLLOWED TO ACHIEVE THE GOAL: Go to SE38 ABAP Editor create a new program.

Code the logic in the ABAP Editor. Check Activate- and Execute the code.

Type in the Required Parameters or select a value from F4 Help Screen.

Execute the project

The Report is displayed in the output Screen.

Select a record using the mouse double click.

A new screen shows the output based on the selected record achieving the interactive reporting.

Developing simple interactive report ...Previous *&----------------------------------------------------------------* *& Report ZVikram_interactive * *& * *&----------------------------------------------------------------* *& Published at SAPTechnical.COM * *& * *&----------------------------------------------------------------* REPORT ZVikram_interactive NO STANDARD PAGE HEADING LINE-SIZE 255. ********** THE INITIALIZATION PART CREATING STRUCTURES************* INITIALIZATION. TYPES : BEGIN OF TY_MARD, MATNR TYPE MARD-MATNR, WERKS TYPE MARD-WERKS, LGORT TYPE MARD-LGORT, END OF TY_MARD, BEGIN OF TY_MARA, MATNR TYPE MARA-MATNR, ERSDA TYPE MARA-ERSDA, ERNAM TYPE MARA-ERNAM, MTART TYPE MARA-MTART, MATKL TYPE MARA-MATKL, END OF TY_MARA, BEGIN OF TY_MAKT, MATNR TYPE MAKT-MATNR, SPRAS TYPE MAKT-SPRAS, MAKTX TYPE MAKT-MAKTX, END OF TY_MAKT, BEGIN OF TY_FINAL, MATNR TYPE MARA-MATNR, ERSDA TYPE MARA-ERSDA, ERNAM TYPE MARA-ERNAM, MTART TYPE MARA-MTART, MATKL TYPE MARA-MATKL, WERKS TYPE MARD-WERKS, LGORT TYPE MARD-LGORT, SPRAS TYPE MAKT-SPRAS,

MAKTX TYPE MAKT-MAKTX, END OF TY_FINAL. ***** THE INITIALIZATION PART CREATING WORKAREA AND INTERNAL TABLE***** DATA : W_MARD TYPE TY_MARD, I_MARD TYPE TABLE OF TY_MARD, W_MARA TYPE TY_MARA, I_MARA TYPE TABLE OF TY_MARA, W_MAKT TYPE TY_MAKT, I_MAKT TYPE TABLE OF TY_MAKT, W_FINAL TYPE TY_FINAL, I_FINAL TYPE TABLE OF TY_FINAL. **************************START-OF-SELECTION.************************** START-OF-SELECTION. *************************GET INPUT FROM USER*************************** PARAMETER : PLANT TYPE MARD-WERKS, STLOC TYPE MARD-LGORT. ****SELECT DATA FROM DATABASE INTO INTERNAL TABLES********************* **SELECT FROM MARD THE REQUIRED FIELDS FOR THE GIVEN INPUT************* SELECT MATNR WERKS LGORT FROM MARD INTO TABLE I_MARD WHERE WERKS = PLANT AND LGORT = STLOC. *****CHECK IF RECORDS ARE FETCHED IF NO EXIT OUT OF THE PROGRAM******** IF SY-SUBRC <> 0. WRITE 'NO RECORDS'. EXIT. ELSE. ***IF RECORDS ARE FETCHED FROM FRIST TABLE***************************** ****FETCH RELATED RECORDS FROM NEXT TABLE****************************** SELECT MATNR ERSDA ERNAM MTART MATKL FROM MARA INTO TABLE I_MARA FOR ALL ENTRIES IN I_MARD WHERE MATNR = I_MARD-MATNR. IF SY-SUBRC <> 0. WRITE 'NO MASTER DATA'. STOP. ELSE. SELECT MATNR SPRAS MAKTX FROM MAKT INTO TABLE I_MAKT FOR ALL ENTRIES IN I_MARA WHERE MATNR = I_MARA-MATNR AND SPRAS = 'E'. ENDIF. ENDIF. *****READ FROM INTERNAL TABLE FOR OUTPUT ****************************** LOOP AT I_MARA INTO W_MARA. AT FIRST. WRITE : SY-ULINE(100), /1 SY-VLINE,

25 'EXAMPLE INTERACTIVE REPORT', 100 SY-VLINE, / SY-ULINE(100), /1 SY-VLINE, 2 'MATERIAL NUMBER' , 20 SY-VLINE, 22 'CREATION DATE', 40 SY-VLINE, 42 'USER NAME', 60 SY-VLINE, 62 'MATERIAL TYPE', 80 SY-VLINE, 82 'MATERIAL GROUP', 100 SY-VLINE, / SY-ULINE(100). ENDAT. ON CHANGE OF W_MARA-MATNR. READ TABLE I_MARD INTO W_MARD WITH KEY MATNR = W_MARA-MATNR. ENDON. WRITE :/1 SY-VLINE, 2 W_MARA-MATNR , 20 SY-VLINE, 22 W_MARA-ERSDA, 40 SY-VLINE, 42 W_MARA-ERNAM, 60 SY-VLINE, 62 W_MARA-MTART, 80 SY-VLINE, 82 W_MARA-MATKL, 100 SY-VLINE. HIDE W_MARA-MATNR. CLEAR W_MARA-MATNR. WRITE: / SY-ULINE(100). ENDLOOP. *****************END-OF-SELECTION.************************************* END-OF-SELECTION. ****MOVING VALUES IN TO FINAL INTERNAL TABLE ************************** LOOP AT I_MARA INTO W_MARA. ON CHANGE OF W_MARA-MATNR. READ TABLE I_MAKT INTO W_MAKT WITH KEY MATNR = W_MARA-MATNR. READ TABLE I_MARD INTO W_MARD WITH KEY MATNR = W_MARA-MATNR. ENDON. W_FINAL-MATNR = W_MARA-MATNR. W_FINAL-ERSDA = W_MARA-ERSDA. W_FINAL-ERNAM = W_MARA-ERNAM. W_FINAL-MTART = W_MARA-MTART. W_FINAL-MATKL = W_MARA-MATKL. W_FINAL-WERKS = W_MARD-WERKS. W_FINAL-LGORT = W_MARD-LGORT. W_FINAL-SPRAS = W_MAKT-SPRAS.

W_FINAL-MAKTX = W_MAKT-MAKTX. APPEND W_FINAL TO I_FINAL. ENDLOOP. ********AT LINE-SELECTION EVENT TRIGERING INTERACTIVE REPORTING.******* AT LINE-SELECTION. CASE SY-LSIND. WHEN 1. **DISPLAY OUTPUT IN NEW SCREEN AT LINE SELECTION BY USER MOUSE CLICK ** WRITE: / W_MARA-MATNR COLOR 2. READ TABLE I_FINAL INTO W_FINAL WITH KEY MATNR = W_MARA-MATNR SPRAS = 'EN'. ULINE 1(200). WRITE : /1 SY-VLINE, 75 'EXAMPLE INTERACTIVE REPORT', 200 SY-VLINE, SY-ULINE(200), /1 SY-VLINE, 2 'MATERIAL NUMBER' , 20 SY-VLINE, 22 'CREATION DATE', 40 SY-VLINE, 42 'USER NAME', 60 SY-VLINE, 62 'MATERIAL TYPE', 80 SY-VLINE, 82 'MATERIAL GROUP', 100 SY-VLINE, 102 'PLANT NUMBER', 120 SY-VLINE, 122 'STORAG LOCATION', 140 SY-VLINE, 142 'LANGUAGE', 160 SY-VLINE, 162 'DESCRIPTION', 200 SY-VLINE, / SY-ULINE(200). WRITE :/1 SY-VLINE, 2 W_FINAL-MATNR , 20 SY-VLINE, 22 W_FINAL-ERSDA, 40 SY-VLINE, 42 W_FINAL-ERNAM, 60 SY-VLINE, 62 W_FINAL-MTART, 80 SY-VLINE, 82 W_FINAL-MATKL, 100 SY-VLINE, 102 W_FINAL-WERKS, 120 SY-VLINE, 122 W_FINAL-LGORT,

140 SY-VLINE, 142 W_FINAL-SPRAS, 160 SY-VLINE, 162 W_FINAL-MAKTX, 200 SY-VLINE, / SY-ULINE(200). CLEAR W_MARA-MATNR. ENDCASE.

Example with color format ABAP - 3 Levels Interactive Report Description This Sample Code Illustrates the Use of HIDE Statement to create a NON-ALV Interactive Report upto 3 Levels for SD module. /* 3 Level Interactive Report */ *&---------------------------------------------------------------------* *& Report ZTEJ_INTAB1 * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZTEJ_INTAB1 LINE-SIZE 103 LINE-COUNT 35(5) NO STANDARD PAGE HEADING. *TABLES DECLARATION TABLES : KNA1, VBAK, VBAP. *SELECT OPTIONS SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR. *INITIALIZATION INITIALIZATION. CUST_NO-LOW = '01'. CUST_NO-HIGH = '5000'.

CUST_NO-SIGN = 'I'. CUST_NO-OPTION = 'BT'. APPEND CUST_NO. *SELECTION SCREEN VALIDATION AT SELECTION-SCREEN ON CUST_NO. LOOP AT SCREEN. IF CUST_NO-LOW < 1 OR CUST_NO-HIGH > 5000. MESSAGE E001(ZTJ1). ENDIF. ENDLOOP. *BASIC LIST SELECTION START-OF-SELECTION. SELECT KUNNR NAME1 ORT01 LAND1 INTO (KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1) FROM KNA1 WHERE KUNNR IN CUST_NO. WRITE:/1 SY-VLINE, KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON, 16 SY-VLINE, KNA1-NAME1 UNDER 'NAME', 61 SY-VLINE, KNA1-ORT01 UNDER 'CITY', 86 SY-VLINE, KNA1-LAND1 UNDER 'COUNTRY', 103 SY-VLINE. HIDE: KNA1-KUNNR. ENDSELECT. ULINE. *SECONDARY LIST ACCESS AT LINE-SELECTION. IF SY-LSIND = 1. PERFORM SALES_ORD. ENDIF. IF SY-LSIND = 2. PERFORM ITEM_DET.

ENDIF. *TOP OF PAGE TOP-OF-PAGE. FORMAT COLOR 1. WRITE : 'CUSTOMER DETAILS'. FORMAT COLOR 1 OFF. ULINE. FORMAT COLOR 3. WRITE : 1 SY-VLINE, 3 'CUSTOMER NO.', 16 SY-VLINE, 18 'NAME', 61 SY-VLINE, 63 'CITY', 86 SY-VLINE, 88 'COUNTRY', 103 SY-VLINE. ULINE. FORMAT COLOR 3 OFF. *TOP OF PAGE FOR SECONDARY LISTS TOP-OF-PAGE DURING LINE-SELECTION. *TOP OF PAGE FOR 1ST SECONDARY LIST IF SY-LSIND = 1. ULINE. FORMAT COLOR 1. WRITE : 'SALES ORDER DETAILS'. ULINE. FORMAT COLOR 1 OFF.

FORMAT COLOR 3. WRITE : 1 SY-VLINE, 3 'CUSTOMER NO.', 16 SY-VLINE, 18 'SALES ORDER NO.', 40 SY-VLINE, 42 'DATE', 60 SY-VLINE, 62 'CREATOR', 85 SY-VLINE, 87 'DOC DATE', 103 SY-VLINE. ULINE. ENDIF. FORMAT COLOR 3 OFF. *TOP OF PAGE FOR 2ND SECONDARY LIST IF SY-LSIND = 2. ULINE. FORMAT COLOR 1. WRITE : 'ITEM DETAILS'. ULINE. FORMAT COLOR 1 OFF. FORMAT COLOR 3. WRITE : 1 SY-VLINE, 3 'SALES ORDER NO.', 40 SY-VLINE, 42 'SALES ITEM NO.', 60 SY-VLINE, 62 'ORDER QUANTITY', 103 SY-VLINE. ULINE. ENDIF. FORMAT COLOR 3 OFF. *END OF PAGE

END-OF-PAGE. ULINE. WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:', SY-PAGNO. SKIP. *&---------------------------------------------------------------------* *& Form SALES_ORD *& *& FIRST SECONDARY LIST FORM *&---------------------------------------------------------------------* FORM SALES_ORD . SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO (VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT) FROM VBAK WHERE KUNNR = KNA1-KUNNR. WRITE:/1 SY-VLINE, VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON, 16 SY-VLINE, VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON, 40 SY-VLINE, VBAK-ERDAT UNDER 'DATE', 60 SY-VLINE, VBAK-ERNAM UNDER 'CREATOR', 85 SY-VLINE, VBAK-AUDAT UNDER 'DOC DATE', 103 SY-VLINE. HIDE : VBAK-VBELN. ENDSELECT. ULINE. ENDFORM. " SALES_ORD

*&---------------------------------------------------------------------* *& Form ITEM_DET *& *& SECOND SECONDARY LIST FORM *&---------------------------------------------------------------------* FORM ITEM_DET . SELECT VBELN POSNR KWMENG INTO (VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)

FROM VBAP WHERE VBELN = VBAK-VBELN. WRITE : /1 SY-VLINE, VBAP-VBELN UNDER 'SALES ORDER NO.', 40 SY-VLINE, VBAP-POSNR UNDER 'SALES ITEM NO.', 60 SY-VLINE, VBAP-KWMENG UNDER 'ORDER QUANTITY', 103 SY-VLINE. ENDSELECT. ULINE. ENDFORM. " ITEM_DET

Вам также может понравиться