ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 屏幕编程

屏幕编程

原创 Linux操作系统 作者:hzq2010 时间:2011-06-19 11:40:05 0 删除 编辑

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

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里设置即可。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/donkey2004112103/archive/2008/10/31/3191235.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/donkey2004112103/archive/2008/10/31/3191235.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/donkey2004112103/archive/2008/10/31/3191235.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/donkey2004112103/archive/2008/10/31/3191235.aspx

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23495244/viewspace-700194/,如需转载,请注明出处,否则将追究法律责任。

下一篇: MM模块BAPI
请登录后发表评论 登录
全部评论

注册时间:2010-03-11

  • 博文量
    196
  • 访问量
    168049