Subscreen是screen上的一块区域,用来动态加载其他类型为subscreen的screen,subscreen区域上不能放其他的screen elements。在屏幕上显示的subscreen是独立的,subscreen是在另一屏幕中显示的一块独立区域。Subscreen的另外一个用途是不同的programs可以使用相同的subscreens,为了实现这一点你必须在主程序中执行相应的screen programs,可以在一个main screen中使用多个subscreens,也可以在运行时动态调用subscreen。可以在下列情况下使用subscreen:

l         In screen enhancements(screen exit)

l         Within other screen objects(tabstrip controls)

l         In the modification assistant

l         In web transactions

当subscreen area不够大时,可以使用scrollbar来滚动显示。Subscreen area的resize属性决定了其是否可以在横向和竖向可以被改变。可以通过minimum size属性来确定什么时候subscreen area不能被resize。Context menu属性可以为subscreen的output field分配context menu。Subscreen有以下限制:

l         CALL SUBSCREEN在LOOP ENDLOOP CHAIN ENDCHAIN里不被允许。

l         Subscreen不能有OK_CODE字段

l         在同一个main screen中,所有的包括subscreen的object name必须是唯一的

l         Subscreen不能有AT EXIT-COMMAND MODULE

l         在subscreen的modules中不能有SET TITLEBAR SET PF-STATUS SET SCREEN和LEAVE SCREEN语句

可以在screen painter中创建subscreen area,object name用来在call subscreen时,区分不同的subscreen area。为了使用subscreen,你必须在main screen的PBO和PAI中调用它,CALL SUBSCREEN <subscreenarea>用来告诉system把subscreen的PBO和PAI processing block作为main screen PBO和PAI的一部分。Subscreen的ABAP module的写法与正常screen一样。Flow logic中的fields是ABAP program中的global field。

如果subscreen和main program不在同一个module pool中,在main program中的global data在subscreen中是不可见的,subscreen中的field也不会传输到main program中。必须自己实现data transfer,例如通过function module export import data,在subscreen中使用适当的move语句。如果想在不同的main program中使用相同的subscreens,你可以把这些subscreens封装到function group中,通过function module来实现data transport。这一技术用来实现customer subscreen(screen enhancement)。在call subscreen之前通过调用function group的function module把需要的数据传给function group。这保证了在subscreen的PBO之前,subscreen已经得到了需要的数据。在main screen的PAI中,顺序是相反的。在subscreen的PAI之后通过调用function group的function module把数据传给function module。数据的互相传递是通过function group的global data来实现的。传向function group的数据必须把FM参数的值赋给global data,传向calling program的数据则需要把global data的值赋给FM的参数。

TABSTRIP用来把一个应用的不同部分以友好宜用的方式展现在一个屏幕上,以下情况不适用于tabstrip:

l         在application components中需要改变screen environment(比如menus,pushbuttons,header data等等)。Tabstrip的surrounding screen必须是保持不变的。

l         Application components必须以特定的顺序执行,而tabstrip对application components的顺序是不受限制的。

l         Components是动态处理的,一个tab page的用户输入可以使其他tab page立即出现

Tabstrip control和batch input是兼容的。

Tabstrip control包括单独的tab page,每个page都有自己的page title。Tabstrip control为page title只提供一行。当tab pages比较多时,page title不能全部放在一行中,可以通过scroll bar来浏览剩余的tab pages。一个page element由tab title,subscreen area和subscreen组成。从技术角度来讲tabtitle就相当于pushbutton。Page element的内容是通过subscreen来实现的。给每一个page element分配一个subscreen area用来call subscreen。除了object name,starting position和static size,还有其他一些特殊的属性。Tabstrip control的创建包括三个步骤:

l         Define the tab area

l         Define the tab titles如果必要的话:add further tab titles

l         Assign a subscreen area to each page element

