* 使用键值读取 READ TABLE mytable INTO Record1 WITH TABLE KEY ColP = 4.
IF sy-subrc = 0. WRITE: / '找到记录:', Record1-ColQ. ENDIF.
3. 条件读取
1 2 3 4
* 使用LOOP AT进行条件读取 LOOP AT mytable INTO Record1 WHERE ColP > 3 AND ColQ < 10. WRITE: / '符合条件的记录:', Record1-ColP, Record1-ColQ. ENDLOOP.
⚠️ 重要注意事项
1. 返回码含义
返回码
含义
处理建议
SY-SUBRC = 0
成功找到匹配项
继续处理
SY-SUBRC = 2
找到条目但字段不匹配
检查数据差异
SY-SUBRC = 4
未找到条目
处理不存在的情况
2. 性能考虑
哈希表:使用键值查找时性能最佳(O(1))
排序表:使用键值查找时性能良好(O(log n))
标准表:只能使用线性查找(O(n))
3. 错误处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
* 完整的错误处理 READ TABLE mytable INTO Record1 WITH TABLE KEY ColP = 4 COMPARING ColQ.
CASE sy-subrc. WHEN 0. WRITE: / '完全匹配:', Record1. WHEN 2. WRITE: / '键匹配但字段不同:', Record1. WHEN 4. WRITE: / '记录不存在'. WHEN OTHERS. WRITE: / '未知错误'. ENDCASE.
💡 最佳实践
1. 使用适当的内表类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
* 根据查询模式选择内表类型 DATA: lt_standard TYPE STANDARD TABLE OF ty_data, lt_sorted TYPE SORTED TABLE OF ty_data WITH UNIQUE KEY key_field, lt_hashed TYPE HASHED TABLE OF ty_data WITH UNIQUE KEY key_field.