ABAP-选择屏幕(三) 窗口,屏幕块,选择屏幕联动,子屏幕

语法:

选择屏幕块

SELECTION-SCREEN BEGIN OF BLOCK b1
                                     WITH FRAME     "包含框架
                                     TITLE TEXT-001 "包含标题
                                     NO INTERVALS   "只有一个输入框
                                     .
  SELECT-OPTIONS: s_matnr FOR mard-matnr.
SELECTION-SCREEN END OF BLOCK b1.

创建屏幕

SELECTION-SCREEN BEGIN OF SCREEN 9004.
  SELECTION-SCREEN BEGIN OF BLOCK b2.
    SELECT-OPTIONS: s_matnr FOR mard-matnr.
    PARAMETERS: p_matnr TYPE mard-matnr.
    SELECTION-SCREEN ULINE. "换行线
  SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 9004.

参考已定义屏幕元素创建屏幕

CALL SCREEN 9003.

SELECTION-SCREEN BEGIN OF SCREEN 9004.
  SELECTION-SCREEN BEGIN OF BLOCK b2.
    SELECT-OPTIONS: s_matnr FOR mard-matnr.
    PARAMETERS: p_matnr TYPE mard-matnr.
    SELECTION-SCREEN ULINE. "换行线
  SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 9004.

SELECTION-SCREEN BEGIN OF SCREEN 9003.
  SELECTION-SCREEN INCLUDE BLOCKS b2. "參照SCREEN 9004中的BLOCK
  PARAMETERS: p_char TYPE char1 AS CHECKBOX.
SELECTION-SCREEN END OF SCREEN 9003.

在这里插入图片描述


弹窗

作为窗体的好处是可以定义好,根据需要调用。

SELECTION-SCREEN BEGIN OF SCREEN 9001 AS WINDOW TITLE TEXT-001.
  PARAMETERS: p_matnr TYPE mard-MATNR.
SELECTION-SCREEN END OF SCREEN 9001.

CALL SCREEN 9001 STARTING AT 20 20 ENDING AT 80 20.

在这里插入图片描述

双重选择屏幕,点击运行按钮,调用第二个窗口

PARAMETERS: p_check TYPE char1 AS CHECKBOX.

IF p_check = 'X'.
  CALL SELECTION-SCREEN 9002.
ENDIF.

SELECTION-SCREEN BEGIN OF SCREEN 9002 AS WINDOW TITLE TEXT-001.
  PARAMETERS: p_matnr TYPE mard-MATNR.
SELECTION-SCREEN END OF SCREEN 9002.

在这里插入图片描述
在这里插入图片描述


子屏幕

通过程序创建一个子屏幕:

SELECTION-SCREEN BEGIN OF SCREEN dynnr_num AS SUBSCREEN.
	...
SELECTION-SCREEN END OF SCREEN dynnr_num.

子屏幕可以嵌入到Tabstrip中使用

SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN. "子屏幕
  SELECTION-SCREEN BEGIN OF BLOCK BK1  WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: s_matnr FOR mard-MATNR.
    SELECTION-SCREEN SKIP. "间隔行
    PARAMETERS p_ck AS CHECKBOX.
  SELECTION-SCREEN END OF BLOCK BK1.
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
  PARAMETERS p_matnr TYPE mard-matnr.
SELECTION-SCREEN END OF SCREEN 200.

SELECTION-SCREEN:BEGIN OF TABBED BLOCK mytab FOR 5 LINES, "页签高度
  tab (20) bt1 user-COMMAND push1 DEFAULT SCREEN 100, "(20) Tab标题显示的宽度; bt1 Tab的标题; 
  tab (20) bt2 USER-COMMAND push2,
  END OF BLOCK mytab.

INITIALIZATION.
  bt1 = '01'. "页签选项卡标题
  bt2 = '02'.
  mytab-prog = sy-repid.
  mytab-dynnr = 100. "默认屏幕

AT SELECTION-SCREEN.
  CASE sy-UCOMM.
    WHEN 'PUSH1'.
      mytab-dynnr = 100.
    WHEN 'PUSH2'.
      mytab-dynnr = 200.
    WHEN OTHERS.
  ENDCASE.

普通选择屏幕,可以使用CALL SELECTION-SCREEN来单独调用子屏幕,比如“双重选择屏幕,点击运行按钮,调用第二个窗口”
dialog通过CALL SUBSCREEN语句将子屏幕嵌入到对话屏幕中:

PROCESS BEFORE OUTPUT.
CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
...子屏幕都需要放在主屏幕中的某个指定的<area>区域元素中

为了调用子屏幕的PAI事件,需要在主屏幕的PAI flow logic里如下调用:
PROCESS AFTER INPUT.
  CALL SUBSCREEN <area>.
...
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值