Löschen aus interner Tabelle Thema ist als GELÖST markiert

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

Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 09:26
Hallo zusammen,

ich bekomme es einfach nicht hin Datensätze aus einer internen Tabelle zu löschen. Also in der Regel schon, aber in diesem Falle leider nicht.

Und zwar habe ich eine IT, in der alle Daten aus einem Excel File stehen (Matnr, Werk, etc.....)

Diese Tabelle soll bei Bestätigen der Selektion im Dynpro in einem ALV Grid angezeigt werden. So weit so gut. Nun möchte ich aber vorher noch abprüfen ob in der Tabelle Materialnummern enthalten sind, die es in Wirklichkeit gar nicht gibt.

Code: Alles auswählen.

*Loop über meine interne Tabelle mit den Excel Daten
LOOP AT it_outtab INTO wa_outtab.

    SELECT matnr FROM marc APPENDING TABLE it_marc
      WHERE matnr = wa_outtab-matnr.

    IF sy-subrc <> 0.

      wa_itab-matnr = wa_outtab-matnr.

      IF wa_itab-matnr IS NOT INITIAL.

        wa_itab-text = 'Material existiert nicht'(008).

      ENDIF.

      APPEND wa_itab TO gt_itab.
      CLEAR wa_itab.

    ENDIF.
    
  ENDLOOP.
So. Nun habe ich eine Tabelle in der die Datensätze stehen die es nicht gibt. Aber wie bekomme ich nun genau diese Zeilen (gt_itab) aus meiner ersten internen Tabelle (it_outtab) gelöscht? Habe mit DELETE schon rumprobiert, aber leider funktioniert es nicht so, wie ich mir das vorstelle.

Danke für eure Hilfe!
Zuletzt geändert von Beginner014 am 21.11.2014 10:29, insgesamt 1-mal geändert.


Re: Löschen aus interner Tabelle

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 21.11.2014 09:52
Posting ist ein bisschen wirr.....

Warum schreibst Du die Materialien denn in eine interne Tabelle, wenn Du die Eintraege dann doch nur wieder loeschst?

Wenn die Tabelle nur "geloeschte" enthaelt, mach einfach ein clear auf die Tabelle und sie ist leer, oder pack die Tabelle einfach nicht mehr an.

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 09:57

Code: Alles auswählen.

IF sy-subrc <> 0.

      wa_itab-matnr = wa_outtab-matnr.

      IF wa_itab-matnr IS NOT INITIAL.

        wa_itab-text = 'Basic Data missing.'(008).

      ENDIF.
Also anstatt die Datensätze hier in eine neue interne Tabelle zu schreiben könnte ich sie gleich löschen, da hast du natürlich recht. Die Frage ist nur wie?

Re: Löschen aus interner Tabelle

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 21.11.2014 10:18
mit

Code: Alles auswählen.

*      APPEND wa_itab TO gt_itab.
Der '*' muss an der 1. Stelle der Zeile stehen

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 10:25
Danke für deine Hilfe, so habe ich es vorhin auch schon versucht, allerdings ohne Erfolg. :(

Code: Alles auswählen.

LOOP AT it_outtab INTO wa_outtab.

    SELECT matnr FROM marc APPENDING TABLE it_marc
      WHERE matnr = wa_outtab-matnr.

    IF sy-subrc <> 0.

        CLEAR wa_outtab.

    ENDIF.

  ENDLOOP.
In it_outtab sind trotzdem noch alle Datensätze drin.

Re: Löschen aus interner Tabelle

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 21.11.2014 10:46
Beginner014 hat geschrieben: In it_outtab sind trotzdem noch alle Datensätze drin.
WAS genau steht denn in der it_outtab drin. NUR Saetze die geloescht werden sollen oder alle oder was GENAU?

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 10:48
Nein, also nochmal von vorn:

In der it_outtab stehen sämtliche Datensätze aus einer Excel Datei.

Dann möchte ich auf die Matnr abprüfen, welche Sätze aus dieser Tabelle nicht existieren.

Und diese möchte ich dann rausschmeißen.

Re: Löschen aus interner Tabelle

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 21.11.2014 10:59
Ist es wirklich so schwer mal die <F1> zu benutzen?

http://help.sap.com/abapdocu_70/de/ABAPDELETE_ITAB.htm

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 11:05
Warum gleich so unfreundlich?

Hättest du meinen Beitrag richtig gelesen, hättest du folgendes entdeckt und somit festgestellt, dass ich sehr wohl F1 gedrückt habe:
Habe mit DELETE schon rumprobiert, aber leider funktioniert es nicht so, wie ich mir das vorstelle.
Habe entschieden es nun mit einer Ampel im ALV zu lösen, also hat sich das löschen aus der IT erübrigt.

Re: Löschen aus interner Tabelle

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) » 21.11.2014 11:12
Beginner014 hat geschrieben:Warum gleich so unfreundlich?

Hättest du meinen Beitrag richtig gelesen, hättest du folgendes entdeckt und somit festgestellt, dass ich sehr wohl F1 gedrückt habe:
Habe mit DELETE schon rumprobiert, aber leider funktioniert es nicht so, wie ich mir das vorstelle.
Habe entschieden es nun mit einer Ampel im ALV zu lösen, also hat sich das löschen aus der IT erübrigt.
Das "Ist es wirklich so schwer mal die <F1> zu benutzen? " nennst Du unfreundlich :D

