Code: Alles auswählen.
SELECT * FROM sflight INTO TABLE @DATA(lt_sflight).
SORT lt_sflight BY carrid.
data(lv_int) = lines( lt_sflight[ carrid = 'AA' ] ). " #91 sowie #93 sind eckige klammern
write lv_lint.Code: Alles auswählen.
DATA lt_sflight type SORTED TABLE OF sflight with UNIQUE KEY CARRID CONNID FLDATE.
SELECT * FROM sflight INTO TABLE @lt_sflight.
data(lv_lint) = LINES( filter #( lt_sflight WHERE carrid = 'AA ' ) ).
write lv_lint.Folgende Benutzer bedankten sich beim Autor tm987456 für den Beitrag:
DeathAndPain
Filter habe ich noch nie verwendet. jetzt wirft mir das programm leider den Fehler, dass der operator "Filter" nicht erwartet wurde - hier mal mein richtiger Quelltextausschnitt:tm987456 hat geschrieben:Das liefert dir das gewünschte Ergebnis mit Lines, aber ob das so sinnvoll ist weiss ich nicht.Code: Alles auswählen.
DATA lt_sflight type SORTED TABLE OF sflight with UNIQUE KEY CARRID CONNID FLDATE. SELECT * FROM sflight INTO TABLE @lt_sflight. data(lv_lint) = LINES( filter #( lt_sflight WHERE carrid = 'AA ' ) ). write lv_lint.
Code: Alles auswählen.
DATA: lt_temp TYPE standard TABLE OF swragent WITH NON-UNIQUE SORTED KEY objid_type
COMPONENTS objid otype .
" viiiiieeeel code ...
DATA(lt_user) = lines( FILTER #( lt_temp USING KEY objid_type WHERE objid = ls_user-objid ) ).Guck dir mal die Hilfe zu REDUCE an.SaskuAc hat geschrieben:Zum Beispiel suche ich nach einer art funktion, mit der ich die Zeilen einer internen Tabelle "zählen kann" die einen bestimmten Inhalt haben.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
SaskuAc

Wieso? Er braucht alle, die in der WHERE-Bedinung stehen und will nur die zählen, die zusätzlich einer bestimmten Bedingung genügen.JohnLocklay hat geschrieben:steh ich auf dem Schlauch?
wieso benutzt man die where bedingung nicht schon im select?
damit bekommst Du doch nur die Eintträge die Du brauchst für Deine Verarbeitung.

Genau. Abgesehen davon war der Select hier nur ein Beispiel um zu verdeutlichen was ich brauche. Im Programm selber habe ich kein Select-Statement, dass ich irgendwie anpassen könnte. Ich habe nur einen FuBa der mir die Daten zurückliefert, diese Daten muss ich unter bestimmten bedingungen zählen.ralf.wenzel hat geschrieben:Wieso? Er braucht alle, die in der WHERE-Bedinung stehen und will nur die zählen, die zusätzlich einer bestimmten Bedingung genügen.JohnLocklay hat geschrieben:steh ich auf dem Schlauch?
wieso benutzt man die where bedingung nicht schon im select?
damit bekommst Du doch nur die Eintträge die Du brauchst für Deine Verarbeitung.
Bei mir compiliert er das problemlos. Kann es sein, dass Du auf einem Release < 7.40 sitzt? In dem Fall: Basis beharken oder weiter mit umständlichem Code arbeiten .jetzt wirft mir das programm leider den Fehler, dass der operator "Filter" nicht erwartet wurde
Um Himmels willen! Bei der Online-Doku wird mir ja schon vom Lesen schlecht. Da entsteht dann so ein obskures FOR-Statement, am besten iteriert mit einem kranken regulären Ausdruck, und nachher versteht keiner, was der Einzeiler da macht.ralf hat geschrieben:Guck dir mal die Hilfe zu REDUCE an.

Weil die Notation einem READ TABLE entspricht und keiner WHERE Bedingung.ralf.wenzel hat geschrieben:Ich habe übrigens nie verstanden, warum lines( itab[ feld1 = 'A' Feld 2 = 'B' ] ) nicht geht., intuitiv ist das unter 7.40 und höher eigentlich logisch.

erstaunlicherweise nein. Ich sitze direkt auf 7.40 - haben jetzt sogar mal die überlegungen gestartet, ob wir nicht auf EHP8 ( bin ehrlich, ich weiß nicht was alles enthalten ist, was uns auf unserem System ( HCM ) weiterbringt ) und damit auf 7.50 upgraden.DeathAndPain hat geschrieben:Bei mir compiliert er das problemlos. Kann es sein, dass Du auf einem Release < 7.40 sitzt? In dem Fall: Basis beharken oder weiter mit umständlichem Code arbeiten .jetzt wirft mir das programm leider den Fehler, dass der operator "Filter" nicht erwartet wurde![]()
Code: Alles auswählen.
data: lt_sflight type STANDARD TABLE OF sflight WITH NON-UNIQUE SORTED KEY flight COMPONENTS carrid.
SELECT * FROM sflight INTO TABLE @lt_sflight.
DATA(lt_lines) = lines( FILTER #( lt_sflight USING KEY flight WHERE carrid = ' AA' ) ).
BREAK-POINT.Ist ein Kernelfehler, den ich auch auf meinem System habe, den SAP aber auch nicht fixen wird. --> Siehe Horst Kellers Antwort auf die analoge Fehlerbeschreibung von Christian Guenter vom 23.9.2015 in diesem BlogSaskuAc hat geschrieben:...
hier bringt er mir den Fehler "Unerwarteter Operator "Filter"."