Complete Guide to Classical Reports in SAP ABAP for Beginners (Step-by-Step Examples)
✅ What You Will Learn in This Blog.
-
Understanding SAP ABAP Classical Report Structure with real-time business use cases and sample report formats.
-
Mastering ABAP Report Events like INITIALIZATION, START-OF-SELECTION, and END-OF-SELECTION for clean program flow.
-
Creating Selection Screens in SAP ABAP Reports using PARAMETERS, SELECT-OPTIONS, and user-friendly input validation.
-
Building Real-Time ABAP Classical Report Examples using MARA, MARC, and MSEG tables with SELECT queries and output formatting.
TOP 10 REAL-TIME INTERVIEW QUESTIONS & ANSWERS
📌 1. What is a Classical Report in SAP ABAP?
Definition:
Classical reports are traditional reports used to display data in a simple list format (line-by-line output). They are the most basic report type in SAP ABAP.
Use Case Example:
Displaying a list of materials from the MARA table.
📌 2. Key Characteristics
- Line-by-line output
- Single event
START-OF-SELECTION - Simple and fast to execute
- Mostly uses
WRITEstatements for output
📌 3. Events Used in Classical Reports
Explain these ABAP events briefly with syntax:
REPORT– Declares the program namePARAMETERS/SELECT-OPTIONS– For inputSTART-OF-SELECTION– Main logicEND-OF-SELECTION(optional) – Final outputINITIALIZATION(optional) – Default screen valuesTOP-OF-PAGE/END-OF-PAGE– Page headings/footers
📌 4. Syntax Template for a Simple Classical Report
📌 5. Real-Time Example Using SELECT-OPTIONS
📌 6. Formatting Output with ULINE, SKIP, and WRITE
Show how to use:
📌 7. Using TOP-OF-PAGE Event for Page Header
📌 8. Tips to Optimize Classical Reports
- Avoid nested loops
- Use internal tables instead of fetching record-by-record
- Use
SELECT ... INTO TABLEinstead ofSELECT ... ENDSELECT
📌 9. Advantages and Limitations
Advantages:
- Easy to write and understand
- Useful for simple list outputs
Limitations:
- No modern GUI support
- Not interactive (compared to ALV)
📌 10. When to Use Classical Reports?
- For quick reporting needs
- Background job reports
- Data review for functional consultants
*& Report ZMAZ_CLASICAL_REPORTS
*&
*&---------------------------------------------------------------------*
TABLES : MARA.
TYPES : BEGIN OF T_FINAL,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
ERNAM TYPE MARA-ERNAM,
PSTAT TYPE MARC-PSTAT,
WERKS TYPE MARC-WERKS,
END OF T_FINAL.
TYPES : BEGIN OF T_MAT,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
ERNAM TYPE MARA-ERNAM,
END OF T_mAT.
TYPES : BEGIN OF T_MARC,
MATNR TYPE MARC-MATNR,
PSTAT TYPE MARC-PSTAT,
WERKS TYPE MARC-WERKS,
END OF T_mARC.
DATA : WA_MAT TYPE T_MAT,
IT_MAT TYPE STANDARD TABLE OF T_MAT.
DATA : WA_MARC TYPE T_MARC,
IT_MARC TYPE STANDARD TABLE OF T_MARC.
DATA : WA_FINAL TYPE T_FINAL,
IT_FINAL TYPE STANDARD TABLE OF T_FINAL.
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100.
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
PARAMETERS : P_WERKS TYPE MARC-WERKS.
SELECTION-SCREEN: END OF BLOCK B1.
initialization.
P_WERKS = '1000'.
S_MATNR-LOW = 10.
S_MATNR-HIGH = 2000.
S_MATNR-OPTION = 'BT'.
S_MATNR-SIGN = 'I'.
APPEND S_MATNR.
** AT SELECTION SCREEN EVENT USED FOR USER RISTRICTION
AT SELECTION-SCREEN.
IF P_WERKS IS initial.
MESSAGE 'ENTER THE REQUIRED VALUE FOR R PLANT NUMBER' TYPE 'E'.
ENDIF.
IF S_MATNR IS initial.
MESSAGE ' ENTER THE REQUIRED MATIAL NUMBER' TYPE 'E'.
ENDIF.
START-OF-SELECTION.
SELECT MATNR
ERSDA
ERNAM FROM MARA INTO TABLE IT_MAT.
IF IT_MAT IS NOT INITIAL.
SELECT MATNR
PSTAT
WERKS FROM MARC INTO TABLE IT_MARC UP TO 10 ROWS
FOR ALL ENTRIES IN IT_MAT
WHERE MATNR = IT_MAT-MATNR .
ENDIF.
LOOP AT IT_MARC INTO WA_MARC.
WA_FINAL-MATNR = WA_MARC-MATNR.
WA_FINAL-PSTAT = WA_MARC-PSTAT.
WA_FINAL-WERKS = WA_MARC-WERKS.
READ TABLE IT_MAT INTO WA_MAT WITH KEY MATNR = WA_MARC-MATNR.
WA_FINAL-ERSDA = WA_MAT-ERSDA.
WA_FINAL-ERNAM = WA_MAT-ERNAM.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
END-OF-SELECTION.
IF IT_FINAL IS NOT INITIAL.
LOOP AT IT_FINAL INTO WA_FINAL.
WRITE : / WA_FINAL-MATNR,
WA_FINAL-ERSDA,
WA_FINAL-ERNAM,
WA_FINAL-PSTAT,
WA_FINAL-WERKS.
ENDLOOP.
ELSE.
MESSAGE ' FINAL INTERN AL TABLE RECOR ARE NOT MATCHING' TYPE 'I'.
ENDIF.
TOP-OF-PAGE.
WRITE : / 'MATERIAL NO', 'DATE' , ' NAME' , 'PSTAT' , 'LOCATION'.
SKIP 1.
END-OF-PAGE.
WRITE : / 'PAGE NO OF THJE LIST' , SY-DATUM.
*REPORTS
*TYPES OF REPORTS
*CLASSICAL REPORTS
*EVENTS
*
*
*REPORTS
*IT CONTAINS SET OF REALATED DATA.
*DATA BASE CONSIST OF LOT OF DATA
*BY USING REPORTS CONCEPT YOU CAN FETCH RELATED DATA.
*
*TYPES OF REPORTS
*CLASSICAL REPORTS OLD FORMAT
*INTERACTIVE REPORTS 2 SCREEN INTERACTION
*ALV REPORTS EXCEL FORMAT
*HERICAL REPORTS
TABLES MARC.
SELECT-OPTIONS : S_MATNR FOR MARC-MATNR.
parameters: P_WERKS TYPE MARC-WERKS.
DATA : WA_MARC TYPE MARC,
IT_MARC TYPE STANDARD TABLE OF MARC.
Initialization.
S_MATNR-LOW = '10'.
S_MATNR-HIGH = '2000'.
S_MATNR-OPTION = 'BT'.
S_MATNR-SIGN = 'I'.
APPEND S_MATNR.
P_WERKS = '3000'.
* ** THE ABOVE ARE THE COMPONENTS OF SELECT OPTIONS
* LOW
* HIGH
* OPTION
* SIGN I INCLUDE AND E EXCLUDE
*INITIALIZATION EVENTS USED TO PROVIDE THE DEFAULT VALUE TO SELECT SCREEN FIELDS
AT SELECTION-SCREEN.
* TO VALIDATE THE SELECTION FIELDS
IF S_MATNR-LOW = ' ' AND S_MATNR-HIGH = ' '.
MESSAGE 'ENTER THE VALID MATERIAL NUMBER' TYPE 'E'.
ENDIF.
IF P_WERKS = ' '.
MESSAGE ' ENTER THE VALID PLANT LOCATION' TYPE 'E'.
ENDIF.
START-OF-SELECTION.
SELECT * FROM MARC INTO TABLE IT_MARC
WHERE MATNR IN S_MATNR
AND
WERKS = P_WERKS..
END-OF-SELECTION.
LOOP AT IT_MARC INTO WA_MARC.
WRITE : / WA_MARC-MATNR,
WA_MARC-WERKS,
45 WA_MARC-PSTAT.
ENDLOOP.
TOP-OF-PAGE.
WRITE : /50 ' DISPLAYING MATERIAL INFORMATION DATA'.
SKIP.
WRITE : / 'MATERIAL NUMBER'.
END-OF-PAGE.
WRITE : / ' LAST RECORDS'.
✅ TOP 10 REAL-TIME INTERVIEW QUESTIONS & ANSWERS
1️⃣ What is a Classical Report in SAP ABAP?
A Classical Report is the basic, traditional ABAP report that displays output in a simple list format using WRITE statements. It follows a predefined sequence of events, making it ideal for simple reporting needs.
2️⃣ What are the main events used in Classical Reports?
Common ABAP Report Events:
- INITIALIZATION
- AT SELECTION-SCREEN
- START-OF-SELECTION
- END-OF-SELECTION
- TOP-OF-PAGE / END-OF-PAGE
3️⃣ What is the use of START-OF-SELECTION in Classical Reports?
It is the default event where the main business logic is written.
Example:
- Reading MARA/MARC table data
- Performing SELECT statements
- Calculations and validations
4️⃣ What is the purpose of TOP-OF-PAGE in Classical Reports?
TOP-OF-PAGE is used to display page headers in the output list.
Example: Company name, report title, and date.
5️⃣ What is the difference between Classical Reports and ALV Reports?
| Classical Reports | ALV Reports |
|---|---|
| Uses WRITE statements | Uses ALV function modules or OO ALV |
| Simple list output | Interactive, sortable, filterable output |
| No automatic formatting | Automatic layout & styling |
| Limited user interaction | High interaction options |
6️⃣ How do you create a Selection Screen in Classical Reports?
Using:
- PARAMETERS – Single input field
- SELECT-OPTIONS – Range selection
7️⃣ What is the role of END-OF-SELECTION?
Used for final processing after data retrieval.
Example:
- Printing totals
- Final formatting
- Preparing the list display
8️⃣ What is AT SELECTION-SCREEN used for?
This event is used to validate input fields or trigger actions before the report execution.
Example: Check if a material exists before executing the report.
9️⃣ Can Classical Reports have multiple pages? How?
Yes, using:
- WRITE: /… to create new lines
- NEW-PAGE to force a new page
- TOP-OF-PAGE to print header on each page
🔟 What is the importance of SY variables in Classical Reports?
SY fields are system variables used for:
- SY-DATUM → Current date
- SY-UNAME → Current user
- SY-PAGNO → Page number
- SY-TABIX → Current row index
- These help generate dynamic and user-friendly report outputs.
Comments
Post a Comment