在screen painter中将tabstrip control拖动到screen中,给tabstrip control的object name属性分配一个name,在ABAP中通过CONTROL声明同样name的object,类型为TABSTRIP。TABSTRIP类型在type pool CXTAB中定义,ACTIVETAB field存储当前激活的tabstrip的tab title的function code。Tabstrip的tab pages的缺省数量为2。从技术角度来讲tab title就是pushbutton,它有name,text,fctcode和fcttype。Tabtitle可以有function type ‘’或P。如果function type是’’,PAI就会被激活,tab title的function code就会被transport到command field中。如果function type是P,可以在不同的pages之间scroll,但是并不会激活PAI,如果想在tabstrip中放两个以上的pages,需要将pushbutton拖动到tabstrip的tab title area中。你必须给每一个tabpage分配一个subscreen area,可以为每一个tab page拖动一个subscreen area也可以把一个subscreen area分配给不同的tab pages,通过把subscreen area的name分配给相关的tab pages的reference object属性。如果你为每一个tab page分配了不同的subscreen area,可以在front end scroll between tabpages locally。要做到这点,需要在send main screen的同时把所有的subscreen也send到front end。所有的tab title的funct type也必须是P。这样在不同的tabpages间切换时,fronend和application server之间没信息交互。当用户触发main screen的PAI时,所有subscreens的PAI也会被触发。这就意味着所有的field checks都在运行。可以把tabstrip看成是一个large screen。Local scrolling tabstrip适用于display transaction。Scroll locally tabstrip的程序步骤:

l         给每一个tab page分配一个subscreen area

l         在flow logic中调用所有的screen

l         给所有的tab title分配function type P

如果subscreen中没有任何可显示的element,那么这个tab page就会被隐藏。如果所有的subscreen都没有可显示的element,那么整个tabstrip control就会被隐藏。

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN subarea1

INCLUDING sy-cprog ‘0101’.

CALL SUBSCREEN subarea2

INCLUDING sy-cprog ‘0102’.

CALL SUBSCREEN subarea3

INCLUDING sy-cprog ‘0103’.

PROCESS AFTER INPUT.

CALL SUBSCREEN subarea1

CALL SUBSCREEN subarea2

CALL SUBSCREEN subarea3

CONTROLS my_tab_strip TYPE TABSTRIP.

如果所有page element共享一个subscreen area,程序通过function code来决定显示那一个subscreen。这一过程分为两个步骤:

l         PAI中,通过用户选择的tabtitle决定哪个page element应当active

l         在PBO中程序来显示相应的screen。

处理过程中system只check显示的subscreen的fields。实现这种tabstrip scrolling的步骤:

l         所有的tab pages必须共享一个subscreen area

l         所有的tab title必须是function type ‘’

l         在flow logic中必须通过一个variable来确定要call的subscreen

在PAI block中你必须调用一个function module,用来根据function code为TABSTRIP control object的ACTIVETAB字段赋值。在PBO,在subscreen调用之前必须有一个module用来根据ACTIVETAB的值为subscreen相应的variable赋值。必须给这个variable一个initial value,用来第一屏幕调用时使用。可以通过screen table来隐藏一个tab page(screen-active = 0)。应该在tabstrip control之前实现它,以保证screen environment是constant的。

PROCESS BEFORE OUTPUT.

MODULE fill_dynnr.

CALL SUBSCREEN subarea

INCLUDEING SY-CPROG dynnr.

PROCESS AFTER INPUT.

CALL SUBSCREEN subarea.

MODULE user_command.

CONTROLS my_tab_strip TYPE tabstrip.

DAYA ok_code TYPE sy-ucomm,

Dynnr TYPE sy-dynnr.

MODULE fill_dynnr OUTPUT.

CASE my_tab_strip-activetab.

WHEN ‘PC1’.

Dynnr = ‘0101’.

WHEN ‘PC2’.

Dynnr = ‘0102’.

WHEN ‘PC3’.

Dynnr = ‘0103’.

WHEN OTHERS.

Dynnr = ‘0101’.

My_tab_strip-activetab = ‘PC1’.

ENDCASE.

ENDMODULE.

MODULE user_command INPUT.

CASE ok_code.

WHEN ‘PC1’ OR ‘PC2’ OR ‘PC3’.

My_tab_strip-activetab = ok_code.

ENDCASE.

ENDMODULE.

可以通过tabstrip control wizard来创建tabstrip control,这样相应的program objects都会被自动创建,可以提高开发效率。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lvzhqi/archive/2009/08/12/4436903.aspx

