Wert einer Tabelle ändern???

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

Wert einer Tabelle ändern???

Beitrag von Tunoto (ForumUser / 14 / 0 / 0 ) »
Warum kann ich nicht einfach,z.B.
p0003-prdat = neu_pr.


schreiben, sondern muss:




FORM update_prdat.

REFRESH old2_p0003.
LOOP AT p0003.
MOVE-CORRESPONDING p0003 TO old2_p0003.
APPEND old2_p0003.

p0003-prdat = neu_pr.
MODIFY p0003.

ENDLOOP.

rp-update old2_p0003 p0003.
COMMIT WORK.

ENDFORM.


Danke für eure Hilfe!

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


Beitrag von Diko (ForumUser / 73 / 0 / 1 ) »
Hi,

weil der Infotyp 3 nicht in einer Tabelle namens P0003 sondern in der Tabelle PA0003 physisch gespeichert wird, d.h. wenn Du über die SE11 die P0003 aufrufst wirst Du feststellen, dass es sich hierbei nur um eine Struktur handelt.

Das Macro rp-update (was genau dahintersteckt kannst Du in der Tabelle TRMAC ersehen)übernimmt für Dich das "Umschaufeln" und ändern in der DB-Tabelle.
Willst Du den Infotyp 0003 direkt ändern so müsstet Du auf die Tabelle PA0003 direkt zugreifen.

REPORT BSP.

TABLES: PA0003.
DATA: WA0003 LIKE PA0003.

START-OF-SELECTION.

CLEAR WA0003.
SELECT SINGLE * FROM PA0003 INTO WA0003
WHERE PERNR = '12345678'.
IF SY-SUBRC = 0.
WA0003-PRDAT = '20050101'.
MODIFY PA0003 FROM WA0003.
COMMIT WORK.
ENDIF.

end-of-selection.


Gruß

Diko

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Hallo,

und bevor Du zu viel Zeit in einen eigenen Report für den Infotyp 0003 investierst würde ich mal einen Blick auf den RPUTRBK0 empfehlen. Einziger Nachteil, der mir bisher aufgefallen ist, die Texte sind nicht auf deutsch gepflegt... Du müsstest Dich also auf englisch anmelden.

Gruß,
Chris

Beitrag von Tunoto (ForumUser / 14 / 0 / 0 ) »
@ChrisB:
Ich hab' mir das mal angeschaut.Der Report RPUTRBK0 kann zwar wahrscheinlich die Sachen ändern, doch ohne jegliche Pausibiltätsprüfung,also ob der Wert zulässig ist,und er benutzt nicht die pnp für eine Berechtigungsprüfung.

@diko: DANKE!
Noch ne Frage:

-Warum muss ich in meinem Beispiel nochmal Modify p0003 schreiben, obwohl ich vorher schon p0003-prdat = neu_pr geschrieben habe?

-Warum muss ich APPEND benutzen, wenn ich vorher MOve-Corresponing hatte?

-Was bewirkt das Commit Work?Hab die SAP-Hilfe nicht verstanden.

Danke für eure Hilfe!

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Tunoto hat geschrieben:Noch ne Frage:

-Warum muss ich in meinem Beispiel nochmal Modify p0003 schreiben, obwohl ich vorher schon p0003-prdat = neu_pr geschrieben habe?

-Warum muss ich APPEND benutzen, wenn ich vorher MOve-Corresponing hatte?

-Was bewirkt das Commit Work?Hab die SAP-Hilfe nicht verstanden.

Danke für eure Hilfe!
- Mit Modify wird der Inhalt der Tabelle geändert, da mit "p0003-prdat = neu_pr" nur der Kopfsatz der Tabelle geändert wurde.
- mit Append wir ein neuer Satz in die Itab geschrieben, move.corresponding ist wieder nur Kopfatz
- Commit work sagt der Datenbank, das alles nun feststeht und es nun definitiv auf der DB ist. wobei bei dir keine änderung auf der DB ist und deshalb der Commitwork eigentlich nix tut

aber das sind eigentlich ABAP-Grundlagen was ich hier geschrieben habe.
Wielange Programmierst du schon mit ABAP?

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
aber das sind eigentlich ABAP-Grundlagen was ich hier geschrieben habe
Heisst ja auch "Getting started" ...

Beitrag von Tunoto (ForumUser / 14 / 0 / 0 ) »
@ Death Guardian:

-Also mit dem loop gehe ich ja jede einzelne Zeile der Tabelle durch.
Wenn ich dann p0003-prdat = pr_neu schreibe, washat das mit dem "Kopfsatz" zu tun?

-Naja, das rp-update veranlasst ja das Schreiben auf der Datenbank, es muss also quasi nochmals ein Commit Work als Bestätigung kommen oder wie??

@ GastX:
Danke ;)


Ich programmiere seit knapp über ner Woche in ABAP.

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Tunoto hat geschrieben:@ Death Guardian:

-Also mit dem loop gehe ich ja jede einzelne Zeile der Tabelle durch.
Wenn ich dann p0003-prdat = pr_neu schreibe, washat das mit dem "Kopfsatz" zu tun?

-Naja, das rp-update veranlasst ja das Schreiben auf der Datenbank, es muss also quasi nochmals ein Commit Work als Bestätigung kommen oder wie??

@ GastX:
Danke ;)

Ich programmiere seit knapp über ner Woche in ABAP.
Bei einem Loop gehst zwar die Tabelle Zeile für Zeile durch, aber dieser Loop arbeitet immer mit der Kopfzeile, d.h. er schieb die aktuelle Zeile immer in den Kopfbereich, deshalb musst du mit Modify ihm sagen, das sich was geändert hat.
Umgehen könntest das ganze über Field-Symbols die wie ein Zeiger arbeiten.

Ach das rp-update ist woll ein MAKRO das den DB-Update dann macht. Ja, dann brauchst das COMMIT WORK, da das dann sagt "jetzt schreibs mir auf die Datenbank".

Beitrag von der.bahnfahrer (ForumUser / 38 / 0 / 0 ) »
Tach auch,

Du kannst die Updatefunktionalität auch dem FuBa "RP_SET_PRDAT_PRTEV" überlassen. Nach dem GET PERNR einfach ein rp-provide-from-last für den IT0001, dann die P0001-PERNR an den FuBa übergeben.

Gruß,
Klaus

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1998
Views
Wert aus interner Tabelle auslesen
von dominoblau » 26.02.2021 15:27 • Verfasst in ABAP® für Anfänger
7
Antw.
946
Views
Wert einer Tabelle ändern
von Frank Schmitt » 22.10.2019 07:47 • Verfasst in ABAP® für Anfänger
2
Antw.
19346
Views
Wert aus Struktur in Tabelle finden
von metbo » 20.04.2010 09:08 • Verfasst in ABAP® für Anfänger
6
Antw.
4188
Views
Wert in die Tabelle eintragen, falls nicht vorhanden
von kaim77 » 30.05.2012 15:43 • Verfasst in ABAP® für Anfänger
3
Antw.
1934
Views
Interne Tabelle: neuesten Wert mit bestimmten Spaltenwert
von Tunoto » 08.03.2006 15:56 • Verfasst in ABAP® für Anfänger

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.