Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem with Back button in ALV GRID!

Former Member
0 Likes
1,065

Hello Experts,

I am facing a problem with Back button in ALV GRID.

* I am displaying ALV GRID by using a ZTABLE.

*After I displayed ALV GRID,and also I have a MODIFY,DELETE,INSERT(For Modifying,Deleting&Inserting the records which I checked by using a check box) in the application tool bar.And I have a REFRESH button on application tool bar.

*For MODIFY & DELETE I have separate screens.

*Now if I do any operations like MODIFY & INSERT and after that I am just pressing REFRESH for Updating the Modified & Inserted data.

*Now if I click on BACK button it is not going to Initial screen,it is going to the previous screen where I did the operations(MODIFY,INSERT) of Records.It means I have to press BACK button to go to initial screen so many times as how many operations(MODIFY,INSERT) I did previously for the records........****TOMORROW IS MY DEAD LINE FOR THIS REPORT*****Please help me out.

Your prompt reply will be highly appreciated!

Naveen.

*&---------------------------------------------------------------------*

*& Report  ZBACKLOG1

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zbacklog1 NO STANDARD PAGE HEADING.

*Type group

TYPE-POOLS : slis,

             icon.

*Tables

TABLES : zbacklog,

         sscrfields.

DATA:l_zbacklog TYPE zbacklog.

*Internal table declarations

DATA : t_zbacklog TYPE STANDARD TABLE OF zbacklog WITH HEADER LINE,

       wa_zbacklog TYPE zbacklog.

*ALV Declarations

DATA : t_fcat TYPE slis_t_fieldcat_alv,

       w_fcat TYPE slis_fieldcat_alv,

       ls_layout TYPE slis_layout_alv.

*Selection screen

SELECT-OPTIONS : s1 FOR zbacklog-vbeln,

                 s2 FOR zbacklog-posnr,

                 s3 FOR zbacklog-zdate,

                 s4 FOR zbacklog-kunnr,

                 s5 FOR zbacklog-name1,

                 s6 FOR zbacklog-matnr,

                 s7 FOR zbacklog-maktx,

                 s8 FOR zbacklog-kwmeng,

                 s9 FOR zbacklog-auart,

                 s10 FOR zbacklog-vdatu,

                 s11 FOR zbacklog-bbacklog,

                 s12 FOR zbacklog-mtdorder,

                 s13 FOR zbacklog-mtdsales,

                 s14 FOR zbacklog-mtdpick,

                 s15 FOR zbacklog-fival,

                 s16 FOR zbacklog-cbacklog,

                 s17 FOR zbacklog-erdat,

                 s18 FOR zbacklog-week,

                 s19 FOR zbacklog-inco1,

                 s20 FOR zbacklog-inco2,

                 s21 FOR zbacklog-edatu,

                 s22 FOR zbacklog-status,

                 s23 FOR zbacklog-netwr,

                 s24 FOR zbacklog-bstkd,

                 s25 FOR zbacklog-land1,

                 s26 FOR zbacklog-stprs,

                 s27 FOR zbacklog-chernam,

                 s28 FOR zbacklog-cherdat,

                 s29 FOR zbacklog-chtime,

                 s30 FOR zbacklog-reason,

                 s31 FOR zbacklog-mvgr3,

                 s32 FOR zbacklog-bezei3,

                 s33 FOR zbacklog-mvgr4,

                 s34 FOR zbacklog-bezei4.

*Extracting Data

START-OF-SELECTION.

  PERFORM f_fetch_data.

  PERFORM f_fieldcat.

  PERFORM f_grid_display.

*&---------------------------------------------------------------------*

*&      FORM  SET_STATUS

*&---------------------------------------------------------------------*

*            RT_EXTAB -> EXCLUDING TABLE

*----------------------------------------------------------------------*

FORM set_status USING rt_extab TYPE slis_t_extab.

  SET PF-STATUS 'PF_STATUS'.

ENDFORM.                    "SET_STATUS

*&---------------------------------------------------------------------*

*&      Form  I_CALLBACK_USER_COMMAND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->R_UCOMM      text

*      -->RS_SELFIELD  text

*----------------------------------------------------------------------*

