Professional Documents
Culture Documents
7
Exercises: ABAP List Viewer
Chapter 1
Exercise 1.1
Create a program that uses REUSE_ALV_LIST_DISPLAY function module to show Airline and
Flight Schedule from SCARR (Airline) and SPFLI (Flight schedule).
1. Populate the Field Catalog before calling the AVL List display function module.
2. Display the following columns in the output.
ls_fieldcat-ref_fieldname = 'CITYFROM'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-AIRPFROM'.
ls_fieldcat-ref_fieldname = 'AIRPFROM'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
LS_FIELDCAT-NO_OUT
= 'X'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-CITYTO'.
ls_fieldcat-ref_fieldname = 'CITYTO'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-AIRPTO'.
ls_fieldcat-ref_fieldname = 'AIRPTO'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
LS_FIELDCAT-NO_OUT
= 'X'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-DEPTIME'.
ls_fieldcat-ref_fieldname = 'DEPTIME'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-ARRTIME'.
ls_fieldcat-ref_fieldname = 'ARRTIME'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-DISTANCE'.
March 2005
Page 3
ls_fieldcat-ref_fieldname = 'DISTANCE'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
LS_FIELDCAT-NO_OUT
= 'X'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
clear ls_fieldcat.
POS = POS + 1.
LS_FIELDCAT-COL_POS
= POS.
LS_FIELDCAT-FIELDNAME = 'SPFLI-DISTID'.
ls_fieldcat-ref_fieldname = 'DISTID'.
LS_FIELDCAT-REF_TABNAME = 'SPFLI'.
LS_FIELDCAT-NO_OUT
= 'X'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
ENDFORM. "fieldcat_init
* Data selection
FORM SELECT_DATA
TABLES RT_OUTTAB LIKE GT_OUTTAB[].
SELECT DISTINCT SCARR~CARRID SCARR~CARRNAME
SPFLI~CONNID SPFLI~CITYFROM
SPFLI~AIRPFROM SPFLI~CITYTO
SPFLI~AIRPTO SPFLI~DEPTIME
SPFLI~ARRTIME SPFLI~DISTANCE
SPFLI~DISTID
INTO (RT_OUTTAB-SCARR-CARRID, RT_OUTTAB-SCARR-CARRNAME,
RT_OUTTAB-SPFLI-CONNID, RT_OUTTAB-SPFLI-CITYFROM,
RT_OUTTAB-SPFLI-AIRPFROM, RT_OUTTAB-SPFLI-CITYTO,
RT_OUTTAB-SPFLI-AIRPTO, RT_OUTTAB-SPFLI-DEPTIME,
RT_OUTTAB-SPFLI-ARRTIME, RT_OUTTAB-SPFLI-DISTANCE,
RT_OUTTAB-SPFLI-DISTID)
FROM SCARR INNER JOIN SPFLI
ON SCARR~CARRID = SPFLI~CARRID
WHERE SCARR~CARRID BETWEEN 'AA' AND 'LH'.
APPEND RT_OUTTAB.
ENDSELECT.
ENDFORM. " select_data
March 2005
Page 4
Exercise 1.2
Create a program that uses REUSE_ALV_GRID_DISPLAY function module to show the content
of YCONCERT table.
1. Modify the program so that the report displays a title Concert Information as report title.
2. Change the display position of CDATE as column 1 and ARTIST as column 2.
3. Do not show the column MAXSEATS in the output.
4. Optimize width of the output columns.
Solution:
*&---------------------------------------------------------------------*
*& Report YALVXX01_2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YALVXX01_2.
March 2005
Page 5
* Data declaration
TYPE-POOLS: SLIS.
DATA : BEGIN OF GT_OUTTAB occurs 0,
ARTIST LIKE YCONCERT-ARTIST, " Artist Name
CDATE LIKE YCONCERT-CDATE, " Concert Date
OCCUPIED LIKE YCONCERT-OCCUPIED, " Occupied Seats
MAXSEATS LIKE YCONCERT-MAXSEATS, " Maximum Seats
LOCATION LIKE YCONCERT-LOCATION, " Concert Location
PRICE LIKE YCONCERT-PRICE, " Price of Concert Ticket
END OF GT_OUTTAB.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: G_REPID LIKE SY-REPID.
DATA: wa_layout TYPE slis_layout_alv, "ALV Layout
* Initialization fieldcatalog
INITIALIZATION.
G_REPID = SY-REPID.
* Preapare the Field Catalog
PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
* Customize the Layout
wa_layout-Colwidth_optimize = 'X'.
* Data selection
START-OF-SELECTION.
PERFORM SELECT_DATA TABLES GT_OUTTAB.
* Display Grid output
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK
=''
* I_BYPASSING_BUFFER
=''
* I_BUFFER_ACTIVE
=''
I_CALLBACK_PROGRAM
= G_REPID
* I_CALLBACK_PF_STATUS_SET
=''
* I_CALLBACK_USER_COMMAND
=''
* I_CALLBACK_TOP_OF_PAGE
=''
* I_CALLBACK_HTML_TOP_OF_PAGE
=''
* I_CALLBACK_HTML_END_OF_LIST
=''
* I_STRUCTURE_NAME
=
* I_BACKGROUND_ID
=''
* I_GRID_TITLE
=
* I_GRID_SETTINGS
=
March 2005
Page 6
IS_LAYOUT
= WA_LAYOUT
IT_FIELDCAT
= GT_FIELDCAT[]
* IT_EXCLUDING
=
* IT_SPECIAL_GROUPS
=
* IT_SORT
=
* IT_FILTER
=
* IS_SEL_HIDE
=
* I_DEFAULT
= 'X'
* I_SAVE
=''
* IS_VARIANT
=
* IT_EVENTS
=
* IT_EVENT_EXIT
=
* IS_PRINT
=
* IS_REPREP_ID
=
* I_SCREEN_START_COLUMN
=0
* I_SCREEN_START_LINE
=0
* I_SCREEN_END_COLUMN
=0
* I_SCREEN_END_LINE
=0
* I_HTML_HEIGHT_TOP
=0
* I_HTML_HEIGHT_END
=0
* IT_ALV_GRAPHICS
=
* IT_HYPERLINK
=
* IT_ADD_FIELDCAT
=
* IT_EXCEPT_QINFO
=
* IR_SALV_FULLSCREEN_ADAPTER
=
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER
=
* ES_EXIT_CAUSED_BY_USER
=
TABLES
T_OUTTAB
= GT_OUTTAB
EXCEPTIONS
PROGRAM_ERROR
=1
OTHERS
=2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*----------------------------------------------------------------------* Forms
*----------------------------------------------------------------------* Initialization fieldcatalog
FORM FIELDCAT_INIT
USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
March 2005
Page 7
Chapter 4
Exercise 4.1
Create a simple dialog program to display Plane information.
Following are the specifications:
Launch via transaction code
Display all columns from table SAPLANE
Display rows based on user input Aircraft Type (PLANETYPE)
Use single screen to display data with menu controls to back out of the screen
Use custom control to display the data in SAP List Viewer (ALV) format
Solution:
March 2005
Page 9
Program: SAPMZOBJALVDEMO1
Transaction code: YALVDEMOOBJ1
Top Include:
*&---------------------------------------------------------------------*
*& Include MZDEMOOBJALVTOP
Module pool
SAPMZDEMOOBJALV
*&
*&---------------------------------------------------------------------*
PROGRAM SAPMZDEMOOBJALV.
* Flight schedule
TABLES: SPFLI.
* Class Definitions
CLASS application Definition.
PUBLIC SECTION.
METHODS: constructor,
read_data IMPORTING l_carrid TYPE spfli-carrid,
fill_list.
PROTECTED SECTION.
PRIVATE SECTION.
DATA:
* Internal table for the SPFLI database table data
spfli_tab TYPE table of spfli,
* Interface to the table control area defined in the screen layout
container type ref to cl_gui_custom_container,
alv_list type ref to cl_gui_alv_grid.
endclass.
"application DEFINITION
* Class Implementations
CLASS application Implementation.
method constructor.
create object container Exporting container_name = 'LIST_AREA'.
create object alv_list Exporting i_parent = container.
CALL METHOD alv_list->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
March 2005
Page 10
CHANGING
it_outtab
= spfli_tab.
endmethod.
"constructor
method read_data.
select * from spfli into table spfli_tab
where carrid = l_carrid.
endmethod.
"read_data
method fill_list.
call method alv_list->refresh_table_display.
endmethod.
"fill_list
ENDClass.
"application IMPLEMENTATION
PBO Module:
*----------------------------------------------------------------------*
***INCLUDE MZDEMOOBJALV_STATUS_9000O01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
* Check if this is the first time
if first_time = 'Y'.
* If yes create the Object
create object object_ref.
endif.
* Turn off first time switch
first_time = 'N'.
SET PF-STATUS 'SCREEN_9000'.
* Output data to the screen table control
call method object_ref->fill_list.
ENDMODULE.
PAI Module:
*----------------------------------------------------------------------*
***INCLUDE MZDEMOOBJALV_USER_COMMAND_9I01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
* Check user response
if sy-ucomm = 'BACK'
or sy-ucomm = 'CANCEL'
or sy-ucomm = 'EXIT'.
LEAVE PROGRAM.
else.
* Retrieve the data
call method object_ref->read_data
EXPORTING
l_carrid = spfli-carrid.
endif.
ENDMODULE.
" USER_COMMAND_9000 INPUT
March 2005
Page 12
Screen Layout:
MODULE USER_COMMAND_9000.
March 2005
Page 14