ABAP Subscreen and tabstrip controls相关推荐

  1. 如何实现标准TCODE的屏幕增强

    如何实现标准TCODE的屏幕增强(HOWTO:Implement a screen exit to a standard SAP transaction) Introduction SAP provi ...

  2. 关于 SAP 标准教程编号的说明

    最近有人问,为什么 BC402 以后就跳到 BC404 了,怎么缺少 BC403,其实,我到现在也从来没有听说过 BC403.SAP 的标准教程编号不连续,按照 SAP 系统的编号范围规则,它是属于外 ...

  3. Table Controls in ABAP Programs

    Table Controls in ABAP Programs The SAP HELP Address as Below: http://help.sap.com/saphelp_nw2004s/h ...

  4. ABAP:多页签的选择屏幕

    在程序中创建一个100屏幕,然后设定子屏幕区域,可通过屏幕号指定页签,让选择屏幕更多样式,效果如下图: 实现方式如下 定义不同的选择屏幕 * 基本条件屏幕 SELECTION-SCREEN BEGIN ...

  5. SAP ABAP QA11屏幕增强 BADI QEVA_SUBSCREEN_1101

    QA11屏幕增强: 效果图: BADI: QEVA_SUBSCREEN_1101 SE11添加客制化字段:QALS或者决策表. 创建自定义函数组,添加屏幕信息: 全局定义: FUNCTION-POOL ...

  6. SAP ABAP QA01屏幕增强 SMOD QPL10004

    效果图如下: QALS添加客制化字段. CMOD创建增强实施. 根据不同的检验类型,显示不同的屏幕信息. 全局变量定义: TABLES: qals_cust. CONSTANTS: BEGIN OF  ...

  7. 在ABAP/4中声明表格控制

    在屏幕中使 用表格控制 时,必须在 ABAP/4 程序中同时 声明表格控 制结构和表 格控制字段 . 例如: TABLES:   SFLIGHT. CONTROLS: FLIGHTS1 TYPE TA ...

  8. Notepad++中高亮显示ABAP代码方法

    把以下代码保存为ABAP.XML <NotepadPlus> <UserLang name="ABAP" ext="abap"> < ...

  9. ABAP程序系统字段中英文详解

    系统字段由ABAP运行时环境填写,并且可以用来在ABAP程序中查询系统状态.除了一个例外(sy-repid),系统字段都是变量,但是它们都是只读的.此外,更多程序执行的重要信息通常都被丢弃.ABAP程 ...

最新文章

  1. 2019年第一个工作日!
  2. 【每周NLP论文推荐】 介绍语义匹配中的经典文章
  3. word存为html图片有两个,如何批量保存Word图片?另存为Word多个图片的方法
  4. gtest 测试部分_全部关于测试–第1部分
  5. 仓库处理中 无法修改_临沂用友U8erp系统软件如何新增仓库?
  6. 学C++的室友手握这个项目,面试稳了
  7. LAV Filter 源代码分析 2: LAV Splitter
  8. Spark Client启动原理探索
  9. java switch null,如何在switch中使用null
  10. 自定义动画(仿Win10加载动画)
  11. html微信投票代码,关于网络投票刷票神器的代码编写
  12. $route.matched
  13. 流利阅读12.28 Seriously, Prada, what were you thinking? Why the fashion industry keeps bumbling into rac
  14. https是什么_http与https的区别
  15. ts讲解(接口interface)
  16. 编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg),方法包括求
  17. 数据提取方法-数据提取的概念和数据的分类
  18. python+selenium 拉勾网信息获取,主要是定位元素的练习
  19. linux下创建用户6,Linux 用户管理
  20. 股票数据:股票数据查询网站

热门文章

  1. 你不应该忽略的五个机器学习项目一览
  2. 横向ListView(四) —— 添加滚动条
  3. 几种移动开发技术的比较和选型
  4. MySQL实战课程---通过录像手把手带您学会当前互联网流行架构
  5. 在SQL2005/SQL2008中CTE用法差异
  6. 小白学数据分析-----从购买记录分析道具支付环节
  7. 手动建立规则方式创建stream环境
  8. 详解如何进行第三方App接入微信登录
  9. 1月26日学习内容整理:reverse函数补充,modelform对象补充,form表单参数补充
  10. centos7 系统缓存清理