为COLLECT指定的工作区域必须与内表的行类型兼容,不仅仅是可转换为内表的行类型。COLLECT语句无法用于带深层结构的内表,例如,将内表作为组件的行。 如果仅使用COLLECT语句填充内表,则不会出现重复条目。因此要填充没有重复条目的内表,应该使用COLLECT而不是APPEND或INSERT。 7.2.3 插入行# 要在内表行之前插入新行...
首先说一下collect的用法, collect <wa> into ,这个语法会: 首先查找wa里面的key值在itab中是否存在 如果不存在,那么插入一个新行(对standard table而言是append,对于sorted table相当于insert) 如果存在,那么会将非key fields的值加到找到那个index相对较小(当然如果是hash table那就只会找到一条记录)的row相应...
TYPES:BEGIN OF line,key TYPE c LENGTH 1,num TYPE i,END OF line.DATAitab TYPE SORTED TABLE OF lineWITH UNIQUE KEY key. DATA(rnd) = cl_abap_random_int=>create( seed = + sy-uzeitmin = 1max = 3 ). DO.COLLECT VALUE line( key = COND #( LET r = rnd->get_next( ) INWHEN r...
语法:COLLECT wa INTO itab[result]. 此语句将工作区域的内容作为内部表itab中的单行插入,或者将其数值组件的值添加到具有相同主表键的现有行的对应值中。会对 数值型字段:I 类型, QUAN 类型,CURR类型的字段做汇总,字符型字段视为汇总条件,所以COLLECT 一般是用内表中的字符型字段作为KEY值 做汇总。 DEMO *&...
通过使用 WITH KEY 选项可将内表整行定义为其关键字,如下所示: ...WITH KEY = <value> ... 如果<value>的数据类型与表格行的数据类型不兼容,则将<value>转换为表格行的数据类型。 对于此类关键字,也可以选择由某个基本数据类型或内表直接定义的,而不是由字段串直接定义的特定内表行。 (...
= ' '"是否使⽤初始值填充参数 CARRID * X_CONNID = ' '"是否使⽤初始值填充参数 CONNID * _SCOPE = '2'* _WAIT = ' '* _COLLECT = ' 'EXCEPTIONS foreign_lock = 1
WITHUNIQUE KEY key. DATA(rnd)=cl_abap_random_int=>create( seed = + sy-uzeit min=1 max=3 ). DO. COLLECTVALUE line( key = COND #( LET r = rnd->get_next( ) IN WHENr = 1 THEN 'X' WHENr = 2 THEN 'Y' WHENr = 3 THEN 'Z' ) ...
COLLECT 1、在LOOP循环中使用READ读取相同主键的值,然后ADD,APPEND。 2、在LOOP循环中,COLLECT内表数据到目的表中。 方式2更快,COLLECT采用哈希算法(特别是针对1000条以上的数据)。 FORM定义 定义时,FORM的参数尽量都有参照类型,这样在FORM中使用传入传出参数时可节省约50%的处理时间。
使用collect处理内表:按关键列(默认非数字列)汇总 LOOP AT it_data . COLLECT it_data INTO itab. ENDLOOP. collect1.jpg 内表有多个关键列 DATA: itab LIKE TABLE OF wa_data with KEY col1 col WITH HEADER LINE . ![collect2.jpg](http://upload-images.jianshu.io/upload_images/1377127-91fd445...
使用 MOVE 语句。 以下举例说明collect常见用法。注意:此处itab作为汇总表定义为hashed table 且明确唯一key列(普通内表也可),collect要求非KEY列都得是数据类型(I,P,F)DATA: itab LIKE TABLE OF wa_data with KEY col1 col WITH HEADER LINE .