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.

TABLESzajay_zstu.
TYPESBEGIN 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.
DATAit_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.

DATAit_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.
  PARAMETERSr1 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.
  PARAMETERSr4 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.
  DATAobj 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 & EVEN DATA


 READ & ODD DATA

* UPDATE S-O -> 1-10 
(IN THIS SCENARION PAVAN IS CHANGED TO SANDEEP).
    
    
    -> AFTER UPDATE.

    


    -> CLICK ON DELETE SELECT THE ROWS.
    

 










Comments

Popular posts from this blog

New syntax for append- VALUE (new syntax 7.4+) in ABAP

Read statement new syntax in ABAP. (7.4+).

Concatenation new syntax( 7.4+ ).