This code demonstrates how to display fields in ALV as a button.

on clicking a button..

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
|
REPORT z_sb_column_as_pushbutton. TYPE-POOLS:cntl,icon. TYPES: BEGIN OF x_final, carrid TYPE s_carr_id, carrname TYPE s_carrname, END OF x_final. DATA: i_final TYPE STANDARD TABLE OF x_final INITIAL SIZE 0, i_fieldcat TYPE lvc_t_fcat, wa_layout TYPE lvc_s_layo, ok_code TYPE syucomm, oref_alv TYPE REF TO cl_gui_alv_grid. field-symbols: <f1> type any.
CLASS lcl_event_handlers DEFINITION. PUBLIC SECTION. METHODS:handle_button_click FOR EVENT button_click OF cl_gui_alv_grid IMPORTING es_col_id es_row_no. ENDCLASS.
CLASS lcl_event_handlers IMPLEMENTATION. METHOD handle_button_click. DATA l_row TYPE c LENGTH 10. l_row = es_row_no-row_id. MESSAGE i001(00) WITH 'You have clicked on column :' ES_COL_ID-FIELDNAME ',row:' l_row. ENDMETHOD. ENDCLASS. START-OF-SELECTION. PERFORM get_data. END-OF-SELECTION. PERFORM build_field_catalog USING: 'CARRID' 'CARRID' 'SCARR', 'CARRNAME' 'CARRNAME' 'SCARR'. PERFORM populate_layout. PERFORM display_alv.
FORM get_data . SELECT carrid carrname FROM scarr INTO TABLE i_final UP TO 200 ROWS. IF sy-subrc NE 0. MESSAGE i001(00) WITH 'No data found'. LEAVE LIST-PROCESSING. ENDIF. ENDFORM.
FORM build_field_catalog USING p_fieldname TYPE lvc_fname p_ref_field TYPE lvc_rfname p_ref_tab TYPE lvc_rtname. DATA:l_fieldcat TYPE lvc_s_fcat. l_fieldcat-fieldname = p_fieldname. l_fieldcat-tabname = 'I_FINAL'. l_fieldcat-ref_field = p_ref_field. l_fieldcat-ref_table = p_ref_tab. IF p_fieldname = 'CARRID'. l_fieldcat-style = cl_gui_alv_grid=>mc_style_button. ENDIF. APPEND l_fieldcat TO i_fieldcat. ENDFORM.
FORM populate_layout. wa_layout-zebra = 'X'. ENDFORM.
FORM display_alv. DATA: l_repid TYPE syrepid VALUE sy-repid, oref_handlers TYPE REF TO lcl_event_handlers. DATA l_wa_event TYPE cntl_simple_event. IF oref_alv IS NOT BOUND. CREATE OBJECT oref_alv EXPORTING
i_parent = cl_gui_container=>screen0
EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 OTHERS = 5 . IF sy-subrc = 0. CREATE OBJECT oref_handlers. SET HANDLER oref_handlers->handle_button_click FOR oref_alv. CALL METHOD oref_alv->set_table_for_first_display EXPORTING
is_layout = wa_layout
CHANGING it_outtab = i_final it_fieldcatalog = i_fieldcat
EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4 . IF sy-subrc <> 0. MESSAGE e001(00) WITH 'Error while ALV display'. ENDIF. ENDIF. ENDIF. CALL SCREEN 0100. ENDFORM.
MODULE status_0100 OUTPUT. SET PF-STATUS '0100'. SET TITLEBAR '0100'. ENDMODULE.
MODULE user_command_0100 INPUT. CASE ok_code. WHEN 'BACK'. CLEAR ok_code. SET SCREEN 00. LEAVE SCREEN. ENDCASE. ENDMODULE.
|
No comments:
Post a Comment