This program demonstrates how to create TOP OF PAGE for an ALV grid displayed through CL_GUI_ALV_GRID. One interesting fact which may be considered here is that the splitter TOP-OF-PAGE is not called while printing or background spool and the TOP-OF-PAGE printed in the spool cannot be displayed in the foreground.
The TOP-OF-PAGE displayed in foreground (this TOP-OF-PAGE won't be printed):
Choose the list output:
The list output(this top-of-page will be printed):
The code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295
|
REPORT z_sourav_alv_top_of_page.
CLASS cl_main DEFINITION. PUBLIC SECTION. METHODS: constructor, get_data, populate_fc_layout, top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid IMPORTING e_dyndoc_id table_index, print_top_of_page FOR EVENT print_top_of_page OF cl_gui_alv_grid IMPORTING table_index, display. PROTECTED SECTION. PRIVATE SECTION. TYPE-POOLS:sdydo. DATA:i_sbook TYPE STANDARD TABLE OF sbook INITIAL SIZE 0. DATA:oref_splitter TYPE REF TO cl_gui_splitter_container, oref_container TYPE REF TO cl_gui_custom_container, oref_alv TYPE REF TO cl_gui_alv_grid, container1 TYPE REF TO cl_gui_container, container2 TYPE REF TO cl_gui_container, oref_doc TYPE REF TO cl_dd_document, oref_html TYPE REF TO cl_gui_html_viewer, wa_layout TYPE lvc_s_layo, i_fieldcatalog TYPE lvc_t_fcat. ENDCLASS.
CLASS cl_main IMPLEMENTATION. METHOD constructor. CREATE OBJECT oref_container EXPORTING container_name = 'CONTAINER' repid = 'Z_SOURAV_ALV_TOP_OF_PAGE' dynnr = '0100' EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5 OTHERS = 6. IF sy-subrc <> 0.
ENDIF. CREATE OBJECT oref_splitter EXPORTING parent = oref_container rows = 2 columns = 1 EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. IF sy-subrc <> 0.
ENDIF. CALL METHOD oref_splitter->get_container EXPORTING row = 1 column = 1 RECEIVING container = container1. CALL METHOD oref_splitter->set_row_height EXPORTING id = 1 height = 20 EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. IF sy-subrc <> 0.
ENDIF. CALL METHOD oref_splitter->get_container EXPORTING row = 2 column = 1 RECEIVING container = container2. CREATE OBJECT oref_doc EXPORTING style = 'ALV_GRID'. CREATE OBJECT oref_alv EXPORTING i_parent = container2 EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 OTHERS = 5. IF sy-subrc <> 0.
ENDIF. ENDMETHOD. METHOD get_data. SELECT IF sy-subrc <> 0. ENDIF. ENDMETHOD. METHOD populate_fc_layout. CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING i_structure_name = 'SBOOK' i_client_never_display = 'X' i_internal_tabname = 'I_SBOOK' CHANGING ct_fieldcat = i_fieldcatalog EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3. IF sy-subrc <> 0.
ENDIF. wa_layout-cwidth_opt = 'X'. ENDMETHOD. METHOD top_of_page. DATA: text TYPE sdydo_text_element, background_id TYPE sdydo_key VALUE 'ALV_BACKGROUND'. text = 'Top of Page'. CALL METHOD oref_doc->add_text EXPORTING text = text sap_color = cl_dd_document=>list_positive sap_fontsize = cl_dd_document=>large. oref_doc->new_line( ). text = 'Line1'. CALL METHOD oref_doc->add_text EXPORTING text = text. CREATE OBJECT oref_html EXPORTING parent = container1 EXCEPTIONS cntl_error = 1 cntl_install_error = 2 dp_install_error = 3 dp_error = 4 OTHERS = 5. IF sy-subrc <> 0.
ENDIF. oref_doc->html_control = oref_html. CALL FUNCTION 'REUSE_ALV_GRID_COMMENTARY_SET' EXPORTING document = oref_doc bottom = space. CALL METHOD oref_doc->merge_document. CALL METHOD oref_doc->set_document_background EXPORTING picture_id = background_id. CALL METHOD oref_doc->display_document EXPORTING reuse_control = 'X' parent = container1 EXCEPTIONS html_display_error = 1 OTHERS = 2. IF sy-subrc <> 0.
ENDIF. ENDMETHOD. METHOD display. SET HANDLER me->top_of_page FOR oref_alv. SET HANDLER me->print_top_of_page FOR oref_alv. CALL METHOD oref_alv->set_table_for_first_display EXPORTING is_layout = wa_layout CHANGING it_outtab = i_sbook it_fieldcatalog = i_fieldcatalog EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0.
ENDIF. CALL METHOD oref_doc->initialize_document . CALL METHOD oref_alv->list_processing_events EXPORTING i_event_name = 'TOP_OF_PAGE' i_dyndoc_id = oref_doc. CALL SCREEN 0100. ENDMETHOD. METHOD print_top_of_page. WRITE:/5 'Print top of page' COLOR 5 INTENSIFIED OFF. WRITE:/5 'Line1'. ENDMETHOD. ENDCLASS. DATA: oref_main TYPE REF TO cl_main. DATA:ok_code TYPE syucomm. START-OF-SELECTION. CREATE OBJECT oref_main. oref_main->get_data( ). oref_main->populate_fc_layout( ). END-OF-SELECTION. oref_main->display( ).
MODULE status_0100 OUTPUT. SET PF-STATUS '0100'.
ENDMODULE.
MODULE user_command_0100 INPUT. CASE ok_code. WHEN 'BACK'. SET SCREEN 00. LEAVE SCREEN. ENDCASE. ENDMODULE.
|
In the traffic Signal, you have overlooked the condition that there may be a possible division by zero that may result in a runtime error.
ReplyDelete