FORM i_callback_user_command  USING r_ucomm LIKE sy-ucomm

                                  rs_selfield TYPE slis_selfield.

  CASE sy-ucomm.

    WHEN 'MODIFY'.

      DATA : l_line TYPE i.

      READ TABLE t_zbacklog INTO wa_zbacklog INDEX rs_selfield-tabindex.

      MOVE wa_zbacklog TO zbacklog.

      CALL SCREEN '3100'.

    WHEN 'DELETE'.

      READ TABLE t_zbacklog INTO wa_zbacklog INDEX rs_selfield-tabindex.

      DELETE zbacklog FROM wa_zbacklog.

      IF sy-subrc = 0.

        MESSAGE 'Data Deleted successfully, Please Refresh it' TYPE 'I'.

      ENDIF.

    WHEN 'INSERT'.

      READ TABLE t_zbacklog INTO wa_zbacklog INDEX rs_selfield-tabindex.

      MOVE wa_zbacklog TO zbacklog.

      CALL SCREEN '5000'.

    WHEN 'REFRESH'.

      FREE t_zbacklog[].

      FREE t_fcat[].

      PERFORM f_fetch_data.

      PERFORM f_fieldcat.

      PERFORM f_grid_display.

  ENDCASE.

ENDFORM.                    "I_CALLBACK_USER_COMMAND

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_5000  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE user_command_5000 INPUT.

  CASE sy-ucomm.

    WHEN 'SAVE'.

      SELECT SINGLE *  FROM zbacklog

        INTO l_zbacklog

        WHERE vbeln = zbacklog-vbeln

          AND posnr = zbacklog-posnr

          AND zdate = zbacklog-zdate.

      IF l_zbacklog NE zbacklog.

        zbacklog-chernam = sy-uname.

        zbacklog-cherdat = sy-datum.

        zbacklog-chtime  = sy-uzeit.

        MODIFY zbacklog.

        COMMIT WORK.

        IF sy-subrc = 0.

          MESSAGE 'Data saved successfully,Please Refresh it' TYPE 'I'.                    "Pop up box displays as message saved successfully

        ENDIF.

      ENDIF.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_5000  INPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_5000  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE status_5000 OUTPUT.

  SET PF-STATUS 'PF_STATUS3'.

ENDMODULE.                 " STATUS_5000  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_3100  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE status_3100 OUTPUT.

  SET PF-STATUS 'PF-STATUS2'.

ENDMODULE.                 " STATUS_3100  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_3100  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE user_command_3100 INPUT.

  CASE sy-ucomm.

    WHEN 'SAVE'.

      SELECT SINGLE *  FROM zbacklog

        INTO l_zbacklog

        WHERE vbeln = zbacklog-vbeln

          AND posnr = zbacklog-posnr

          AND zdate = zbacklog-zdate.

      IF wa_zbacklog NE zbacklog.

        wa_zbacklog-chernam = sy-uname.

        wa_zbacklog-cherdat = sy-datum.

        wa_zbacklog-chtime  = sy-uzeit.

        MODIFY zbacklog FROM wa_zbacklog.

        COMMIT WORK.

        IF sy-subrc = 0.

          MESSAGE 'Data updated successfully,Please Refresh it' TYPE 'I'.                    "Pop up box displays as message saved successfully

        ENDIF.

      ENDIF.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

  FREE  t_zbacklog.

ENDMODULE.                 " USER_COMMAND_3100  INPUT

*&---------------------------------------------------------------------*

*&      Form  F_FETCH_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_fetch_data .

  SELECT * FROM zbacklog INTO TABLE t_zbacklog

                      WHERE vbeln IN s1 AND

                      posnr IN s2 AND

                      zdate IN s3 AND

                      kunnr IN s4 AND

                      name1 IN s5 AND

                      matnr IN s6 AND

                      maktx IN s7 AND

                      kwmeng IN s8 AND

                      auart IN s9 AND

                      vdatu IN s10 AND

                      bbacklog IN s11 AND

                      mtdorder IN s12 AND

                      mtdsales IN s13 AND

                      mtdpick IN s14 AND

                      fival IN s15 AND

                      cbacklog IN s16 AND

                      erdat IN s17 AND

                      week IN s18 AND

                      inco1 IN s19 AND

                      inco2 IN s20 AND

                      edatu IN s21 AND

                      status IN s22 AND

                      netwr IN s23 AND

                      bstkd IN s24 AND

                      land1 IN s25 AND

                      stprs IN s26 AND

                      chernam IN s27 AND

                      cherdat IN s28 AND

                      chtime IN s29 AND

                      reason IN s30 AND

                      mvgr3 IN s31 AND

                      bezei3 IN s32 AND

                      mvgr4 IN s33 AND

                      bezei4 IN s34.

ENDFORM.                    " F_FETCH_DATA

