ABAP中的Table Control编程 Table Control是SAP系统中Screen中的一个常用控件,可以实现对多行数据的编辑。它是一组屏幕元素在Screen上的重复出现,这与普通屏幕元素的区别。Table Control的每一行是跟工作区域wa交互的,与内表itab没有直接的关联。 设置TC的行数 在ABAP中,我们可以通过属性lines来设置Table Control的行数。如果是查看状态,lines可以赋值为LINES(itab)。如果是编辑状态,为了允许用户添加条目,lines必须大于itab的行数。如果TC的该属性小于内表行数,則只有内表中的前面几行可以显示,后面的内容将不会出现在SCREEN中。 设置TC中某单元格编辑与否 对于普通的屏幕元素,我们可以使用LOOP AT SCREEN来实现编辑控制。对于Table Control,也可以使用LOOP AT SCREEN来实现编辑控制。TC向导会生成如下的Screen Flow Logic: LOOP AT itab INTO wa WITH CONTROL tc_0100 CURSOR tc_0100-current_line. MODULE tc_0100_change_field_attr. ENDLOOP. 在tc_0100_change_field_attr中,我们可以添加LOOP AT SCREEN来实现编辑控制: MODULE tc_0100_change_field_attr OUTPUT. LOOP AT SCREEN. CASE screen-name. WHEN 'ITAB-KEYFELD'. IF tc_0100-current_line > db_num. screen-input = '1'. ELSE. screen-input = '0'. ENDIF. WHEN OTHERS. ENDCASE. MODIFY SCREEN. ENDLOOP. ENDMODULE. 更新内表的数据 在PAI处理过程中,系统将根据逐行读取TC的数据,填充到wa中,而我们的itab与屏幕元素其实没有直接的关联。我们可以如下编写代码来更新内表的数据: MODULE tc_0100_modify INPUT. IF tc_0100-current_line <= LINES( itab ). MODIFY itab FROM wa INDEX tc_0100-current_line. ELSE. APPEND wa TO itab. ENDIF. ENDMODULE. 滚动到某行某列 如果我们希望,屏幕显示后展示在用户面前的最上端或者左端是表内容中的某行某列,则应该修改变量top_line和left_col的值。一般可在PBO的tc_0100_change_tc_attr里设置: tc_0100-top_line = 3. tc_0100-left_col = 5. Table Control是ABAP中一个强大的控件,可以实现对多行数据的编辑和显示。通过设置TC的行数、编辑控制和更新内表的数据,我们可以实现复杂的业务逻辑。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助