先理清楚table中涉及到的数据源的关系。
在设计table的时候,当从数据字典中拖放字段的时候,会自动创建一个是数据表或结构命名的内表,程序运行之后看到的结果就是来自这个表,A表。
其次需要一个内表,用来存放从数据库中取出的数据,B表。
然后需要一个工作区,用来在A表和B表之间进行数据传输。
要对table中列进行排序,首先要确定当前选择的列。table中各列的名称放在A表的cols内表中,selected='X'表示被选中,先申明一个类型为A表-cols的工作区
data:col like line of A表-cols.
然后把要排序的列插入col中,即selected='X'的列
read table A表-cols into col with key selected = 'X'.
列名就放在col-screen-name中,是在"A表-列名"这样的形式存放的,我们需要的仅仅只是"列名","A表-"要过虑掉。
fieldName = col-screen-name+3.
为什么要加3呢,因为"A表-"它的长度是3.
接下来对B表进行排序。
sort B表 by (col-screen-name+3).
排序完成之后,SAP会进入PBO中,将B表排好序的数据通过工作区传输到A表中
整个过程完成。
完整代码如下:
controls:t_c1 type tableview using screen to '0200'.
data:g_tab like zxsb,
wk_tab like zxsb.
form. sort_tab.
read table t_c1-cols into col with key selected='X'.
if sy-subrc = 0.
sort g_tab by (col-screen-name+5).
col-selected = ''.
modify t_c1 from col index sy-tabix.
endif.
endform.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23353800/viewspace-730943/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23353800/viewspace-730943/