Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7202593
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2007-12-20 14:31:27

自己写的Report,用到了自己定义的Screen,如何在任何一个Screen直接返回选择界面(1000)?
 
可以用:      SET SCREEN 0.
              LEAVE SCREEN.
或者  :      LEAVE TO SCREEN 0 .
 
但是,有时候不是返回选择界面,而是返回了调用这个Screen的地方。
这是因为:
LEAVE TO SCREEN scr. :Leaves the current screen and processes the screen scr.

If scr = 0, processing in CALL mode continues after the CALL SCREEN statement. Otherwise, you branch to the transaction selection screen.

所以,如果100调用200,不要用CALL,用Leave to screen 200 .就可以在200直接返回1000了。
 
 
下面是一个例子:
REPORT z_scm_ftp_manager NO STANDARD PAGE HEADING .
DATA: ok_code LIKE sy-ucomm .
SELECT-OPTIONS:
      s_date FOR sy-datum DEFAULT sy-datum .
START-OF-SELECTION.
  CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE ok_code.
    WHEN 'BACK'.
*      SET SCREEN 0.
*      LEAVE SCREEN.
      LEAVE TO SCREEN 0 .
    WHEN 'CALLSCR'.
      CALL SCREEN 200.
    WHEN 'LEAVESCR'.
      LEAVE TO SCREEN 200.

  ENDCASE.
  CLEAR ok_code .
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'MAIN100'.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
  CASE ok_code.
    WHEN 'BACKBTN'.
      SET SCREEN 0.
      LEAVE SCREEN.
  ENDCASE.
  CLEAR ok_code .
ENDMODULE.                 " USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
  SET PF-STATUS space.
ENDMODULE.                 " STATUS_0200  OUTPUT
阅读(8447) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

yuruifengbenben2017-10-23 10:13:11

yuruifengbenben:老哥,为什么我输入LEAVE TO SCREEN 200系统就直接dump掉了

系统报错说200屏幕不存在

回复 | 举报

yuruifengbenben2017-10-23 10:12:40

老哥,为什么我输入LEAVE TO SCREEN 200系统就直接dump掉了

qdbarry2009-10-28 12:27:50

谢谢补充!

chinaunix网友2009-10-28 09:55:14

补充一下,Call screen是转到另一个screen Layer(屏幕层次),所以scr=0会回到这个屏幕层次的开头处,而Leave to screen是跳跃,跳过某个屏幕执行另一个屏幕的意思,这个屏幕序列仍然是在一个层上的,所以scr=0会回到这个层的最开始,也就是选择屏幕1000。 BC410里是这个意思。

flfn2008-01-19 14:59:32

哇,又学了一个~