2014 Oct 16 10:01 PM
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
2014 Oct 16 11:13 PM
Hi,
do you set the refresh option in rs_selfield in the callback routine?
Regards
Clemens
Hi,
do you set the refresh option in rs_selfield in the callback routine?
Regards
Clemens
2014 Oct 16 11:13 PM
Hi,
do you set the refresh option in rs_selfield in the callback routine?
Regards
Clemens
2014 Oct 16 11:34 PM
Thank you Clemens Li..Issue resolved..I wrote like this..
when 'refresh'
perform f_fetch_data.
perform f_fieldcat'
rs_selfield-refresh = 'X'.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |