HANA und for all entries

Alles über die SAPs In-Memory Datenbank HANA
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

HANA und for all entries

Beitrag von ST22 (Specialist / 250 / 30 / 30 ) » 14.06.2016 11:19
Hallo Zusammen,

ist unter HANA der for all entries mit leerer entry Tabelle nicht mehr erlaubt, bzw. gibt es da generell Probleme?
Bei leerer Entry-Tabelle liefert der zweite SELECT in die sortierte Tabelle auch alle anderen Sprachen.
Kann jemand von euch das mal testen auf einer HANA Umgebung?

Grüße
Frank

Code: Alles auswählen.

REPORT zcheck_for_all_entries.
TABLES:
  mara.

SELECT-OPTIONS:
  s_matnr FOR mara-matnr.

TYPES:
  BEGIN OF ty_makt_s,
    matnr TYPE matnr,
    spras TYPE spras,
    maktx TYPE maktx,
  END   OF ty_makt_s.

DATA: gt_makt     TYPE STANDARD TABLE OF ty_makt_s.
DATA: gt_makt_srt TYPE SORTED   TABLE OF ty_makt_s WITH UNIQUE KEY matnr spras.

START-OF-SELECTION.

  SELECT matnr maktx FROM makt
    INTO CORRESPONDING FIELDS OF TABLE gt_makt
    FOR ALL ENTRIES IN s_matnr
    WHERE matnr = s_matnr-low
    AND   spras = sy-langu.

  LOOP AT gt_makt_srt ASSIGNING FIELD-SYMBOL(<makt>)
    WHERE spras <> sy-langu.
    EXIT.
  ENDLOOP.
  IF sy-subrc = 0.
    WRITE: / <makt>-matnr, <makt>-spras.
  ENDIF.

  SELECT matnr spras maktx FROM makt
    INTO CORRESPONDING FIELDS OF TABLE gt_makt_srt
    FOR ALL ENTRIES IN s_matnr
    WHERE matnr = s_matnr-low
    AND   spras = sy-langu
    ORDER BY PRIMARY KEY.

  LOOP AT gt_makt_srt ASSIGNING FIELD-SYMBOL(<makt_srt>)
    WHERE spras <> sy-langu.
    EXIT.
  ENDLOOP.
  IF sy-subrc = 0.
    WRITE: / <makt_srt>-matnr, <makt_srt>-spras.
  ENDIF.


Re: HANA und for all entries

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) » 14.06.2016 12:27
Hallo,

Bei mir wird gar nichts ausgegeben. Im ersten Select wird das Feld SPRAS nicht gefüllt und beim 2. Select ist das Feld SPRAS nicht ungleich SY-LANGU. In beiden Selects wird jeweils nur ein Eintrag gefunden.

Viele Grüße, Tapio

Folgende Benutzer bedankten sich beim Autor erp-bt für den Beitrag:
ST22

...entwickelnder Berater...beratender Entwickler

Re: HANA und for all entries

Beitrag von ST22 (Specialist / 250 / 30 / 30 ) » 14.06.2016 13:12
Hi,
stimmt, den ersten SELECT kann man noch um SPRAS erweitern.
Und der erste LOOP war auch um die falsche Itab, sorry.

Code: Alles auswählen.

REPORT zcheck_for_all_entries.
TABLES:
  mara.

SELECT-OPTIONS:
  s_matnr FOR mara-matnr.

TYPES:
  BEGIN OF ty_makt_s,
    matnr TYPE matnr,
    spras TYPE spras,
    maktx TYPE maktx,
  END   OF ty_makt_s.

DATA: gt_makt     TYPE STANDARD TABLE OF ty_makt_s.
DATA: gt_makt_srt TYPE SORTED   TABLE OF ty_makt_s WITH UNIQUE KEY matnr spras.

START-OF-SELECTION.

  SELECT matnr spras maktx FROM makt
    INTO CORRESPONDING FIELDS OF TABLE gt_makt
    FOR ALL ENTRIES IN s_matnr
    WHERE matnr = s_matnr-low
    AND   spras = sy-langu.

  LOOP AT gt_makt ASSIGNING FIELD-SYMBOL(<makt>)
    WHERE spras <> sy-langu.
    EXIT.
  ENDLOOP.
  IF sy-subrc = 0.
    WRITE: / <makt>-matnr, <makt>-spras.
  ENDIF.

* this select statement reads other languages also !?!
  SELECT matnr spras maktx FROM makt
    INTO CORRESPONDING FIELDS OF TABLE gt_makt_srt
    FOR ALL ENTRIES IN s_matnr
    WHERE matnr = s_matnr-low
    AND   spras = sy-langu
    ORDER BY PRIMARY KEY.

  LOOP AT gt_makt_srt ASSIGNING FIELD-SYMBOL(<makt_srt>)
    WHERE spras <> sy-langu.
    EXIT.
  ENDLOOP.
  IF sy-subrc = 0.
    WRITE: / <makt_srt>-matnr, <makt_srt>-spras.
  ENDIF.
Das eigentliche Problem ist, dass bei leerer Entrytabelle auch alle anderen Sprachen mit selektiert werden.

Scheint ein bug zu sein, oder habe ich was übersehen?

Grüße
Frank

Re: HANA und for all entries

Beitrag von zzcpak (Expert / 673 / 5 / 66 ) » 14.06.2016 13:15
das ist lt. Beschreibung von FOR ALL ENTRIES doch das "normale" Verhalten. Daher wird ja auch immer empfohlen, VOR der Verwendung von FAE zu prüfen, ob die Eingabetabelle auch Inhalte hat. Sonst werden halt eben alle Einträge gelesen.
Before using an internal table itab after FOR ALL ENTRIES, always check that the internal table is not initial. In an initial internal tables, all rows are read from the database regardless of any further conditions specified after WHERE. This is not usually the required behavior.

Folgende Benutzer bedankten sich beim Autor zzcpak für den Beitrag:
ST22


Re: HANA und for all entries

Beitrag von ST22 (Specialist / 250 / 30 / 30 ) » 14.06.2016 13:54
O.K. , das war der Fehler "regardless of any further conditions...".
Im Moment achten wir halt besonders auf HANA relevante Dinge, sind schon über ein paar "Order by" issues gestolpert, aber das hat jetzt damit gar nichts zu tun.

Grüße
Frank

Seite 1 von 1

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Last erzeugen im SAPGui?
vor 34 Minuten von ewx 18 / 158
IDoc-Segmente löschen
Gestern von littleJohn 2 / 74

Vergleichbare Themen

HANA kennelernen, womit anfangen? ( nicht s4/hana )
von DenBas » 03.09.2019 14:17
FOR ALL ENTRIES IN
von Bajdu » 21.08.2006 14:25
FOR ALL ENTRIES IN
von melisy » 02.04.2009 12:11
for all entries
von Dieter » 12.02.2003 06:10
Problem bei for all entries
von Thomas R. » 21.03.2006 17:16