屏幕编程

今天关于报表的需求说仍不确定,下午就又看了下屏幕编程的程序。总结如下,先看个程序:

1.PBO里修改屏幕属性

PARAMETERS: TEST1(10) MODIF ID SC1,
            TEST2(10) MODIF ID SC2,
            TEST3(10) MODIF ID SC1,
            TEST4(10) MODIF ID SC2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'SC1'.
SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
CONTINUE.
ENDIF.
IF SCREEN-GROUP1 = 'SC2'.
SCREEN-INTENSIFIED = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

这是一个在PBO事件中修改屏幕属性的例子,有几个地方需要注意,一是MODIF ID关键字,它的作用似乎是给选择屏幕字段分组,一个是SC1一个是SC2。然后用loop遍历屏幕如果是SC1组的话,那么就高亮显示,注意要有modify screen。SC2组则还原。screen这个结构体可以在研究下。

2. 屏幕上输入密码

还有个小例子关于屏幕上输入密码,如下:

PARAMETERS: p_pass TYPE string. "xuncode
*---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'P_PASS'.
screen-invisible = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
*---------------------------------------------------------------------*
*END-OF-SELECTION.
START-OF-SELECTION.
WRITE: / p_pass.

也是一个PBO事件,不过用的是name字段,而且将invisible属性设置为1.

3. 打包过程中遇到的问题

今天和伯珩一起给470系统打内核补丁,打包的一些问题是basis的问题就不说了。期间有一个和传输请求有关,说function group lprf是repaired状态,想起来刚才刚才对它进行过修改,并进行了激活。但是传输请求并没有释放,只要用se10释放即可。

4.多屏幕编程

有时用代码进行多屏幕编程似乎更加方便,下面的代码是一个例子:

SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
PARAMETERS: p1(10) TYPE c,
            p2(10) TYPE c,
            p3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 100.
* SUBSCREEN 2
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-020.
PARAMETERS: q1(10) TYPE c,
            q2(10) TYPE c,
            q3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 200.
* SUBSCREEN 3
SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-030.
PARAMETERS: r1(10) TYPE c,
            r2(10) TYPE c,
            r3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF SCREEN 300.
* STANDARD SELECTION SCREEN
SELECTION-SCREEN: FUNCTION KEY 1,
FUNCTION KEY 2.
SELECTION-SCREEN: BEGIN OF TABBED BLOCK sub FOR 10 LINES,
END OF BLOCK sub.
INITIALIZATION.
  sscrfields-functxt_01 = '上一屏'.
  sscrfields-functxt_02 = '下一屏'.
  sub-prog = sy-repid.
  sub-dynnr = 100.
AT SELECTION-SCREEN.
CASE sy-dynnr.
WHEN 100.
IF sscrfields-ucomm = 'FC01'.
        sub-dynnr = 300.
ELSEIF sscrfields-ucomm = 'FC02'.
        sub-dynnr = 200.
ENDIF.
WHEN 200.
IF sscrfields-ucomm = 'FC01'.
        sub-dynnr = 100.
ELSEIF sscrfields-ucomm = 'FC02'.
        sub-dynnr = 300.
ENDIF.
WHEN 300.
IF sscrfields-ucomm = 'FC01'.
        sub-dynnr = 200.
ELSEIF sscrfields-ucomm = 'FC02'.
        sub-dynnr = 100.
ENDIF.
ENDCASE.
START-OF-SELECTION.
WRITE: / 'P1:', p1,'Q1:', q1, 'R1:', r1,
         / 'P2:', p2,'Q2:', q2, 'R2:', r2,
         / 'P3:', p3,'Q3:', q3, 'R3:', r3.

屏幕上的按钮是通过function key关键字,初始化是用了sscrfields结构体。屏幕上的按钮function code从左至右默认依次为FC01, FC02, FC03。如果不用代码写按钮的话,可以通过自己创建屏幕,在屏幕状态里如下:

application toolbar

application toolbar里设置即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值