*&---------------------------------------------------------------------*

*&      Form  F_FIELDCAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_fieldcat .

  ls_layout-colwidth_optimize = 'X'.

  w_fcat-col_pos = 0.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-fieldname = 'CHKBX'.

  w_fcat-checkbox = 'X'.

  w_fcat-edit = 'X'.

  w_fcat-outputlen = 2.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 1.

  w_fcat-fieldname = 'VBELN'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Document(VBELN)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 2.

  w_fcat-fieldname = 'POSNR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Item(POSNR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 3.

  w_fcat-fieldname = 'ZDATE'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Month Year(ZDATE)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 4.

  w_fcat-fieldname = 'KUNNR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Customer Number(KUNNR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 5.

  w_fcat-fieldname = 'NAME1'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Customer Name(NAME1)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 6.

  w_fcat-fieldname = 'MATNR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Material Number(MATNR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 7.

  w_fcat-fieldname = 'MAKTX'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Material Description(MAKTX)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 8.

  w_fcat-fieldname = 'KWMENG'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Order Quantity(KWMENG)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 9.

  w_fcat-fieldname = 'AUART'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Sales Document Type(AUART)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 10.

  w_fcat-fieldname = 'VDATU'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Delivery Date(VDATU)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 11.

  w_fcat-fieldname = 'BBACKLOG'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(BBACKLOG)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 12.

  w_fcat-fieldname = 'MTDORDER'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(MTDORDER)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 13.

  w_fcat-fieldname = 'MTDSALES'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(MTDSALES)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 14.

  w_fcat-fieldname = 'MTDPICK'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(MTDPICK)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 15.

  w_fcat-fieldname = 'FIVAL'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(FIVAL)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 16.

  w_fcat-fieldname = 'CBACKLOG'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(CBACKLOG)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 17.

  w_fcat-fieldname = 'ERDAT'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Date Created(ERDAT)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 18.

  w_fcat-fieldname = 'WEEK'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Week(WEEK)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 19.

  w_fcat-fieldname = 'INCO1'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Part1(INCO1)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 20.

  w_fcat-fieldname = 'INCO2'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Part2(INCO2)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 21.

  w_fcat-fieldname = 'EDATU'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Schedule Date(EDATU)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 22.

  w_fcat-fieldname = 'STATUS'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Goods Issue(STATUS)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 23.

  w_fcat-fieldname = 'NETWR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(NETWR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 24.

  w_fcat-fieldname = 'BSTKD'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'PO Number(BSTKD)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 25.

  w_fcat-fieldname = 'LAND1'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Country(LAND1)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 26.

  w_fcat-fieldname = 'STPRS'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Standard Price(STPRS)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 27.

  w_fcat-fieldname = 'CHERNAM'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Last Changed By(CHERNAM)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 28.

  w_fcat-fieldname = 'CHERDAT'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Last Changed Date(CHERDAT)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 29.

  w_fcat-fieldname = 'CHTIME'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Last Changed Time(CHTIME)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 30.

  w_fcat-fieldname = 'REASON'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Reason for change(REASON)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 31.

  w_fcat-fieldname = 'MVGR3'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Contract Size(MVGR3)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 32.

  w_fcat-fieldname = 'BEZEI3'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Contract Size Description(BEZEI3)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 33.

  w_fcat-fieldname = 'MVGR4'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Product Type(MVGR4)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 34.

  w_fcat-fieldname = 'BEZEI4'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Product Type Description(BEZEI4)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

ENDFORM.                    " F_FIELDCAT

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&      Form  F_GRID_DISPLAY

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_grid_display .

*ALV Grid

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program       = 'ZBACKLOG1'

      i_callback_pf_status_set = 'SET_STATUS'

      i_callback_user_command  = 'I_CALLBACK_USER_COMMAND'

      i_buffer_active          = ' '

      is_layout                = ls_layout

      it_fieldcat              = t_fcat[]

      i_default                = ' '

      i_save                   = 'A'

    TABLES

      t_outtab                 = t_zbacklog.

  IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    " F_GRID_DISPLAY

1 ACCEPTED SOLUTION
Read only

Clemenss
Active Contributor
0 Likes
981

Hi,

do you set the refresh option in rs_selfield in the callback routine?

Regards

Clemens

Hello Experts,

I am facing a problem with Back button in ALV GRID.

* I am displaying ALV GRID by using a ZTABLE.

*After I displayed ALV GRID,and also I have a MODIFY,DELETE,INSERT(For Modifying,Deleting&Inserting the records which I checked by using a check box) in the application tool bar.And I have a REFRESH button on application tool bar.

