Application Development 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: 

pressing the BACK button goes back to the source code/SE38 editor.

aris_hidalgo
Contributor
0 Kudos

Hello experts,

I am confused as to why when I press the BACK button in my report goes back to the source code or SE38 screen. I want it that when I press the back button, it goes to the selection-screen. How do I do this guys?

Again, thanks a lot and have a nice day!

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

I think this should work just write-

LEAVE TO TRANSACTION <name of ur report TXN>.

or

CALL TRANSACTION <name of ur report TXN>.

Thanks

Seema.

18 REPLIES 18

Former Member
0 Kudos

Hi Viray,

The back button takes you to the previous screen.

If u run the report from se38 editor and you clikc the back bt from the report it will take you to se38 editor.

So as the case of selection screen.

Rgds,

Jothi.

Former Member
0 Kudos

That will be the case, if you're executing the program from SE38. Try creating a Tcode for your program and execute it using the TCode.

However, if you are executing a dialog program you should catch the sy-ucomm and do some case statements with it.

0 Kudos

Hi guys,

This is not the case before. After I modified my report to have 2 selection-screen(depending on the status of the user)it behaved this way. Any help would be appreciated. Thanks a lot guys and have a nice day!

0 Kudos

Hi,

If this is the case.

Then u define a screen number to ur selection-screen and call that selection-screen.

Then u catch the sy-ucomm and check if 'back' is pressed then go to that screen .

Hope it helps..

Cheers,

Simha.

0 Kudos

Hi Narasimha,

How do I do that?how do I capture the value of BACK? Thanks again!

0 Kudos

I am confused here, by default the BACK button will take you to the selection screen and not the source code. Have you attached your own PF-STATUS here.

If yes can you post the code here, you might be using LEAVE PROGRAM somewhere.

Regards,

Ravi

Former Member
0 Kudos

Hi Viray,

This code works. Try it out.

MODULE pai INPUT.

if sy-ucomm = 'BACK'.

LEAVE TO SCREEN 0.

endif.

ENDMODULE.

Mark useful answers.

Regards,

Tanuja.

Message was edited by: Tanuja Sarraju

Message was edited by: Tanuja Sarraju

Former Member
0 Kudos

Hi,

I think this should work just write-

LEAVE TO TRANSACTION <name of ur report TXN>.

or

CALL TRANSACTION <name of ur report TXN>.

Thanks

Seema.

0 Kudos

Hi guys,

Below is my code:

REPORT zdealer_contacts NO STANDARD PAGE HEADING

LINE-COUNT 0

LINE-SIZE 255

MESSAGE-ID zz.

TYPE-POOLS: slis.

*----


  • Data Dictionary Tables

*----


TABLES: zts0001,

zsoemailid,

kna1,

zts_stpgeoloc.

*----


  • Includes

*----


*INCLUDE zun_globe_header. " Globe Telecom Report Header

*----


  • Structures, internal tables and data declarations

*----


TYPES: BEGIN OF t_upload,

kunnr LIKE zts0001-kunnr,

zaddress(100),

zcperson(30),

zcnumber(18),

END OF t_upload.

TYPES: BEGIN OF t_error,

kunnr LIKE zts0001-kunnr,

zaddress(100),

zcperson(30),

zcnumber(18),

END OF t_error.

TYPES: BEGIN OF t_kna1,

name1 LIKE kna1-name1,

END OF t_kna1.

TYPES: BEGIN OF t_zts0001,

kunnr LIKE zts0001-kunnr,

cdseq LIKE zts0001-cdseq,

zaddress LIKE zts0001-zaddress,

zcperson LIKE zts0001-zcperson,

zcnumber LIKE zts0001-zcnumber,

zactivated LIKE zts0001-zactivated,

name1 LIKE kna1-name1,

END OF t_zts0001.

DATA: it_upload TYPE STANDARD TABLE OF t_upload WITH HEADER LINE,

it_error TYPE STANDARD TABLE OF t_error WITH HEADER LINE,

