Datenbanktabelle aktualisieren nach Delete

Getting started ... Alles für einen gelungenen Start.
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Datenbanktabelle aktualisieren nach Delete

Beitrag von Maggonski (ForumUser / 19 / 3 / 0 ) »
Guten Morgen zusammen,
ich habe grade ein kleines Problem.
Und zwar möchte ich einer Datenbanktabelle einen neuen Wert zuweisen für ein Feld,
nachdem ich vorher per DELETE etwas gelöscht habe.
Kurzer Ablaufplan:
1. Table-Control, auswahl der Zeile und löschen Button.
READ TABLE itab into wa index table_control-current_line.
danach wird ein DELETE auf die Datenbanktabelle from wa durchgeführt.
Danach wird ein COMMIT WORK AND WAIT ausgeführt.
Wenn ich mir nun die Datenbank anschaue, ist der richtige Eintrag gelöscht.
2. Nun gibt es in den Einträgen ein Feld Namens "Vertragsnummer".
Nehmen wir mal es gab vorher 3 Verträge ich habe nun Vertrag 2 gelöscht.
Nun sind noch Vertrag 1 und 3 in der Datenbanktabelle. Ich möchte aber, dass der Vertrag 3 und Vertrag 2 heißt.
Wenn ich versuche danach einen Select * from datenbanktabelle into itab durchzuführen, ist hier aber noch der alte Eintrag drinnen. Obwohl ich parallel über auf die Einträge in der Datebanktabelle schaue und hier der Eintrag bereits gelöscht wurde.

Hat jemand einen Tipp, woran ich grade scheitere?
Besten Dank im Vorraus.

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


Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Finde ich jetzt etwas ungewöhnlich, die Einträge mit dem Löschen aus dem Table-Control sofort hart auf der DB zu löschen. Merkwürdig finde ich außerdem die Nummer eines Datensatzes zu ändern.
Ich hoffe mal du weißt, was du da tust.

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Etwas wirr, alles...
Maggonski hat geschrieben:
21.02.2023 11:21
Nun sind noch Vertrag 1 und 3 in der Datenbanktabelle.
Wenn ich versuche danach einen Select * from datenbanktabelle into itab durchzuführen, ist hier aber noch der alte Eintrag drinnen.
Was denn nun? Ist der Eintrag drin oder wurde er gelöscht?
Maggonski hat geschrieben:
21.02.2023 11:21
Obwohl ich parallel über auf die Einträge in der Datebanktabelle schaue und hier der Eintrag bereits gelöscht wurde.
Wahrscheinlich kommst du mit dem Durcheinander, was du anzeigst und was du löschst.
Das mit dem Umbenennen habe ich auch nicht verstanden. Wenn es sich um SAP-Verträge handelt, dann kannst du die nicht umbenennen.

Hast du an SAP-Sperren gedacht, so dass nicht zwei Leute den gleichen Eintrag löschen können?

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
DeathAndPain


Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
@ewx Die SAP-Sperren sind ein guter Hinweis.
Und ich finde die Anwenderaktion muss bis zu einem gewissen Grad reversibel bleiben: sofort von der DB löschen, weil jemand einen Eintrag im Table-Control löscht, find ich etwas hart.
Besser wäre, die Aktionen zwischenzuspeichern und erst dann DB-Operationen auszulösen, wenn der Anwender aktiv auf den Speicher-Button drückt. Dann hat der Anwender wenigstens noch die Möglichkeit seine Entscheidung zu revidieren, indem er die Anwendung ohne zu speichern verlässt.

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von Maggonski (ForumUser / 19 / 3 / 0 ) »
Die zDatenbanktabelle habe ich selbst angelegt.
Nochmal kurz zum Ablauf. Ich habe eine zdatenbanktabelle. Diese möchte ich auf meinem Table-Control anzeigen. Auf dem Dynpro wo das TC angezeigt wird, möchte ich aber auch die Funktion Zeile löschen (somit auch aus der Datenbank) einfügen. Das habe ich soweit erledigt.
Nun kommt jedoch das Problem auf, dass die Verträge nicht mehr richtig aufgelistet sind. Vorher:
Feld Vertrag=Vertrag 1
Feld VertragVertrag 2 <- wird gelöscht
Feld VertragVertrag 3
Danach:
Feld Vertrag=Vertrag 1
Feld Vertrag=Vertrag 3 <- sollte nun umbenannt werden auf der Datenbank in Vertrag 2 und dann richtig ausgegeben werden auf dem TC.

Möchte also einfach im Feld Vertrag die Nummer ändern .

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Ach so, das ist nur Z-Spielkram zum Üben, und keine "ernsthafte" Anwendung. Dann kannst du natürlich damit verfahren, wie es dir in den Sinn kommt. Da hat vermutlich dann ewx Recht und du musst zusehen, dass du die Anzeige mit dem was in der DB "synchronisierst".

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Vertragsnummer hört sich nach Schlüsselfeld an. Schlüsselfelder werden nicht umbenannt. Was willst du denn mit der Umbenennung inhaltlich erreichen?

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von Maggonski (ForumUser / 19 / 3 / 0 ) »
Habs nun hinbekommen. Die Daten müssen später weiter verarbeitet werden. Der Kunde soll hier Verträge vor anlegen können.
Hab aber grade ein anderes Problem, was bis jetzt die ganze Zeit funktioniert hat.
READ TABLE
it_zvertragstabelle INTO wa_zvertragstabelle INDEX table_control-current_line.
IF sy-subrc IS INITIAL.
DELETE zvertragstabelle FROM wa_zvertragstabelle .

IF sy-subrc IS INITIAL.
COMMIT WORK AND WAIT.

