ABAP中的Table Control编程.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ABAP中的Table Control编程

ABAP中的Table Control编程 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中的该行将视同不存在。 4,滚动到某行某列 如果我们希望,屏幕显示后展示在用户面前的最上端或者左端是表内容中的某行某列,则应该修改变量top_line和left_col的值。一般可在PBO的tc_0100_change_tc_attr里设置: tc_0100-top_line = 3. tc_0100-left_col = 3. 后面left_col语句起作用的前提是,内表的字段较多,导致表控件宽度不够,确有左

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档