it_kna1 TYPE STANDARD TABLE OF t_kna1 WITH HEADER LINE,

it_zts0001 TYPE STANDARD TABLE OF t_zts0001 WITH HEADER LINE.

DATA: it_ztstemp LIKE zts0001 OCCURS 100 WITH HEADER LINE,

it_ztstemp_gloc LIKE zts_stpgeoloc OCCURS 100 WITH HEADER LINE.

*AVH - start of insertion - 04/18/06

FIELD-SYMBOLS: <fs_zts0001> LIKE LINE OF it_zts0001.

**ALV Declarations

DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,

g_repid LIKE sy-repid,

gs_layout TYPE slis_layout_alv,

gt_list_top_of_page TYPE slis_t_listheader,

gt_events TYPE slis_t_event WITH HEADER LINE,

gt_print TYPE slis_print_alv.

CONSTANTS: gc_top TYPE slis_formname VALUE 'TOP_OF_PAGE',

gc_topsum TYPE slis_formname VALUE 'TOP_OF_LIST',

gc_ucomm TYPE slis_formname VALUE 'USER_COMMAND'.

*AVH - end of insertion

*----


  • Variables

*----


DATA: v_kunnr LIKE zts0001-kunnr,

v_title(100) TYPE c,

gc_kunnr(06) TYPE c,

v_compflag(1) TYPE c,

v_flag(1).

*----


  • Selection Screen

*----


*AVH - start of modification - 06/27/06

*if user is controller, selection-screen 500 will be called else,

*selection-scren 1500 will be called.

*selection-screen for controllers

SELECTION-SCREEN BEGIN OF SCREEN 500.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: pr_upld RADIOBUTTON GROUP grp2 USER-COMMAND ucomm1.

SELECTION-SCREEN COMMENT 2(20) text-007 FOR FIELD pr_upld.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 03(15) text-a11 FOR FIELD p_flnme.

PARAMETERS: p_flnme LIKE rlgrap-filename DEFAULT 'C:\'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: pr_list1 RADIOBUTTON GROUP grp2.

SELECTION-SCREEN COMMENT 2(7) text-003 FOR FIELD pr_list1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN END OF SCREEN 500.

*selection-screen for non-controllers.

SELECTION-SCREEN BEGIN OF SCREEN 1500.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(22) text-002 FOR FIELD p_dcode.

PARAMETERS: p_dcode LIKE vbak-kunnr,

p_name1 LIKE kna1-name1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: pr_list2 RADIOBUTTON GROUP grp USER-COMMAND ucomm2.

SELECTION-SCREEN COMMENT 2(7) text-003 FOR FIELD pr_list2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: pr_add RADIOBUTTON GROUP grp.

SELECTION-SCREEN COMMENT 2(3) text-005 FOR FIELD pr_add.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS: pr_edit RADIOBUTTON GROUP grp.

SELECTION-SCREEN COMMENT 2(4) text-006 FOR FIELD pr_edit.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 03(20) text-a12 FOR FIELD p_code.

PARAMETERS: p_code LIKE zts0001-cdseq.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN END OF SCREEN 1500.

INITIALIZATION.

SELECT SINGLE kunnr comp_flag INTO (gc_kunnr,v_compflag)

FROM zsoemailid

WHERE bname = sy-uname.

IF sy-subrc <> 0.

MESSAGE i000 WITH

'You are not authorised to use this transaction'.

LEAVE PROGRAM.

ENDIF.

IF v_compflag = 'X'.

CALL SCREEN 500.

ELSE.

CALL SCREEN 1500.

ENDIF.

*AVH - end of modification

*----


AT SELECTION-SCREEN OUTPUT.

*----


PERFORM authority_check.

      • added by derick 050125

**-changed by weng rulloda 06012005

*AVH - start of insertion - 05/22/06

*no need to get value of kunnr from global memory

*since gc_kunnr would be filled via the select statement below

  • GET PARAMETER ID 'KUN' FIELD gc_kunnr.

*AVH - end of insertion

