SAP中ABAP的屏幕元素涉及到“定制控制” 和 “Table Control” 两个数据显示容器。
定制控制是单向的数据展示,使用abap的SQL语句把数据从透明表(硬盘中)读取至内表(内存),进行一系列数据整理,然后采用ALV表格的形式把这些数据展示在“定制控制”这个用于数据显示的容器中。
而Table Control不仅拥有“定制控制”的功能,而且还可以通过这个“TC”把用户使用键盘输入的数据写入透明表(内表)中。也就是说,区别在于TC是一个双向的数据显示容器。
下面给大家演示TC的使用过程。
在SAP中使用事务码SE80进入Object Navigator
选中需要被修改的屏幕(screen)点击格式按钮(go to layout)
进入了screen painter
看到我们今天提到的两个控件,如上图。
严格来说,所谓的“控件”其实是 “屏幕元素”,黄佳的书第十章《事务屏幕设计》
接下来12章《高级屏幕元素》继续讲到了Table Control,他翻译成表格控件。TC是SAP的标准控件之一,标准控件需要使用CONTROLS语句在ABAP程序代码中进行定义,并且有相应的屏幕元素与之对应。
我准备举例演示该功能的使用方法。
http://blog.csdn.net/szlaptop/article/details/8116441
csdn关于TableControl的好文
上面链接中的文章,基本讲了用TC显示内表中数据的过程(读取并显示),但是没有描述反向的数据写入过程(收集数据并保存)。
首先,使用SAP的事务码SE80(OBJECT NAVIGATOR)创建一个程序(program)Z_MM_TESTTC
然后就在SE80中创建了一个空程序
我们要在这个空程序中创建一个普通屏幕,然后在屏幕中创建table control,然后使用TC(table control)进行双向数据传递。
下面创建普通屏幕(编号2000)
创建了普通屏幕2000之后需要为它添加GUI title 和GUI status
上图所示,为2000屏幕的状态,也就是屏幕的状态栏,这是一种交互方式。我们需要添加back exit save这三个按钮,让它们生效。而且随时保存一下,保存、检查、激活。
然后双击屏幕2000 为它设置PBO和PAI
去掉注释
双击MODULE进行编码设置
经过上述步骤,创建了程序,创建了屏幕2000
但是程序还不能执行,因为程序并没有呼叫屏幕,所以屏幕无法被现实,下面让程序执行的时候,去呼叫屏幕。
在程序中写语句: START-OF-SELECTION
经过上述配置,屏幕2000已经可以使用了
目前它还只是一个空屏幕,但是已经拥有了三个按钮save back exit
下面我们对这个屏幕进行配置让它显示我们需要的内容
下图就是这个空屏幕
看到今天的主角:Table Control 屏幕元素
TC是一个屏幕元素,用来显示数据和获取用户的输入
TC 与程序中的一个内表 一一对应。
今天例子中的TC用来访问SAP中我通过事务码SE11自己定义的透明表ZPRELINK
如下图所示
因此我们在程序中首先定义内表,内表的结构参考ZPRELINK
然后进入screen painter 修改屏幕2000
经过上述步骤,创建了如下图所示的TC
关闭Screen painter返回Object Navigator,我们发现abap编辑器自动添加了很多代码,这些代码包括:
1.2000屏幕PBO和PAI中除了最初两个MODULE之外的代码
2.主程序中自动添加了400行左右的代码:
然后运行该程序
我们看到已经可以使用TC显示数据库中的数据了。
接下来我们要做第二件事:在TC中输入数据,然后通过屏幕2000的保存按钮,将数据存储到ZPRELINK这个透明表中。
咔嚓,多了一行
我想要的效果是:
首先ZCJNO这列,应该改为仅仅用来输出数据,不用输入
返回Screen Painter
然后,为save按钮添加代码,响应这个事件。
位置在PAI的MODULE中
这样,我们就实现了通过TC向透明表写入数据