Top 50 Sap Abap Alv Reports Interview Questions You Must Prepare 24.May.2024

Text elements makes program easier to maintain program texts in different languages. These are used for maintaining list headers, selection texts in programs.

SLIS is the type library for ALV grid.

If you'll use the ALV you have to add TYPE-POOLS : SLIS. command at the beginning of your code. 


STANDARD TABLE: The key is, by default, set to NON-UNIQUE. You may not use the UNIQUE addition.

SORTED TABLE: Unlike standard tables, sorted table have no default setting for the uniqueness attribute. If you do not specify either UNIQUE or NON-UNIQUE, the system defines a generic table type, where uniqueness is irrelevant. You can use generic types to specify the type of generic subroutine parameters.

HASHED TABLE: Hashed tables have no default setting. You must use the UNIQUE addition with hashed tables. You may not use NON-UNIQUE.

'Refresh' is the keyword which clears the contents of an internal table body.


To allow users to maintain table using SM30 transaction you use Table Maintenance generator.

There are 2 type of reports:

  1. Interactive report
  2. Classic reports

In classic reports, we can see the output in single list where as in interactive reports we can see the output in multiple lists.

The secondary list is also called the stacked list and it will be shown on the entire screen if we don’t write its coordinates of the command window.

CLEAR: It clears any field, structure or Header line of internal table.

REFRESH: Deletes all entries of internal table.

  • Check table works at table level and value table works at domain level.
  • Check table is nothing but master table that u will create with valid set of values.
  • Value table it provides the list of values and it will automatically proposed as a check table while creating foreign key relationship.

Using this function module, you can get the Field catalog for a given Internal table or DD Structure. Once you get the Field catalog, you could change the properties of each field.

The user can Interact with the report. We can have a drill down into the report data.

We can have a basic list (number starts from 0) and 20 secondary lists (1 to 21).

Events associated with Interactive Reports are:

  • AT PF<key>

HIDE statement holds the data to be displayed in the secondary list.

sy-lisel : contains data of the selected line.

sy-lsind : contains the level of report (from 0 to 21)

Interactive Report Events:

AT LINE-SELECTION : This Event triggers when we double click a line on the list, when the event is triggered a new sub list is going to be generated. Under this event what ever the statements that are been return will be displayed on newly generated sub list.

AT PFn: For predefined function keys...

AT USER-COMMAND : It provides user functions keys.

TOP-OF-PAGE DURING LINE-SELECTION : Top of page event for secondary list.

ABAP memory is a memory area that all ABAP programs within the same internal session can access using the EXPORT and IMPORT statements.

SAP memory is a memory area to which all main sessions within a SAPgui have access. You can use SAP memory either to pass data from one program to another within a session, or to pass data from one session to another. Application programs that use SAP memory must do so using SPA/GPA parameters (also known as SET/GET parameters).

In Interactive reports, HIDE statement stores the value of that field for that line. If the user places the cursor on a line and click on something those values are automatically populated to that hidden fields.

There are two ways to create table

  1. Top-down approach
  2. Bottom-up approach

he user can programmatically set the initial (default) variant for list display.

The default variant can be found using the function module 'REUSE_ALV_VARIANT_DEFAULT_GET'.

At selection-screen is an event, which is used to validate the selection screen input fields, if you want to validate the particular input field we use at selection-screen on event.

AT SELECTION-SCREEN ON event is used to validate input.

Binary search is a searching algorithm in which the whole data in spitted into two parts and searching is started from one of the part. In normal search data is searched linearly from top to bottom which is less efficient than binary search.

Binary search is used to get the more data from internal table instead of linear search ,and binary search is the faster and efficient .

ALV stands for ABAP List Viewer. ALV gives us a standard List format and user interface to all our ABAP reports. ALV is created by a set of standard function modules provided by SAP.

SKIP provides empty space between lines, while RESERVE executes a page break on the current page if the number of lines between current line and the page footer is less than the number specified in RESERVE statement.

Report dont need any event to execute the output.It we we put start-of-selection there is no compulsory to use end-of-selection. End-of-selection is used when we want to execute some output even when some exception occurs to skip start-of-selection.

There is no mandatory event in the report program. however, if we don't explicitly write any event, system implicitly starts with start of selection event.In case of database selection, it is a good practice of use end-of-selection event.

You can modify a record using MODIFY statement or UPDATE Statement.

  • Create all the Domains and Data elements as needed using Txn SE1@
  • Start creating the table using Tcode SE1@
  • Maintain Delivery Class (A-Application Table, C-Customizing, etc)
  • Enter all the fields (MANDT must be the first field) and appropriate data elements or Built in Types for each field.
  • Make sure you select the Primary Key for this table.
  • Maintain the Technical Settings (Data class, Size, Buffering info)
  • Create Secondary indexes as needed
  • Activate the Table

There is an Index created by default for the Primary Key of the table and that is called Primary Index. If you create, any other index that is called Secondary Index for that table. Secondary Indexes are created to improve the performance of SELECT statements.

Load of program is the first triggering event in the classical reports, where as abaper point of view initialization is the first triggering event.

