Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Delete Selected Row Error.

0 Likes
1,069

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.
1 ACCEPTED SOLUTION
Read only

RaymondGiuseppi
Active Contributor
978

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.
2 REPLIES 2
Read only

RaymondGiuseppi
Active Contributor
979

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.
Read only

978

Thx. It's working.