Du hast nicht geschrieben, dass Du die F1-Hilfe benutzt hast, sondern lediglich dass Du mit DELETE "rumprobiert" hast.

Wenn Du wirklich die F1 Hilfe gelesen hast und es dann nicht hinbekomm hast, solltest Du ueber eine berufliche Aenderung nachdenken. Ich meine es nur Gut mit Dir.

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 11:18
Ganz ehrlich, ich dachte dieses Forum ist für Anfängerfragen da?

Wenn es jemandem nervt, dass hier simple und manchmal vielleicht auch blöde Fragen gestellt werden, der soll hier halt nicht reinschauen. Ich bin froh, so ein Forum gefunden zu haben, weil ich dachte blöde Fragen gibt es nicht und man kann sich nur verbessern.

Aber anscheinend muss ich da eines besseren belehrt werden.

Mir eine berufliche Veränderung ans Herz zu legen finde ich ganz schön dreist, denn du hast keine Ahnung von mir und meinem beruflichen Werdegang bisher.

Also für sowas habe ich wirklich kein Verständnis. :down:
Zuletzt geändert von Beginner014 am 21.11.2014 11:40, insgesamt 1-mal geändert.

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 11:20
Das "Ist es wirklich so schwer mal die <F1> zu benutzen? " nennst Du unfreundlich :D
Ja ich empfinde das als unfreundlich, aber vermutlich ist das einfach ein normaler Umgangston unter Männern - nichts für ungut ;)

Re: Löschen aus interner Tabelle

Beitrag von inab (ForumUser / 69 / 0 / 6 ) » 21.11.2014 11:46
Was wohl in Deinem Posting fehlt ist WIE hast Du mit delete rumprobiert !!!

Wenn Du das Coding gepostet hättest, mit dem Du den delete probiert hast könnte man Dir mit Sicherheit helfen :wink:

Re: Löschen aus interner Tabelle

Beitrag von JHM (Top Expert / 1139 / 1 / 179 ) » 21.11.2014 11:59
Beginner014 hat geschrieben:Ganz ehrlich, ich dachte dieses Forum ist für Anfängerfragen da?
Ist es auch und man wird dir helfen, wenn man dich versteht. Ich hatte die Frage/das Problem nicht verstanden, deshalb bisher keine Antwort von mir.
Wenn du den probierten DELET Befehl mit gepostet hättest und drei Worte zum Fehler gesagt hättest, hätte man direkt helfen können.
In der IT ist "da kommt ein Fehler" nicht sehr hilfreich, da braucht man schon ein paar Details. Die gibt man beim Arzt ja auch für die Diagnose raus und sagt nicht "bin Krank" und lässt den Arzt mal rumdocktern.

Ein RTFM ist nicht nur hier, sondern im iNet weitverbreitet, sollte man nicht als unfreundlich sondern als Schubs in die richtige Richtung verstehen.

Code: Alles auswählen.

IF sy-subrc <> 0.
*  Alle Sätze löschen, die das Material beinhalten:
   DELETE it_outab WHERE matnr = wa_outtab-matnr.
* Den aktuellen Satz löschen:
  DELETE TABLE it_outab FROM wa_outtab.
ENDIF.
Gruß Hendrik

Re: Löschen aus interner Tabelle

Beitrag von Beginner014 (ForumUser / 46 / 4 / 0 ) » 21.11.2014 12:08
Danke euch beiden, ihr habt natürlich Recht, ich hatte mich etwas wirr ausgedrückt im Eifer des Gefechts und ja, ich hätte natürlich meinen Delete Versuch mit posten können.

Also:

Ich lösche weiter vorn im Programm schon die erste Zeile dieser IT mit Delete, was auch wunderbar funktioniert:

Code: Alles auswählen.

DELETE it_outtab index 1.
IF sy-subrc <> 0.
* Alle Sätze löschen, die das Material beinhalten:
DELETE it_outab WHERE matnr = wa_outtab-matnr.
ENDIF.
Danke, genau das hatte ich vorhin schon dastehen und es hat nicht funktioniert - kann ja auch nicht wenn man unten zum testen noch eine andere IT ausgibt. Danke dafür, hast mir auf die Sprünge geholfen, auch wenn ich es nun doch anders lösen werde :)

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

SELECT-OPTIONS ... FOR TYPE?!?
vor 8 Stunden von black_adept 20 / 563
Hierarchische Auswahl bei N:N
vor 10 Stunden von DeathAndPain 4 / 27
Loop in der Endroutine
vor 13 Stunden von DeathAndPain 3 / 61
Shortdump wegen Speicherüberlauf
vor 15 Stunden von chhe001 9 / 206

Vergleichbare Themen

daten aus interner tabelle lòschen
von slim » 12.06.2007 14:54
Sätze aus interner Tabelle löschen
von woddstock99 » 31.01.2019 18:22
DB aus interner Tabelle ohne Kopfzeile löschen
von kibani » 05.03.2020 09:15
Performance beim Löschen in interner Tabelle mit Ranges
von ernst » 12.01.2006 17:50
Concatenate in interner Tabelle
von wenigerABAP » 16.09.2016 12:47