Guest User

Untitled

a guest
Oct 19th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 4.09 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Generates the ALV on the Selection Screen itself
  3. *&
  4. *&---------------------------------------------------------------------*
  5. REPORT  zalv_on_sel_screen.
  6. *
  7. TABLES sscrfields.
  8.  
  9. INCLUDE <icon>.
  10. *----------------------------------------------------------------------*
  11. *  Local class for report
  12. *----------------------------------------------------------------------*
  13. CLASS lcl_report DEFINITION.
  14. *
  15.   PUBLIC SECTION.
  16. *
  17.     DATA: t_data   TYPE STANDARD TABLE OF sflight,  " Output dat
  18.           r_carrid TYPE RANGE OF sflight-carrid.    " Select Option
  19. *
  20.     METHODS:
  21.       get_data,
  22. *
  23.       generate_output.
  24. *
  25. ENDCLASS.                    "lcl_report DEFINITION
  26. *
  27. DATA: lo_report TYPE REF TO lcl_report.
  28. *
  29. DATA: w_carrid TYPE sflight-carrid.
  30. DATA: hidden TYPE c VALUE ''.
  31.  
  32. SELECTION-SCREEN COMMENT /1(4) comm1 MODIF ID mg1.
  33.  
  34. SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE aaa.
  35.   SELECT-OPTIONS: s_carrid FOR w_carrid MODIF ID BL1.
  36. SELECTION-SCREEN: END   OF BLOCK blk1.
  37.  
  38. ** Initialization
  39. INITIALIZATION.
  40.   aaa = 'Selection Criteria'.
  41.   comm1 = icon_sum.
  42. * object for the report
  43.   CREATE OBJECT lo_report.
  44. * generate output
  45.   lo_report->generate_output( ).
  46. *
  47. AT SELECTION-SCREEN OUTPUT.
  48.   IF hidden IS INITIAL.
  49.       LOOP AT SCREEN.
  50.         IF SCREEN-GROUP1 = 'BL1'.
  51.           SCREEN-INVISIBLE = '1'.
  52.           SCREEN-INPUT = '0'.
  53.           MODIFY SCREEN.
  54.         ENDIF.
  55.       ENDLOOP.
  56.       hidden = 'X'.
  57.     ELSE.
  58.       LOOP AT SCREEN.
  59.         IF SCREEN-GROUP1 = 'BL1'.
  60.           SCREEN-INVISIBLE = '1'.
  61.           SCREEN-INPUT = '0'.
  62.           MODIFY SCREEN.
  63.         ENDIF.
  64.       ENDLOOP.
  65.       clear hidden.
  66.     ENDIF.
  67.  
  68. * Start of Selection
  69. START-OF-SELECTION.
  70. * Get data
  71.   lo_report->r_carrid = s_carrid[].
  72.   lo_report->get_data( ).
  73. *
  74. *----------------------------------------------------------------------*
  75. * Local Class Implementation
  76. *----------------------------------------------------------------------*
  77. CLASS lcl_report IMPLEMENTATION.
  78. *
  79.   METHOD get_data.
  80. *
  81. *   data selection
  82.     SELECT * FROM sflight
  83.            INTO  TABLE me->t_data
  84.            WHERE carrid IN s_carrid.
  85.     IF sy-dbcnt IS INITIAL.
  86.       MESSAGE s398(00) WITH 'No data selected'.
  87.     ENDIF.
  88. *
  89. *   export to memory
  90.     EXPORT data = me->t_data TO MEMORY ID sy-cprog.
  91. *
  92.   ENDMETHOD.                    "get_data
  93. *
  94.   METHOD generate_output.
  95. *
  96. *   local data
  97.     DATA: lo_dock TYPE REF TO cl_gui_docking_container,
  98.           lo_cont TYPE REF TO cl_gui_container,
  99.           lo_alv  TYPE REF TO cl_salv_table.
  100. *
  101. *   import output table from the memory and free afterwards
  102.     IMPORT data = me->t_data FROM MEMORY ID sy-cprog.
  103.     FREE MEMORY ID sy-cprog.
  104. *
  105. *   Only if there is some data
  106.     CHECK me->t_data IS NOT INITIAL.
  107. *
  108. *   Create a docking control at bottom
  109.     CHECK lo_dock IS INITIAL.
  110.     CREATE OBJECT lo_dock
  111.       EXPORTING
  112.         repid     = sy-cprog
  113.         dynnr     = sy-dynnr
  114.         ratio     = 90
  115.         side      = cl_gui_docking_container=>dock_at_bottom
  116.         name      = 'DOCK_CONT'.
  117.     IF sy-subrc <> 0.
  118.       MESSAGE 'Error in the Docking control' TYPE 'S'.
  119.     ENDIF.
  120. *
  121. *   Create a SALV for output
  122.     CHECK lo_alv IS INITIAL.
  123.     TRY.
  124. *       Narrow Casting: To initialize custom container from
  125. *       docking container
  126.         lo_cont ?= lo_dock.
  127. *
  128. *       SALV Table Display on the Docking container
  129.         CALL METHOD cl_salv_table=>factory
  130.           EXPORTING
  131.             list_display   = abap_false
  132.             r_container    = lo_dock
  133.             container_name = 'DOCK_CONT'
  134.           IMPORTING
  135.             r_salv_table   = lo_alv
  136.           CHANGING
  137.             t_table        = me->t_data.
  138.       CATCH cx_salv_msg .
  139.     ENDTRY.
  140. *
  141. *   Pf status
  142.     DATA: lo_functions TYPE REF TO cl_salv_functions_list.
  143.     lo_functions = lo_alv->get_functions( ).
  144.     lo_functions->set_all( abap_true ).
  145. *
  146. *   output display
  147.     lo_alv->display( ).
  148. *
  149.   ENDMETHOD.                    "generate_output
  150. *
  151. ENDCLASS.                    "lcl_report IMPLEMENTATION
Add Comment
Please, Sign In to add comment