y-index和sy-tabix都是系统字段,用来记录循环的次数。sy-index 在DO....ENDDO循环里有效,而sy-tabix在loop at ......endloop里有效。如下面的例子:DATA: BEGIN OF line,col1 TYPE i,col2 TYPE i,END OF line.DATA itab LIKE TABLE OF line WITH HEA
LOOP AT IT_VBAK INTO WA_VBAK. **--Read到对应的TABIX READ TABLE IT_VBAP TRANSPORTING NO FIELDS WITH KEY VBELN = WA_VBAK-VBELN BINARY SEARCH. if sy-subrc = 0. LV_TABIX = SY-TABIX. **然后根据TABIX来循环 LOOP AT IT_VBAP FROM LV_TABIX INTO WA_VBAP. IF WA_VBAP-VBELN <> W...
ABAP中的系统变量SY-INDEX与SY-TABIX 系统变量SY-INDEX与SY-TABIX是⽤来记录循环的次数或者索引的,不同的是SY-INDEX在DO...ENDDO中是有效的,⽽SY-TABIX在LOOP...ENDLOOP中及READ内表时获取相应的索引。 DATA:BEGIN OF STUDENT OCCURS 0, NAME(10) TYPE C, AGE TYPE I, END OF STU...
lv_tabix= sy-tabix.LOOPATit_marcFROMlv_tabixINTOis_marc.IFis_mara-matnr <> is_marc-matnr.EXIT.ENDIF.MOVE-CORRESPONDINGis_marcTOls_data.APPENDls_dataTOlt_data.CLEARls_data.ENDLOOP.ENDIF.ENDLOOP.GETTIMESTAMPFIELDlv_time_e.DESCRIBETABLElt_dataLINESDATA(lv_num_2). lv_text= lv_time_e -lv...
这个是把循环次数记录下来。一般在内表操作 loop的时候使用。
我们同样需要维护观察点的触发条件。因为ABAP帮助文档告诉我们,每次LOOP循环体执行时,系统变量sy-tabix都会递增1。那么当sy-tabix等于22时,说明循环体已经执行了我们期望的次数。因此将观察点触发的条件设置为sy-tabix = 22即可。 方案3:使用ABAP调试器脚本这种方案较之前两种方案来说最复杂,但也最灵活。
SY-DATUM: 当前系统日期 SY-UZEIT: 当前系统时间 SY-TCODE: 当前执行程序的Transaction code SY-REPID: 当前程序名称 SY-INDEX : 当前LOOP循环过的次数 SY-TABIX: 当前处理的是internal table 的第几笔 SY-TMAXL: Internal table的总笔数 SY-SROWS: 屏幕总行数 ...
ABAP系统变量SY-INDEX与SY-TABIX都是用来记录循环的次数。但是SY-INDEX在do...endo和while...endwhile中起作用,而SY-TABIX在loop...endloop中有效。 测试代码: REPORT ztest_index_tabix. DATA:lit_vbak TYPE STANDARD TABLE OF vbak, lwa_vbak TYPE vbak. DATA:l_flag TYPE c. SELECT * FROM vbak ...
我们知道在LOOP循环体内,系统变量sy-tabix会自动赋以当前的循环次数。因此我们在Watchpoint的触发条件里,维护成sy-tabix = 22, 也可以达到在第22次循环时触发的目的。Watchpoint创建好之后显示如下:按F8继续调试,程序果然在第22次循环时触发了:并且调试器里弹出一条提示信息:Watchpoint reached 方法三 风神腿 -...
我们知道在LOOP循环体内,系统变量sy-tabix会自动赋以当前的循环次数。因此我们在Watchpoint的触发条件里,维护成sy-tabix = 22, 也可以达到在第22次循环时触发的目的。 Watchpoint创建好之后显示如下: 按F8继续调试,程序果然在第22次循环时触发了: 并且调试器里弹出一条提示信息:Watchpoint reached 方法三:ABAP Debu...