Modify auf interne Tabelle

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

Modify auf interne Tabelle

Beitrag von Ines (ForumUser / 22 / 0 / 0 ) »
Hallo,

ich möchte eine interne Tabelle mit den Daten der Workarea ändern, mit einem modify. Ich mache jedoch keinen Loop über die Tabelle, also muss ich für den modify Befehl noch irgendeinen Zusatz hinzufügen, richtig? Jedoch kann ich mit der Hilfe nicht so recht was anfangen, zu Index, modify usw.

Bisher habe ich folgendes ausprobiert:

MODIFY table i_plist FROM wa_preislist . und

MODIFY i_plist FROM wa_preislist INDEX sy-tabix.

bei der oberen Variante werden die neu eingetragenen Daten erst nach erneutem Aufruf des Bildschirms angezeigt.
Die untere Variante erzeugt mir einen ganz neuen Satz in der internen Tabelle.
Die Workarea wird übrigens über Eingabefelder in einem Dynpro gefüllt und die Daten der internen Tabelle werden auf einem anderen Dynpro angezeigt.

Wie muss der richtige Befehl lauten um die Änderungen aus der Workarea an die Interne Tabelle zu übergeben?

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


Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
Hallo,

zunächst mal musst Du ferststellen welchen Satz Deiner tabelle Du ändern willst. das ist dann der index für den modify.

data l_idx type sytabix.

read table i_plist with key blabla
if sy-subrc eq 0.
l_idx = sy-tabix.
endif.

modify i_plist index l_idx.

Gruss

Beitrag von Ines (ForumUser / 22 / 0 / 0 ) »
Danke erstmal.

Aber leider weiß ich auch nicht wie ich den Key angeben muss. blabla wird da wohl kaum funktionieren :D
Was ist denn mein key?Oder generell, was gibt man da für einen Key an?

Beitrag von frisbee (ForumUser / 19 / 0 / 0 ) »
Hi,

mal angenommen, Du hast eine tabelle auf Deinem zweiten Dynpro, die Adressdaten ausgibt.

Name Vorname PLZ Ort
Mayer Heiner 12345 Berlin
Müller Uwe 4567 München
usw

Wenn jetzt jemand im ersten Dynpro eingibt:
Feld_1 Mayer
Feld_2 Heiner
Feld_3 7777
Feld_ 4 Stuttgart

dann kannst Du Deinen Zugriff folgendermaßen machen:

read table i_plist with key name = feld_1' hier steht MAYER drin
vorname = feld_2'. hier Heiner
if sy-subrc eq 0.
* der Index (SY-TABIX) ist in diesem Fall "1"
l_idx = sy-tabix.
i_plist-plz = feld_3'. hier steht '8888' drin
i_plist-ort = feld_4..
endif.


jetzt modify:

modify i_plist index l_idx.

Falls beim READ kein Eintrag gefunden wird, ist Dein SY-SUBRC gleich "4".
Dann kann kein Modify erfolgen, vermutlich wirst Du dann ein "append" absetzen um einen neuen Eintrag zu erzeugen

Hoffe das hilft.

Gruß

Frisbee

Beitrag von Ines (ForumUser / 22 / 0 / 0 ) »
Vielen dank nochmal.
Ich denke, dass ich das prinzipiell verstanden habe, bloß nicht auf mein Programm übertragen kann.
Jedoch bekomme ich zum einen eine Fehlermeldung bei dem read table:
"Die interne Tabelle "I_PLIST" hat keine Kopfzeile - explizite Angabe eines Ausgabebereiches durch "INTO wa" oder "ASSIGNING <fs>"
Wenn ich das in ein into wa ändere, dann überschreibe ich mir aber doch meine wa oder? und da stehen ja gerad die aktuellen werte drin, die ich haben will...
zum anderen ist bei mir denke ich feld_1 und name das gleiche, denn auf meinem dynpro heißen die felder wie meine workarea und ich kann ja nicht schreiben with key wa_preislist-bukrs = wa_preislist-bukrs ... mein dynprofeld heißt also wa_preislist-bukrs und in der wa ist das so vorhanden und das soll dann in die interne tabelle geschrieben werden

sorry, wenn ich es einfach nicht kapiere... aber damit habe ich noch nie gearbeit und was in den büchern steht und in der hilfe verstehe ich auch nicht so recht.

vielleicht kann man hiermit auch was machen, bevor ich das dynpro mit den feldern zum ändern aufrufe, mache ich schon mal ein read table, damit die aktuellen felder der internen tabelle in die workarea übernommen werden und die werte in den dynprofeldern stehen. das sieht so aus:
FORM handle_double_click USING i_row TYPE lvc_s_row
i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.

READ TABLE i_plist INTO wa_preislist INDEX is_row_no-row_id .

das wird bei einem doppelklick auf mein alv ausgeführt. zum ändern rufe ich dann aber wieder ein weiteres dynpro auf.

Beitrag von JHM (Top Expert / 1188 / 1 / 195 ) »
Ines hat geschrieben: READ TABLE i_plist INTO wa_preislist INDEX is_row_no-row_id .
Das ist doch perfekt. Merk dir is_row_no-row_id in einem globalen Feld.
DATA: g_index TYPE sy-index.

nach dem READ TABLE...
g_index = is_row_no-row_id.


Und beim Modify:
MODIFY table i_plist FROM wa_preislist INDEX g_index.
Gruß Hendrik

Beitrag von Jupp (ForumUser / 47 / 0 / 2 ) »
Oder aber oder. Man ruft das Änderdynpro in der Formroutiine nach read table auf und setzt den modify nach dem Ändern ab, wenn der Prozess wieder in die Formroutine zurückkehrt.
Always Better Alternatives Possible.

Beitrag von Ines (ForumUser / 22 / 0 / 0 ) »
Hm, immerhin etwas weiter.
Ich hab jedoch bei dem Befehl das "table" weglassen müssen, da sonst eine fehlermeldung kam. Jetzt kommt es jedoch beim ausführen zu einem Programmabbruch, mit der meldung, dass der index 0 sei...

So, also am Ende gings dann doch. seltsam wieso beim ersten mal ein fehler kam, hab dann eigentlich nichts weiter geändert... werde es morgen nochmal ausführlicher testen.

vielen dank für die mühen und netten antworten!

Seite 1 von 1

Vergleichbare Themen

9
Antw.
3792
Views
Modify interne Tabelle
von ABAPSunny » 27.03.2008 10:39 • Verfasst in ABAP® für Anfänger
3
Antw.
3394
Views
LOOP über führende interne Tabelle + READ TABLE und MODIFY
von HawkDT » 23.03.2017 13:02 • Verfasst in ABAP® für Anfänger
0
Antw.
834
Views
Modify auf Z Tabelle von itab
von AndreFIAE2014 » 13.12.2016 14:40 • Verfasst in ABAP® für Anfänger
5
Antw.
2642
Views
Modify auf eine Z-Tabelle
von max1 » 08.02.2007 14:45 • Verfasst in ABAP® für Anfänger
8
Antw.
6949
Views
Modify einer internen Tabelle
von lisa » 17.09.2008 12:30 • 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

PDF-Anzeige unter EDGE
vor 4 Tagen von jocoder 2 / 66
Etikettendruck mit SmartForms
vor einer Woche von a-dead-trousers 2 / 67

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

PDF-Anzeige unter EDGE
vor 4 Tagen von jocoder 2 / 66
Etikettendruck mit SmartForms
vor einer Woche von a-dead-trousers 2 / 67

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Wochen von Lucyalison 1 / 129
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 164