p_dcode = gc_kunnr.

*AVH - start of insertion - 05/22/06

**fetch the respective description of dealer based from p_dcode

**and put in parameter p_name1

SELECT SINGLE name1 FROM kna1

INTO p_name1

WHERE kunnr = p_dcode.

*AVH - end of insertion

*AVH - start of insertion - 05/22/06

**selection-screen parameters is based if user is controller or not.

**created new selection-screen conditions based from orig. code

v_kunnr = gc_kunnr.

LOOP AT SCREEN.

IF screen-name = 'P_DCODE'.

screen-input = '0'.

screen-output = '1'.

MODIFY SCREEN.

ELSEIF screen-name = 'P_NAME1'.

screen-input = '0'.

screen-output = '1'.

MODIFY SCREEN.

ELSEIF screen-name = 'P_CODE'.

screen-input = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

IF pr_list2 = 'X' OR pr_add = 'X'.

LOOP AT SCREEN.

IF screen-name = 'P_CODE'.

screen-input = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSEIF pr_edit = 'X'.

LOOP AT SCREEN.

IF screen-name = 'P_CODE'.

screen-input = '1'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

IF pr_list1 = 'X'.

LOOP AT SCREEN.

IF screen-name = 'P_FLNME'.

screen-input = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

*AVH - end of modification

*----


AT SELECTION-SCREEN.

*----


CHECK sy-ucomm = 'UCOMM1' OR sy-ucomm = 'UCOMM2'.

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flnme.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flnme.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

mask = ',.,..'

mode = 'O'

title = 'File Selection'

IMPORTING

filename = p_flnme

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_code.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_code.

DATA : BEGIN OF itab_list OCCURS 0,

kunnr LIKE zts0001-kunnr,

cdseq LIKE zts0001-cdseq,

zaddress LIKE zts0001-zaddress,

zcperson LIKE zts0001-zcperson,

zcnumber LIKE zts0001-zcnumber,

END OF itab_list.

DATA: tab_fields LIKE dfies OCCURS 0 WITH HEADER LINE,

tab_valuetab(100) TYPE c OCCURS 0 WITH HEADER LINE.

DATA: tab_dynnr TYPE sy-dynnr.

DATA: BEGIN OF tab_return_tab OCCURS 0.

INCLUDE STRUCTURE ddshretval.

DATA: END OF tab_return_tab.

DATA: progname LIKE sy-repid.

CLEAR: tab_valuetab[], tab_fields[].

SELECT kunnr cdseq zaddress zcperson zcnumber

INTO CORRESPONDING FIELDS OF TABLE itab_list

FROM zts0001

WHERE kunnr = v_kunnr.

tab_dynnr = sy-dynnr.

tab_fields-tabname = 'ZTS0001'.

tab_fields-fieldname = 'KUNNR'.

APPEND tab_fields.

tab_dynnr = sy-dynnr.

tab_fields-tabname = 'ZTS0001'.

tab_fields-fieldname = 'CDSEQ'.

APPEND tab_fields.

tab_fields-tabname = 'ZTS0001'.

tab_fields-fieldname = 'ZADDRESS'.

APPEND tab_fields.

tab_fields-tabname = 'ZTS0001'.

tab_fields-fieldname = 'ZCPERSON'.

APPEND tab_fields.

tab_fields-tabname = 'ZTS0001'.

tab_fields-fieldname = 'ZCNUMBER'.

APPEND tab_fields.

LOOP AT itab_list.

tab_valuetab = itab_list-kunnr.

APPEND tab_valuetab.

tab_valuetab = itab_list-cdseq.

APPEND tab_valuetab.

tab_valuetab = itab_list-zaddress.

APPEND tab_valuetab.

tab_valuetab = itab_list-zcperson.

APPEND tab_valuetab.

tab_valuetab = itab_list-zcnumber.

APPEND tab_valuetab.

ENDLOOP.

progname = sy-repid.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'CDSEQ'

dynpprog = progname

dynpnr = '1000'

