09-19-2018 8:29 PM
Hello experts,
I am working on ALV Reports. I want to update database table from ALV report cells with a button. I added button and i can edit ALV cell but it doesn't update database.
How can i solve?
Database table name: ZDANISMAN.
Here is pieces of codes:
DATA : gt_fcat TYPE slis_t_fieldcat_alv,
gs_fcat TYPE LINE OF slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gt_sort TYPE slis_t_sortinfo_alv,
gs_sort TYPE LINE OF slis_t_sortinfo_alv,
gt_fcat_popup TYPE slis_t_fieldcat_alv,
gt_fcat_popup_ok TYPE slis_t_fieldcat_alv,
gs_variant TYPE disvariant,
lt_rows TYPE lvc_t_row,
w_selected_rows TYPE lvc_s_row, " ALV CONTROL LINE DESCRIPTION
&EXEC LIKE SY-UCOMM,
&UPDATE LIKE SY-UCOMM,
lv_tabix TYPE sy-tabix,
MY_REPID LIKE SY-REPID.
* TABLE CONTENTS.
types: BEGIN OF wa_baldat,
D_ID TYPE ZDANISMAN-D_ID,
D_ADI TYPE ZDANISMAN-D_ADI,
D_MAIL TYPE ZDANISMAN-D_MAIL,
box(1) TYPE c, "CHECKBOX VARIABLE OF ALV SCREEN.
END OF wa_baldat.
TYPES it_baldat TYPE STANDARD TABLE OF wa_baldat.
DATA itab TYPE it_baldat.
DATA wa_itab TYPE wa_baldat.
DATA wa_danisman TYPE ZDANISMAN.
data wa_modified TYPE ZDANISMAN.
data i_modified TYPE STANDARD TABLE OF ZDANISMAN.
FORM USER_COMMAND USING r_ucomm LIKE SY-UCOMM
rs_selfield TYPE slis_selfield.
DATA : lt_index_rows TYPE lvc_t_row WITH HEADER LINE,
ref1 TYPE REF TO cl_gui_alv_grid.
DATA w_selected_rows TYPE lvc_s_row.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = ref1.
CALL METHOD ref1->get_selected_rows IMPORTING et_index_rows = lt_index_rows[].
* IT GETS SELECTED INDEX FROM CHECKBOX
LOOP AT lt_index_rows WHERE index > 0 AND rowtype IS INITIAL.
READ TABLE itab INTO wa_itab INDEX lt_index_rows-index.
ENDLOOP.
* GETS SELECTED INDEX'S CONTENTS INTO i_modified.
LOOP AT lt_index_rows INTO w_selected_rows.
READ TABLE itab INTO wa_danisman INDEX w_selected_rows-index.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING wa_danisman TO wa_modified.
APPEND wa_modified TO i_modified.
ENDIF.
ENDLOOP.
* WHEN BUTTTON TRIGGEREDS, IT SHOULD MODIFIED DATABASETABLE.
IF R_UCOMM = '&UPDATE'.
MODIFY ZDANISMAN FROM TABLE i_modified.
ENDIF.
ENDFORM.
09-20-2018 12:46 PM
Hi guys again, problem solved that way:
I added MANDT field into internal table structure and I have deleted UPDATE button then problem solved. Here codes:
Kind Regards
* INTERNAL TABLE STRUCTURE
types: BEGIN OF wa_baldat,
MANDT TYPE ZDANISMAN-MANDT,
D_ID TYPE ZDANISMAN-D_ID,
D_ADI TYPE ZDANISMAN-D_ADI,
D_MAIL TYPE ZDANISMAN-D_MAIL,
box(1) TYPE c,
END OF wa_baldat.
LOOP AT lt_index_rows INTO w_selected_rows.
READ TABLE itab INTO wa_danisman INDEX w_selected_rows-index.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_danisman TO wa_modified.
APPEND wa_modified TO i_modified.
ENDIF.
MODIFY ZDANISMAN FROM TABLE i_modified.
COMMIT WORK.
ENDLOOP.
09-19-2018 9:46 PM
09-20-2018 7:04 AM
09-20-2018 8:06 AM
09-20-2018 9:02 AM
09-20-2018 9:44 AM
So what did debug tell you? What were the contents of i_modified?
What was SY-SUBRC? Return codes should always be checked and exceptions handled.
09-20-2018 11:38 AM
I changed selected index's text to different a text. i_modified gets new value but database table doesn't changed.
I think there is a problem about database table fields. So;
D_ID must be: '0003'
D_ADI: 'OZAN'
D_MAIL: 'ccc@ccc.com'
09-20-2018 12:46 PM
Hi guys again, problem solved that way:
I added MANDT field into internal table structure and I have deleted UPDATE button then problem solved. Here codes:
Kind Regards
* INTERNAL TABLE STRUCTURE
types: BEGIN OF wa_baldat,
MANDT TYPE ZDANISMAN-MANDT,
D_ID TYPE ZDANISMAN-D_ID,
D_ADI TYPE ZDANISMAN-D_ADI,
D_MAIL TYPE ZDANISMAN-D_MAIL,
box(1) TYPE c,
END OF wa_baldat.
LOOP AT lt_index_rows INTO w_selected_rows.
READ TABLE itab INTO wa_danisman INDEX w_selected_rows-index.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_danisman TO wa_modified.
APPEND wa_modified TO i_modified.
ENDIF.
MODIFY ZDANISMAN FROM TABLE i_modified.
COMMIT WORK.
ENDLOOP.
09-20-2018 2:36 PM
You have to write the MODIFY statement outside of the LOOP statement. As you are collecting all modified entries into i_modifed. (We should avoid multiple UPDATES )