Hi Gurus,
I have developed a OOABAP report which contain a dropdown fields with 3 values A,B and C. So when A get selected and press enter then few fields will get enabled and when B is selected then some other combination of fields should get enabled.
My issue is when i am selecting A or B or C for first time it is working fine and the required fields are getting enabled, but it is not working when i am selecting second time any other values(A or B or C) after that. I have tried using refresh_table_display method also but is not working.
Please help in fixing this issue. Please find the attached below.
REPORT zsd_maintain_mfn. TABLES: zsd_mfn, abap, icon. DATA : lt_mfn TYPE STANDARD TABLE OF zsd_mfn, ls_mfn TYPE zsd_mfn. TYPES: BEGIN OF ty_alv_out, priority TYPE zsd_mfn-priority, kunag TYPE zsd_mfn-kunag, kunwe TYPE zsd_mfn-kunwe, ecust TYPE zsd_mfn-ecust, name1 TYPE zsd_mfn-name1, mpn TYPE zsd_mfn-mpn, mfn TYPE zsd_mfn-mfn, drop_down_handle TYPE int4, celltab TYPE lvc_t_styl, color_line(4), END OF ty_alv_out. *DATA gt_alv_out TYPE TABLE OF ty_alv_out. DATA:BEGIN OF gt_alv_out OCCURS 0, priority TYPE zsd_mfn-priority, kunag TYPE zsd_mfn-kunag, kunwe TYPE zsd_mfn-kunwe, ecust TYPE zsd_mfn-ecust, name1 TYPE zsd_mfn-name1, mpn TYPE zsd_mfn-mpn, mfn TYPE zsd_mfn-mfn, drop_down_handle TYPE int4, celltab TYPE lvc_t_styl, color_line(4), END OF gt_alv_out. DATA:gs_alv_out LIKE LINE OF gt_alv_out. DATA g_grid TYPE REF TO cl_gui_alv_grid. "alv grid DATA gt_fieldcat TYPE lvc_t_fcat. "fieldcatalog DATA gs_layout TYPE lvc_s_layo. "layout DATA ok_code LIKE sy-ucomm. "ok code DATA g_splitter TYPE REF TO cl_gui_splitter_container. "splitter DATA g_contnr_top TYPE REF TO cl_gui_container. "container - top DATA g_contnr_bot TYPE REF TO cl_gui_container. "container - bottom DATA g_html TYPE REF TO cl_dd_document. "html for alv commentary DATA gv_header TYPE sdydo_text_element. "alv header DATA gt_exclude TYPE ui_functions. "alv toolbar buttons DATA gv_mode TYPE string. DATA gv_error TYPE boolean. DATA gt_mfn_del TYPE TABLE OF zsd_mfn. DATA gs_mfn TYPE zsd_mfn. DATA:lx_fieldcat LIKE LINE OF gt_fieldcat. DATA lv_priority TYPE zpriority. DATA gt_changed_rows TYPE TABLE OF int4. DATA gs_stable TYPE lvc_s_stbl. *----------------------------------------------------------------------* * CLASS lcl_events DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_events DEFINITION. PUBLIC SECTION. * Method to implement user commands METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm. * Add new functional buttons to the ALV toolbar METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive. METHODS handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING er_data_changed. ENDCLASS. "lcl_events DEFINITION *---------------------------------------------------------------------* * MAIN * *---------------------------------------------------------------------* CALL SCREEN 100. *----------------------------------------------------------------------* * CLASS lcl_events IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_events IMPLEMENTATION. METHOD handle_user_command. PERFORM handle_user_command USING e_ucomm. ENDMETHOD. "handle_user_command METHOD handle_toolbar. AUTHORITY-CHECK OBJECT 'ZMFN' ID 'ACTVT' FIELD '02'. IF sy-subrc EQ 0. PERFORM handle_toolbar USING e_object e_interactive . ENDIF. ENDMETHOD . "handle_toolbar METHOD handle_data_changed. IF er_data_changed IS NOT INITIAL. PERFORM handle_data_changed USING er_data_changed. ENDIF. ENDMETHOD. "handle_data_changed ENDCLASS. "lcl_events IMPLEMENTATION *&---------------------------------------------------------------------* *& Form handle_user_command *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->I_UCOMM text *----------------------------------------------------------------------* FORM handle_user_command USING i_ucomm TYPE syucomm. DATA lt_index_rows TYPE lvc_t_row. DATA lt_row_no TYPE lvc_t_roid. DATA ls_row_no TYPE lvc_s_roid. DATA lv_row_count TYPE i. DATA ls_alv_out TYPE ty_alv_out. DATA lt_alv_copy TYPE TABLE OF ty_alv_out. DATA lv_valid(1). DATA lv_answer(1). DATA ls_row_info TYPE lvc_s_row. DATA ls_col_info TYPE lvc_s_col. DATA ls_row_id TYPE lvc_s_roid. DATA lv_lines TYPE i. g_grid->check_changed_data( IMPORTING e_valid = lv_valid ). g_grid->get_scroll_info_via_id( IMPORTING es_row_info = ls_row_info es_col_info = ls_col_info es_row_no = ls_row_id ). CASE i_ucomm . WHEN 'EDIT'. g_grid->refresh_table_display( ). IF g_grid->is_ready_for_input( ) EQ 0. CALL METHOD g_grid->set_ready_for_input EXPORTING i_ready_for_input = 1. ELSE. IF g_grid->is_ready_for_input( ) EQ 1. CALL METHOD g_grid->set_ready_for_input EXPORTING i_ready_for_input = 0. ENDIF. ENDIF. WHEN 'ADD'. g_grid->refresh_table_display( ). ls_alv_out-drop_down_handle = 1. DESCRIBE TABLE gt_alv_out LINES lv_lines. ls_row_id-row_id = lv_lines. APPEND ls_alv_out TO gt_alv_out. CLEAR ls_alv_out. WHEN 'DEL'. g_grid->get_selected_rows( IMPORTING et_index_rows = lt_index_rows et_row_no = lt_row_no ). IF lt_row_no[] IS NOT INITIAL. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING text_question = text-020 IMPORTING answer = lv_answer EXCEPTIONS text_not_found = 1 OTHERS = 2. IF lv_answer <> '1'. LEAVE LIST-PROCESSING. ELSEIF lv_answer = '1'. LOOP AT lt_row_no INTO ls_row_no. READ TABLE gt_alv_out INTO ls_alv_out INDEX ls_row_no-row_id. IF sy-subrc EQ 0. MOVE-CORRESPONDING ls_alv_out TO gs_mfn. APPEND gs_mfn TO gt_mfn_del. CLEAR ls_alv_out. ENDIF. ENDLOOP. * now delete the records LOOP AT gt_mfn_del INTO gs_mfn. DELETE gt_alv_out WHERE ecust = gs_mfn-ecust AND name1 = gs_mfn-name1 AND mpn = gs_mfn-mpn AND mfn = gs_mfn-mfn. ENDLOOP. g_grid->refresh_table_display( ). ENDIF. ENDIF. WHEN 'COPY'. g_grid->get_selected_rows( IMPORTING et_index_rows = lt_index_rows et_row_no = lt_row_no ). IF lt_row_no[] IS NOT INITIAL. LOOP AT lt_row_no INTO ls_row_no. READ TABLE gt_alv_out INTO ls_alv_out INDEX ls_row_no-row_id. IF sy-subrc EQ 0. APPEND ls_alv_out TO lt_alv_copy. CLEAR ls_alv_out. ENDIF. ENDLOOP. DESCRIBE TABLE gt_alv_out LINES lv_lines. ls_row_id-row_id = lv_lines. LOOP AT lt_alv_copy INTO ls_alv_out. CLEAR ls_alv_out-celltab. APPEND ls_alv_out TO gt_alv_out. CLEAR ls_alv_out. ENDLOOP. CLEAR lt_alv_copy[]. g_grid->refresh_table_display( ). ENDIF. WHEN 'REPL'. g_grid->get_selected_rows( IMPORTING et_index_rows = lt_index_rows et_row_no = lt_row_no ). IF lt_row_no[] IS NOT INITIAL. LOOP AT lt_row_no INTO ls_row_no. READ TABLE gt_alv_out INTO ls_alv_out INDEX ls_row_no-row_id. IF sy-subrc EQ 0. DELETE gt_alv_out INDEX sy-tabix. APPEND ls_alv_out TO lt_alv_copy. MOVE-CORRESPONDING ls_alv_out TO gs_mfn. APPEND gs_mfn TO gt_mfn_del. CLEAR ls_alv_out. ENDIF. ENDLOOP. DESCRIBE TABLE gt_alv_out LINES lv_lines. ls_row_id-row_id = lv_lines. LOOP AT lt_alv_copy INTO ls_alv_out. CLEAR ls_alv_out-celltab. APPEND ls_alv_out TO gt_alv_out. CLEAR ls_alv_out. ENDLOOP. CLEAR lt_alv_copy[]. g_grid->refresh_table_display( ). ENDIF. WHEN 'SAVE'. PERFORM update_data. ENDCASE. g_grid->refresh_table_display( ). g_grid->set_scroll_info_via_id( EXPORTING is_col_info = ls_col_info is_row_no = ls_row_id ). ENDFORM. "handle_user_command *&---------------------------------------------------------------------* *& Form handle_toolbar *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PR_DATA_CHANGED text *----------------------------------------------------------------------* FORM handle_toolbar USING i_object TYPE REF TO cl_alv_event_toolbar_set i_interactive. DATA: ls_toolbar TYPE stb_button. DEFINE build_toolbar. move &1 to ls_toolbar-function. move &2 to ls_toolbar-icon. move &3 to ls_toolbar-text. move 0 to ls_toolbar-butn_type. append ls_toolbar to i_object->mt_toolbar. clear ls_toolbar. END-OF-DEFINITION. build_toolbar: 'EDIT' icon_change ''. IF g_grid->is_ready_for_input( ) EQ 1. build_toolbar: 'ADD' icon_insert_row '', 'DEL' icon_delete_row '', 'COPY' icon_copy_object 'Copy', 'REPL' icon_replace 'Edit Line', 'SAVE' icon_system_save 'Save'. ENDIF. ENDFORM. "handle_toolbar *&---------------------------------------------------------------------* *& Form HANDLE_DATA_CHANGED *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PR_DATA_CHANGED text *----------------------------------------------------------------------* FORM handle_data_changed USING pr_data_changed TYPE REF TO cl_alv_changed_data_protocol. DATA lv_ecust TYPE kunnr. DATA lv_name1 TYPE name1. DATA ls_good_cells TYPE lvc_s_modi. DATA lt_celltab TYPE lvc_t_styl. DATA ls_row_info TYPE lvc_s_row. DATA ls_col_info TYPE lvc_s_col. DATA ls_row_id TYPE lvc_s_roid. FIELD-SYMBOLS <fs_alv_out> TYPE ty_alv_out. FIELD-SYMBOLS <fs_any> TYPE any. DEFINE get_cell_value. call method pr_data_changed->get_cell_value exporting i_row_id = &1 i_fieldname = &2 importing e_value = &3. END-OF-DEFINITION. DEFINE modify_cell. call method pr_data_changed->modify_cell exporting i_row_id = &1 i_fieldname = &2 i_value = &3. read table gt_alv_out assigning <fs_alv_out> index &1. if sy-subrc eq 0. assign component &2 of structure <fs_alv_out> to <fs_any>. <fs_any> = &3. endif. END-OF-DEFINITION. CLEAR gv_error. LOOP AT pr_data_changed->mt_good_cells INTO ls_good_cells. APPEND ls_good_cells-row_id TO gt_changed_rows. CASE ls_good_cells-fieldname. WHEN 'PRIORITY'. CLEAR lt_celltab[]. ** CLEAR:lx_fieldcat. ** SORT gt_fieldcat[] BY fieldname. get_cell_value ls_good_cells-row_id ls_good_cells-fieldname lv_priority. IF lv_priority EQ 'A'. PERFORM fill_celltab USING 'RW' lv_priority CHANGING lt_celltab. ELSEIF lv_priority = 'B'. PERFORM fill_celltab USING 'RW' lv_priority CHANGING lt_celltab. ELSEIF lv_priority = 'C'. PERFORM fill_celltab USING 'RW' lv_priority CHANGING lt_celltab. ENDIF. modify_cell ls_good_cells-row_id 'PRIORITY' lv_priority. modify_cell ls_good_cells-row_id 'CELLTAB' lt_celltab. g_grid->refresh_table_display( EXPORTING i_soft_refresh = 'X' ). ls_col_info-fieldname = 'PRIORITY'. ls_row_id-row_id = ls_good_cells-row_id. * set scroll bar to current row being edited g_grid->set_scroll_info_via_id( EXPORTING * IS_ROW_INFO = is_col_info = ls_col_info is_row_no = ls_row_id ). CLEAR:lv_priority,ls_good_cells,ls_col_info,ls_row_id. WHEN 'ECUST'. CLEAR: lv_ecust, lv_name1. get_cell_value ls_good_cells-row_id ls_good_cells-fieldname lv_ecust. CHECK lv_ecust IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = lv_ecust IMPORTING output = lv_ecust. PERFORM get_customer_name USING lv_ecust lv_name1. IF sy-subrc EQ 0. modify_cell ls_good_cells-row_id 'NAME1' lv_name1. ELSE. CALL METHOD pr_data_changed->add_protocol_entry EXPORTING i_msgid = '0K' i_msgno = '000' i_msgty = 'E' i_msgv1 = text-001 i_msgv2 = lv_ecust i_fieldname = ls_good_cells-fieldname i_row_id = ls_good_cells-row_id. ENDIF. ENDCASE. ENDLOOP. PERFORM display_alv. ENDFORM. " HANDLE_DATA_CHANGED *&---------------------------------------------------------------------* *& Form GET_CUSTOMER_NAME *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->KUNNR text * -->NAME1 text *----------------------------------------------------------------------* FORM get_customer_name USING kunnr TYPE kunnr name1 TYPE name1. SELECT SINGLE name1 FROM kna1 INTO name1 WHERE kunnr = kunnr. ENDFORM. " GET_CUSTOMER_NAME *&---------------------------------------------------------------------* *& Form display_alv *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM display_alv. DATA container TYPE REF TO cl_gui_custom_container. DATA lr_event_handler TYPE REF TO lcl_events. CREATE OBJECT lr_event_handler. CREATE OBJECT container EXPORTING container_name = 'CONT'. CREATE OBJECT g_splitter EXPORTING parent = container rows = 1 columns = 1. g_contnr_top = g_splitter->get_container( row = 1 column = 1 ). CREATE OBJECT g_grid EXPORTING i_parent = g_contnr_top. CREATE OBJECT g_html EXPORTING style = 'ALV_GRID'. * Display the ALV grid * Build the fieldcatalog * IF gt_changed_rows[] IS INITIAL. PERFORM build_fcat. * ENDIF. PERFORM set_drdn_table. PERFORM exclude_tb_functions. SET HANDLER lr_event_handler->handle_toolbar FOR g_grid . gs_layout-stylefname = 'CELLTAB'. gs_layout-sel_mode = 'A'. gs_layout-info_fname = 'COLOR_LINE'. CALL METHOD g_grid->set_table_for_first_display EXPORTING is_layout = gs_layout it_toolbar_excluding = gt_exclude CHANGING it_outtab = gt_alv_out[] it_fieldcatalog = gt_fieldcat EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CALL METHOD g_grid->set_frontend_fieldcatalog EXPORTING it_fieldcatalog = gt_fieldcat. CALL METHOD g_grid->refresh_table_display( ). CALL METHOD g_grid->set_ready_for_input EXPORTING i_ready_for_input = 1. CALL METHOD g_grid->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter. "register enter event CALL METHOD g_grid->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified. "register enter event SET HANDLER lr_event_handler->handle_user_command FOR g_grid. SET HANDLER lr_event_handler->handle_data_changed FOR g_grid. ENDFORM. "display_alv *&---------------------------------------------------------------------* *& Form BUILD_FCAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM build_fcat . DEFINE build_alv_fcat. lx_fieldcat-fieldname = &1. lx_fieldcat-tabname = 'GT_ALV_OUT'. if &2 is not initial. lx_fieldcat-ref_table = &2. else. lx_fieldcat-seltext = &3. lx_fieldcat-coltext = &3. endif. if &4 is not initial. lx_fieldcat-edit = 'X'. else. lx_fieldcat-edit = space. endif. if &1 eq 'PRIORITY'. lx_fieldcat-drdn_field = 'DROP_DOWN_HANDLE'. lx_fieldcat-edit = 'X'. lx_fieldcat-outputlen = 5. else. lx_fieldcat-outputlen = 20. endif. append lx_fieldcat to gt_fieldcat. clear lx_fieldcat. END-OF-DEFINITION. CLEAR gt_fieldcat[]. build_alv_fcat: 'PRIORITY' 'ZSD_MFN' 'Priority' 'X', 'KUNAG' 'ZSD_MFN' 'Sold-to party' '', 'KUNWE' 'ZSD_MFN' 'Ship-to party' '', 'ECUST' 'ZSD_MFN' 'End customer number' '', 'NAME1' 'ZSD_MFN' 'Customer Name' '', 'MPN' 'ZSD_MFN' 'Marketing Part Number' 'X' , 'MFN' 'ZSD_MFN' 'Manufacturing Part Number' 'X' . ENDFORM. " BUILD_FCAT *&---------------------------------------------------------------------* *& Form exclude_tb_functions *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM exclude_tb_functions . DATA ls_exclude TYPE ui_func. DEFINE build_exclude_itab. ls_exclude = &1. append ls_exclude to gt_exclude. END-OF-DEFINITION. * exclude all the toolbar buttons except the download to excel build_exclude_itab: cl_gui_alv_grid=>mc_fc_loc_undo, cl_gui_alv_grid=>mc_fc_loc_copy_row, cl_gui_alv_grid=>mc_fc_loc_delete_row, cl_gui_alv_grid=>mc_fc_loc_append_row, cl_gui_alv_grid=>mc_fc_loc_move_row, cl_gui_alv_grid=>mc_fc_loc_copy, cl_gui_alv_grid=>mc_fc_loc_cut, cl_gui_alv_grid=>mc_fc_loc_paste, cl_gui_alv_grid=>mc_fc_loc_paste_new_row, cl_gui_alv_grid=>mc_fc_check, cl_gui_alv_grid=>mc_fc_refresh, cl_gui_alv_grid=>mc_fc_minimum, cl_gui_alv_grid=>mc_fc_maximum, cl_gui_alv_grid=>mc_fc_views, cl_gui_alv_grid=>mc_fc_sum, cl_gui_alv_grid=>mc_fc_graph, cl_gui_alv_grid=>mc_fc_average, cl_gui_alv_grid=>mc_fc_find, cl_gui_alv_grid=>mc_fc_info, cl_gui_alv_grid=>mc_fc_loc_insert_row. ENDFORM. "exclude_tb_functions *&---------------------------------------------------------------------* *& Module PBO_100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE pbo_100 OUTPUT. * Display the titlebar and application toolbar buttons SET TITLEBAR 'ZSD_MFN'. SET PF-STATUS 'MAIN'. PERFORM init_data. * Display the ALV grid PERFORM display_alv. ENDMODULE. " PBO_100 OUTPUT *&---------------------------------------------------------------------* *& Form init_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM init_data. * TYPES: BEGIN OF ty_cust_name, * kunnr TYPE kunnr, * name1 TYPE name1, * END OF ty_cust_name. DATA lt_mfn TYPE TABLE OF zsd_mfn. DATA ls_mfn TYPE zsd_mfn. * DATA lt_cust_name TYPE TABLE OF ty_cust_name. * DATA ls_cust_name TYPE ty_cust_name. DATA ls_alv_out TYPE ty_alv_out. DATA lt_celltab TYPE lvc_t_styl. DATA:lt_f4 TYPE lvc_t_f4, wa_f4 LIKE LINE OF lt_f4. * DEFINE get_customer_name. * read table lt_cust_name into ls_cust_name * with key kunnr = &1. * &2 = ls_cust_name-name1. * clear ls_cust_name. * END-OF-DEFINITION. * CLEAR gt_alv_out[]. SELECT * FROM zsd_mfn INTO TABLE lt_mfn. * IF sy-subrc EQ 0. * SELECT kunnr name1 FROM kna1 INTO TABLE lt_cust_name * FOR ALL ENTRIES IN lt_mfn * WHERE kunnr = lt_mfn-ecust. LOOP AT lt_mfn INTO ls_mfn. MOVE-CORRESPONDING ls_mfn TO ls_alv_out. * get_customer_name ls_mfn-ecust ls_alv_out-name1. ls_alv_out-drop_down_handle = 1. APPEND ls_alv_out TO gt_alv_out. CLEAR: ls_alv_out. ENDLOOP. * ENDIF. CREATE OBJECT g_grid EXPORTING i_parent = g_contnr_top. * Set editable cells to ready for input initially CALL METHOD g_grid->set_ready_for_input EXPORTING i_ready_for_input = 1. CLEAR wa_f4. wa_f4-fieldname = 'PRIORITY'. wa_f4-register = 'X'. wa_f4-getbefore = 'X'. wa_f4-chngeafter = 'X'. APPEND wa_f4 TO lt_f4. CALL METHOD g_grid->register_f4_for_fields EXPORTING it_f4 = lt_f4. *End OF Change ENDFORM. "init_data *&---------------------------------------------------------------------* *& Module PAI_100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE pai_100 INPUT. DATA lv_answer(1). DATA lv_exit TYPE abap_bool. DATA:w_valid TYPE char1. * IF gt_changed_rows[] IS NOT INITIAL. * CALL FUNCTION 'POPUP_TO_CONFIRM' * EXPORTING * text_question = text-021 * IMPORTING * answer = lv_answer * EXCEPTIONS * text_not_found = 1 * OTHERS = 2. * IF lv_answer <> '1'. * lv_exit = abap_false. * ELSE. * lv_exit = abap_true. * ENDIF. * ELSE. * lv_exit = abap_true. * ENDIF. * CHECK lv_exit = abap_true. * CALL METHOD g_grid->check_changed_data *IMPORTING *e_valid = w_valid. CASE ok_code. WHEN 'BACK'. LEAVE TO SCREEN 0. WHEN 'EXIT'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE. " PAI_100 INPUT *&---------------------------------------------------------------------* *& Form update_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM update_data. DATA ls_alv_out LIKE LINE OF gt_alv_out. DATA lv_row_num TYPE int4. DATA lt_ecmpn TYPE TABLE OF zsd_ecmpn. DATA ls_ecmpn TYPE zsd_ecmpn. DATA lv_valid TYPE c. DATA lt_index_rows TYPE lvc_t_row. DATA ls_index_rows LIKE LINE OF lt_index_rows. g_grid->check_changed_data( IMPORTING e_valid = lv_valid ). IF lv_valid IS NOT INITIAL. SORT gt_changed_rows ASCENDING. DELETE ADJACENT DUPLICATES FROM gt_changed_rows. IF gt_changed_rows[] IS NOT INITIAL OR gt_mfn_del[] IS NOT INITIAL. LOOP AT gt_changed_rows INTO lv_row_num. READ TABLE gt_alv_out INTO ls_alv_out INDEX lv_row_num. MOVE-CORRESPONDING ls_alv_out TO ls_mfn. APPEND ls_mfn TO lt_mfn. CLEAR ls_mfn. ENDLOOP. IF gv_error EQ abap_false. LOOP AT gt_mfn_del INTO ls_mfn. DELETE zsd_mfn FROM ls_mfn. ENDLOOP. MODIFY zsd_mfn FROM TABLE lt_mfn. IF sy-subrc EQ 0. CLEAR: gt_mfn_del[], gt_changed_rows[]. MESSAGE 'Changes have been saved'(004) TYPE 'S'. PERFORM init_data. ENDIF. ENDIF. ENDIF. CLEAR ls_mfn. ELSE. MESSAGE 'No changes made'(003) TYPE 'I'. ENDIF. ENDFORM. "update_data *&---------------------------------------------------------------------* *& Form SET_DRDN_TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM set_drdn_table . DATA: lt_dropdown TYPE lvc_t_drop, ls_dropdown TYPE lvc_s_drop. ls_dropdown-handle = '1'. ls_dropdown-value = 'A'. APPEND ls_dropdown TO lt_dropdown. ls_dropdown-handle = '1'. ls_dropdown-value = 'B'. APPEND ls_dropdown TO lt_dropdown. ls_dropdown-handle = '1'. ls_dropdown-value = 'C'. APPEND ls_dropdown TO lt_dropdown. CALL METHOD g_grid->set_drop_down_table EXPORTING it_drop_down = lt_dropdown. ENDFORM. " SET_DRDN_TABLE *&---------------------------------------------------------------------* *& Form FILL_CELLTAB *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM fill_celltab USING value(p_mode) value(p_priority) CHANGING pt_celltab TYPE lvc_t_styl. DATA: ls_celltab TYPE lvc_s_styl, l_mode TYPE raw4. l_mode = cl_gui_alv_grid=>mc_style_enabled. IF p_priority EQ 'A'. CLEAR ls_celltab. ls_celltab-fieldname = 'PRIORITY'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'KUNAG'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'KUNWE'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'ECUST'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'NAME1'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'MPN'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'MFN'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ELSEIF p_priority EQ 'B' . CLEAR ls_celltab. ls_celltab-fieldname = 'PRIORITY'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'KUNAG'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'KUNWE'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'ECUST'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'NAME1'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'MPN'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'MFN'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ELSE. CLEAR ls_celltab. ls_celltab-fieldname = 'PRIORITY'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'KUNAG'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'KUNWE'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'ECUST'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'NAME1'. ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'MPN'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ls_celltab-fieldname = 'MFN'. ls_celltab-style = l_mode. INSERT ls_celltab INTO TABLE pt_celltab. ENDIF. ENDFORM. " FILL_CELLTAB <br>
Thanks and Regards,
Ajay