
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
45 lines
1.0 KiB
Plaintext
45 lines
1.0 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Using an empty driver table in a ``++SELECT++``/``++FOR ALL ENTRIES++`` table has a very important side effect: the complete ``++WHERE++`` clause is not taken into account because a ``++NO WHERE++`` condition is generated. Thus a full table scan is unexpectedly executed.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,abap]
|
|
----
|
|
SELECT carrid , connid , seatsocc FROM flights
|
|
INTO TABLE seatsocc_tab
|
|
FOR ALL ENTRIES IN conn_tab " Noncompliant; conn_tab may be empty.
|
|
WHERE carrid = conn_tab-carrid
|
|
AND connid = conn_tab-connid.
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,abap]
|
|
----
|
|
IF conn_tab is not initial.
|
|
" ...
|
|
SELECT carrid , connid , seatsocc FROM flights
|
|
INTO TABLE seatsocc_tab
|
|
FOR ALL ENTRIES IN conn_tab
|
|
WHERE carrid = conn_tab-carrid
|
|
AND connid = conn_tab-connid.
|
|
" ...
|
|
ENDIF.
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Driver table "xxxxx" should be checked for emptiness before being used.
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|