read update delete from data base table using oops alv
* TAKE ONE CUSTOM TABLE
* TAKE 3 RADIO BUTTON READ UPDATE DELETE.
* IF WE CLICK ON READ BUTTON IT SHOWS ALL DATA, EVEN DATA AND ODD DATA.
> IF WE CLICK ON ALL DATA, IT WILL DISPLAY ALL DATA FROM TABLE WITHIN RANGE USING OOPS ALV.
> IF WE CLICK ON EVEN DATA, IT WILL DISPALY ONLY EVEN DATA.
> IF WE CLICK ON ODD DATA, IT WILL DISPALY ONLY ODD DATA.
* IF WE CLICK ON UPDATE BUTTON IT WILL DISPLAY DATA IN EDIT MODE AND CLICK ON UPDATE BUTTON IT UPDATED AND ALSO UPDATE IN DATABASE.
* IF WE CLICK ON DELETE BUTTON IT WILL DISPLAY THE DATA .YOU SELECTED ARE DELETED.
REPORT zajay_rp_task.
TABLES: zajay_zstu.
TYPES: BEGIN OF ty_zstu,
zst_id TYPE zajay_zstu-zst_id,
zst_name TYPE zajay_zstu-zst_name,
zst_dept TYPE zajay_zstu-zst_dept,
zst_fee TYPE zajay_zstu-zst_fee,
END OF ty_zstu.
DATA: it_stu TYPE TABLE OF ty_zstu,
it_nstu TYPE TABLE OF ty_zstu,
it_ostu TYPE TABLE OF ty_zstu,
wa_nstu TYPE ty_zstu,
wa_ostu TYPE ty_zstu,
wa_stu TYPE ty_zstu,
it_final TYPE zajay_tt_stu,
st_id TYPE zajay_zstu-zst_id,
* it_stu_cpy type table of ty_zajay_zstu,
* wa_stu_cpy type ty_zajay_zstu,
wa_final TYPE ty_zstu,
it_rows TYPE lvc_t_row,
wa_rows TYPE lvc_s_row,
it_mod TYPE TABLE OF ty_zstu,
wa_mod TYPE ty_zstu,
wa TYPE ty_zstu.
DATA: it_fcat TYPE lvc_t_fcat,
wa_fcat TYPE lvc_s_fcat,
wa_layout TYPE lvc_s_layo,
grid TYPE REF TO cl_gui_alv_grid,
container TYPE REF TO cl_gui_custom_container,
grid1 TYPE REF TO cl_gui_alv_grid,
container1 TYPE REF TO cl_gui_custom_container,
grid2 TYPE REF TO cl_gui_alv_grid,
container2 TYPE REF TO cl_gui_custom_container.
SELECT-OPTIONS : s_id FOR zajay_zstu-zst_id.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: r1 RADIOBUTTON GROUP g1 USER-COMMAND usd DEFAULT 'X',
r2 RADIOBUTTON GROUP g1,
r3 RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
PARAMETERS: r4 RADIOBUTTON GROUP g2 USER-COMMAND usd1 MODIF ID a1,
r5 RADIOBUTTON GROUP g2 MODIF ID a1,
r6 RADIOBUTTON GROUP g2 MODIF ID a1.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF r1 = 'X' AND screen-group1 = 'A1'.
screen-active = 1.
MODIFY SCREEN.
ELSEIF r1 = ' ' AND screen-group1 = 'A1'.
screen-active = 0.
MODIFY SCREEN.
ELSEIF r2 = 'X' AND screen-group1 = 's1'.
screen-active = 1.
MODIFY SCREEN.
ELSEIF r2 = ' ' AND screen-group1 = 's1'.
screen-active = 0.
MODIFY SCREEN.
ELSEIF r3 = 'X' AND screen-group1 = 'A2' .
screen-active = 1.
MODIFY SCREEN.
ELSEIF r3 = ' ' AND screen-group1 = 'A2'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
DATA: obj TYPE REF TO zajay_cl_sub.
CREATE OBJECT obj.
IF r4 = 'X' AND r1 = 'X' .
REFRESH it_stu.
CALL METHOD obj->get_all_data
EXPORTING
s_id = s_id[]
CHANGING
itab = it_stu.
IF it_stu IS INITIAL.
MESSAGE 'NO DATA FOUND' TYPE 'I'.
ELSEIF it_stu IS NOT INITIAL.
CALL SCREEN 100.
ENDIF.
ENDIF.
IF r5 = 'X' AND r1 = 'X' .
REFRESH it_stu.
CALL METHOD obj->get_even_data
EXPORTING
s_id = s_id[]
CHANGING
itab = it_stu.
IF it_stu IS INITIAL.
MESSAGE 'NO DATA FOUND' TYPE 'I'.
ELSEIF it_stu IS NOT INITIAL.
CALL SCREEN 100.
ENDIF.
ENDIF.
IF r6 = 'X' AND r1 = 'X' .
REFRESH it_stu.
CALL METHOD obj->get_odd_data
EXPORTING
s_id = s_id[]
CHANGING
itab = it_stu.
IF it_stu IS INITIAL.
MESSAGE 'NO DATA FOUND' TYPE 'I'.
ELSEIF it_stu IS NOT INITIAL.
CALL SCREEN 100.
ENDIF.
ENDIF.
IF r2 = 'X'.
REFRESH it_stu.
CALL METHOD obj->update_data
EXPORTING
s_id = s_id
CHANGING
itab = it_stu.
it_ostu = it_stu.
IF it_stu IS INITIAL.
MESSAGE 'DATA NOT FOUND' TYPE 'E'.
ELSEIF it_stu IS NOT INITIAL.
CALL SCREEN 200.
ENDIF.
ENDIF.
IF r3 = 'X'.
REFRESH it_stu.
CALL METHOD obj->delete_data
EXPORTING
s_id = s_id
CHANGING
itab = it_stu.
it_ostu = it_stu.
IF it_stu IS INITIAL.
MESSAGE 'DATA NOT FOUND' TYPE 'E'.
ELSEIF it_stu IS NOT INITIAL.
CALL SCREEN 300.
ENDIF.
ENDIF.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZPF_ST'.
SET TITLEBAR 'ZT_BAR'.
CREATE OBJECT container
EXPORTING
container_name = 'CUSTOM'.
CREATE OBJECT grid
EXPORTING
i_parent = container.
PERFORM zfieldcat.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'ZAJAY_ST_STU'
CHANGING
it_outtab = it_stu
it_fieldcatalog = it_fcat..
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
MODULE status_0300 OUTPUT.
SET PF-STATUS 'ZPF_300'.
SET TITLEBAR 'ZTB_300'.
CREATE OBJECT container2
EXPORTING
container_name = 'ZDELETE'.
CREATE OBJECT grid2
EXPORTING
i_parent = container2.
PERFORM zfieldcat.
wa_layout-box_fname = 'X'.
wa_layout-sel_mode = 'D'.
CALL METHOD grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'ZAJAY_ST_STU'
is_layout = wa_layout
CHANGING
it_outtab = it_stu
it_fieldcatalog = it_fcat.
ENDMODULE.
MODULE user_command_0300 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
LEAVE PROGRAM.
WHEN 'DELETE'.
CLEAR:wa_rows,it_rows.
* DELETE FROM zajay_zstu WHERE zst_id IN s_id.
* CALL METHOD grid2->check_changed_data.
CALL METHOD grid2->get_selected_rows
IMPORTING
et_index_rows = it_rows.
* et_row_no = IT_ROWS.
LOOP AT it_rows INTO wa_rows.
READ TABLE it_stu INTO wa_stu INDEX wa_rows-index.
st_id = wa_stu-zst_id.
IF sy-subrc = 0.
DELETE FROM zajay_zstu WHERE zst_id = st_id.
IF sy-subrc = 0.
MESSAGE 'DATA SUCESSFULLY DELETED' TYPE 'S'.
ENDIF.
ENDIF.
ENDLOOP.
ENDCASE.
ENDMODULE.
MODULE status_0200 OUTPUT.
SET PF-STATUS 'ZPF_UPDATE'.
SET TITLEBAR 'ZTB_UPDATE'.
CREATE OBJECT container1
EXPORTING
container_name = 'ZUPDATE'.
CREATE OBJECT grid1
EXPORTING
i_parent = container1.
PERFORM zfieldcat.
* wa_layout-edit = 'X'.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
is_layout = wa_layout
CHANGING
it_outtab = it_stu
it_fieldcatalog = it_fcat.
* wa_stu_cpy = wa_stu.
* CALL METHOD grid1->set_table_for_first_display
* EXPORTING
* i_structure_name = 'ZAJAY_ST_STU'
* CHANGING
* it_outtab = it_stu.
ENDMODULE.
MODULE user_command_0200 INPUT.
CASE sy-ucomm.
WHEN 'CANCEL' OR 'BACK' OR 'EXIT'.
LEAVE PROGRAM .
WHEN 'UPDATE'.
* LOOP AT it_stu into wa_stu.
CLEAR:st_id.
* READ TABLE it_stu_cpy into wa_stu_cpy index sy-tabix.
* IF wa_stu ne wa_stu_cpy.
* wa_final-zst_id = wa_stu-zst_id.
* wa_final-zst_name = wa_stu-zst_name.
* wa_final-zst_dept = wa_stu-zst_dept.
* wa_final-zst_fee = wa_stu-zst_fee.
* MODIFY zajay_zstu from wa_final.
* IF sy-subrc = 0.
* MESSAGE 'updated' type 'S'.
*
* ENDIF.
*
* ENDIF.
* clear: wa_final,wa_stu.
*
* ENDLOOP.
CALL METHOD grid1->check_changed_data
* IMPORTING
* e_valid =
* CHANGING
* c_refresh = 'X'
.
CALL METHOD grid1->get_selected_rows
IMPORTING
et_index_rows = it_rows.
LOOP AT it_rows INTO wa_rows.
* READ TABLE it_stu into wa_stu INDEX wa_rows-index.
* IF sy-subrc = 0.
* MOVE-CORRESPONDING wa_stu to wa_mod.
* APPEND wa_mod to it_mod.
*
* ENDIF.
* LOOP AT it_stu INTO wa_stu .
READ TABLE it_stu INTO wa_stu INDEX wa_rows-index.
CLEAR:wa_ostu.
READ TABLE it_ostu INTO wa_ostu INDEX wa_rows-index.
st_id = wa_stu-zst_id.
IF wa_stu NE wa_ostu.
wa_final-zst_id = wa_stu-zst_id.
wa_final-zst_name = wa_stu-zst_name.
wa_final-zst_dept = wa_stu-zst_dept.
wa_final-zst_fee = wa_stu-zst_fee.
* MODIFY zajay_zstu FROM wa_final.
APPEND wa_final TO it_final.
MODIFY it_stu FROM wa_final TRANSPORTING zst_id WHERE zst_id = st_id .
ENDIF.
* IF wa_stu eq wa_ostu.
* append wa_ostu to it_final.
* MODIFY zajay_zstu from wa_final ."WHERE zst_id = st_id .
*
* ENDIF.
CLEAR:wa_ostu,wa_stu,wa_final.
ENDLOOP.
* MODIFY zajay_zstu FROM TABLE it_final.
CALL METHOD grid1->refresh_table_display.
UPDATE zajay_zstu FROM TABLE it_stu.
IF sy-subrc = 0.
MESSAGE 'data updated' TYPE 'S'.
ENDIF.
* cl_demo_output=>display( it_stu ).
ENDCASE.
ENDMODULE.
FORM zfieldcat.
wa_fcat-col_pos = 1.
wa_fcat-fieldname = 'ZST_ID'.
wa_fcat-tabname = 'IT_STU'.
wa_fcat-scrtext_l = 'STUDENT ID'.
wa_fcat-outputlen = 15.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 2.
wa_fcat-fieldname = 'ZST_NAME'.
wa_fcat-tabname = 'IT_STU'.
wa_fcat-scrtext_l = 'STUDENT NAME'.
IF r2 = 'X'.
wa_fcat-edit = 'X'.
ENDIF.
wa_fcat-outputlen = 20.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 3.
wa_fcat-fieldname = 'ZST_DEPT'.
wa_fcat-tabname = 'IT_STU'.
wa_fcat-scrtext_m = 'STUDENT DEPT'.
IF r2 = 'X'.
wa_fcat-edit = 'X'.
ENDIF.
wa_fcat-outputlen = 12.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 4.
wa_fcat-fieldname = 'ZST_FEE'.
wa_fcat-tabname = 'IT_STU'.
wa_fcat-scrtext_l = 'STUDENT FEE'.
IF r2 = 'X'.
wa_fcat-edit = 'X'.
ENDIF.
wa_fcat-outputlen = 15.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ENDFORM.
DATA BASE TABLE
EXECUTE
READ & ALL DATA
READ & ODD DATA
-> AFTER UPDATE.
Comments
Post a Comment