SELECT UP TO 1 ROW STATT SELECT SINGLE / UNTERSCHIEDE UNTER HANA

Vor HANA:

          SELECT SINGLE * FROM adr6
            INTO ls_adr6
            WHERE addrnumber = lv_addrnumber
            AND   persnumber = lv_persnumber.

Es fehlt hier der Primary Key, der in Nicht HANA DB normalerweise herangezogen wird, auch wenn der Key nicht vollständig ist.

Bei Positionszeilen könnte dies egal sein, wenn die Positionsinfo nicht wesentlich ist, damit ist und wäre der Code eig. auch ausreichend.

Auch die ORDER BY Clause ist und wäre nicht notwendig, wenn dir Reihenfolge des Output egal ist.

Trotzdem erfordert HANA hier eine Korrektur, statt SELECT SINGLE muss SELECT UP TO 1 ROWS und explizit ORDER BY verwendet werden.

Mit HANA:
          SELECT * UP TO 1 ROWS FROM adr6
            INTO ls_adr6
            WHERE addrnumber = lv_addrnumber
            AND   persnumber = lv_persnumber
              ORDER BY PRIMARY KEY . „=> AUTOMATIC ADJUSTMENT

Zusammengefaßt gilt:

  1. There were only a handfull of issues related to SELECT and missing ORDER BY, direct reading of Pool or Clusters, or native SQL statements.
  2. However, we found lots of real issues related to the following statements:
  • SELECT SINGLE without fully qualified key
  • SELECT. EXIT. ENDSELECT statements
  • SELECT CHECK ENDSELECT statements
  • SELECT UP TO 1 ROWS statements
  • SELECT INTO TABLE statements where sequence of resulting table is important for subsequent processing using LOOP, even without AT NEW/ AT FIRST events.