Advertisement
n0throw

ABAP Shit

Apr 16th, 2022
3,452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 11.26 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Include          ZINTERN_ALVGRID_TASK_1_CD01
  3. *&---------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *& Include          Z_LCL_GRID_DISPLAY
  6. *&---------------------------------------------------------------------*
  7. *&---------------------------------------------------------------------*
  8. *& Class lcl_grid_display
  9. *&---------------------------------------------------------------------*
  10. *&
  11. *&---------------------------------------------------------------------*
  12. CLASS:
  13.   lcl_button_handle_e DEFINITION DEFERRED,
  14.   lcl_grid_data DEFINITION DEFERRED.
  15.  
  16. CLASS lcl_button_handle_e DEFINITION.
  17.   PUBLIC SECTION.
  18.     METHODS: create_button
  19.                 FOR EVENT toolbar OF cl_gui_alv_grid
  20.                 IMPORTING e_object e_interactive,
  21.              click_button
  22.                 FOR EVENT user_command OF cl_gui_alv_grid
  23.                 IMPORTING e_ucomm.
  24.   PRIVATE SECTION.
  25.     CLASS-DATA:
  26.       state TYPE c.
  27. ENDCLASS.
  28.  
  29. CLASS lcl_grid_data DEFINITION.
  30.   PUBLIC SECTION.
  31.     TYPES:
  32.       mty_id    TYPE RANGE OF spfli-carrid,
  33.       mty_cityf TYPE RANGE OF spfli-cityfrom,
  34.       mty_cityt TYPE RANGE OF spfli-cityto.
  35.  
  36.     CLASS-DATA:
  37.       mt_alv   TYPE STANDARD TABLE OF zty_alv_table,
  38.       mt_id    TYPE mty_id,
  39.       mt_cityf TYPE mty_cityf,
  40.       mt_cityt TYPE mty_cityt,
  41.       mt_var   TYPE c.
  42.  
  43.     CLASS-METHODS:
  44.       show,
  45.       display,
  46.       hide_flights,
  47.       select_1,
  48.       select_2,
  49.       select_3.
  50.  
  51.   PRIVATE SECTION.
  52.     CLASS-DATA:
  53.       ms_layout   TYPE lvc_s_layo,
  54.       mo_cont     TYPE REF TO cl_gui_custom_container,
  55.       mo_grid     TYPE REF TO cl_gui_alv_grid,
  56.       mt_fieldcat TYPE lvc_t_fcat,
  57.       ms_color    TYPE  lvc_s_scol,
  58.       mo_button   TYPE REF TO lcl_button_handle_e.
  59. ENDCLASS.
  60.  
  61. CLASS lcl_button_handle_e IMPLEMENTATION.
  62.   METHOD create_button.
  63.     state = 'H'.
  64.     DATA: my_tool TYPE REF TO cl_alv_event_toolbar_set.
  65.  
  66.     DATA: ls_toolbar  TYPE stb_button.
  67.     MOVE 'HIDE_SHOW' TO ls_toolbar-function.
  68.     MOVE 'Скрыть/показать расстояния больше 3к км.'(112) TO ls_toolbar-text.
  69.  
  70.     APPEND ls_toolbar TO e_object->mt_toolbar.
  71.   ENDMETHOD.
  72.  
  73.   METHOD click_button.
  74.     CASE state.
  75.       WHEN 'H'.
  76.         lcl_grid_data=>hide_flights( ).
  77.         state = 'S'.
  78.       WHEN 'S'.
  79.         lcl_grid_data=>select_3( ).
  80.         lcl_grid_data=>show( ).
  81.         state = 'H'.
  82.     ENDCASE.
  83.   ENDMETHOD.
  84. ENDCLASS.
  85.  
  86. CLASS lcl_grid_data IMPLEMENTATION.
  87.   METHOD display.
  88.     CASE mt_var.
  89.       WHEN '1'.
  90.         select_1( ).
  91.       WHEN '2'.
  92.         select_2( ).
  93.       WHEN '3'.
  94.         select_3( ).
  95.     ENDCASE.
  96.     show( ).
  97.   ENDMETHOD.
  98.  
  99.   METHOD show.
  100.     CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  101.       EXPORTING
  102.         i_structure_name = 'ZTY_ALV_TABLE'
  103.       CHANGING
  104.         ct_fieldcat      = mt_fieldcat.
  105.  
  106.     LOOP AT mt_fieldcat ASSIGNING FIELD-SYMBOL(<ls_fcat>).
  107.       <ls_fcat>-no_out = abap_true.
  108.       IF <ls_fcat>-fieldname = 'CONNID'.
  109.         <ls_fcat>-no_out = abap_false.
  110.         IF mt_var = '2'.
  111.           <ls_fcat>-fix_column = 'X'.
  112.           <ls_fcat>-col_pos = 0.
  113.         ENDIF.
  114.       ENDIF.
  115.       IF <ls_fcat>-fieldname = 'CARRNAME'.
  116.         <ls_fcat>-no_out = abap_false.
  117.         IF mt_var = '2'.
  118.           <ls_fcat>-fix_column = 'X'.
  119.           <ls_fcat>-col_pos = 1.
  120.         ENDIF.
  121.       ENDIF.
  122.       IF ( <ls_fcat>-fieldname = 'CARRID'
  123.           OR <ls_fcat>-fieldname = 'CITYFROM'
  124.           OR <ls_fcat>-fieldname = 'AIRPFROM'
  125.           OR <ls_fcat>-fieldname = 'CITYTO'
  126.           OR <ls_fcat>-fieldname = 'AIRPTO'
  127.           OR <ls_fcat>-fieldname = 'FLTIME'
  128.           OR <ls_fcat>-fieldname = 'DEPTIME'
  129.           OR <ls_fcat>-fieldname = 'ARRTIME'
  130.           OR <ls_fcat>-fieldname = 'DISTANCE'
  131.         ).
  132.         <ls_fcat>-no_out = abap_false.
  133.       ENDIF.
  134.       IF ( <ls_fcat>-fieldname = 'CHECKBOX'
  135.         AND mt_var = '2'
  136.         ).
  137.         <ls_fcat>-checkbox = 'X'.
  138.         <ls_fcat>-no_out = abap_false.
  139.       ENDIF.
  140.     ENDLOOP.
  141.  
  142.     IF mo_cont IS BOUND.
  143.       mo_grid->refresh_table_display( ).
  144.     ELSE.
  145.       CREATE OBJECT mo_cont
  146.         EXPORTING
  147.           container_name = 'CONT_100'.
  148.  
  149.       CREATE OBJECT mo_button.
  150.  
  151.       CREATE OBJECT mo_grid
  152.         EXPORTING
  153.           i_parent = mo_cont.
  154.  
  155.       SET HANDLER mo_button->create_button FOR mo_grid.
  156.       SET HANDLER mo_button->click_button FOR mo_grid.
  157.  
  158.       ms_layout-zebra = abap_true.
  159.       ms_layout-ctab_fname = 'CELLCOLOR'.
  160.  
  161.       mo_grid->set_table_for_first_display(
  162.         EXPORTING
  163.           is_layout        = ms_layout
  164.         CHANGING
  165.           it_fieldcatalog = mt_fieldcat
  166.           it_outtab = mt_alv ).
  167.     ENDIF.
  168.   ENDMETHOD.
  169.  
  170.   METHOD select_1.
  171.     SELECT spfli~carrid,
  172.       spfli~connid,
  173.       spfli~cityfrom,
  174.       spfli~airpfrom,
  175.       spfli~cityto,
  176.       spfli~airpto,
  177.       spfli~fltime,
  178.       spfli~deptime,
  179.       spfli~arrtime,
  180.       spfli~distance,
  181.       scarr~carrname
  182.       FROM scarr
  183.       LEFT JOIN spfli ON
  184.         spfli~carrid = scarr~carrid
  185.       INTO CORRESPONDING FIELDS OF TABLE @mt_alv
  186.         WHERE spfli~carrid IN @mt_id[]
  187.           AND spfli~cityfrom IN @mt_cityf[]
  188.           AND spfli~cityto IN @mt_cityt[]
  189.       ORDER BY scarr~carrname.
  190.  
  191.     LOOP AT mt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>).
  192.       IF <ls_alv>-distance > 3000.
  193.         ms_color-fname = 'DISTANCE'.
  194.         ms_color-color-col = 6.
  195.         ms_color-color-int = 0.
  196.         ms_color-color-inv = 0.
  197.         APPEND ms_color TO <ls_alv>-cellcolor.
  198.       ENDIF.
  199.     ENDLOOP.
  200.  
  201.  
  202.  
  203. *    LOOP AT mt_alv REFERENCE INTO DATA(lr_alv).
  204. *      IF ( lr_alv->distance > '3000' ).
  205. *        ms_color-fname = 'DISTANCE'.
  206. *        ms_color-color-col = 6.
  207. *        ms_color-color-int = 0.
  208. *        ms_color-color-inv = 0.
  209. *        APPEND ms_color TO lr_alv-cellcolor.
  210. *      ENDIF.
  211. *    ENDLOOP.
  212.   ENDMETHOD.
  213.  
  214.   METHOD select_2.
  215.     SELECT spfli~carrid,
  216.       spfli~connid,
  217.       spfli~cityfrom,
  218.       spfli~airpfrom,
  219.       spfli~cityto,
  220.       spfli~airpto,
  221.       spfli~fltime,
  222.       spfli~deptime,
  223.       spfli~arrtime,
  224.       spfli~distance,
  225.       scarr~carrname
  226.       FROM scarr
  227.       LEFT JOIN spfli ON
  228.         spfli~carrid = scarr~carrid
  229.       INTO CORRESPONDING FIELDS OF TABLE @mt_alv
  230.         WHERE spfli~carrid IN @mt_id[]
  231.           AND spfli~cityfrom IN @mt_cityf[]
  232.           AND spfli~cityto IN @mt_cityt[]
  233.       ORDER BY scarr~carrname.
  234.  
  235.     LOOP AT mt_alv REFERENCE INTO DATA(lr_alv).
  236.       IF ( lr_alv->distance > '3000' ).
  237.         lr_alv->checkbox = 'X'.
  238.       ENDIF.
  239.     ENDLOOP.
  240.   ENDMETHOD.
  241.  
  242.   METHOD select_3.
  243.     SELECT spfli~carrid,
  244.       spfli~connid,
  245.       spfli~cityfrom,
  246.       spfli~airpfrom,
  247.       spfli~cityto,
  248.       spfli~airpto,
  249.       spfli~fltime,
  250.       spfli~deptime,
  251.       spfli~arrtime,
  252.       spfli~distance,
  253.       scarr~carrname
  254.       FROM scarr
  255.       LEFT JOIN spfli ON
  256.         spfli~carrid = scarr~carrid
  257.       INTO CORRESPONDING FIELDS OF TABLE @mt_alv
  258.         WHERE spfli~carrid IN @mt_id[]
  259.           AND spfli~cityfrom IN @mt_cityf[]
  260.           AND spfli~cityto IN @mt_cityt[]
  261.       ORDER BY spfli~cityfrom.
  262.   ENDMETHOD.
  263.  
  264.   METHOD hide_flights.
  265.     SELECT spfli~carrid,
  266.       spfli~connid,
  267.       spfli~cityfrom,
  268.       spfli~airpfrom,
  269.       spfli~cityto,
  270.       spfli~airpto,
  271.       spfli~fltime,
  272.       spfli~deptime,
  273.       spfli~arrtime,
  274.       spfli~distance,
  275.       scarr~carrname
  276.       FROM scarr
  277.       LEFT JOIN spfli ON
  278.         spfli~carrid = scarr~carrid
  279.       INTO CORRESPONDING FIELDS OF TABLE @mt_alv
  280.         WHERE spfli~carrid IN @mt_id[]
  281.           AND spfli~cityfrom IN @mt_cityf[]
  282.           AND spfli~cityto IN @mt_cityt[]
  283.           AND spfli~distance < '3000'
  284.       ORDER BY spfli~cityfrom.
  285.  
  286.     show( ).
  287.   ENDMETHOD.
  288. ENDCLASS.
  289.  
  290. *&---------------------------------------------------------------------*
  291. *& Include          ZINTERN_ALVGRID_TASK_1_PAI
  292. *&---------------------------------------------------------------------*
  293. MODULE user_command_0100 INPUT.
  294.   CASE ok_code.
  295.     WHEN 'US_BTN1'.
  296.       IF gv_var = '3'.
  297.         lcl_grid_data=>hide_flights( ).
  298.       ENDIF.
  299.     WHEN 'CANCEL' OR 'BACK'.
  300.       SET SCREEN 0.
  301.     WHEN 'EXIT'.
  302.       LEAVE PROGRAM.
  303.   ENDCASE.
  304. ENDMODULE.
  305.  
  306. *&---------------------------------------------------------------------*
  307. *& Report ZINTERN_ALVGRID_TASK_1_V_1
  308. *&---------------------------------------------------------------------*
  309. *&
  310. *&---------------------------------------------------------------------*
  311. REPORT zintern_alvgrid_task_1_v_1.
  312.  
  313. TABLES: alv_chck, spfli.
  314.  
  315. TYPE-POOLS: abap.
  316.  
  317. DATA:
  318.   ok_code TYPE sy-ucomm,
  319.   gv_var  TYPE c.
  320.  
  321. INCLUDE zintern_alvgrid_task_1_s01.   " sel scr
  322. INCLUDE zintern_alvgrid_task_1_cd01.  " class def
  323. INCLUDE zintern_alvgrid_task_1_pbo.   " PBO
  324. INCLUDE zintern_alvgrid_task_1_pai.   " PAI
  325.  
  326. START-OF-SELECTION.
  327.   LOOP AT SCREEN.
  328.     CASE abap_true.
  329.       WHEN p_rb_1.
  330.         gv_var = '1'.
  331.       WHEN p_rb_2.
  332.         gv_var = '2'.
  333.       WHEN p_rb_3.
  334.         gv_var = '3'.
  335.     ENDCASE.
  336.   ENDLOOP.
  337.  
  338.   lcl_grid_data=>mt_var = gv_var.
  339.   lcl_grid_data=>mt_id = so_id[].
  340.   lcl_grid_data=>mt_cityf = so_cityf[].
  341.   lcl_grid_data=>mt_cityt = so_cityt[].
  342.  
  343.   lcl_grid_data=>display( ).
  344.  
  345. END-OF-SELECTION.
  346.   CALL SCREEN 100.
  347.  
  348.   *&---------------------------------------------------------------------*
  349. *& Include          ZINTERN_ALVGRID_TASK_1_S01
  350. *&---------------------------------------------------------------------*
  351. SELECTION-SCREEN BEGIN OF BLOCK block_1 WITH FRAME TITLE TEXT-001.
  352.   SELECTION-SCREEN BEGIN OF BLOCK block_2 WITH FRAME TITLE TEXT-002.
  353.     PARAMETERS: p_rb_1 TYPE c RADIOBUTTON GROUP rb_1 DEFAULT 'X' USER-COMMAND uc_rb,
  354.                 p_rb_2 TYPE c RADIOBUTTON GROUP rb_1,
  355.                 p_rb_3 TYPE c RADIOBUTTON GROUP rb_1.
  356.   SELECTION-SCREEN END OF BLOCK block_2.
  357.  
  358.   SELECTION-SCREEN BEGIN OF BLOCK block_3 WITH FRAME TITLE TEXT-003.
  359.     SELECT-OPTIONS: so_id     FOR spfli-carrid    NO INTERVALS.
  360.     SELECT-OPTIONS: so_cityf  FOR spfli-cityfrom  NO INTERVALS.
  361.     SELECT-OPTIONS: so_cityt  FOR spfli-cityto    NO INTERVALS.
  362.   SELECTION-SCREEN END OF BLOCK block_3.
  363. SELECTION-SCREEN END OF BLOCK block_1.
  364.  
  365. *&---------------------------------------------------------------------*
  366. *& Report ZINTERN_ALVGRID_TASK_1_V_1
  367. *&---------------------------------------------------------------------*
  368. *&
  369. *&---------------------------------------------------------------------*
  370. REPORT zintern_alvgrid_task_1_v_1.
  371.  
  372. TABLES: alv_chck, spfli.
  373.  
  374. TYPE-POOLS: abap.
  375.  
  376. DATA:
  377.   ok_code TYPE sy-ucomm,
  378.   gv_var  TYPE c.
  379.  
  380. INCLUDE zintern_alvgrid_task_1_s01.   " sel scr
  381. INCLUDE zintern_alvgrid_task_1_cd01.  " class def
  382. INCLUDE zintern_alvgrid_task_1_pbo.   " PBO
  383. INCLUDE zintern_alvgrid_task_1_pai.   " PAI
  384.  
  385. START-OF-SELECTION.
  386.   LOOP AT SCREEN.
  387.     CASE abap_true.
  388.       WHEN p_rb_1.
  389.         gv_var = '1'.
  390.       WHEN p_rb_2.
  391.         gv_var = '2'.
  392.       WHEN p_rb_3.
  393.         gv_var = '3'.
  394.     ENDCASE.
  395.   ENDLOOP.
  396.  
  397.   lcl_grid_data=>mt_var = gv_var.
  398.   lcl_grid_data=>mt_id = so_id[].
  399.   lcl_grid_data=>mt_cityf = so_cityf[].
  400.   lcl_grid_data=>mt_cityt = so_cityt[].
  401.  
  402.   lcl_grid_data=>display( ).
  403.  
  404. END-OF-SELECTION.
  405.   CALL SCREEN 100.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement