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.