‎2020 Oct 02 2:59 PM
I want to delete selected rows. Actually, I did. But I did after I use delete button second times. There is a code order mistake in my code, but I couldn't find out where it is? Can you help me?
*This is my status for screen 2000(PBO).
MODULE status_2000 OUTPUT.
SET PF-STATUS 'STATUS_2000'.
"PERFORM grid1.
PERFORM grid2.
ENDMODULE.
*This is my user commmand for screen 2000(PAI).
MODULE user_command_2000 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'ADD_ROW'.
PERFORM ADD_ROW.
WHEN 'REMOVE_ROW'.
PERFORM REMOVE_ROW.
ENDCASE.
*I coded second refresh for test, didnt work.
CALL METHOD grid2->refresh_table_display
EXPORTING
i_soft_refresh = 'X'
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc = 0 .
"do nothing
ENDIF.
ENDMODULE.
FORM ADD_ROW .
DATA: lv_cekk_lines TYPE zboeno.
DATA: gt_cekk_count TYPE z_cekkalem OCCURS 0,
gs_cekk_count TYPE z_cekkalem.
IF gt_cekk IS INITIAL.
SELECT SINGLE MAX( boeno )
INTO lv_cekk_lines
FROM z_cekkalem.
gs_cekk-boeno = lv_cekk_lines + 1.
APPEND gs_cekk TO gt_cekk.
ELSE.
CLEAR gt_cekk_count.
MOVE gt_cekk TO gt_cekk_count.
SORT gt_cekk_count BY boeno DESCENDING.
READ TABLE gt_cekk_count INTO gs_cekk_count INDEX 1.
lv_cekk_lines = gs_cekk_count-boeno.
gs_cekk-boeno = lv_cekk_lines + 1.
APPEND gs_cekk TO gt_cekk.
ENDIF.
ENDFORM.
FORM REMOVE_ROW .
LOOP AT et_index_rows2 INTO es_index_rows2.
DELETE gt_cekk INDEX es_index_rows2-index.
ENDLOOP.
ENDFORM.
FORM grid2.
IF grid2 IS INITIAL.
CREATE OBJECT custom2
EXPORTING
container_name = 'MYCUSTOM2'.
CREATE OBJECT grid2
EXPORTING
i_parent = custom2.
PERFORM loaddata_kalem.
"DATA: l_valid TYPE c.
" CALL METHOD grid2->check_changed_data IMPORTING e_valid = l_valid.
ELSE.
* call method grid2->refresh_table_display.
DATA: lwa_ref2 TYPE lvc_s_stbl.
CALL METHOD grid2->get_selected_rows
IMPORTING
et_index_rows = et_index_rows2
et_row_no = et_row_no2.
CALL METHOD grid2->refresh_table_display
EXPORTING
is_stable = lwa_ref2
"i_soft_refresh = 'X'
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc = 0 .
ENDIF.
ENDIF.
ENDFORM.
form loaddata_kalem.
SELECT * FROM z_cekkalem INTO TABLE gt_cekk.
DATA: ls_fcat_kalem TYPE lvc_s_fcat.
DATA: lt_fcat_kalem TYPE lvc_t_fcat.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'STAPL'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'BUKRS'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'HBKID'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'WAERS'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'HKONT'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'BOENO'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'WRBTR'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'ZFBDT'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CLEAR ls_fcat_kalem.
ls_fcat_kalem-fieldname = 'SGTXT'.
ls_fcat_kalem-edit = 'X'.
APPEND ls_fcat_kalem TO lt_fcat_kalem.
CALL METHOD grid2->set_table_for_first_display
EXPORTING
" is_layout =
i_structure_name = 'Z_CEKKALEM'
CHANGING
it_fieldcatalog = lt_fcat_kalem
it_outtab = gt_cekk.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
‎2020 Oct 02 3:50 PM
The set_table_for_first_display (first call) and refresh_table_display (other call) should been called in PBO logic. The call of get_selected_rows should be in PAI logic before user_command (after exit_command) Don't use those methods in the load data form/method (a method = a function don't mix) call the load data at init and then when required (after delete/add)...
" PBO
if grid is initial.
create: container, grid...
call grid->set_table_for_first_display...
else.
call grid-> refresh_table_display...
endif.
‎2020 Oct 02 3:50 PM
The set_table_for_first_display (first call) and refresh_table_display (other call) should been called in PBO logic. The call of get_selected_rows should be in PAI logic before user_command (after exit_command) Don't use those methods in the load data form/method (a method = a function don't mix) call the load data at init and then when required (after delete/add)...
" PBO
if grid is initial.
create: container, grid...
call grid->set_table_for_first_display...
else.
call grid-> refresh_table_display...
endif.
‎2020 Oct 07 12:09 PM