*For MODIFY & DELETE I have separate screens.

*Now if I do any operations like MODIFY & INSERT and after that I am just pressing REFRESH for Updating the Modified & Inserted data.

*Now if I click on BACK button it is not going to Initial screen,it is going to the previous screen where I did the operations(MODIFY,INSERT) of Records.It means I have to press BACK button to go to initial screen so many times as how many operations(MODIFY,INSERT) I did previously for the records........****TOMORROW IS MY DEAD LINE FOR THIS REPORT*****Please help me out.

Your prompt reply will be highly appreciated!

Naveen.

*&---------------------------------------------------------------------*

*& Report  ZBACKLOG1

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zbacklog1 NO STANDARD PAGE HEADING.

*Type group

TYPE-POOLS : slis,

             icon.

*Tables

TABLES : zbacklog,

         sscrfields.

DATA:l_zbacklog TYPE zbacklog.

*Internal table declarations

DATA : t_zbacklog TYPE STANDARD TABLE OF zbacklog WITH HEADER LINE,

       wa_zbacklog TYPE zbacklog.

*ALV Declarations

DATA : t_fcat TYPE slis_t_fieldcat_alv,

       w_fcat TYPE slis_fieldcat_alv,

       ls_layout TYPE slis_layout_alv.

*Selection screen

SELECT-OPTIONS : s1 FOR zbacklog-vbeln,

                 s2 FOR zbacklog-posnr,

                 s3 FOR zbacklog-zdate,

                 s4 FOR zbacklog-kunnr,

                 s5 FOR zbacklog-name1,

                 s6 FOR zbacklog-matnr,

                 s7 FOR zbacklog-maktx,

                 s8 FOR zbacklog-kwmeng,

                 s9 FOR zbacklog-auart,

                 s10 FOR zbacklog-vdatu,

                 s11 FOR zbacklog-bbacklog,

                 s12 FOR zbacklog-mtdorder,

                 s13 FOR zbacklog-mtdsales,

                 s14 FOR zbacklog-mtdpick,

                 s15 FOR zbacklog-fival,

                 s16 FOR zbacklog-cbacklog,

                 s17 FOR zbacklog-erdat,

                 s18 FOR zbacklog-week,

                 s19 FOR zbacklog-inco1,

                 s20 FOR zbacklog-inco2,

                 s21 FOR zbacklog-edatu,

                 s22 FOR zbacklog-status,

                 s23 FOR zbacklog-netwr,

                 s24 FOR zbacklog-bstkd,

                 s25 FOR zbacklog-land1,

                 s26 FOR zbacklog-stprs,

                 s27 FOR zbacklog-chernam,

                 s28 FOR zbacklog-cherdat,

                 s29 FOR zbacklog-chtime,

                 s30 FOR zbacklog-reason,

                 s31 FOR zbacklog-mvgr3,

                 s32 FOR zbacklog-bezei3,

                 s33 FOR zbacklog-mvgr4,

                 s34 FOR zbacklog-bezei4.

*Extracting Data

START-OF-SELECTION.

  PERFORM f_fetch_data.

  PERFORM f_fieldcat.

  PERFORM f_grid_display.

*&---------------------------------------------------------------------*

*&      FORM  SET_STATUS

*&---------------------------------------------------------------------*

*            RT_EXTAB -> EXCLUDING TABLE

*----------------------------------------------------------------------*

FORM set_status USING rt_extab TYPE slis_t_extab.

  SET PF-STATUS 'PF_STATUS'.

ENDFORM.                    "SET_STATUS

*&---------------------------------------------------------------------*

*&      Form  I_CALLBACK_USER_COMMAND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->R_UCOMM      text

*      -->RS_SELFIELD  text

*----------------------------------------------------------------------*

FORM i_callback_user_command  USING r_ucomm LIKE sy-ucomm

                                  rs_selfield TYPE slis_selfield.

  CASE sy-ucomm.

    WHEN 'MODIFY'.

      DATA : l_line TYPE i.

      READ TABLE t_zbacklog INTO wa_zbacklog INDEX rs_selfield-tabindex.

      MOVE wa_zbacklog TO zbacklog.

      CALL SCREEN '3100'.

    WHEN 'DELETE'.

      READ TABLE t_zbacklog INTO wa_zbacklog INDEX rs_selfield-tabindex.

      DELETE zbacklog FROM wa_zbacklog.

      IF sy-subrc = 0.

        MESSAGE 'Data Deleted successfully, Please Refresh it' TYPE 'I'.

      ENDIF.

    WHEN 'INSERT'.

      READ TABLE t_zbacklog INTO wa_zbacklog INDEX rs_selfield-tabindex.

      MOVE wa_zbacklog TO zbacklog.

      CALL SCREEN '5000'.

    WHEN 'REFRESH'.

      FREE t_zbacklog[].

      FREE t_fcat[].

      PERFORM f_fetch_data.

      PERFORM f_fieldcat.

      PERFORM f_grid_display.

  ENDCASE.