ENDIF.
Das current_line zeigt auf einmal immer 1 an... egal welches Feld ich auswähle. Dadurch wird immer der erste Eintrag gelöscht. Jemand einen Tipp, warum
das nicht mehr funktioniert?
Besten Dank schonmal für den Support von davor

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Warum tauchen in letzter Zeit so viele uralt-Themen auf?
Erst WRITE und HIDE, jetzt TableControls...

Du kannst dir hier ansehen, wie die TableControl Zeilen verwaltet werden:
https://tricktresor.de/blog/tablecontrol-1/

Ansonsten als Tipp: Für TableControls und Registerkarten Immer den Wizard verwenden!

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Maggonski hat geschrieben:
21.02.2023 16:05
Habs nun hinbekommen. Die Daten müssen später weiter verarbeitet werden. Der Kunde soll hier Verträge vor anlegen können.
Dann würde ich eine GUID erzeugen, die der Anwender gar nicht zu sehen bekommt und dann einfach mit einem Zähler = SY-TABIX abspeichern.
Also:

Code: Alles auswählen.

|  GUID  | Sort | Data|
-----------------------
| 04BA5E | 0001 | ... |
| 74CCEE | 0002 | ... |
| 4699E1 | 0003 | ... |
Dann musst du nix umbenennen, sondern änderst einfach die Sortiernummer.

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von Maggonski (ForumUser / 19 / 3 / 0 ) »
ewx hat geschrieben:
21.02.2023 17:07
Warum tauchen in letzter Zeit so viele uralt-Themen auf?
Erst WRITE und HIDE, jetzt TableControls...

Du kannst dir hier ansehen, wie die TableControl Zeilen verwaltet werden:
https://tricktresor.de/blog/tablecontrol-1/

Ansonsten als Tipp: Für TableControls und Registerkarten Immer den Wizard verwenden!
Danke für den Link.
Naja wenn jemand etwas neu lernt muss er doch vorne beginnen oder ? =)

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Zeitlich gesehen beginnst du eher sehr weit hinten... 😄
Aber ja, auch wenn es uralt ist, es gehört halt immer noch zum SAP-Universum...
Ich würde jedoch immer ein ALV-Grid einem TableControl vorziehen.

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Ich nur dann, wenn es nur der Anzeige dient. Markieren und auf Mülltonne klicken mag auch noch in Ordnung gehen, aber in dem Moment, in dem Daten eingegeben werden sollen, hat ein Table Control klar den überlegenen Nutzungskomfort. Editable ALV finde ich scheußlich (und man sieht sie ja auch kaum).

Insofern halte ich Table Controls nur sehr bedingt für veraltet. Sei froh, dass er nicht um Rat fragt, wie man Step Loops baut. 😁
Maggonski hat geschrieben:
21.02.2023 13:41
Nochmal kurz zum Ablauf. Ich habe eine zdatenbanktabelle. Diese möchte ich auf meinem Table-Control anzeigen. Auf dem Dynpro wo das TC angezeigt wird, möchte ich aber auch die Funktion Zeile löschen (somit auch aus der Datenbank) einfügen.
Professionell baut man sowas aber so, dass die Funktion "Zeile löschen" zunächst nur aus Deiner internen Tabelle (und dem Table Control) löscht und der Benutzer nachher auf "Sichern" klickt, wenn er mit seinen Änderungen zufrieden ist. Beim "Sichern" würdest Du dann den Stand auf der Datenbank an das Table Control angleichen.

Andernfalls führt jeder Fehlklick zum unwiderruflichen Datenverlust auf der Datenbank. Was Du mit Deinem COMMIT WORK AND WAIT ja auch noch mal knallhart finalisierst.
PeterPaletti hat geschrieben:
21.02.2023 14:02
Ach so, das ist nur Z-Spielkram zum Üben, und keine "ernsthafte" Anwendung.
Soweit ich ihn verstehe, will er damit aber üben, wie man ernsthafte Anwendungen programmiert. Und dann ist es schon empfehlenswert, es so zu bauen, als ob es "ernsthaft" wäre.

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
DeathAndPain hat geschrieben:
22.02.2023 15:15
aber in dem Moment, in dem Daten eingegeben werden sollen, hat ein Table Control klar den überlegenen Nutzungskomfort.
Seit es im ALV-Grid auch die Feldhistorie gibt, sehe ich das nicht mehr so.

Re: Datenbanktabelle aktualisieren nach Delete

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
ewx hat geschrieben:
22.02.2023 15:19
DeathAndPain hat geschrieben:
22.02.2023 15:15
aber in dem Moment, in dem Daten eingegeben werden sollen, hat ein Table Control klar den überlegenen Nutzungskomfort.
Seit es im ALV-Grid auch die Feldhistorie gibt, sehe ich das nicht mehr so.
Batch Input ist auch noch ein großer Pluspunkt für TC.

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

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

Vergleichbare Themen

9
Antw.
11620
Views
DELETE FROM ... NOT IN...
von ChristianHo » 09.02.2016 10:00 • Verfasst in ABAP® für Anfänger
6
Antw.
10597
Views
DELETE * FROM DBTAB
von Timo7 » 27.10.2006 11:36 • Verfasst in ABAP® Core
4
Antw.
4007
Views
NATIV SQL - Delete
von verzweifelt » 05.01.2016 00:20 • Verfasst in ABAP® Core
4
Antw.
8051
Views
delete from itab mit where Bedingung
von debianfan » 31.07.2019 14:38 • Verfasst in ABAP® für Anfänger
1
Antw.
593
Views
Datenbank Delete mit Subquery
von JohnLocklay » 28.05.2019 14:47 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Regex in where
vor 6 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 20 Stunden von Bright4.5 3 / 1487

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

Regex in where
vor 6 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 20 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822