dynprofield = 'P_CODE'

TABLES

value_tab = tab_valuetab

field_tab = tab_fields

return_tab = tab_return_tab

EXCEPTIONS

OTHERS = 0.

*----


START-OF-SELECTION.

*----


IF pr_edit = 'X' AND p_code IS INITIAL.

MESSAGE i008 WITH 'Please specify a ship-to code.'.

LEAVE LIST-PROCESSING.

ENDIF.

PERFORM get_data.

IF pr_upld = 'X'.

PERFORM upload_file.

ELSEIF pr_add = 'X'.

PERFORM add_record.

ELSEIF pr_edit = 'X'.

PERFORM edit_record.

ELSEIF pr_list1 = 'X' OR pr_list2 = 'X'.

PERFORM display_alv.

  • PERFORM display_records.

ENDIF.

*----


END-OF-SELECTION.

*----


&----


*& Form authority_check

&----


FORM authority_check.

CALL FUNCTION 'AUTHORITY_CHECK'

EXPORTING

field1 = 'TCD' "MDM

object = 'S_TCODE'

user = sy-uname

value1 = 'ZMEN'

  • VALUE3 = '01' MDM

EXCEPTIONS

user_dont_exist = 1

user_is_authorized = 2

user_not_authorized = 3

user_is_locked = 4

OTHERS = 5.

IF sy-subrc NE 2.

**-added by weng 04/28/2006

**-if user is not authorized to use dealer portal check if he is

**- authorized to use the tcode ZDCONTACT

CALL FUNCTION 'AUTHORITY_CHECK'

EXPORTING

field1 = 'TCD' "MDM

object = 'S_TCODE'

user = sy-uname

value1 = 'ZDCONTACT'

  • VALUE3 = '01' MDM

EXCEPTIONS

user_dont_exist = 1

user_is_authorized = 2

user_not_authorized = 3

user_is_locked = 4

OTHERS = 5.

**-weng

IF sy-subrc NE 2.

MESSAGE i000 WITH

'You are not authorised to use this transaction'.

LEAVE PROGRAM.

ENDIF.

ENDIF.

ENDFORM. " AUTHORITY_CHECK

&----


*& Form get_data

&----


FORM get_data.

*AVH - start of insertion - 04/19/06

**records selected from table zts0001 that has been marked as

**activated will be fetched otherwise, ignore.

IF v_kunnr IS INITIAL.

SELECT * INTO CORRESPONDING FIELDS OF TABLE it_zts0001

FROM zts0001.

ELSEIF v_compflag = 'X'.

SELECT * INTO CORRESPONDING FIELDS OF TABLE it_zts0001

FROM zts0001.

ELSE.

SELECT * INTO CORRESPONDING FIELDS OF TABLE it_zts0001

FROM zts0001

WHERE kunnr = v_kunnr.

ENDIF.

*AVH - start of insertion - 05/24/06

**fetch name based from kunnr and put in itab

LOOP AT it_zts0001 ASSIGNING <fs_zts0001>.

SELECT SINGLE name1 FROM kna1

INTO <fs_zts0001>-name1

WHERE kunnr = <fs_zts0001>-kunnr.

ENDLOOP.

*AVH - end of insertion

ENDFORM. " get_data

&----


*& Form Upload_file

&----


FORM upload_file.

DATA: lv_seq(5) TYPE n,

lv_ctr(5) TYPE c,

lv_kunnr LIKE it_upload-kunnr.

v_title = 'Upload from File'.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = p_flnme

filetype = 'DAT'

TABLES

data_tab = it_upload

EXCEPTIONS

OTHERS = 1.

IF sy-subrc <> 0.

MESSAGE i008 WITH 'File does not exist.'.

STOP.

ENDIF.

CHECK sy-subrc EQ 0.

DELETE it_upload

WHERE zaddress EQ space

AND zcperson EQ space

AND zcnumber EQ space.

SORT it_zts0001 BY kunnr ASCENDING cdseq DESCENDING.