ENDFORM.                    "I_CALLBACK_USER_COMMAND

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_5000  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE user_command_5000 INPUT.

  CASE sy-ucomm.

    WHEN 'SAVE'.

      SELECT SINGLE *  FROM zbacklog

        INTO l_zbacklog

        WHERE vbeln = zbacklog-vbeln

          AND posnr = zbacklog-posnr

          AND zdate = zbacklog-zdate.

      IF l_zbacklog NE zbacklog.

        zbacklog-chernam = sy-uname.

        zbacklog-cherdat = sy-datum.

        zbacklog-chtime  = sy-uzeit.

        MODIFY zbacklog.

        COMMIT WORK.

        IF sy-subrc = 0.

          MESSAGE 'Data saved successfully,Please Refresh it' TYPE 'I'.                    "Pop up box displays as message saved successfully

        ENDIF.

      ENDIF.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_5000  INPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_5000  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE status_5000 OUTPUT.

  SET PF-STATUS 'PF_STATUS3'.

ENDMODULE.                 " STATUS_5000  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  STATUS_3100  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE status_3100 OUTPUT.

  SET PF-STATUS 'PF-STATUS2'.

ENDMODULE.                 " STATUS_3100  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_3100  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE user_command_3100 INPUT.

  CASE sy-ucomm.

    WHEN 'SAVE'.

      SELECT SINGLE *  FROM zbacklog

        INTO l_zbacklog

        WHERE vbeln = zbacklog-vbeln

          AND posnr = zbacklog-posnr

          AND zdate = zbacklog-zdate.

      IF wa_zbacklog NE zbacklog.

        wa_zbacklog-chernam = sy-uname.

        wa_zbacklog-cherdat = sy-datum.

        wa_zbacklog-chtime  = sy-uzeit.

        MODIFY zbacklog FROM wa_zbacklog.

        COMMIT WORK.

        IF sy-subrc = 0.

          MESSAGE 'Data updated successfully,Please Refresh it' TYPE 'I'.                    "Pop up box displays as message saved successfully

        ENDIF.

      ENDIF.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.

      LEAVE PROGRAM.

    WHEN 'CANCEL'.

      LEAVE PROGRAM.

  ENDCASE.

  FREE  t_zbacklog.

ENDMODULE.                 " USER_COMMAND_3100  INPUT

*&---------------------------------------------------------------------*

*&      Form  F_FETCH_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_fetch_data .

  SELECT * FROM zbacklog INTO TABLE t_zbacklog

                      WHERE vbeln IN s1 AND

                      posnr IN s2 AND

                      zdate IN s3 AND

                      kunnr IN s4 AND

                      name1 IN s5 AND

                      matnr IN s6 AND

                      maktx IN s7 AND

                      kwmeng IN s8 AND

                      auart IN s9 AND

                      vdatu IN s10 AND

                      bbacklog IN s11 AND

                      mtdorder IN s12 AND

                      mtdsales IN s13 AND

                      mtdpick IN s14 AND

                      fival IN s15 AND

                      cbacklog IN s16 AND

                      erdat IN s17 AND

                      week IN s18 AND

                      inco1 IN s19 AND

                      inco2 IN s20 AND

                      edatu IN s21 AND

                      status IN s22 AND

                      netwr IN s23 AND

                      bstkd IN s24 AND

                      land1 IN s25 AND

                      stprs IN s26 AND

                      chernam IN s27 AND

                      cherdat IN s28 AND

                      chtime IN s29 AND

                      reason IN s30 AND

                      mvgr3 IN s31 AND

                      bezei3 IN s32 AND

                      mvgr4 IN s33 AND

                      bezei4 IN s34.

ENDFORM.                    " F_FETCH_DATA

*&---------------------------------------------------------------------*

