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

ALV

Difference OO-ALV and ALV with Function modules are:

1. We have n number of events available in the classes when compared to


ALV with function modules.

2. We can display more than one ALV grid data on a single screen in OO-
ALV. But in normal ALV it is not possible.

3. We can control the size of ALV grid through custome container. we can
not control the size of the ALV with function modules.

4. we can place different UI elements(check box, radio button, drop down...)


with OO-ALV but we can't through ALV with function modules.

5. In OO-ALV using object oriented methods and classes(data secure), but


normal ALV using function modules.
Display more than one Internal Table in ALV using Object Oriented
ABAP Programming
By Ashwini Thoutireddy, Phifer Wire Products Inc

Applies to:

This document applies to SAP ECC 6.0, SAP Net weaver 2004s.

Scenario

Displaying more than one table in ALV grid report by splitting the custom container.

TABLE 2
TABLE 3
TABLE 1

Step by step Solution

Step 1: Creating Screen

Go to Screen painter Transaction Code SE51.

Create a screen with no 9010.

Provide description for the screen and click on the Layout Button.

Place a Custom container UI element and give name as ‘CCONTAINER’ now you will have a screen with
custom container as below screen shot. Activate the Object.
Step 2: Flow Logic

Go to the Flow Logic Tab to write coding for PBO & PAI.

Step 3: Report
Go to SE38 and create a program in Z name space and paste the following code snippet.

*&---------------------------------------------------------------------*
*& Report ZPC_CONTAINER_CONTROL *
*&---------------------------------------------------------------------*
REPORT zpc_container_control.
*Declaration
DATA: Splitter_1 TYPE REF TO cl_gui_splitter_container,
Splitter_2 TYPE REF TO cl_gui_splitter_container,
Container TYPE REF TO cl_gui_custom_container,
Container_1 TYPE REF TO cl_gui_container,
Container_2 TYPE REF TO cl_gui_container,
Container_3 TYPE REF TO cl_gui_container,
Grid1 TYPE REF TO cl_gui_alv_grid,
Grid2 TYPE REF TO cl_gui_alv_grid,
Grid3 TYPE REF TO cl_gui_alv_grid.
DATA: Gt_sflight_1 TYPE TABLE OF sflight,
Gt_sflight_2 TYPE TABLE OF sflight,
Gt_sflight_3 TYPE TABLE OF sflight,
G_container TYPE scrfname VALUE 'CCONTAINER'.
DATA: ok_code TYPE sy-ucomm.
* fetching data from table for different internal tables
SELECT * FROM sflight INTO TABLE gt_sflight_1. “Itab 1
SELECT * FROM sflight INTO TABLE gt_sflight_2 UP TO 3 ROWS. “Itab 2
SELECT * FROM sflight INTO TABLE gt_sflight_3 UP TO 2 ROWS. “Itab 3
CALL SCREEN 9010.
*&---------------------------------------------------------------------*
*& Module STATUS_9010 OUTPUT *
*&---------------------------------------------------------------------*
MODULE status_9010 OUTPUT.
SET PF-STATUS 'TEST'.
*creating object reference for container
CREATE OBJECT container
EXPORTING
container_name = 'CCONTAINER'. “Pass name of container created in Screen no
9010
*splitting the main container into 1 row & 2 coloum
CREATE OBJECT splitter_1
EXPORTING
Parent = container
Rows = 1
Columns = 2.
*getting the reference for the splited container (row 1 & col 1 container)
CALL METHOD splitter_1->get_container
EXPORTING
Row = 1
Column = 1
RECEIVING
Container = container_1.
*getting the reference for the splited container (row 1 & col 2 container)
CALL METHOD splitter_1->get_container
EXPORTING
Row = 1
Column = 2
RECEIVING
Container = container_2.
*splitting the 2nd coloum container in to 2 rows & 1 coloum
CREATE OBJECT splitter_2
EXPORTING
Parent = container_2
Rows = 2
Columns = 1.
*getting the reference for the splited container2 (row 1 & col 2 container)
CALL METHOD splitter_2->get_container
EXPORTING
Row = 1
Column = 1
RECEIVING
Container = container_2.
*getting the reference for the splited container2 (row 2 & col 1 container)
CALL METHOD splitter_2->get_container
EXPORTING
Row = 2
Column = 1
RECEIVING
Container = container_3.
*populating first internal table to the container
CREATE OBJECT container
EXPORTING
container_name = g_container.
CREATE OBJECT grid1
EXPORTING
i_parent = container_1.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight_1.
*populating second internal table
CREATE OBJECT container
EXPORTING
container_name = g_container.
CREATE OBJECT grid2
EXPORTING
i_parent = container_2.
CALL METHOD grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight_2.
*populating third internal table
CREATE OBJECT container
EXPORTING
container_name = g_container.
CREATE OBJECT grid3
EXPORTING
i_parent = container_3.
CALL METHOD grid3->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight_3.
ENDMODULE. “STATUS_9010 OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT *
*&---------------------------------------------------------------------*
MODULE exit INPUT.
*free the container memory when exit
CALL METHOD container->free.
LEAVE PROGRAM.
ENDMODULE. “EXIT INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9010 INPUT *
*&---------------------------------------------------------------------*
MODULE user_command_9010 INPUT.
CALL METHOD cl_gui_cfw=>dispatch.
CASE ok_code.
WHEN 'BACK'.
LEAVE SCREEN.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE SCREEN.
ENDCASE.
ENDMODULE. “USER_COMMAND_9010 INPUT