SORT it_upload BY kunnr ASCENDING.

LOOP AT it_upload.

lv_kunnr = it_upload-kunnr.

AT NEW kunnr.

SELECT SINGLE kunnr FROM zsoemailid

INTO lv_kunnr

WHERE kunnr = it_upload-kunnr.

  • AVH - start of insertion - 06/30/06

  • if it_upload-kunnr is not found in table ZSOEMAILID, it will

  • not be included in the upload.

IF sy-subrc <> 0.

DELETE it_upload.

CLEAR it_upload.

CONTINUE.

ENDIF.

  • AVH - end of insertion

READ TABLE it_zts0001 WITH KEY kunnr = lv_kunnr.

IF sy-subrc EQ 0.

lv_seq = it_zts0001-cdseq.

ELSE.

CLEAR lv_seq.

ENDIF.

ENDAT.

IF it_upload-zaddress IS INITIAL.

MOVE-CORRESPONDING it_upload TO it_error.

APPEND it_error.

CLEAR it_error.

ELSE.

REPLACE '"' WITH '' INTO it_upload-zaddress.

REPLACE '"' WITH '' INTO it_upload-zaddress.

REPLACE '"' WITH '' INTO it_upload-zcperson.

REPLACE '"' WITH '' INTO it_upload-zcperson.

CONDENSE it_upload-zaddress.

CONDENSE it_upload-zcperson

.

ADD 1 TO lv_seq.

MOVE: it_upload-kunnr TO it_ztstemp-kunnr,

lv_seq TO it_ztstemp-cdseq,

it_upload-zaddress TO it_ztstemp-zaddress,

it_upload-zcperson TO it_ztstemp-zcperson,

it_upload-zcnumber TO it_ztstemp-zcnumber,

'X' TO it_ztstemp-zactivated,

sy-uname TO it_ztstemp-zcreated_by,

sy-datum TO it_ztstemp-zchanged_date.

MOVE-CORRESPONDING it_ztstemp TO it_ztstemp_gloc.

APPEND: it_ztstemp, it_ztstemp_gloc.

CLEAR: it_ztstemp, it_ztstemp_gloc.

ENDIF.

ENDLOOP.

IF NOT it_ztstemp[] IS INITIAL.

INSERT zts0001 FROM TABLE it_ztstemp.

INSERT zts_stpgeoloc FROM TABLE it_ztstemp_gloc.

WRITE:/ 'List of Records Uploaded.' COLOR 1 INTENSIFIED ON.

FORMAT COLOR 1 INTENSIFIED OFF.

WRITE:/(020) 'Dealer Code' CENTERED,

(007) 'Code' CENTERED,

(100) 'Address',

(030) 'Contact Person' CENTERED,

(018) 'Contact Number' CENTERED.

FORMAT COLOR OFF.

WRITE:/(179) sy-uline.

DESCRIBE TABLE it_ztstemp LINES lv_ctr.

SORT it_ztstemp BY kunnr cdseq.

LOOP AT it_ztstemp.

WRITE:/(020) it_ztstemp-kunnr,

(007) it_ztstemp-cdseq,

(100) it_ztstemp-zaddress,

(030) it_ztstemp-zcperson,

(018) it_ztstemp-zcnumber.

ENDLOOP.

SKIP 1.

WRITE:/ 'TOTAL :', lv_ctr.

ENDIF.

IF NOT it_error[] IS INITIAL.

SKIP 2.

FORMAT COLOR 1 INTENSIFIED OFF.

WRITE:/(020) 'Dealer Code' CENTERED,

(030) 'Contact Person' CENTERED,

(018) 'Contact Number' CENTERED.

FORMAT COLOR OFF.

WRITE:/(070) sy-uline.

DESCRIBE TABLE it_error LINES lv_ctr.

SORT it_error BY kunnr zcperson.

LOOP AT it_error.

WRITE:/ 'With No Address.' COLOR 6 INTENSIFIED ON.

WRITE:/(020) it_error-kunnr,

(030) it_error-zcperson,

