使用SELECT 查询时,如果需要和程序里的内表关联,使用FOR ALL ENTRIES IN 。例如,gt_vbap是一个放客户销售主数据的内表(缓存表),现在从数据库表kna1中取出客户的名称。
SELECT kunnr
name1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FROM kna1
FOR ALL ENTRIES IN gt_vbap
WHERE kunnr = gt_vbap-kunnr.
如果查询数据量的很大,可以使用“%_HINTS 数据库”
SELECT kunnr
name1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
FROM kna1
FOR ALL ENTRIES IN gt_vbap
WHERE kunnr = gt_vbap-kunnr
%_HINTS ORACLE '&prefer_join_with_fda 1&'.
注意,%_HINTS 后加的是数据库,如 ORACLE / HDB / DB 等。
参考:
For all entries: %_HINTS are not used for the statement ? | SAP Community