二维码

标准屏幕嵌套子屏幕Subscreen

Twilight发表于 2014-12-04 15:50Twilight 最后回复于 2015-03-06 10:11 [复制链接] 12013 2

屏幕Subscreen主要是嵌套在normal screen中,用来展示数据数据的,一个normal screen可以嵌套多个Subscreen。

subscreen需要注意一下几点:
  • 在subscreen中不能设置GUI status
  • 在subscreen中不能定义OKCODE
  • Sub screen不能再嵌套Sub screen
  • Sub screen不能包含AT EXIT-COMMAND

多个子屏幕:
  • 在normal screen的同一area区域,可以通过动态的调用屏幕号来call不同的sub screen
  • 在任一时间点只能normal screen的同一area区域只能call一个subscreen

我们通过2个子屏幕来演示这种场景
一、se38建立一个程序,然后创建屏幕
1、Normal screen (0100) -> Customer Number
Sub screens 1.jpg
选择normal screen类型
Sub screens 4.jpg
“格式”中添加KNA1-KUNNR
Sub screens 5.jpg
“格式”中添加subscreen区域,命名SUB
Sub screens 6.jpg
“格式”中添加按钮DISPLAY、EXIT,注意功能码不要忘了
定义OK_CODE
Sub screens 7.jpg
100screen逻辑流

2、Subscreen (0110)->  Bank Account Number
Sub screens 2.jpg
选择sub screen类型
Sub screens 11.jpg
“格式”中添加KNBK-BANKN
添加一个box,命名sub1
逻辑流:
  1. PROCESS BEFORE OUTPUT.
  2.   MODULE GET_DATA_0110.
  3. *
  4. PROCESS AFTER INPUT.
  5.   MODULE USER_COMMAND_0110.
复制代码

3、Subscreen(0120)-> Name and Country Details
Sub screens 3.jpg
选择sub screen类型
“格式”中添加KNA1-LAND1、KNA1-NAME1
添加一个box,命名sub2
逻辑流:
  1. PROCESS BEFORE OUTPUT.
  2.   MODULE GET_DATA_0120.
  3. *
  4. PROCESS AFTER INPUT.
  5. * MODULE USER_COMMAND_0120.
复制代码

二、程序代码
  1. TABLES:kna1,knbk.
  2. DATA :
  3.     kunnr TYPE kna1-kunnr,
  4.     bankn TYPE knbk-bankn,
  5.     name1 TYPE kna1-name1,
  6.     regio TYPE kna1-regio.
  7. DATA:
  8.    screen  TYPE n LENGTH 4 VALUE 0110,
  9.    ok_code LIKE sy-ucomm,
  10.    ok_save LIKE sy-ucomm.
  11. CALL SCREEN 100.
  12. CALL SCREEN 110.
  13. CALL SCREEN 120.
  14. *&---------------------------------------------------------------------*
  15. *&      Module  STATUS_0100  OUTPUT
  16. *&---------------------------------------------------------------------*
  17. *       text
  18. *----------------------------------------------------------------------*
  19. MODULE status_0100 OUTPUT.
  20.   SET PF-STATUS 'ZMENU'.
  21. *  SET TITLEBAR 'xxx'.

  22. ENDMODULE.                 " STATUS_0100  OUTPUT
  23. *&---------------------------------------------------------------------*
  24. *&      Module  USER_COMMAND_0100  INPUT
  25. *&---------------------------------------------------------------------*
  26. *       text
  27. *----------------------------------------------------------------------*
  28. MODULE user_command_0100 INPUT.
  29.   CASE ok_code.
  30.     WHEN 'DISPLAY'.
  31.       screen = 0110.
  32.     WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.
  33.       LEAVE PROGRAM.
  34.   ENDCASE.
  35. ENDMODULE.                 " USER_COMMAND_0100  INPUT
  36. *&---------------------------------------------------------------------*
  37. *&      Module  GET_DATA_0110  OUTPUT
  38. *&---------------------------------------------------------------------*
  39. *       text
  40. *----------------------------------------------------------------------*
  41. MODULE get_data_0110 OUTPUT.
  42.   SELECT SINGLE bankn
  43.      FROM knbk
  44.      INTO knbk-bankn
  45.      WHERE kunnr = kna1-kunnr.
  46. ENDMODULE.                 " GET_DATA_0110  OUTPUT
  47. *&---------------------------------------------------------------------*
  48. *&      Module  USER_COMMAND_0110  INPUT
  49. *&---------------------------------------------------------------------*
  50. *       text
  51. *----------------------------------------------------------------------*
  52. MODULE user_command_0110 INPUT.
  53.   CASE ok_code.
  54.     WHEN 'DISPLAY'.
  55.       screen = 0120.
  56.     WHEN 'EXIT'.
  57.       LEAVE PROGRAM.
  58.   ENDCASE.
  59. ENDMODULE.                 " USER_COMMAND_0110  INPUT
  60. *&---------------------------------------------------------------------*
  61. *&      Module  GET_DATA_0120  OUTPUT
  62. *&---------------------------------------------------------------------*
  63. *       text
  64. *----------------------------------------------------------------------*
  65. MODULE get_data_0120 OUTPUT.
  66.   SELECT SINGLE name1
  67.                 land1
  68.      FROM kna1
  69.      INTO (kna1-name1,kna1-land1)
  70.      WHERE kunnr = kna1-kunnr.
  71. ENDMODULE.                 " GET_DATA_0120  OUTPUT
复制代码

三、测试
执行程序
Sub screens 8.jpg
输入一个存在的customer number
点击显示按钮
Sub screens 9.jpg
再次点击显示按钮
Sub screens 10.jpg
回复

使用道具 举报

Colin大少
请问两个子屏幕的逻辑流能不能截个图贴一下呢?
因为我按照这个帖子做,点击第一下display可以显示sub1,但是再点击display时候就没有反应了。
谢谢啦
千里之行始于足下
回复 支持 反对

使用道具 举报

Twilight
Colin大少 发表于 2015-3-6 10:00
请问两个子屏幕的逻辑流能不能截个图贴一下呢?
因为我按照这个帖子做,点击第一下display可以显示sub1, ...

逻辑流添加上了....
回复 支持 反对

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表