(018) it_error-zcnumber.

ENDLOOP.

SKIP 1.

WRITE:/ 'TOTAL :', lv_ctr.

ENDIF.

ENDFORM. " Upload_file

&----


*& Form add_record

&----


FORM add_record.

v_title = ''.

IF NOT v_kunnr IS INITIAL.

SUBMIT zdealer_contacts_add_edit AND RETURN

WITH p_kunnr = v_kunnr

WITH p_name1 = p_name1 "AVH

WITH p_cdseq = space

WITH p_flag = 'A'

WITH p_addr = it_zts0001-zaddress

WITH p_pers = it_zts0001-zcperson

WITH p_numb = it_zts0001-zcnumber

VIA SELECTION-SCREEN.

ENDIF.

ENDFORM. " add_record

&----


*& Form edit_record

&----


FORM edit_record.

v_title = ''.

READ TABLE it_zts0001 WITH KEY kunnr = v_kunnr

cdseq = p_code.

IF sy-subrc EQ 0.

SUBMIT zdealer_contacts_add_edit AND RETURN

WITH p_kunnr = v_kunnr

WITH p_name1 = p_name1 "AVH

WITH p_cdseq = p_code

WITH p_flag = 'E'

WITH p_addr = it_zts0001-zaddress

WITH p_pers = it_zts0001-zcperson

WITH p_numb = it_zts0001-zcnumber

VIA SELECTION-SCREEN.

ELSE.

MESSAGE i008 WITH 'No record found.'.

ENDIF.

ENDFORM. " edit_record

&----


*& Form display_records

&----


*FORM display_records.

*

  • IF NOT it_zts0001[] IS INITIAL.

  • v_title = 'List of Dealer Contacts'.

*

  • FORMAT COLOR 1 INTENSIFIED OFF.

  • WRITE:/(020) 'Customer Number' CENTERED,

  • (007) 'Code' CENTERED,

  • (100) 'Address',

  • (030) 'Contact Person' CENTERED,

  • (018) 'Contact Number' CENTERED.

  • FORMAT COLOR OFF.

  • WRITE:/(179) sy-uline.

  • SORT it_zts0001 BY kunnr cdseq.

  • LOOP AT it_zts0001.

  • WRITE:/(020) it_zts0001-kunnr,

  • (007) it_zts0001-cdseq,

  • (100) it_zts0001-zaddress,

  • (030) it_zts0001-zcperson,

  • (018) it_zts0001-zcnumber.

  • ENDLOOP.

  • ELSE.

  • MESSAGE i008 WITH 'No records to display.'.

  • ENDIF.

*

*ENDFORM. " display_records

&----


*& Form display_alv

&----


FORM display_alv.

SORT it_zts0001 BY kunnr cdseq.

PERFORM f_build_layout USING gs_layout.

PERFORM f_init_fieldcat USING gt_fieldcat[].

PERFORM f_init_events USING 'TOP' gt_events[].

g_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_top_of_page = 'TOP_OF_PAGE'

  • i_callback_user_command = 'USER_COMMAND'

is_layout = gs_layout

it_fieldcat = gt_fieldcat[]

  • it_events = gt_events[]

i_save = 'X'

  • it_sort = gt_sort

TABLES

t_outtab = it_zts0001[]

EXCEPTIONS

program_error = 1

OTHERS = 2.

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. " DISPLAY_ALV

----


  • FORM top_of_page *

----


  • ........ *

----


FORM top_of_page.

*ALV Header declarations

DATA: t_header TYPE slis_t_listheader,

wa_header TYPE slis_listheader,

t_line LIKE wa_header-info,

lv_title(60),

lv_user(60),

lv_date(10),

lv_time(10),

lv_time_n_date(30),

lv_dcode_n_name(150),

lv_dlr_n_desc(100),

ld_lines TYPE i,

ld_linesc(10) TYPE c.

  • Title

CLEAR: lv_title, wa_header.

MOVE sy-title TO lv_title.

wa_header-typ = 'H'.

