Updating Data base table entries through ALV

 

 UPDATE

*&---------------------------------------------------------------------*
*& Report ZVB_STU
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_stu.

TABLES:zvb_stu.

TYPESBEGIN 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

Popular posts from this blog

Passing Dynamic Variables to SO10 TEXT

Implicit Enhancement with Example

TMG Events