Löschen aus itab1, was NICHT in itab2

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Löschen aus itab1, was NICHT in itab2

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »

Code: Alles auswählen.

* erledigte Aufträge löschen, falls angekreuzt wurde, dass man nur offene sehen will
IF vboff = 'X'.

  LOOP AT gt_outtab INTO wa_outtab.
    IF wa_outtab-uvall <> 'erledigt'.              " wenn Positions-Gesamtstatus nicht erledigt ist, dann muss VBELN behalten werden
        wa_keep-vbeln = wa_outtab-vbeln.
        APPEND wa_keep TO gt_keep.
    ENDIF.
  ENDLOOP.

  "DELETE ADJACENT DUPLICATES FROM gt_keep.
  LOOP AT gt_outtab INTO wa_outtab WHERE vbeln NOT IN gt_keep.
    DELETE gt_outtab.
  ENDLOOP.

  CLEAR wa_outtab.

ENDIF.
Das kann ich so nicht machen, da gt_keep keine Selektionstabelle ist. Könnte ich sie denn manuell als solche füllen?
Oder muss ich leider einen geschachtelten LOOP verwenden?
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

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


Re: Löschen aus itab1, was NICHT in itab2

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »

Code: Alles auswählen.

type: tr_vbeln type range of vbeln.
data: lr_vbeln type tr_vbeln.

LOOP AT gt_outtab INTO wa_outtab.
  IF wa_outtab-uvall <> 'erledigt'.
    APPEND VALUE #( sign = 'I' option = 'EQ' low = wa_keep-vbeln ) TO lr_vbeln. "= 7.40er Syntax
  ENDIF.
ENDLOOP.

* Ein bisserl aufräumen kann nie schaden
SORT lr_vbeln.
DELETE ADJACENT DUPLICATES FROM lr_vbeln.

DELETE gt_outtab WHERE vbeln NOT IN lr_vbeln.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Legxis

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Löschen aus itab1, was NICHT in itab2

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »
Wir sind leider auf 6.0 und ich schaffe es nicht, deinen Code so zu übersetzen, dass er sich nicht irgendwo beschwert. Kannst du mir da helfen?
Im Moment sagt er, dass wa_keep keine Kopfzeile hat und daher auch kein SIGN, etc. und dass wa_keep und gr_keep nicht kompatibel sind.

Code: Alles auswählen.

TYPES: ty_r_keep TYPE RANGE OF vbeln.
DATA: gr_keep TYPE ty_r_keep,
      wa_keep TYPE ty_r_keep,

Code: Alles auswählen.

LOOP AT gt_outtab INTO wa_outtab.
    IF wa_outtab-uvall <> 'erledigt'.              " wenn Positions-Gesamtstatus nicht erledigt ist, dann muss VBELN behalten werden
        wa_keep-sign = 'I'.
        wa_keep-option = 'EQ'.
        wa_keep-low = wa_outtab-vbeln.
        APPEND wa_keep TO gr_keep.
    ENDIF.
  ENDLOOP.

  SORT gr_keep.
  DELETE ADJACENT DUPLICATES FROM gr_keep.
  DELETE gt_outtab WHERE vbeln NOT IN gr_keep.
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Löschen aus itab1, was NICHT in itab2

Beitrag von abuma (Specialist / 102 / 36 / 14 ) »
huhu,

gr_keep ist in deiner Daten-Deklaration keine Tabelle.

Richtig wäre "TYPE TABLE OF"

Code: Alles auswählen.

TYPES: ty_r_keep TYPE RANGE OF vbeln.
DATA: gr_keep TYPE TABLE OF ty_r_keep,
      wa_keep TYPE ty_r_keep,
Liebe Grüße
abuma

Re: Löschen aus itab1, was NICHT in itab2

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hi @abuma,
nicht ganz, "TYPE RANGE OF " definiert schon eine Tabelle (ohne Kopfzeile)
dann brauchts noch die Workarea dazu:

Code: Alles auswählen.

TYPES: ty_r_keep TYPE RANGE OF vbeln.
DATA: gr_keep TYPE ty_r_keep,
      wa_keep LIKE LINE OF gr_keep.   "<<<<<<<< Workarea für die Range Tabelle
/Edwin

Folgende Benutzer bedankten sich beim Autor edwin für den Beitrag (Insgesamt 2):
Legxisabuma


Re: Löschen aus itab1, was NICHT in itab2

Beitrag von Legxis (Specialist / 160 / 90 / 28 ) »

Code: Alles auswählen.

TYPES: ty_r_keep TYPE RANGE OF vbeln.
DATA: gr_keep TYPE ty_r_keep,
      wa_keep TYPE LINE OF ty_r_keep.

Code: Alles auswählen.

* erledigte Aufträge löschen, falls angekreuzt wurde, dass man nur offene sehen will
IF vboff = 'X'.

  LOOP AT gt_outtab INTO wa_outtab.
    IF wa_outtab-uvall <> 'erledigt'.              " wenn Positions-Gesamtstatus nicht erledigt ist, dann muss VBELN behalten werden
        wa_keep-sign = 'I'.
        wa_keep-option = 'EQ'.
        wa_keep-low = wa_outtab-vbeln.
        APPEND wa_keep TO gr_keep.
    ENDIF.
  ENDLOOP.

  IF gr_keep IS NOT INITIAL.
    SORT gr_keep.
    DELETE ADJACENT DUPLICATES FROM gr_keep.
    DELETE gt_outtab WHERE vbeln NOT IN gr_keep.
  ENDIF.

  CLEAR wa_outtab.

ENDIF.
Damit beschwert sich der Compiler nicht mehr und es scheint zu funktionieren, danke!
( SAP ECC 6.0, NetWeaver 7.0, ohne unicode, ohne support/enhancement packages )

Re: Löschen aus itab1, was NICHT in itab2

Beitrag von abuma (Specialist / 102 / 36 / 14 ) »
edwin hat geschrieben:Hi @abuma,
nicht ganz, "TYPE RANGE OF " definiert schon eine Tabelle (ohne Kopfzeile)
dann brauchts noch die Workarea dazu:

Code: Alles auswählen.

TYPES: ty_r_keep TYPE RANGE OF vbeln.
DATA: gr_keep TYPE ty_r_keep,
      wa_keep LIKE LINE OF gr_keep.   "<<<<<<<< Workarea für die Range Tabelle
/Edwin
stimmt... danke für die Korrektur! :)

Liebe Grüße
abuma

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2234
Views
Einzelne Felder aus itab1 in itab2 übertragen
von Bright4.5 » 20.03.2020 14:26 • Verfasst in ABAP® für Anfänger
2
Antw.
2035
Views
Wie ~150.000.000 DS löschen
von c0lt.seavers » 17.07.2007 08:03 • Verfasst in ABAP® für Anfänger
4
Antw.
12535
Views
Bestellung löschen
von vhoffe » 07.12.2006 14:21 • Verfasst in Material Management & Produktionsplanung
2
Antw.
1804
Views
Löschen von Personal
von supermario73 » 29.11.2007 13:40 • Verfasst in Human Resources
0
Antw.
1784
Views
MEAN - Anlieferadresse löschen
von Carol » 11.11.2005 11:47 • Verfasst in Material Management & Produktionsplanung

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von tar 21 / 1389
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2792
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 871
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 426

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

Eclipse - warum/wann verwendet ihr es [nicht]
vor einer Stunde von tar 21 / 1389
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2792
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 871
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 426

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2462
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9048