Untersch. FOR ALL ENTRIES und DELETE ADJACENT DUPLICATES

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Untersch. FOR ALL ENTRIES und DELETE ADJACENT DUPLICATES

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hi!

Was ist der Unterschied zwischen
FOR ALL ENTRIES und DELETE ADJACENT DUPLICATES ?

z.B
DELETE ADJACENT DUPLICATES FROM itab COMPARING VSTEL

SELECT * FROM LIKP
INTO TABLE itab
FOR ALL ENTRIES IN ....
WHERE VSTEL EQ GW_VSTEL
Viele Grüße
bohne

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Mahlzeit 8)

Die Schlüsselwortdokumentation erklärt das eigentlich ganz gut anhand von Beispielen:

Code: Alles auswählen.

* FTAB sei wie folgt gefüllt: 
* 
* CARRID  CONNID 
* -------------- 
* LH      2415 
* SQ      0026 
* LH      0400 

SELECT * FROM SFLIGHT INTO WA_SFLIGHT 
    FOR ALL ENTRIES IN FTAB 
    WHERE CARRID = FTAB-CARRID AND 
          CONNID = FTAB-CONNID AND 
          FLDATE = '19950228'. 
  RATIO = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX. 
  WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID, RATIO. 
ENDSELECT. 

* Der Befehl wirkt dann wie: 

SELECT DISTINCT * FROM SFLIGHT INTO WA_SFLIGHT 
    WHERE ( CARRID = 'LH'   AND 
            CONNID = '2415' AND 
            FLDATE = '19950228' ) OR 
          ( CARRID = 'SQ'   AND 
            CONNID = '0026' AND 
            FLDATE = '19950228' ) OR 
          ( CARRID = 'LH'   AND 
            CONNID = '0400' AND 
            FLDATE = '19950228' ). 
  RATIO = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX. 
  WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID, RATIO. 
ENDSELECT. 
Das Beispiel zeigt das 'FOR ALL ENTRIES' eben für jeden gegebenen Schlüssel auch eine Where-Bedingung erstellt.

DELETE ADJACENT DUPLICATES: (Aus der Schlüsselwortdoku)
Aus der internen Tabelle werden benachbarte, duplikative Einträge gelöscht. Folgen n duplikative Einträge aufeinander, so bleibt der erste Eintrag erhalten, die n-1 folgenden Einträge werden gelöscht.

Ist doch sprechend, oder?


Gruß
Markus

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hi :shock:

Was ist dann der Unterschied zwischen

Code: Alles auswählen.

SELECT * FROM SFLIGHT INTO WA_SFLIGHT 
    FOR ALL ENTRIES IN FTAB 
    WHERE CARRID = FTAB-CARRID AND 
          CONNID = FTAB-CONNID AND 
          FLDATE = '19950228'. 
  RATIO = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX. 
  WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID, RATIO. 
ENDSELECT. 
und

Code: Alles auswählen.

SELECT * FROM SFLIGHT INTO WA_SFLIGHT 
        WHERE CARRID = FTAB-CARRID AND 
          CONNID = FTAB-CONNID AND 
          FLDATE = '19950228'. 
  RATIO = WA_SFLIGHT-SEATSOCC / WA_SFLIGHT-SEATSMAX. 
  WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID, RATIO. 
ENDSELECT. 
Viele Grüße
bohne

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Im unterne Beispiel code von dir beinhaltet ftab-carrid genau ein wert, wobei ftab-carrid ein feld von einer struktur sein muss, nicht von einer tabelle!!!

Verstehste worauf ich hinaus will?

Im unteren beispiel bekommste zu einer Where bedingung das Ergebnis.
Bei 'FOR ALL ENTRIES IN itab' bekommste mehere Wherebedingungen, dementsprechend mehr Ergebniszeilen.


Mahlzeit ;)

Markus

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
Was ist der Unterschied zwischen
FOR ALL ENTRIES und DELETE ADJACENT DUPLICATES ?
Der Unterschied ist ganz einfach der das ein FOR ALL ENTRIES beim Daten lesen aus der DB im SELECT Statement benutzt wird.
Und bei einem DELETE ADJACENT DUPLICATES FROM itab werden Daten die in der internen Tabelle itab stehen bearbeitet.

Die beiden Befehle haben nur halt nichts miteinander zu tun.

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Flo hat geschrieben: Die beiden Befehle haben nur halt nichts miteinander zu tun.
Auch richtig ... :lol:

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
... verstehe ermöglicht eine log. Bedingung auf alle Zeilen
einer internen Tabelle.
Viele Grüße
bohne

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2867
Views
DELETE ADJACENT DUPLICATES mit Bedingung?
von ChristianHo » 08.03.2016 13:59 • Verfasst in ABAP® für Anfänger
2
Antw.
2695
Views
Mehrere Felder für delete adjacent duplicates übergeben
von Replica » 11.12.2009 13:28 • Verfasst in ABAP® für Anfänger
1
Antw.
509
Views
delete adjacent duplicates, außer wenn leer
von LD57 » 13.07.2020 09:58 • Verfasst in ABAP® für Anfänger
2
Antw.
1560
Views
Problem bei 'DELETE ADJACENT'
von zickzack0312 » 10.01.2007 16:28 • Verfasst in ABAP® für Anfänger
3
Antw.
4513
Views
BAPI_GOODSMVT_CREATE: Material umbuchen, Wert untersch.
von ralf.wenzel » 29.11.2011 13:45 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Rechnung: Belegspez. Adresse
vor 3 Stunden von ewx 2 / 248
Daten an Tabelle binden
vor 9 Stunden von Lukas Sanders 4 / 2118
Regex in where
vor 2 Tagen von tar 8 / 891
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 704

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Rechnung: Belegspez. Adresse
vor 3 Stunden von ewx 2 / 248
Daten an Tabelle binden
vor 9 Stunden von Lukas Sanders 4 / 2118
Regex in where
vor 2 Tagen von tar 8 / 891
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 704

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Tagen von snooga87 1 / 599
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3787
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 10205