Vous êtes sur la page 1sur 9

ECC 6.

0
Exercises: ABAP List Viewer

SAP Development ABAP Training

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.

Solution: Follow the standard SAP program BALVSD03.


REPORT YALVXX01_1.
* Data declaration
TYPE-POOLS: slis.
* Global structure of list
TYPES:BEGIN OF ud_struct,
carrid TYPE S_CARR_ID,
carrname TYPE S_CARRNAME,
connid TYPE S_CONN_ID,
cityfrom TYPE S_FROM_CIT,
airfrom TYPE S_FROMAIRP,
cityto TYPE S_TO_CITY,
airpto TYPE S_TOAIRP,
arrtime TYPE S_ARR_TIME,
distance TYPE S_DISTANCE,
distid TYPE S_DISTID,
END OF ud_struct.
DATA:
DATA:
DATA:

gt_fieldcat TYPE slis_t_fieldcat_alv.


gt_outtab TYPE STANDARD TABLE OF ud_struct.
g_repid LIKE sy-repid.

* Initialization fieldcatalog
INITIALIZATION.
g_repid = sy-repid.
PERFORM fieldcat_init CHANGING gt_fieldcat[].
* Data selection
Dec-2008
Page 1

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

START-OF-SELECTION.
PERFORM select_data CHANGING gt_outtab.
* Display list
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
IT_FIELDCAT
TABLES
t_outtab

= g_repid
= gt_fieldcat[]
= gt_outtab.

*---------------------------------------------------------------------*
Forms
*---------------------------------------------------------------------* Initialization fieldcatalog
FORM fieldcat_init
CHANGING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: pos TYPE i VALUE 1.

CLEAR ls_fieldcat.
ls_fieldcat-col_pos
ls_fieldcat-fieldname
ls_fieldcat-key
APPEND ls_fieldcat TO

= pos.
= 'CARRID'.
= 'X'.
rt_fieldcat.

CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'CARRNAME'.
ls_fieldcat-ref_fieldname = 'CARRNAME'.
ls_fieldcat-ref_tabname
= 'SCARR'.
APPEND ls_fieldcat TO rt_fieldcat.
Dec-2008
Page 2

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= 'CONNID'.
ls_fieldcat-ref_fieldname = 'CONNID'.
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
= 'CITYFROM'.
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
= '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
= '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
= 'AIRPTO'.
ls_fieldcat-ref_fieldname = 'AIRPTO'.
ls_fieldcat-ref_tabname
= 'SPFLI'.
ls_fieldcat-no_out
= 'X'.
APPEND ls_fieldcat TO rt_fieldcat.

Dec-2008
Page 3

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos
= pos.
ls_fieldcat-fieldname
= '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
= 'DISTANCE'.
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
= '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
CHANGING rt_outtab LIKE gt_outtab[].
SELECT DISTINCT scarr~carrid scarr~carrname
spfli~connid spfli~cityfrom
spfli~airpfrom spfli~cityto
spfli~airpto
spfli~arrtime spfli~distance
spfli~distid
INTO CORRESPONDING FIELDS OF TABLE rt_outtab
FROM scarr INNER JOIN spfli
ON scarr~carrid = spfli~carrid
WHERE scarr~carrid BETWEEN 'AA' AND 'LH'.
ENDFORM.

" select_data
Dec-2008
Page 4

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

The output should be displayed as follows:

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.

* Data declaration
TYPE-POOLS: slis.
TYPES : BEGIN OF
artist
cdate
occupied
maxseats
location
price

t_outtab ,
TYPE char30,
" Artist Name
TYPE datum,
" Concert Date
TYPE numc2, " Occupied Seats
TYPE numc2, " Maximum Seats
TYPE char10, " Concert Location
TYPE zprice,
" Price of Concert Ticket
Dec-2008
Page 5

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

END OF t_outtab.
TYPES : ty_outtab TYPE STANDARD TABLE OF t_outtab.
DATA:
gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:
gt_outtab TYPE STANDARD TABLE OF t_outtab.
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 CHANGING gt_fieldcat[].
* Customize the Layout
wa_layout-colwidth_optimize = 'X'.
* Data selection
START-OF-SELECTION.
PERFORM select_data CHANGING 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
=
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
=
is_layout
=
it_fieldcat
=
IT_EXCLUDING
=
IT_SPECIAL_GROUPS
=
IT_SORT
=

'
'
'
g_repid
'
'
'
'
'
'
wa_layout
gt_fieldcat[]

Dec-2008
Page 6

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

*
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.
Dec-2008
Page 7

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

*
*
*
*

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
i_program_name
= g_repid
i_internal_tabname
= 'GT_OUTTAB'
i_structure_name
= 'YCONCERT'
I_CLIENT_NEVER_DISPLAY
= 'X'
I_INCLNAME
= G_REPID
I_BYPASSING_BUFFER
=
I_BUFFER_ACTIVE
=
CHANGING
ct_fieldcat
= rt_fieldcat
EXCEPTIONS
inconsistent_interface
= 1
program_error
= 2
OTHERS
= 3
.
IF sy-subrc = 0.

* Set CDATE at Column 1


ls_fieldcat-col_pos = 1.
MODIFY rt_fieldcat FROM ls_fieldcat TRANSPORTING col_pos
WHERE fieldname = 'CDATE'.
* Set ARTIST at Column 2
ls_fieldcat-col_pos = 2.
MODIFY rt_fieldcat FROM ls_fieldcat TRANSPORTING col_pos
WHERE fieldname = 'ARTIST'.
* Hide MAXSEATS in the
ls_fieldcat-no_out
MODIFY rt_fieldcat
WHERE fieldname =

Output
= 'X'.
FROM ls_fieldcat TRANSPORTING no_out
'MAXSEATS'.

ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.

"FIELDCAT_INIT

*&--------------------------------------------------------------------*
*&
Form SELECT_DATA
Dec-2008
Page 8

ECC 6.0
Exercises: ABAP List Viewer

SAP Development ABAP Training

*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->RT_OUTTAB text
*---------------------------------------------------------------------*
FORM select_data CHANGING rt_outtab TYPE ty_outtab.
SELECT artist
" Artist Name
cdate
" Concert Date
occupied " Occupied Seats
maxseats " Maximum Seats
location " Concert Location
price
" Price of Concert Ticket
FROM
yconcert " Concert Table
INTO TABLE gt_outtab.
ENDFORM.

"SELECT_DATA

The output should be displayed as follows:

Dec-2008
Page 9

Vous aimerez peut-être aussi