
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.
75 lines
1.5 KiB
Plaintext
75 lines
1.5 KiB
Plaintext
== Why is this an issue?
|
|
|
|
The ``++READ TABLE ... WITH KEY ...++`` statement performs a linear search of ``++STANDARD++`` tables, which is very inefficient in most cases.
|
|
|
|
|
|
This rule raises an issue when a ``++READ TABLE ... WITH KEY ...++`` statement does not finish with ``++BINARY SEARCH++``. No issue will be raised for ``++HASHED++`` and ``++SORTED++`` tables.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,abap]
|
|
----
|
|
TYPES BEGIN OF t_mytable,
|
|
myfield TYPE i
|
|
END OF t_mytable.
|
|
|
|
DATA myworkarea TYPE t_mytable.
|
|
|
|
DATA mytable TYPE STANDARD TABLE OF t_mytable.
|
|
|
|
SORT mytable BY myfield.
|
|
|
|
READ TABLE mytable
|
|
WITH KEY myfield = 42
|
|
INTO myworkarea. " Noncompliant
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,abap]
|
|
----
|
|
TYPES BEGIN OF t_mytable,
|
|
myfield TYPE i
|
|
END OF t_mytable.
|
|
|
|
DATA myworkarea TYPE t_mytable.
|
|
|
|
DATA mytable TYPE STANDARD TABLE OF t_mytable.
|
|
|
|
SORT mytable BY myfield.
|
|
|
|
READ TABLE mytable
|
|
WITH KEY myfield = 42
|
|
INTO myworkarea
|
|
BINARY SEARCH. " Compliant
|
|
|
|
DATA my_hashed_table TYPE HASHED TABLE OF t_mytable
|
|
WITH UNIQUE KEY myfield.
|
|
|
|
DATA my_sorted_table TYPE SORTED TABLE OF t_mytable
|
|
WITH UNIQUE KEY myfield.
|
|
|
|
READ TABLE my_hashed_table
|
|
WITH KEY myfield = 42
|
|
INTO myworkarea. " Compliant
|
|
|
|
READ TABLE my_sorted_table
|
|
WITH KEY myfield = 42
|
|
INTO myworkarea. " Compliant
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Add "BINARY SEARCH" to this "READ" statement.
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|