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向透明表写入数据
|