Output

The report will display as below screen shot.


1. Question 1. What Is Alv?
Answer :
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.
2. Question 2. What Are The Uses Of Alv Reports?
Answer :
o Sorting of records
o Filtering of records
o Totals and Sub-totals
o Download the report output to Excel/HTML
o Changing the order of the columns in the report
o Hide the unwanted columns from the report
3. Question 3. What Is Field Catalog In Sap Alv?
Answer :
o We have the following three ways to build a field catalog.
o Automatically through a Data Dictionary structure.
o Manually in ABAP program.
o Semi-automatically by combining the above two procedures.
o Declare an internal table of type SLIS_T_FIELDCAT_ALV.
o Call function module REUSE_ALV_FIELDCATALOG_MERGE.
4. Question 4. What Is Slis In Alv And Standard Type Tables Of It?
Answer :
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.
o SLIS_LAYOUT_ALV,
o SLIS_T_FIELDCAT_ALV
o SLIS_T_LISTHEADER,
o SLIS_T_EVENT,
o SLIS_SELFIELD.
5. Question 5. How Do You Define Default Variant For Alv?
Answer :
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'.
6. Question 6. What Is The Events Table In Alv?
Answer :
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.
7. Question 7. What Are Layout Parameters Options Of Alv?
Answer :
Display options:
o Exceptions
o Totals
o Interaction
o Detail screen
o Display variants (only for hierarchical-sequential lists)
o Color
o Other
8. Question 8. What Is Sort Internal Table Options In Alv?
Answer :
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.
9. Question 9. What Is The Main Function Module Of Alv Report?
Answer :
REUSE_ALV_GRID_DISPLAY
10. Question 10. What Are The Export Parameters Of Alv Reports Function Modules?
Answer :
E_EXIT_CAUSED_BY_CALLER: Delete list in CALLBACK_USER_COMMAND
ES_EXIT_CAUSED_BY_USER: How the user left the list Tables
T_OUTTAB: Table with data to be displayed ---mandatory
11. Question 11. What Is A Report?
Answer :
There are 2 type of reports:
o Interactive report
o 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.
12. Question 12. What Are Classical Reports?
Answer :
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.
13. Question 13. What Are The Interactive Reports?
Answer :
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:
o AT LINE-SELECTION
o AT USER-COMMAND
o AT PF<key>
o TOP-OF-PAGE DURING LINE-SELECTION.
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.
14. Question 14. How Many Types Of Tables Are There In Data Dictionary And What
They?
Answer :
o Transparent table
o CLUSTER Cluster table
o POOL Pooled table
15. Question 15. What Are Pricing Tables?
Answer :
Pricing Tables starts with A* like A001, A002, A900 like that.
o KONH – Condition Header
o KONP – Condition Detail
16. Question 16. What Is A Table Maintenance Generator?
Answer :
To allow users to maintain table using SM30 transaction you use Table Maintenance
generator.
17. Question 17. What Is The Difference Between Client Dependent And Independent
Tables?
Answer :
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.
18. Question 18. What Is The Difference Between At Selection Screen And At Selection
Screen Output?
Answer :
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.
19. Question 19. What Is The Difference Between Clear, Refresh?
Answer :
CLEAR: It clears any field, structure or Header line of internal table.
REFRESH: Deletes all entries of internal table.
20. Question 20. In Alv's How Would You Get Default Values In The Selection Screen?
Answer :
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
21. Question 21. What Are The Steps To Create Custom Table?
Answer :
o Create all the Domains and Data elements as needed using Txn SE11.
o Start creating the table using Tcode SE11.
o Maintain Delivery Class (A-Application Table, C-Customizing, etc)
o Enter all the fields (MANDT must be the first field) and appropriate data elements
or Built in Types for each field.
o Make sure you select the Primary Key for this table.
o Maintain the Technical Settings (Data class, Size, Buffering info)
o Create Secondary indexes as needed
o Activate the Table
22. Question 22. How To Set Hotspot In Alv Reports For A Field?
Answer :
In the Field Catalog table, you set the HOTSPOT property of the field to X.
23. Question 23. What Is Use Of Reuse_alv_fieldcatalog_merge?
Answer :
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.
24. Question 24. What Is Significance Of Hide?
Answer :
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.
25. Question 25. What Is The Difference Between Select Single And Select Up To One Row?
Answer :
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..
26. Question 26. What Is The Secondary Index?
Answer :
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.
27. Question 27. How To Create Secondary Index?
Answer :
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..
28. Question 28. How Do You Modify A Table?
Answer :
You can modify a record using MODIFY statement or UPDATE Statement.
29. Question 29. What Is An Abap Memory And Sap Memory And How To Use Them?
Answer :
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).
30. Question 30. When The Top-of-page Event Does Get Triggered?
Answer :
TOP-OF-PAGE event will be triggered when the first ULINE, WRITE or SKIP statement
occurs in a program.
31. Question 31. What Is The Difference Between Skip And Reserve?
Answer :
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.
32. Question 32. What Is The Difference Between Skip And New-line?
Answer :
SKIP generates a blank line, while the NEW-LINE causes the control to move to next line.
33. Question 33. Can We Set Page Headers To Details Lists?
Answer :
Yes. Use TOP-OF-PAGE DURING LINE-SELECTION event.
34. Question 34. What Are Oss Notes?
Answer :
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.
35. Question 35. What Is The Command To Be Used To Transfer The Data From One
Internal Table To Another Internal?
Answer :
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:
ITAB1[]=ITAB2[].
36. Question 36. How Can Validate Input Values In Selection Screen And Which Event Was
Fired?
Answer :
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.
37. Question 37. What Is The Difference Between Data Element And Domain?
Answer :
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).
38. Question 38. What Is The Difference Between Internal Table With Header Line And
Without Header Line?
Answer :
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.
39. Question 39. Which Is The First Event That Is Triggered In A Report?
Answer :
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.
40. Question 40. What Is Binary Search?
Answer :
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 .
41. Question 41. While Printing, 10 Columns Are Printing In First Page And The Next 4
Cols In Next Page, How Do U Resolve This To Accommodate All The 14 Columns In A
Single Page?
Answer :
o ot line size .. increase line-count
o line-size means width of line
o line-count means no. of lines per page.
42. Question 42. What Events Are Mandatory In Reports?
Answer :
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.
43. Question 43. What Is The Transaction Code Sm 31?
Answer :
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.
44. Question 44. What Are Text Elements?
Answer :
Text elements makes program easier to maintain program texts in different languages. These
are used for maintaining list headers, selection texts in programs.
45. Question 45. Explain Check Table And Value Table?
Answer :
o Check table works at table level and value table works at domain level.
o Check table is nothing but master table that u will create with valid set of values.
o Value table it provides the list of values and it will automatically proposed as a
check table while creating foreign key relationship.
46. Question 46. How Many Types Of Standard Internal Tables?
Answer :
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.
47. Question 47. What Is Refreshing In Internal Table?
Answer :
'Refresh' is the keyword which clears the contents of an internal table body.
48. Question 48. What Is The Difference Between Collect And Sum?
Answer :
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.
49. Question 49. What Are The Ways Of Creating Tables?
Answer :
There are two ways to create table
o Top-down approach
o Bottom-up approach
50. Question 50. What Is The Significance Of A Stacked List?
Answer :
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.
51. Question 51. When It’s The Right Time To Utilize The Command Get Cursor In
Interactive Lists?
Answer :
The command GET CURSOR will be utilized when the hidden information is not enough for
tracing the selected line.
52. Question 52. How Do We Describe Start –of-selection And End-of-selection?
Answer :
The start and the finish of the main processing logic, which is default for every ABAP/4
application; the statements from START-OF-SELECTION to END-OF-SELECTION are
executed automatically, there is no requirement for having END-OF-SELECTION. Every
procedural statement in ABAP applications are dependent by default on the START-OF-
SELECTION.

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