屏幕增强

来源:互联网 发布:惠普打印机驱动for mac 编辑:程序博客网 时间:2024/04/25 21:36

如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2009/12/06/4952544.aspx

SAP设计的东西挺好的,可以让我们自己做平面增强,菜单增强,嵌入自己写的代码,而且对它原有的东西又没有影响。最近做了两个子屏幕的增强,总结下。

1. 什么是子屏幕

SAP中有标准的例子程序DEMO_DYNPRO_SUBSCREENS,短小精悍很容易看懂。当然很多标准的程序都有子屏幕,不过较为复杂。子屏幕其实就是嵌入到屏幕中的屏幕,我感觉设计的和函数一样,写好了之后可以被不同的主屏幕调用。

PBO主屏幕调用子屏幕的语句如下:

CALL SUBSCREEN: AREA1 INCLUDING SY-REPID NUMBER1,
                  AREA2 INCLUDING SY-REPID NUMBER2.

AREA1和AREA2都是在主屏幕中定义好的custom control,NUMBER1和NUMBER2就是子屏幕号,可以用变量,所以可以动态的调用不同的子屏幕。当然你得先建立好子屏幕。程序运行到这里会自动运行子屏幕的PBO事件。

PAI中调用子屏幕语句如下:

CALL SUBSCREEN: AREA1,
                             AREA2.

和PBO中有点不同,程序运行到这里也会自动运行子屏幕的PAI事件,然后再返回。

有几点需要注意:

  • A. 同一程序的子屏幕命名空间是同一个,所以得保证不同子屏幕的元素名称不同
  • B. 子屏幕不能有自己的OK_CODE
  • C. 子屏幕的处理逻辑不能有MODULE ... AT EXITCOMMAND,这个TYPE 为E的函数只能在主屏幕中处理
  • D. 子屏幕同样也不能有SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN, or LEAVE TO SCREEN.否则会报错

2. 如何做增强

理解了子屏幕的概念,做增强就十分好做了.其实就做两件事:在子屏幕上添加你想要的效果, 写好PAI和PBO的处理逻辑.

3. 实例

A. VA01附加数据B子屏幕增强

image

通过添加一个字段,把多余的信息存进VBAK中,当然VBAK表要做一个APPEND 增强.

这里其实是SAP留好的接口,

CALL SUBSCREEN 8309 INCLUDING 'SAPMV45A' '8309'.

程序SAPMV45A中屏幕4312就调用了8309子屏幕,我们只管在里面做任何想做的事情就好了.

原创粉丝点击