Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Include ZINTERN_ALVGRID_TASK_1_CD01
- *&---------------------------------------------------------------------*
- *&---------------------------------------------------------------------*
- *& Include Z_LCL_GRID_DISPLAY
- *&---------------------------------------------------------------------*
- *&---------------------------------------------------------------------*
- *& Class lcl_grid_display
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- CLASS:
- lcl_button_handle_e DEFINITION DEFERRED,
- lcl_grid_data DEFINITION DEFERRED.
- CLASS lcl_button_handle_e DEFINITION.
- PUBLIC SECTION.
- METHODS: create_button
- FOR EVENT toolbar OF cl_gui_alv_grid
- IMPORTING e_object e_interactive,
- click_button
- FOR EVENT user_command OF cl_gui_alv_grid
- IMPORTING e_ucomm.
- PRIVATE SECTION.
- CLASS-DATA:
- state TYPE c.
- ENDCLASS.
- CLASS lcl_grid_data DEFINITION.
- PUBLIC SECTION.
- TYPES:
- mty_id TYPE RANGE OF spfli-carrid,
- mty_cityf TYPE RANGE OF spfli-cityfrom,
- mty_cityt TYPE RANGE OF spfli-cityto.
- CLASS-DATA:
- mt_alv TYPE STANDARD TABLE OF zty_alv_table,
- mt_id TYPE mty_id,
- mt_cityf TYPE mty_cityf,
- mt_cityt TYPE mty_cityt,
- mt_var TYPE c.
- CLASS-METHODS:
- show,
- display,
- hide_flights,
- select_1,
- select_2,
- select_3.
- PRIVATE SECTION.
- CLASS-DATA:
- ms_layout TYPE lvc_s_layo,
- mo_cont TYPE REF TO cl_gui_custom_container,
- mo_grid TYPE REF TO cl_gui_alv_grid,
- mt_fieldcat TYPE lvc_t_fcat,
- ms_color TYPE lvc_s_scol,
- mo_button TYPE REF TO lcl_button_handle_e.
- ENDCLASS.
- CLASS lcl_button_handle_e IMPLEMENTATION.
- METHOD create_button.
- state = 'H'.
- DATA: my_tool TYPE REF TO cl_alv_event_toolbar_set.
- DATA: ls_toolbar TYPE stb_button.
- MOVE 'HIDE_SHOW' TO ls_toolbar-function.
- MOVE 'Скрыть/показать расстояния больше 3к км.'(112) TO ls_toolbar-text.
- APPEND ls_toolbar TO e_object->mt_toolbar.
- ENDMETHOD.
- METHOD click_button.
- CASE state.
- WHEN 'H'.
- lcl_grid_data=>hide_flights( ).
- state = 'S'.
- WHEN 'S'.
- lcl_grid_data=>select_3( ).
- lcl_grid_data=>show( ).
- state = 'H'.
- ENDCASE.
- ENDMETHOD.
- ENDCLASS.
- CLASS lcl_grid_data IMPLEMENTATION.
- METHOD display.
- CASE mt_var.
- WHEN '1'.
- select_1( ).
- WHEN '2'.
- select_2( ).
- WHEN '3'.
- select_3( ).
- ENDCASE.
- show( ).
- ENDMETHOD.
- METHOD show.
- CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
- EXPORTING
- i_structure_name = 'ZTY_ALV_TABLE'
- CHANGING
- ct_fieldcat = mt_fieldcat.
- LOOP AT mt_fieldcat ASSIGNING FIELD-SYMBOL(<ls_fcat>).
- <ls_fcat>-no_out = abap_true.
- IF <ls_fcat>-fieldname = 'CONNID'.
- <ls_fcat>-no_out = abap_false.
- IF mt_var = '2'.
- <ls_fcat>-fix_column = 'X'.
- <ls_fcat>-col_pos = 0.
- ENDIF.
- ENDIF.
- IF <ls_fcat>-fieldname = 'CARRNAME'.
- <ls_fcat>-no_out = abap_false.
- IF mt_var = '2'.
- <ls_fcat>-fix_column = 'X'.
- <ls_fcat>-col_pos = 1.
- ENDIF.
- ENDIF.
- IF ( <ls_fcat>-fieldname = 'CARRID'
- OR <ls_fcat>-fieldname = 'CITYFROM'
- OR <ls_fcat>-fieldname = 'AIRPFROM'
- OR <ls_fcat>-fieldname = 'CITYTO'
- OR <ls_fcat>-fieldname = 'AIRPTO'
- OR <ls_fcat>-fieldname = 'FLTIME'
- OR <ls_fcat>-fieldname = 'DEPTIME'
- OR <ls_fcat>-fieldname = 'ARRTIME'
- OR <ls_fcat>-fieldname = 'DISTANCE'
- ).
- <ls_fcat>-no_out = abap_false.
- ENDIF.
- IF ( <ls_fcat>-fieldname = 'CHECKBOX'
- AND mt_var = '2'
- ).
- <ls_fcat>-checkbox = 'X'.
- <ls_fcat>-no_out = abap_false.
- ENDIF.
- ENDLOOP.
- IF mo_cont IS BOUND.
- mo_grid->refresh_table_display( ).
- ELSE.
- CREATE OBJECT mo_cont
- EXPORTING
- container_name = 'CONT_100'.
- CREATE OBJECT mo_button.
- CREATE OBJECT mo_grid
- EXPORTING
- i_parent = mo_cont.
- SET HANDLER mo_button->create_button FOR mo_grid.
- SET HANDLER mo_button->click_button FOR mo_grid.
- ms_layout-zebra = abap_true.
- ms_layout-ctab_fname = 'CELLCOLOR'.
- mo_grid->set_table_for_first_display(
- EXPORTING
- is_layout = ms_layout
- CHANGING
- it_fieldcatalog = mt_fieldcat
- it_outtab = mt_alv ).
- ENDIF.
- ENDMETHOD.
- METHOD select_1.
- SELECT spfli~carrid,
- spfli~connid,
- spfli~cityfrom,
- spfli~airpfrom,
- spfli~cityto,
- spfli~airpto,
- spfli~fltime,
- spfli~deptime,
- spfli~arrtime,
- spfli~distance,
- scarr~carrname
- FROM scarr
- LEFT JOIN spfli ON
- spfli~carrid = scarr~carrid
- INTO CORRESPONDING FIELDS OF TABLE @mt_alv
- WHERE spfli~carrid IN @mt_id[]
- AND spfli~cityfrom IN @mt_cityf[]
- AND spfli~cityto IN @mt_cityt[]
- ORDER BY scarr~carrname.
- LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
- IF <ls_alv>-distance > 3000.
- ms_color-fname = 'DISTANCE'.
- ms_color-color-col = 6.
- ms_color-color-int = 0.
- ms_color-color-inv = 0.
- APPEND ms_color TO <ls_alv>-cellcolor.
- ENDIF.
- ENDLOOP.
- * LOOP AT mt_alv REFERENCE INTO DATA(lr_alv).
- * IF ( lr_alv->distance > '3000' ).
- * ms_color-fname = 'DISTANCE'.
- * ms_color-color-col = 6.
- * ms_color-color-int = 0.
- * ms_color-color-inv = 0.
- * APPEND ms_color TO lr_alv-cellcolor.
- * ENDIF.
- * ENDLOOP.
- ENDMETHOD.
- METHOD select_2.
- SELECT spfli~carrid,
- spfli~connid,
- spfli~cityfrom,
- spfli~airpfrom,
- spfli~cityto,
- spfli~airpto,
- spfli~fltime,
- spfli~deptime,
- spfli~arrtime,
- spfli~distance,
- scarr~carrname
- FROM scarr
- LEFT JOIN spfli ON
- spfli~carrid = scarr~carrid
- INTO CORRESPONDING FIELDS OF TABLE @mt_alv
- WHERE spfli~carrid IN @mt_id[]
- AND spfli~cityfrom IN @mt_cityf[]
- AND spfli~cityto IN @mt_cityt[]
- ORDER BY scarr~carrname.
- LOOP AT mt_alv REFERENCE INTO DATA(lr_alv).
- IF ( lr_alv->distance > '3000' ).
- lr_alv->checkbox = 'X'.
- ENDIF.
- ENDLOOP.
- ENDMETHOD.
- METHOD select_3.
- SELECT spfli~carrid,
- spfli~connid,
- spfli~cityfrom,
- spfli~airpfrom,
- spfli~cityto,
- spfli~airpto,
- spfli~fltime,
- spfli~deptime,
- spfli~arrtime,
- spfli~distance,
- scarr~carrname
- FROM scarr
- LEFT JOIN spfli ON
- spfli~carrid = scarr~carrid
- INTO CORRESPONDING FIELDS OF TABLE @mt_alv
- WHERE spfli~carrid IN @mt_id[]
- AND spfli~cityfrom IN @mt_cityf[]
- AND spfli~cityto IN @mt_cityt[]
- ORDER BY spfli~cityfrom.
- ENDMETHOD.
- METHOD hide_flights.
- SELECT spfli~carrid,
- spfli~connid,
- spfli~cityfrom,
- spfli~airpfrom,
- spfli~cityto,
- spfli~airpto,
- spfli~fltime,
- spfli~deptime,
- spfli~arrtime,
- spfli~distance,
- scarr~carrname
- FROM scarr
- LEFT JOIN spfli ON
- spfli~carrid = scarr~carrid
- INTO CORRESPONDING FIELDS OF TABLE @mt_alv
- WHERE spfli~carrid IN @mt_id[]
- AND spfli~cityfrom IN @mt_cityf[]
- AND spfli~cityto IN @mt_cityt[]
- AND spfli~distance < '3000'
- ORDER BY spfli~cityfrom.
- show( ).
- ENDMETHOD.
- ENDCLASS.
- *&---------------------------------------------------------------------*
- *& Include ZINTERN_ALVGRID_TASK_1_PAI
- *&---------------------------------------------------------------------*
- MODULE user_command_0100 INPUT.
- CASE ok_code.
- WHEN 'US_BTN1'.
- IF gv_var = '3'.
- lcl_grid_data=>hide_flights( ).
- ENDIF.
- WHEN 'CANCEL' OR 'BACK'.
- SET SCREEN 0.
- WHEN 'EXIT'.
- LEAVE PROGRAM.
- ENDCASE.
- ENDMODULE.
- *&---------------------------------------------------------------------*
- *& Report ZINTERN_ALVGRID_TASK_1_V_1
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- REPORT zintern_alvgrid_task_1_v_1.
- TABLES: alv_chck, spfli.
- TYPE-POOLS: abap.
- DATA:
- ok_code TYPE sy-ucomm,
- gv_var TYPE c.
- INCLUDE zintern_alvgrid_task_1_s01. " sel scr
- INCLUDE zintern_alvgrid_task_1_cd01. " class def
- INCLUDE zintern_alvgrid_task_1_pbo. " PBO
- INCLUDE zintern_alvgrid_task_1_pai. " PAI
- START-OF-SELECTION.
- LOOP AT SCREEN.
- CASE abap_true.
- WHEN p_rb_1.
- gv_var = '1'.
- WHEN p_rb_2.
- gv_var = '2'.
- WHEN p_rb_3.
- gv_var = '3'.
- ENDCASE.
- ENDLOOP.
- lcl_grid_data=>mt_var = gv_var.
- lcl_grid_data=>mt_id = so_id[].
- lcl_grid_data=>mt_cityf = so_cityf[].
- lcl_grid_data=>mt_cityt = so_cityt[].
- lcl_grid_data=>display( ).
- END-OF-SELECTION.
- CALL SCREEN 100.
- *&---------------------------------------------------------------------*
- *& Include ZINTERN_ALVGRID_TASK_1_S01
- *&---------------------------------------------------------------------*
- SELECTION-SCREEN BEGIN OF BLOCK block_1 WITH FRAME TITLE TEXT-001.
- SELECTION-SCREEN BEGIN OF BLOCK block_2 WITH FRAME TITLE TEXT-002.
- PARAMETERS: p_rb_1 TYPE c RADIOBUTTON GROUP rb_1 DEFAULT 'X' USER-COMMAND uc_rb,
- p_rb_2 TYPE c RADIOBUTTON GROUP rb_1,
- p_rb_3 TYPE c RADIOBUTTON GROUP rb_1.
- SELECTION-SCREEN END OF BLOCK block_2.
- SELECTION-SCREEN BEGIN OF BLOCK block_3 WITH FRAME TITLE TEXT-003.
- SELECT-OPTIONS: so_id FOR spfli-carrid NO INTERVALS.
- SELECT-OPTIONS: so_cityf FOR spfli-cityfrom NO INTERVALS.
- SELECT-OPTIONS: so_cityt FOR spfli-cityto NO INTERVALS.
- SELECTION-SCREEN END OF BLOCK block_3.
- SELECTION-SCREEN END OF BLOCK block_1.
- *&---------------------------------------------------------------------*
- *& Report ZINTERN_ALVGRID_TASK_1_V_1
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- REPORT zintern_alvgrid_task_1_v_1.
- TABLES: alv_chck, spfli.
- TYPE-POOLS: abap.
- DATA:
- ok_code TYPE sy-ucomm,
- gv_var TYPE c.
- INCLUDE zintern_alvgrid_task_1_s01. " sel scr
- INCLUDE zintern_alvgrid_task_1_cd01. " class def
- INCLUDE zintern_alvgrid_task_1_pbo. " PBO
- INCLUDE zintern_alvgrid_task_1_pai. " PAI
- START-OF-SELECTION.
- LOOP AT SCREEN.
- CASE abap_true.
- WHEN p_rb_1.
- gv_var = '1'.
- WHEN p_rb_2.
- gv_var = '2'.
- WHEN p_rb_3.
- gv_var = '3'.
- ENDCASE.
- ENDLOOP.
- lcl_grid_data=>mt_var = gv_var.
- lcl_grid_data=>mt_id = so_id[].
- lcl_grid_data=>mt_cityf = so_cityf[].
- lcl_grid_data=>mt_cityt = so_cityt[].
- lcl_grid_data=>display( ).
- END-OF-SELECTION.
- CALL SCREEN 100.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement