ABAP TBL鼠标滚动到某行某列
来源:互联网 发布:淘宝买眼镜靠谱吗 编辑:程序博客网 时间:2024/06/06 08:31
如果我们希望,屏幕显示后展示在用户面前的最上端或者左端是表内容中的某行某列,则应该修改变量top_line和left_col的值。一般可在PBO的tc_0100_change_tc_attr里设置:
tc_0100-top_line = 3.
tc_0100-left_col = 3.
后面left_col语句起作用的前提是,内表的字段较多,导致表控件宽度不够,确有左右滚动的必要。
获取鼠标所在位置
这里要用GET CURSOR语句,比如
DATA: l_line TYPE i,
l_field TYPE screen-name.
GET CURSOR FIELD l_field LINE l_line.
这样就取得了鼠标在内表的所在行以及字段名。不过要注意的是,如果希望映射到itab,那可别忘了top_line。正确读取鼠标所在条目对应于内表哪行数据的语句是:
GET CURSOR LINE l_line.
l_line = l_line + tc_0100-top_line - 1.
READ TABLE itab INTO wa INDEX l_line.
与此类似,希望鼠标定位于内表中某单元格的语句是SET CURSOR FIELD l_field LINE l_line.
.如何设置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.
如何更新我们内表的数据
上面已经说过,在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中某行完全为空的话,
- ABAP TBL鼠标滚动到某行某列
- ABAP TBL隐藏列
- 鼠标滚动
- 鼠标滚动
- 鼠标滚动
- 鼠标滚动事件
- DataGrid随鼠标滚动
- VB6IDE鼠标滑轮滚动
- dbgrid鼠标滚动事件
- 双击鼠标滚动屏幕
- 鼠标-滚动-Mousewheel-事件
- 鼠标滚动事件
- JS 鼠标滚动放大
- 双击鼠标屏幕滚动
- js鼠标滚动事件
- //随鼠标上下滚动
- 鼠标滚动 回到顶部
- 判断鼠标滚动方向
- C电子地图
- ABAP TBL隐藏列
- Convert a String In C++ To Upper or Lower Case
- 常用调试命令
- gdb review data
- ABAP TBL鼠标滚动到某行某列
- switch case语句详解---连C++ Primer都会出现的语法错误
- 利用css3属性:transition-duration来做简单的动画
- linux 配置静态ip
- 递归遍历及拷贝文件共享服务器中目录
- tomcat启动报错,A fatal error has been detected by the Java Runtime Environment
- 去除重复字段的Sql语句
- Tornado 使用经验
- 设计模式(十四)----- 命令模式(Command)----(JAVA版)