这个问题是因为,程序中使用了LOOP嵌套LOOP的优化,然后READ TABLE LT_DATA BINARY SEARCH
这里的BINARY SEARCH导致了错误。
SORT LT_DATA BY 主键1 主键2.
LOOP AT GT_DATA INTO GW_DATA .
READ TABLE LT_DATA TRANSPORTING NO FIELDS WITH KEY 主键1 = GW_DATA-主键1 主键2 = GW_DATA-主键2 BINARY SEARCH.
IF SY-SUBRC = 0.
LV_TABIX = SY-TABIX.
LOOP AT LT_DATA FROM LV_TABIX INTO LW_DATA.
IF GW_DATA-主键 <> LW_DATA-主键 OR GW_DATA-主键2 <> LW_DATA-主键2.
EXIT.
ENDIF.
"数据处理
ENDLOOP.
ENDIF.
ENDLOOP.
这句READ TABLE LT_DATA BINARY SEARCH
导致了错误,因为前面对LT_DATA排序了,然后点击ALV上的排序,导致这个排序变了,所以就会在这里出错。
解决方法:去掉BINARY SEARCH即可。