LOAD-OF-PROGRAM which gets triggered internally in the SAP system, then the event INITIALIZATION gets trigger.

COLLECT allows you to create unique or summarized datasets. The system first tries to find a table entry corresponding to the table key. The key values are taken either from the header line of the internal table itab, or from the explicitly-specified work area.

If the system finds an entry, the numeric fields that are not part of the table key (see ABAP number types) are added to the sum total of the existing entries. If it does not find an entry, the system creates a new entry instead.

Pricing Tables starts with A* like A001, A002, A900 like that.

  • KONH – Condition Header
  • KONP – Condition Detail

TOP-OF-PAGE event will be triggered when the first ULINE, WRITE or SKIP statement occurs in a program.

These are the most simple reports. Programmers learn this one first. It is just an output of data using the Write statement inside a loop.

Classical reports are normal reports. These reports are not having any sub reports. IT IS HAVING ONLY ONE SCREEN/LIST FOR OUTPUT.

Events In Classical Reports:

INTIALIZATION: This event triggers before selection screen display.

AT-SELECTION-SCREEN: This event triggers after processing user input still selection screen is in active mode.

START OF SELECTION: Start of selection screen triggers after processing selection screen.

END-OF-SELECTION: It is for Logical Database Reporting.

AT SELECTION-SCREEN OUTPUT is like Process Before Output Event. This would get triggered before screen is displayed. This can be used to make fields invisible/visible based on selection.

AT SELECTION-SCREEN: This would be triggered if you hit anything (Enter, Drop-Down, Help, Execute) after the selection screen is displayed.

Data element is the collection of domain with short description, whereas domain is collection of datatype and length.

Domain contains only technical attributes (data type , size) where as Data Element contains Technical attribute as well as Semantic attributes(Field description).

  • Sorting of records
  • Filtering of records
  • Totals and Sub-totals
  • Download the report output to Excel/HTML
  • Changing the order of the columns in the report
  • Hide the unwanted columns from the report

SKIP generates a blank line, while the NEW-LINE causes the control to move to next line.


ES_EXIT_CAUSED_BY_USER: How the user left the list Tables       

T_OUTTAB: Table with data to be displayed ---mandatory

Display options:

  • Exceptions
  • Totals
  • Interaction
  • Detail screen
  • Display variants (only for hierarchical-sequential lists)
  • Color
  • Other

If you have MANDT as the first field that is Client Dependant table otherwise it is not. Usually most of the tables are client dependent. Only few like RFC Connections table (RFCDES), Batch Jobs (TBTCO and TBTCP) are not client dependant.

In the Field Catalog table, you set the HOTSPOT property of the field to X.

SAP provides support in the form of Notes also and this is called OSS. Can check the link Sree provided.

Just for an example if you face any error in your system. Then there is error number associated with the error. Then you can search for the OSS not for the error number, and the note will give you possible solution to your problem.

Move itab1 to itab2

We can use APPEND for copying data from one ITAB to another ITAB by keeping in a loop. But it is not efficient. Instead we can use as follows:


SELECT SINGLE can be used if you know the full key to select a record. If you do not have the full Key to select and you are interested in one single row, you could use SELECT UPTO 1 ROWS. If you use a SELECT SINGLE without a full key, you would get a warning message in Extended Program checks.

If you have the full Key use SELECT SINGLE

If you do not have the full Key to select and you are interested in one single row, you could use SELECT UPTO 1 ROWS..

This internal table has the following fields:

Sops:  Sort sequence.

Fieldname:  Internal output table field name.

Tab name : Only relevant for hierarchical-sequential lists. Name of the internal output table.

Up: 'X' = sort in ascending order.

Down: 'X' = sort in descending order.

Sub tot : 'X' = subtotal at group value change.

Group: '* ' = new page at group value change ,'UL' = underline at group value change.

Using SE11, Enter the table name and click on Change.

Click on Indexes and select fields and create a secondary index. Note: Always try to include MANDT as the first field unless you have a reason..

  • Transparent table
  • CLUSTER Cluster table
  • POOL Pooled table

Internal table with header line is nothing but work area name as well as internal table name is same, whereas internal table without header line is nothing but work area name as well as internal table name is different.

FOR INTERNAL TABLE WITH HEADER we need not create work area. But not advisable because the user may get confused what is work area and what is internal table since they both will be having same names.

SM31 is a new version of the t-code SM30.

SM30 - Call view maintenance & views for SAP tables.

SM31 - used for maintenance for SAP tables.

A list of possible events is populated into an event table (I_EVENTS) when this table is passed from the function module REUSE_ALV_EVENT_NAMES_GET. The return table from this function module contains all the possible events.

  • We have the following three ways to build a field catalog.
  • Automatically through a Data Dictionary structure. 
  • Manually in ABAP program. 
  • Semi-automatically by combining the above two procedures.
  • Declare an internal table of type SLIS_T_FIELDCAT_ALV.
  • Call function module REUSE_ALV_FIELDCATALOG_MERGE.

Create a variant in the ALV Report with whatever columns you would like to see and set sort criteria and column widths and save as a default variant.

You could get the default variant by calling FM REUSE_ALV_VARIANT_DEFAULT_GET