*&---------------------------------------------------------------------*
*& Report ZTEST_TRAIN *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ztest_train_01 NO STANDARD PAGE HEADING
LINE-SIZE 183
LINE-COUNT 60.
*----------------------------------------------------------------------*
* TABLES
*----------------------------------------------------------------------*
TYPE-POOLS:
slis.
*----------------------------------------------------------------------*
* TABLES
*----------------------------------------------------------------------*
TABLES:
spfli.
*----------------------------------------------------------------------*
* TYPES
*----------------------------------------------------------------------*
TYPES: BEGIN OF typ_output,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
airpto TYPE spfli-airpto,
fltime TYPE spfli-fltime,
deptime TYPE spfli-deptime,
arrtime TYPE spfli-arrtime,
distance TYPE spfli-distance,
END OF typ_output.
*----------------------------------------------------------------------*
* DATA
*----------------------------------------------------------------------*
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gh_fieldcat TYPE slis_fieldcat_alv.
DATA: gw_layout TYPE slis_layout_alv,
gw_exit_caused_by_caller TYPE c,
gw_exit_caused_by_user TYPE slis_exit_by_user,
gw_repid TYPE sy-repid.
DATA: gt_events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
gw_status_set TYPE slis_formname VALUE 'PF_STATUS_SET',
gw_user_command TYPE slis_formname VALUE 'USER_COMMAND',
gw_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
gw_top_of_list TYPE slis_formname VALUE 'TOP_OF_LIST',
gw_end_of_list TYPE slis_formname VALUE 'END_OF_LIST'.
DATA: gw_variant TYPE disvariant,
gw_save TYPE c.
DATA: gw_count TYPE n.
* STRUCTURE
DATA gh_output TYPE typ_output.
* INNER TABLE
DATA gt_output TYPE STANDARD TABLE OF typ_output.
CONSTANTS:
c_text001(12) TYPE c VALUE 'Airline Code',
c_text002(25) TYPE c VALUE 'Flight Connection Number',
c_text003(12) TYPE c VALUE 'Country From',
c_text004(14) TYPE c VALUE 'Departure City',
c_text005(17) TYPE c VALUE 'Departure Airport',
c_text006(10) TYPE c VALUE 'Country To',
c_text007(12) TYPE c VALUE 'Arrival city',
c_text008(19) TYPE c VALUE 'Destination airport',
c_text009(12) TYPE c VALUE 'Flight time',
c_text010(14) TYPE c VALUE 'Departure time',
c_text011(12) TYPE c VALUE 'Arrival time',
c_text012(8) TYPE c VALUE 'Distance'.
*----------------SELECTION SCREEN DEFINATION---------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE blk1_til.
*PARAMETERS:
* P_CARRID LIKE SPFLI-CARRID.
SELECT-OPTIONS:
s_connid FOR spfli-connid.
SELECTION-SCREEN END OF BLOCK blk1.
*----------------OUTPUT SCREEN DEFINATION------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE blk2_til.
PARAMETERS:
p_list RADIOBUTTON GROUP grp1,
p_alv RADIOBUTTON GROUP grp1.
SELECTION-SCREEN END OF BLOCK blk2.
*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
* INITIAL SELECTION SCREEN
PERFORM initial_screen.
*----------------------------------------------------------------------*
* TOP-OF-PAGE
*----------------------------------------------------------------------*
TOP-OF-PAGE.
IF p_list = 'X'.
PERFORM write_list_header.
ENDIF.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
* GET SELECT DATA
PERFORM select_data.
*----------------------------------------------------------------------*
* END-OF-SELECTION
*----------------------------------------------------------------------*
END-OF-SELECTION.
* OUTPUT RESULT
PERFORM output_result.
*----------------------------------------------------------------------*
* FORMS
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form INITIAL_SCREEN
*&---------------------------------------------------------------------*
* INITIAL SELECTION SCREEN
*----------------------------------------------------------------------*
FORM initial_screen.
%_s_connid_%_app_%-text = 'Flight Connection Number'.
* %_P_CARRID_%_APP_%-TEXT = 'Airline Code'.
blk1_til = 'Select Option'.
%_p_list_%_app_%-text = 'List output'.
%_p_alv_%_app_%-text = 'ALV output'.
blk2_til = 'Output'.
ENDFORM. " INITIAL_SCREEN
*&---------------------------------------------------------------------*
*& Form SELECT_DATA
*&---------------------------------------------------------------------*
* GET SELECT DATA
*----------------------------------------------------------------------*
FORM select_data.
SELECT carrid
connid
countryfr
cityfrom
airpfrom
countryto
cityto
airpto
fltime
deptime
arrtime
distance
INTO TABLE gt_output
FROM spfli
WHERE connid IN s_connid.
* AND CARRID = P_CARRID.
IF sy-subrc <> 0.
REFRESH gt_output.
ENDIF.
ENDFORM. " SELECT_DATA
*&---------------------------------------------------------------------*
*& Form WRITE_LIST_HEADER
*&---------------------------------------------------------------------*
* WRITE LIST TITLE
*----------------------------------------------------------------------*
FORM write_list_header.
WRITE: / 'PLEAN FOR THE AIRPLANE'.
WRITE: / sy-uline.
WRITE: /1(1) '|',
2(12) c_text001 CENTERED,
15(1) '|',
16(25) c_text002 CENTERED,
32(1) '|',
33(12) c_text003 CENTERED,
46(1) '|',
47(14) c_text004 CENTERED,
62(1) '|',
63(17) c_text005 CENTERED,
81(1) '|',
82(10) c_text006 CENTERED,
93(1) '|',
94(12) c_text007 CENTERED,
107(1) '|',
108(19) c_text008 CENTERED,
128(1) '|',
129(12) c_text009 CENTERED,
142(1) '|',
143(14) c_text010 CENTERED,
158(1) '|',
159(12) c_text011 CENTERED,
172(1) '|',
173(8) c_text012 CENTERED,
182(1) '|'.
ULINE.
ENDFORM. " WRITE_LIST_HEADER
*&---------------------------------------------------------------------*
*& Form OUTPUT_RESULT
*&---------------------------------------------------------------------*
* OUTPUT RESULT
*----------------------------------------------------------------------*
FORM output_result.
IF p_list = 'X'.
PERFORM output_by_list.
ELSE.
PERFORM comment_build USING gt_list_top_of_page[].
PERFORM output_by_alv.
ENDIF.
ENDFORM. " OUTPUT_RESULT
*&---------------------------------------------------------------------*
*& Form OUTPUT_BY_LIST
*&---------------------------------------------------------------------*
* OUTPUT BY LST
*----------------------------------------------------------------------*
FORM output_by_list.
DESCRIBE TABLE gt_output LINES gw_count.
IF gw_count <> 0.
LOOP AT gt_output INTO gh_output.
WRITE: /1(1) '|',
2(12) gh_output-carrid CENTERED,
15(1) '|',
16(10) gh_output-connid CENTERED,
32(1) '|',
33(12) gh_output-countryfr CENTERED,
46(1) '|',
47(14) gh_output-cityfrom CENTERED,
62(1) '|',
63(17) gh_output-airpfrom CENTERED,
81(1) '|',
82(10) gh_output-countryto CENTERED,
93(1) '|',
94(12) gh_output-cityto CENTERED,
107(1) '|',
108(19) gh_output-airpto CENTERED,
128(1) '|',
129(12) gh_output-fltime CENTERED,
142(1) '|',
143(14) gh_output-deptime CENTERED,
158(1) '|',
159(12) gh_output-arrtime CENTERED,
172(1) '|',
173(8) gh_output-distance CENTERED,
182(1) '|'.
ENDLOOP.
WRITE: / sy-uline.
ENDIF.
WRITE: 'The number of flights is: ',
gw_count.
ENDFORM. " OUTPUT_BY_LIST
*&---------------------------------------------------------------------*
*& Form OUTPUT_BY_ALV
*&---------------------------------------------------------------------*
* ALV OUTPUT
*----------------------------------------------------------------------*
FORM output_by_alv.
* INITIAL ALV
PERFORM initial_alv.
PERFORM set_alv_fieldcat.
PERFORM output_alv.
ENDFORM. " OUTPUT_BY_ALV
*&---------------------------------------------------------------------*
*& Form SET_ALV_FIELDCAT
*&---------------------------------------------------------------------*
* SET ALV FIELDCAT
*----------------------------------------------------------------------*
FORM set_alv_fieldcat .
* FIRST
gh_fieldcat-fieldname = 'CARRID'.
gh_fieldcat-seltext_m = c_text001.
gh_fieldcat-outputlen = 12.
APPEND gh_fieldcat TO gt_fieldcat.
* SECOND
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'CONNID'.
gh_fieldcat-seltext_m = c_text002.
gh_fieldcat-outputlen = 25.
APPEND gh_fieldcat TO gt_fieldcat.
* THIRD
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'COUNTRYFR'.
gh_fieldcat-seltext_m = c_text003.
gh_fieldcat-outputlen = 12.
APPEND gh_fieldcat TO gt_fieldcat.
* FOUTH
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'CITYFROM'.
gh_fieldcat-seltext_m = c_text004.
gh_fieldcat-outputlen = 14.
APPEND gh_fieldcat TO gt_fieldcat.
* FIFTH
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'AIRPFROM'.
gh_fieldcat-seltext_m = c_text005.
gh_fieldcat-outputlen = 30.
APPEND gh_fieldcat TO gt_fieldcat.
* SIXTH COUNTRYTO
gh_fieldcat-fieldname = 'COUNTRYTO'.
gh_fieldcat-seltext_m = c_text006.
gh_fieldcat-outputlen = 10.
APPEND gh_fieldcat TO gt_fieldcat.
* SEVENTH
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'CITYTO'.
gh_fieldcat-seltext_m = c_text007.
gh_fieldcat-outputlen = 12.
APPEND gh_fieldcat TO gt_fieldcat.
* EIGHTH
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'AIRPTO'.
gh_fieldcat-seltext_m = c_text008.
gh_fieldcat-outputlen = 19.
APPEND gh_fieldcat TO gt_fieldcat.
* NINTH
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'FLTIME'.
gh_fieldcat-seltext_m = c_text009.
gh_fieldcat-outputlen = 12.
APPEND gh_fieldcat TO gt_fieldcat.
* TENTH
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'DEPTIME'.
gh_fieldcat-seltext_m = c_text010.
gh_fieldcat-outputlen = 14.
APPEND gh_fieldcat TO gt_fieldcat.
CLEAR gh_fieldcat.
* ELEVEN
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'ARRTIME'.
gh_fieldcat-seltext_m = c_text011.
gh_fieldcat-outputlen = 12.
APPEND gh_fieldcat TO gt_fieldcat.
* TLWALV
CLEAR gh_fieldcat.
gh_fieldcat-fieldname = 'DISTANCE'.
gh_fieldcat-seltext_m = c_text012.
gh_fieldcat-outputlen = 8.
APPEND gh_fieldcat TO gt_fieldcat.
CLEAR gh_fieldcat.
ENDFORM. " SET_ALV_FIELDCAT
*&---------------------------------------------------------------------*
*& Form OUTPUT_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM output_alv.
DATA: lw_title TYPE lvc_title.
lw_title = 'Show The Information Of The Plan For Airplane'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
i_buffer_active = 'X'
i_callback_program = gw_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = gw_top_of_page
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
i_background_id = 'ALV_BACKGROUND'
i_grid_title = lw_title
* I_GRID_SETTINGS =
is_layout = gw_layout
it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
i_default = 'X'
i_save = gw_save
is_variant = gw_variant
it_events = gt_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
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
IMPORTING
e_exit_caused_by_caller = gw_exit_caused_by_caller
es_exit_caused_by_user = gw_exit_caused_by_user
TABLES
t_outtab = gt_output
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc = 0.
IF gw_exit_caused_by_caller = 'X'.
*" Forced Exit by calling program
*" <do_something>.
ELSE.
*" User left list via F3, F12 or F15
IF gw_exit_caused_by_user-back = 'X'. "F3
PERFORM write_list_header.
PERFORM output_by_list.
ELSE.
IF gw_exit_caused_by_user-exit = 'X'. "F15
*" <do_something>.
ELSE.
IF gw_exit_caused_by_user-cancel = 'X'. "F12
*" <do_something>.
ELSE.
*" should not occur!
*" <do_Abnormal_End>.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
*"Fatal error callin ALV
* MESSAGE AXXX(XY) WITH ...
ENDIF.
ENDFORM. " OUTPUT_ALV
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS text
*----------------------------------------------------------------------*
FORM eventtab_build USING p_gt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_gt_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
READ TABLE p_gt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gw_top_of_page TO ls_event-form.
APPEND ls_event TO p_gt_events.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*&---------------------------------------------------------------------*
*& Form INITIAL_ALV
*&---------------------------------------------------------------------*
* INITIAL ALV
*----------------------------------------------------------------------*
FORM initial_alv.
gw_repid = sy-repid.
gw_variant-report = gw_repid.
gw_save = 'A'.
gw_layout-detail_popup = 'X'.
gw_layout-f2code = '&ETA'.
PERFORM eventtab_build USING gt_events.
ENDFORM. " INITIAL_ALV
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* BUILD TITLE COMMENT
*----------------------------------------------------------------------*
* -->LT_LIST_TOP_OF_PAGE[] text
*----------------------------------------------------------------------*
FORM comment_build USING lt_list_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
*
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'ALV Show The Information Of Airplane'.
APPEND ls_line TO lt_list_top_of_page.
* STATUS LINE: TYPE S
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'The Last Date:'.
ls_line-info = sy-datum.
APPEND ls_line TO lt_list_top_of_page.
ls_line-key = 'Airport:'.
ls_line-info = 'Frankfurt'.
APPEND ls_line TO lt_list_top_of_page.
* ACTION LINE: TYPE A
CLEAR ls_line.
ls_line-typ = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'Informations'.
APPEND ls_line TO lt_list_top_of_page.
ENDFORM. " COMMENT_BUILD
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* EVENT: TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page
* I_LOGO =
* I_END_OF_LIST_GRID =
.
ENDFORM. "TOP_OF_PAGE