Updating Data base table entries through ALV
UPDATE
*&---------------------------------------------------------------------*
*& Report ZVB_STU
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_stu.
TABLES:zvb_stu.
TYPES: BEGIN OF ts_zvb_stu,
zstu_id TYPE zvb_stu-zstu_id,
zstu_name TYPE zvb_stu-zstu_name,
zstu_dep TYPE zvb_stu-zstu_dep,
msg TYPE char20,
END OF ts_zvb_stu.
DATA:lt_stu TYPE TABLE OF ts_zvb_stu,
ls_stu TYPE ts_zvb_stu.
DATA:lt_fcat TYPE slis_t_fieldcat_alv,
ls_fcat TYPE slis_fieldcat_alv.
PARAMETERS:s_id TYPE zvb_stu-zstu_id.
START-OF-SELECTION.
SELECT zstu_id
zstu_name
zstu_dep
FROM zvb_stu
INTO TABLE lt_stu
WHERE zstu_id in s_id.
REFRESH:lt_fcat.
CLEAR:ls_fcat.
ls_fcat-fieldname = 'ZSTU_ID'.
ls_fcat-seltext_m = 'ID'.
APPEND ls_fcat TO lt_fcat.
CLEAR:ls_fcat.
ls_fcat-fieldname = 'ZSTU_NAME'.
ls_fcat-seltext_m = 'NAME'.
APPEND ls_fcat TO lt_fcat.
CLEAR:ls_fcat.
ls_fcat-fieldname = 'ZSTU_DEP'.
ls_fcat-seltext_m = 'Department'.
ls_fcat-edit = 'X'.
APPEND ls_fcat TO lt_fcat.
CLEAR:ls_fcat.
ls_fcat-fieldname = 'MSG'.
ls_fcat-seltext_m = 'Message'.
ls_fcat-icon = 'X'.
APPEND ls_fcat TO lt_fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
* IS_LAYOUT =
it_fieldcat = lt_fcat
TABLES
t_outtab = lt_stu.
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZVB_PF'.
ENDFORM.
FORM user_command USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_ucomm.
WHEN 'SAVE'.
*To capture the chaged data into internal table
DATA:grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = grid.
CALL METHOD grid->check_changed_data.
LOOP AT lt_stu INTO ls_stu.
IF ls_stu-zstu_dep IS INITIAL.
ls_stu-msg = icon_red_light.
CONCATENATE ls_stu-msg 'not ok' INTO ls_stu-msg.
MODIFY lt_stu FROM ls_stu.
ELSE.
ls_stu-msg = icon_green_light.
CONCATENATE ls_stu-msg 'ok' INTO ls_stu-msg.
MODIFY lt_stu FROM ls_stu.
*Updates the database table
UPDATE zvb_stu SET zstu_dep = ls_stu-zstu_dep
WHERE zstu_id = ls_stu-zstu_id.
ENDIF.
ENDLOOP.
p_selfield-refresh = 'X'.
MESSAGE 'data saved' TYPE 'S'.
ENDCASE.
ENDFORM.
Output:
Edit dep click on save.
Check Database table
Comments
Post a Comment