ABAP中的Table Control编程(1)
来源:互联网 发布:西安移动网络怎么样 编辑:程序博客网 时间:2024/06/01 09:36
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑。
简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通屏幕元素的区别。
如果我们对一个Table Control定义其内表为itab,工作区域为wa。那么在PBO中,系统将逐一取itab的某行到wa,
然后将wa的内容转换成屏幕元素,即Table Control的一行,如此反复。
换句话说,Table Control的每一行是跟wa交互的,与itab没有直接的关联。
反过来在PAI中,系统将根据Table Control的录入情况,逐行取数据到wa(前提是该行的内容不为空),
然后我们即可根据wa的内容往itab修改或添加一行记录。
1. 如何设置TC的行数
如果我们定义了TC的名称为tc_0100,则TC向导将生成如下一行代码:
CONTROLS: tc_0100 TYPE TABLEVIEW USING SCREEN 0100.
调试可知,tc_0100是个Deep Structure,拥有很多属性,它实现了对表格控件的所有属性的封装。
这里我们先介绍属性:lines。lines代表该表控件一共有多少行可供用户查看或输入。
如果是查看状态,则一般可为其赋值LINES( itab )。如果是编辑状态,为了允许用户添加条目,则必须大于itab的行数。
而如果TC的该属性小于内表行数呢?则只有内表中的前面几行可以显示,后面的内容将不会出现在SCREEN中,
当然实际中我们不会这么操作。
2. 如何设置TC中某单元格编辑与否
对于普通的屏幕元素,我们都很清楚,用LOOP AT SCREEN可以实现。对于TC,当然也是一样的。
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-lines = 50,那么该Module将被执行50次。
所以,只要在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.
3. 如何更新我们内表的数据
上面已经说过,在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.
前面说过,如果tc_0100-lines = 50,那么Module tc_0100_change_field_attr将被执行50次。
那么这里的Module tc_0100_modify 是不是也是50次呢?答案是<=50次,这是因为,如果TC中某行完全为空的话,
系统是不可能调用tc_0100_modify的,换句话说,此时TC中的该行将视同不存在。
- ABAP中的Table Control编程(1)
- ABAP中的Table Control编程
- ABAP中的Table Control编程
- ABAP中的Table Control编程
- ABAP中的Table Control编程(2)
- ABAP table control
- ABAP table control
- SAP ABAP编程 Table Control动态隐藏列
- SAP ABAP编程 Table Control动态隐藏列
- ABAP 中 Table Control例子
- abap table control控制光标
- ABAP总结之五,Table Control
- ABAP:为Table Control创建Context Menu
- ABAP 的TABLE CONTROL实践积累
- ABAP表控制Table Control设计
- ABAP 表格控制(Table Control)和步循环
- abap 在table control(表控件) 实现查找功能
- abap 在table control(表控件) 实现查找功能
- field module的on input和on request区别
- Codeforces Round #135 (Div. 2)题解
- linux下gcc中,pack指令
- 既然选择了远方,便只顾风雨兼程
- 简单字符设备驱动——LED驱动
- ABAP中的Table Control编程(1)
- mysql 时间与日期函数与不求人
- C++操作SQLite示例笔记
- C常见问题之fopen的读写模式参数
- ABAP中的Table Control编程(2)
- EMC DFS 出现com.emc.documentum.fs.rt.AuthenticationException 错误解决方式
- 组合算法面试题
- 用yum下载rpm包
- ORACLE9I DATAGUARD 部署