*&      Form  F_FIELDCAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_fieldcat .

  ls_layout-colwidth_optimize = 'X'.

  w_fcat-col_pos = 0.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-fieldname = 'CHKBX'.

  w_fcat-checkbox = 'X'.

  w_fcat-edit = 'X'.

  w_fcat-outputlen = 2.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 1.

  w_fcat-fieldname = 'VBELN'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Document(VBELN)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 2.

  w_fcat-fieldname = 'POSNR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Item(POSNR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 3.

  w_fcat-fieldname = 'ZDATE'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Month Year(ZDATE)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 4.

  w_fcat-fieldname = 'KUNNR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Customer Number(KUNNR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 5.

  w_fcat-fieldname = 'NAME1'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Customer Name(NAME1)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 6.

  w_fcat-fieldname = 'MATNR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Material Number(MATNR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 7.

  w_fcat-fieldname = 'MAKTX'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Material Description(MAKTX)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 8.

  w_fcat-fieldname = 'KWMENG'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Order Quantity(KWMENG)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 9.

  w_fcat-fieldname = 'AUART'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Sales Document Type(AUART)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 10.

  w_fcat-fieldname = 'VDATU'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Delivery Date(VDATU)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 11.

  w_fcat-fieldname = 'BBACKLOG'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(BBACKLOG)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 12.

  w_fcat-fieldname = 'MTDORDER'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(MTDORDER)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 13.

  w_fcat-fieldname = 'MTDSALES'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(MTDSALES)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 14.

  w_fcat-fieldname = 'MTDPICK'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(MTDPICK)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 15.

  w_fcat-fieldname = 'FIVAL'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(FIVAL)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 16.

  w_fcat-fieldname = 'CBACKLOG'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(CBACKLOG)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 17.

  w_fcat-fieldname = 'ERDAT'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Date Created(ERDAT)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 18.

  w_fcat-fieldname = 'WEEK'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Week(WEEK)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 19.

  w_fcat-fieldname = 'INCO1'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Part1(INCO1)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 20.

  w_fcat-fieldname = 'INCO2'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Part2(INCO2)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 21.

  w_fcat-fieldname = 'EDATU'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Schedule Date(EDATU)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 22.

  w_fcat-fieldname = 'STATUS'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Goods Issue(STATUS)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 23.

  w_fcat-fieldname = 'NETWR'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Net Value(NETWR)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 24.

  w_fcat-fieldname = 'BSTKD'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'PO Number(BSTKD)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 25.

  w_fcat-fieldname = 'LAND1'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Country(LAND1)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 26.

  w_fcat-fieldname = 'STPRS'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Standard Price(STPRS)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 27.

  w_fcat-fieldname = 'CHERNAM'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Last Changed By(CHERNAM)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 28.

  w_fcat-fieldname = 'CHERDAT'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Last Changed Date(CHERDAT)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 29.

  w_fcat-fieldname = 'CHTIME'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Last Changed Time(CHTIME)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 30.

  w_fcat-fieldname = 'REASON'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Reason for change(REASON)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 31.

  w_fcat-fieldname = 'MVGR3'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Contract Size(MVGR3)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 32.

  w_fcat-fieldname = 'BEZEI3'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Contract Size Description(BEZEI3)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 33.

  w_fcat-fieldname = 'MVGR4'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Product Type(MVGR4)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

  w_fcat-col_pos = 34.

  w_fcat-fieldname = 'BEZEI4'.

  w_fcat-tabname = 'T_ZBACKLOG'.

  w_fcat-seltext_l = 'Product Type Description(BEZEI4)'.

  APPEND w_fcat TO t_fcat.

  CLEAR w_fcat.

ENDFORM.                    " F_FIELDCAT

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&      Form  F_GRID_DISPLAY

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_grid_display .

*ALV Grid

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program       = 'ZBACKLOG1'

      i_callback_pf_status_set = 'SET_STATUS'

      i_callback_user_command  = 'I_CALLBACK_USER_COMMAND'

      i_buffer_active          = ' '

      is_layout                = ls_layout

      it_fieldcat              = t_fcat[]

      i_default                = ' '

      i_save                   = 'A'

    TABLES

      t_outtab                 = t_zbacklog.

  IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    " F_GRID_DISPLAY

2 REPLIES 2
Read only

Clemenss
Active Contributor
0 Likes
982

Hi,

do you set the refresh option in rs_selfield in the callback routine?

Regards

Clemens

Read only

Former Member
0 Likes
981

Thank you Clemens Li..Issue resolved..I wrote like this..

when 'refresh'

perform f_fetch_data.

perform f_fieldcat'

rs_selfield-refresh = 'X'.