wa_header-info = lv_title.

APPEND wa_header TO t_header.

CLEAR wa_header.

  • User

CLEAR: lv_user, wa_header.

CONCATENATE: 'Generated by:' sy-uname

INTO lv_user SEPARATED BY space.

wa_header-typ = 'A'.

wa_header-info = lv_user.

APPEND wa_header TO t_header.

CLEAR wa_header.

*Date and time

CLEAR: lv_date, lv_time.

WRITE: sy-datum TO lv_date MM/DD/YYYY,

sy-uzeit TO lv_time USING EDIT MASK '__:__:__'.

CONCATENATE: 'Generated on:' lv_date lv_time

INTO lv_time_n_date SEPARATED BY space.

wa_header-typ = 'A'.

wa_header-info = lv_time_n_date.

APPEND wa_header TO t_header.

CLEAR wa_header.

IF NOT v_kunnr IS INITIAL AND v_compflag IS INITIAL.

*Dealer code and name

CONCATENATE: 'Dealer:' p_dcode p_name1

INTO lv_dcode_n_name SEPARATED BY space.

wa_header-typ = 'A'.

wa_header-info = lv_dcode_n_name.

APPEND wa_header TO t_header.

CLEAR wa_header.

ENDIF.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = t_header.

ENDFORM. " TOP_OF_PAGE

----


  • FORM f_build_layout *

----


  • ........ *

----


  • --> %LAYOUT *

----


FORM f_build_layout USING %layout TYPE slis_layout_alv.

%layout-zebra = 'X'.

%layout-colwidth_optimize = 'X'.

ENDFORM. " F_BUILD_LAYOUT

----


  • FORM f_init_fieldcat *

----


  • ........ *

----


  • --> %FIELDCAT *

----


FORM f_init_fieldcat USING %fieldcat TYPE slis_t_fieldcat_alv.

DATA: lc_fieldcat TYPE slis_fieldcat_alv.

CLEAR lc_fieldcat.

DEFINE m_field.

add 1 to lc_fieldcat-col_pos.

lc_fieldcat-fieldname = &1.

lc_fieldcat-outputlen = &2.

lc_fieldcat-seltext_l = &3.

lc_fieldcat-do_sum = &4.

lc_fieldcat-inttype = &5.

lc_fieldcat-hotspot = &6.

lc_fieldcat-fix_column = &7.

lc_fieldcat-ddictxt = 'L'.

lc_fieldcat-no_zero = 'X'.

append lc_fieldcat to %fieldcat.

END-OF-DEFINITION.

IF v_kunnr IS INITIAL.

m_field 'KUNNR' '5' 'Dealer Code' '' '' '' ''.

ENDIF.

IF v_compflag = 'X'.

m_field 'KUNNR' '5' 'Dealer Code' '' '' '' ''.

ENDIF.

IF v_compflag = 'X'.

m_field 'NAME1' '40' 'Dealer Name' '' '' '' ''.

ENDIF.

m_field 'CDSEQ' '05' 'Ship-To Code' '' '' '' ''.

m_field 'ZADDRESS' '100' 'Address' '' '' '' ''.

m_field 'ZCPERSON' '30' 'Contact Person' '' '' '' ''.

m_field 'ZCNUMBER' '18' 'Contact Number' '' '' '' ''.

IF v_kunnr IS INITIAL.

m_field 'NAME1' '40' 'Dealer Name' '' '' '' ''.

ENDIF.

m_field 'ZACTIVATED' '1' 'Activated' '' '' '' ''.

ENDFORM. " f_init_fieldcat

----


  • FORM f_init_events *

----


  • ........ *

----


  • --> P_TYPE *

  • --> %EVENTS *

----


FORM f_init_events USING p_type CHANGING %events TYPE slis_t_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = %events

EXCEPTIONS

list_type_wrong = 1

OTHERS = 2.

IF sy-subrc = 0.

PERFORM f_build_events USING: slis_ev_user_command.

IF p_type = 'TOP'.

