Mehrere Zeilen aus SALV löschen

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

Mehrere Zeilen aus SALV löschen

Beitrag von ManMan (ForumUser / 26 / 10 / 0 ) »
Hallo zusammen,

ich habe ein Problem mit dem Löschen mehreren Zeilen aus dem ALV (und aus DB). Löschen von der Datenbank funktioniert gut (eine oder mehrere Zeilen werden gelöscht), aber das Löschen vom ALV nicht wirklich.
Wenn ich eine Zeile selektiere, sie wird aus SALV gelöscht. Wenn ich mehrere Zeile auswähle:
z.B. 1, 3 und 7 dann werden gelöscht 1, 4 und noch die Zeilen 2, 5 werden markiert.
Was mache ich falsch?

Code: Alles auswählen.

  DATA: lr_selections TYPE REF TO cl_salv_selections.
  DATA: lt_rows TYPE salv_t_row.
  DATA: ls_rows TYPE lvc_s_row.
  lr_selections = gr_table->get_selections( ).
  lt_rows       = lr_selections->get_selected_rows( ).

  DATA: lv_lines TYPE i.

  lv_lines = lines( lt_rows ).
  DATA: lv_zaehler TYPE i.
  lv_zaehler = 1.
  DO lv_lines TIMES.

  READ TABLE lt_rows INTO ls_rows INDEX lv_zaehler.
  READ TABLE gt_table INTO gs_table INDEX ls_rows-index.
* Delete from DB
    DELETE FROM table
    WHERE lifnr   = gs_table-lifnr
      AND linam   = gs_table-linam
      AND kunnr   = gs_table-kunnr
      AND kunam   = gs_table-kunam.

* Delete from ALV-Grid
    DELETE gt_table INDEX ls_rows-index.
    lv_zaehler = lv_zaehler + 1.
  ENDDO.

gr_table->refresh( ).

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


Re: Mehrere Zeilen aus SALV löschen

Beitrag von ParLaMenT (ForumUser / 14 / 0 / 2 ) »
Ich vermute, dass da ein kleiner Denkfehler ist.
Du hast die Zeilen 1,3,7 markiert in deiner internen Tabelle haben die auch den Index 1,3,7.
Sobald du die erste Zeile löscht, dann nimmt die 2 Zeile index 1 an.
Bei zweiten Durchlauf löscht er dann die Zeile 4, was jetzt index 3 hat.
Bei dritten Durchlauf findet das System keine Zeile mit dem Index 7, da muss dann sy-subrc den Wert 4 annhemen.

Somit kann ich mir auch nicht vorstellen, dass das Löschen von der Datenbank funktioniert.

Folgende Benutzer bedankten sich beim Autor ParLaMenT für den Beitrag:
ManMan


Re: Mehrere Zeilen aus SALV löschen

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hallo Manman,

1.) Zur Lösung deines Problems: Wenn du die Zeile 1 löscht verschieben sich die anderen Zeilen alle nach oben. Wenn du danach die dann 3. Zeile löscht war das vorher mal die 4. Zeile. Und die 7. Zeile die du löschen willst existiert gar nicht mehr. --> Von unten nach oben löschen und das Problem ist gelöst.

2.) Zum Programm.
2a) Lies dir mal die Doku zum Befehl "DO" durch - insbesondere der Zusammenhang mit dem Systemfeld SY-INDEX sollte für dich interessant sein.
2b) Lies dir mal die Doku zum Befehl "LOOP" durch, dann brauchst du gar kein "DO" und den ominösen Zähler mehr.
2c) Wenn du wie von mir vorgeschlagen vorgehen willst lies dir auch die Doku zum Befehl "SORT" durch.
--> Neues Coding

Code: Alles auswählen.

Hole Liste der markierten Zeilen
Sortiere Liste absteigend damit du von unten nach oben löscht
LOOP über Liste
  lösche Tabellenzeile
ENDLOOP

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ManMan

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Mehrere Zeilen aus SALV löschen

Beitrag von ParLaMenT (ForumUser / 14 / 0 / 2 ) »
Habe mal einen kleinen Test durchgeführt.

Code: Alles auswählen.

DATA: i_tab TYPE STANDARD TABLE OF i,
      i_wa TYPE i VALUE 1,
      i1 TYPE i VALUE 1,
      i2 TYPE i VALUE 3,
      i3 TYPE i VALUE 7.

DO 7 TIMES.
  APPEND i_wa TO i_tab.
  i_wa = i_wa + 1.
ENDDO.
BREAK-POINT.
DO 3 TIMES.
  DELETE i_tab INDEX i1.

  i1 = i2.
  i2 = i3.
ENDDO.
BREAK-POINT.
interne Tabelle nach der ersten Schleife:
Screen_1.jpg
interne Tabelle nach der 2. Schleife:
Screen_2.jpg
Beim letzten Schleifendurchlauf hat sy-subrc den Wert 4.

Hoffe des hilft dir weiter.

Folgende Benutzer bedankten sich beim Autor ParLaMenT für den Beitrag:
ManMan


Re: Mehrere Zeilen aus SALV löschen

Beitrag von ManMan (ForumUser / 26 / 10 / 0 ) »
Danke für Eure Hilfe, mit dem Löschen hat es geklappt.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2585
Views
Zeilen aus ALV Löschen
von moee » 12.03.2009 13:18 • Verfasst in ABAP® für Anfänger
2
Antw.
607
Views
Löschen von itab-Zeilen
von Patrick1982 » 08.07.2021 12:30 • Verfasst in ABAP® für Anfänger
6
Antw.
4644
Views
ALV Drucktaste zum Zeilen einfügen/löschen
von Ibiza90 » 27.08.2013 08:24 • Verfasst in ABAP® für Anfänger
4
Antw.
2356
Views
ABAP Word Zeilen löschen
von Pfirsichbäumchen » 21.04.2017 17:32 • Verfasst in ABAP® Core
10
Antw.
4949
Views
TableControl: einzelne Zeilen der Ausgabe löschen?
von ChrizB » 16.01.2006 08:28 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 9 Stunden von DeathAndPain gelöst 22 / 2976
Daten an Tabelle binden
vor 14 Stunden von Lukas Sanders 2 / 968
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 535

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

Dialog-Container mit Toolbar/Status
vor 9 Stunden von DeathAndPain gelöst 22 / 2976
Daten an Tabelle binden
vor 14 Stunden von Lukas Sanders 2 / 968
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 535

Unbeantwortete Forenbeiträge

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