PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.*&---------------------------------------------------------------------*
*& Report Z_ALV_BLOG
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_ALV_BLOG.
INCLUDE: Z_ALV_CLASSES.
DATA: wa_scarr TYPE scarr,
wa_spfli TYPE spfli,
wa_sflight TYPE sflight,
wa_sbook TYPE sbook.
DATA: r_grid TYPE REF TO cl_gui_alv_grid,
r_container TYPE REF TO cl_gui_custom_container.
DATA: r_alv_scarr TYPE REF TO lcl_alv_scarr,
r_alv_spfli TYPE REF TO lcl_alv_spfli,
r_alv_sflight TYPE REF TO lcl_alv_sflight,
r_alv_sbook TYPE REF TO lcl_alv_sbook.
DATA: r_scarr TYPE REF TO lcl_dynpro_handler,
r_spfli TYPE REF TO lcl_dynpro_handler,
r_sflig TYPE REF TO lcl_dynpro_handler,
r_sbook TYPE REF TO lcl_dynpro_handler.
SELECTION-SCREEN BEGIN OF BLOCK filter WITH FRAME TITLE text-f01.
SELECT-OPTIONS s_carrid FOR wa_scarr-carrid NO-EXTENSION NO INTERVALS.
SELECT-OPTIONS s_connid FOR wa_spfli-connid NO-EXTENSION NO INTERVALS.
SELECT-OPTIONS s_fldate FOR wa_sflight-fldate.
SELECT-OPTIONS s_bookid FOR wa_sbook-bookid.
SELECTION-SCREEN END OF BLOCK filter.
SELECTION-SCREEN BEGIN OF BLOCK display WITH FRAME TITLE text-f02.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_scarr RADIOBUTTON GROUP aa USER-COMMAND a DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(10) text-c01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_spfli RADIOBUTTON GROUP aa.
SELECTION-SCREEN COMMENT 5(10) text-c02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_sfligh RADIOBUTTON GROUP aa.
SELECTION-SCREEN COMMENT 5(10) text-c03.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: p_sbook RADIOBUTTON GROUP aa.
SELECTION-SCREEN COMMENT 5(10) text-c04.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK display.
AT SELECTION-SCREEN OUTPUT.
CASE 'X'.
WHEN p_scarr.
CALL METHOD r_scarr->commit_screen.
WHEN p_spfli.
CALL METHOD r_spfli->commit_screen.
WHEN p_sfligh.
CALL METHOD r_sflig->commit_screen.
WHEN p_sbook.
CALL METHOD r_sbook->commit_screen.
ENDCASE.
AT SELECTION-SCREEN.
CASE 'X'.
WHEN p_scarr.
CALL METHOD r_alv_scarr->popula_alv_scarr EXPORTING im_scarr = s_carrid[].
WHEN p_spfli.
CALL METHOD r_alv_spfli->popula_alv_spfli EXPORTING im_spfli1 = s_carrid[]
im_spfli2 = s_connid[].
WHEN p_sfligh.
CALL METHOD r_alv_sflight->popula_alv_sflight EXPORTING im_sflight1 = s_carrid[]
im_sflight2 = s_connid[]
im_sflight3 = s_fldate[].
WHEN p_sbook.
CALL METHOD r_alv_sbook->popula_alv_sbook EXPORTING im_sbook1 = s_carrid[]
im_sbook2 = s_connid[]
im_sbook3 = s_fldate[]
im_sbook4 = s_bookid[].
ENDCASE.
INITIALIZATION.
CREATE OBJECT r_container EXPORTING container_name = 'CONTAINER1'.
CREATE OBJECT r_grid EXPORTING i_parent = r_container.
CREATE OBJECT r_alv_scarr EXPORTING im_grid = r_grid.
CREATE OBJECT r_alv_spfli EXPORTING im_grid = r_grid.
CREATE OBJECT r_alv_sflight EXPORTING im_grid = r_grid.
CREATE OBJECT r_alv_sbook EXPORTING im_grid = r_grid.
CREATE OBJECT r_scarr.
CREATE OBJECT r_spfli.
CREATE OBJECT r_sflig.
create OBJECT r_sbook.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_CARRID-LOW'
im_input_mode = abap_true.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_CARRID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_CONNID-LOW'
im_input_mode = abap_false.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_CONNID-HIGH'
im_input_mode = abap_false.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_FLDATE-LOW'
im_input_mode = abap_false.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_FLDATE-HIGH'
im_input_mode = abap_false.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_BOOKID-LOW'
im_input_mode = abap_false.
CALL METHOD r_scarr->set_input EXPORTING im_field_name = 'S_BOOKID-HIGH'
im_input_mode = abap_false.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_CARRID-LOW'
im_input_mode = abap_true.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_CARRID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_CONNID-LOW'
im_input_mode = abap_true.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_CONNID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_FLDATE-LOW'
im_input_mode = abap_false.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_FLDATE-HIGH'
im_input_mode = abap_false.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_BOOKID-LOW'
im_input_mode = abap_false.
CALL METHOD r_spfli->set_input EXPORTING im_field_name = 'S_BOOKID-HIGH'
im_input_mode = abap_false.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_CARRID-LOW'
im_input_mode = abap_true.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_CARRID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_CONNID-LOW'
im_input_mode = abap_true.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_CONNID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_FLDATE-LOW'
im_input_mode = abap_true.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_FLDATE-HIGH'
im_input_mode = abap_true.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_BOOKID-LOW'
im_input_mode = abap_false.
CALL METHOD r_sflig->set_input EXPORTING im_field_name = 'S_BOOKID-HIGH'
im_input_mode = abap_false.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_CARRID-LOW'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_CARRID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_CONNID-LOW'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_CONNID-HIGH'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_FLDATE-LOW'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_FLDATE-HIGH'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_BOOKID-LOW'
im_input_mode = abap_true.
CALL METHOD r_sbook->set_input EXPORTING im_field_name = 'S_BOOKID-HIGH'
im_input_mode = abap_true.
START-OF-SELECTION.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module STATUS_0100 output.
SET PF-STATUS 'PFSTATUS'.
* SET TITLEBAR 'xxx'.
endmodule. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module USER_COMMAND_0100 input.
IF sy-ucomm = 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
IF sy-ucomm = 'CANCEL'.
LEAVE PROGRAM.
ENDIF.
endmodule. " USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------*
*& Include Z_ALV_CLASSES
*&---------------------------------------------------------------------*
CLASS lcl_alv_scarr DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF so_car_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE scarr-carrid,
high TYPE scarr-carrid,
END OF so_car_ty.
TYPES ty_scarr TYPE STANDARD TABLE OF so_car_ty.
METHODS: constructor IMPORTING im_grid TYPE REF TO cl_gui_alv_grid,
popula_alv_scarr IMPORTING im_scarr TYPE ty_scarr.
PRIVATE SECTION.
DATA: r_grid TYPE REF TO cl_gui_alv_grid.
DATA: it_scarr TYPE TABLE OF scarr.
ENDCLASS. "lcl_alv_scarr DEFINITION
CLASS lcl_alv_scarr IMPLEMENTATION.
METHOD: constructor.
r_grid = im_grid.
ENDMETHOD.
METHOD: popula_alv_scarr.
SELECT * UP TO 100 ROWS FROM scarr INTO TABLE it_scarr WHERE carrid IN im_scarr.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SCARR'
CHANGING
it_outtab = it_scarr.
ENDMETHOD. "popula_alv_scarr
ENDCLASS. "lcl_alv_scarr IMPLEMENTATION
CLASS lcl_alv_spfli DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF so_car_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE scarr-carrid,
high TYPE scarr-carrid,
END OF so_car_ty.
TYPES: BEGIN OF so_con_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE sbook-connid,
high TYPE sbook-connid,
END OF so_con_ty.
TYPES: ty_spfli1 TYPE STANDARD TABLE OF so_car_ty,
ty_spfli2 TYPE STANDARD TABLE OF so_con_ty.
METHODS: constructor IMPORTING im_grid TYPE REF TO cl_gui_alv_grid.
METHODS: popula_alv_spfli IMPORTING im_spfli1 TYPE ty_spfli1
im_spfli2 TYPE ty_spfli2.
PRIVATE SECTION.
DATA: r_grid TYPE REF TO cl_gui_alv_grid.
DATA: it_spfli TYPE TABLE OF spfli.
ENDCLASS. "lcl_alv_scarr DEFINITION
CLASS lcl_alv_spfli IMPLEMENTATION.
METHOD: constructor.
r_grid = im_grid.
ENDMETHOD. "constructor
METHOD popula_alv_spfli.
SELECT * UP TO 100 ROWS FROM spfli INTO TABLE it_spfli WHERE carrid IN im_spfli1
AND connid IN im_spfli2.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = it_spfli.
ENDMETHOD. "popula_alv_spfli
ENDCLASS. "lcl_alv_spfli IMPLEMENTATION
CLASS lcl_alv_sflight DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF so_car_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE scarr-carrid,
high TYPE scarr-carrid,
END OF so_car_ty.
TYPES: BEGIN OF so_con_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE spfli-connid,
high TYPE spfli-connid,
END OF so_con_ty.
TYPES: BEGIN OF so_fldate_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE sflight-fldate,
high TYPE sflight-fldate,
END OF so_fldate_ty.
TYPES: ty_sflight1 TYPE STANDARD TABLE OF so_car_ty,
ty_sflight2 TYPE STANDARD TABLE OF so_con_ty,
ty_sflight3 TYPE STANDARD TABLE OF so_fldate_ty.
METHODS: constructor IMPORTING im_grid TYPE REF TO cl_gui_alv_grid.
METHODS: popula_alv_sflight IMPORTING im_sflight1 TYPE ty_sflight1
im_sflight2 TYPE ty_sflight2
im_sflight3 TYPE ty_sflight3.
PRIVATE SECTION.
DATA: r_grid TYPE REF TO cl_gui_alv_grid.
DATA: it_sflight TYPE TABLE OF sflight.
ENDCLASS. "lcl_alv_scarr DEFINITION
CLASS lcl_alv_sflight IMPLEMENTATION.
METHOD: constructor.
r_grid = im_grid.
ENDMETHOD. "constructor
METHOD popula_alv_sflight.
SELECT * UP TO 100 ROWS FROM sflight INTO TABLE it_sflight WHERE carrid IN im_sflight1
AND connid IN im_sflight2
AND fldate IN im_sflight3.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = it_sflight.
ENDMETHOD. "popula_alv_spfli
ENDCLASS. "lcl_alv_spfli IMPLEMENTATION
CLASS lcl_alv_sbook DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF so_car_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE scarr-carrid,
high TYPE scarr-carrid,
END OF so_car_ty.
TYPES: BEGIN OF so_con_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE spfli-connid,
high TYPE spfli-connid,
END OF so_con_ty.
TYPES: BEGIN OF so_fldate_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE sflight-fldate,
high TYPE sflight-fldate,
END OF so_fldate_ty.
TYPES: BEGIN OF so_sbookid_ty,
sign TYPE c LENGTH 1,
option TYPE c LENGTH 2,
low TYPE sbook-bookid,
high TYPE sbook-bookid,
END OF so_sbookid_ty.
TYPES: ty_sbook1 TYPE STANDARD TABLE OF so_car_ty,
ty_sbook2 TYPE STANDARD TABLE OF so_con_ty,
ty_sbook3 TYPE STANDARD TABLE OF so_fldate_ty,
ty_sbook4 TYPE STANDARD TABLE OF so_sbookid_ty.
METHODS: constructor IMPORTING im_grid TYPE REF TO cl_gui_alv_grid.
METHODS: popula_alv_sbook IMPORTING im_sbook1 TYPE ty_sbook1
im_sbook2 TYPE ty_sbook2
im_sbook3 TYPE ty_sbook3
im_sbook4 TYPE ty_sbook4.
PRIVATE SECTION.
DATA: r_grid TYPE REF TO cl_gui_alv_grid.
DATA: it_sbook TYPE TABLE OF sbook.
ENDCLASS. "lcl_alv_scarr DEFINITION
CLASS lcl_alv_sbook IMPLEMENTATION.
METHOD: constructor.
r_grid = im_grid.
ENDMETHOD. "constructor
METHOD popula_alv_sbook.
SELECT * UP TO 100 ROWS FROM sbook INTO TABLE it_sbook WHERE carrid IN im_sbook1
AND connid IN im_sbook2
AND fldate IN im_sbook3
AND bookid IN im_sbook4.
CALL METHOD r_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SBOOK'
CHANGING
it_outtab = it_sbook.
ENDMETHOD. "popula_alv_spfli
ENDCLASS.
CLASS lcl_dynpro_handler DEFINITION.
PUBLIC SECTION.
METHODS: commit_screen.
METHODS: constructor.
TYPE-POOLS abap.
METHODS set_input IMPORTING value(im_field_name) TYPE string
im_input_mode TYPE abap_bool DEFAULT abap_true.
PRIVATE SECTION.
DATA: it_screen TYPE STANDARD TABLE OF screen WITH KEY name.
ENDCLASS.
CLASS lcl_dynpro_handler IMPLEMENTATION.
METHOD constructor.
LOOP AT SCREEN.
APPEND screen TO me->it_screen.
ENDLOOP.
ENDMETHOD. "constructor
METHOD set_input.
FIELD-SYMBOLS: <fs_screen> TYPE screen.
LOOP AT it_screen ASSIGNING <fs_screen>.
IF <fs_screen>-name = im_field_name.
IF im_input_mode = abap_true.
<fs_screen>-input = 1.
ELSE.
<fs_screen>-input = 0.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD. "set_input
METHOD commit_screen.
FIELD-SYMBOLS <fs_screen> TYPE screen.
LOOP AT SCREEN.
READ TABLE it_screen WITH TABLE KEY name = screen-name ASSIGNING <fs_screen>.
IF sy-subrc IS INITIAL.
MODIFY SCREEN FROM <fs_screen>.
ENDIF.
ENDLOOP.
ENDMETHOD. "commit_screen
ENDCLASS.