PERFORM f_build_events USING: gc_top.

  • ELSEIF p_type = 'SUM'.

  • PERFORM f_build_events_sum USING: gc_topsum.

ENDIF.

ELSE.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " F_INIT_EVENTS

----


  • FORM f_build_events *

----


  • ........ *

----


  • --> %EVENT *

----


FORM f_build_events USING %event.

READ TABLE gt_events WITH KEY name = %event.

IF sy-subrc = 0.

MOVE: %event TO gt_events-form.

  • MOVE 'USER_COMMAND' TO gt_events-form.

MODIFY gt_events INDEX sy-tabix.

ENDIF.

ENDFORM. " F_BUILD_EVENTS

0 Kudos

Viray,

I couldn't see a PF-STATUS in your program. Can you try by defining PF-STATUS and give function code for the back button. I believe this way you can control your back button click in selection screen. Define that in initilization event.

I'm not able to do it since you are using custom tables.

rgds,

TM.

0 Kudos

Hi viraylab,

1. First of all we should use

CALL SELECTION-SCREEN 500.

2. Secondly, i think, it will behave like this only,

bcos we

CALL

from intialization,

and after BACK,

it comes back to intialization (just after CALL),

then there is no further processing.

regards,

amit m.

0 Kudos

Hi guys,

So is there any hope for my program?Thanks again!

0 Kudos

Viray,

Can you try by delacring <b>SET PF-STATUS 'xxx'</b> in your initilization event and then in BACK button- user command, use the <b>CALL SELECTION SCREEN 500</b>. I believe this should satisfy your requirement.

Rgds,

TM.

0 Kudos

Hi,

Just create a pf-status and for the screens you developed as selection screens and write the PAI modules for those.

for ex.

module PAI_500.

case sy-ucomm.

when 'BACK'.

LEAVE TO SCREEN 500.

endcase.

endmodule.

Offcourse,

you will have to write the PBO module to set

the respective pf statuses.

ex.

MODULE PBO_500.

set pf-status 'XXX'.

ENDMODULE.

Hope it helps.

Regards,

Shashank

0 Kudos

Hi again,

I declared a PF-status for my report and named the back button simply as 'BACK'. Can you guys tell me the code for this?

Please note that I have 2 selection-screens. Again, thank you guys and have a nice day!

0 Kudos

Hi again,

1. U can try like this.

2. just copy paste.

3. there are 3 screens,

1000 - default , and simply for definition purpose

500

1500

4.

report abc.

*----


1000 - SIMPLY

PARAMETERS : just(1) TYPE C.

*----


500

selection-screen begin of screen 500.

parameters : BUKRS LIKE T001-BUKRS.

selection-screen end of screen 500.

*----


1500

selection-screen begin of screen 1500.

parameters : b1500(20) type c.

selection-screen end of screen 1500.

*----


INITIALIZATION.

IF SY-DYNNR = '1000'.

              • YOUR IF CONDITION FOR 500, 1500

LEAVE TO SCREEN 500.

              • YOUR ENDIF

ENDIF.

*----


start-of-selection.

write 😕 'amit'.

regards,

amit m.

0 Kudos

Hi Shashank,

Will that work in standard/classic reports?

Thanks again!

0 Kudos

Viray,

Copy and paste this code and use this logic.

Rgds,

TM.

REPORT ztest_tm.


PARAMETERS: pr_upld RADIOBUTTON GROUP grp2 USER-COMMAND ucomm1.
PARAMETERS: pr_upld2 RADIOBUTTON GROUP grp2.

SELECTION-SCREEN BEGIN OF SCREEN 1500.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(22) text-002 FOR FIELD p_dcode.
PARAMETERS: p_dcode LIKE vbak-kunnr,
            p_name1 LIKE kna1-name1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 1500.

INITIALIZATION.
  SET PF-STATUS 'ABC'.

AT SELECTION-SCREEN.

  IF sy-ucomm = 'BACK'.
    CALL SELECTION-SCREEN '1500'.
  ENDIF.