Wert aus interner Tabelle auslesen

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

Wert aus interner Tabelle auslesen

Beitrag von dominoblau (ForumUser / 3 / 0 / 0 ) »
Hallo zusammen,

ich bräuchte wieder mal euere Hilfe bei folgendem Thema:

Ich habe eine interne Tabelle itab_z9aupidt und eine zur Laufzeit generierte Tabelle gt_ausgabe.

Die zur Laufzeit generierte Tabelle wird per Loop zeilenweise (gs_ausgabe) mit der internen Tabelle z9aupidt inkl. Selects von anderen internen Tabellen gefüllt. Dies funktioniert eigentlich soweit alles, bis auf folgendes Problem und zwar:
In der internen Tabelle itab-Z9aupidt befindet sich das Feld/Spalte Nett2 (Euro Wert); nun möchte ich diesbezüglich in einer anderen Spalte, wenn dieser Euro-Wert >0 ist, einen Select zu einer anderen internen Tabelle ausführen, wenn der Wert aber hingegen < 0 ist, soll der Wert 0 ausgegeben werden.
Nur leider schaffe ich dies nicht...
Würde dies mit einer IF-Bedingung funktionieren und wenn ja wo müsste ich diese ansetzen?

Anbei übersende ich Euch meinen Code:

Code: Alles auswählen.

data: gt_ausgabe TYPE tyt_ausgabe.
data: gs_ausgabe TYPE LINE OF tyt_ausgabe.

DATA: itab_z9aupidt TYPE STANDARD TABLE OF z9aupidt WITH EMPTY KEY,


loop at ITAB_Z9AUPIDT ASSIGNING FIELD-SYMBOL(<lfs_aupidt>).


  GS_AUSGABE-NETT2 = <LFS_AUPIDT>-NETT2.
  GS_AUSGABE-matnr = <LFS_AUPIDT>-matnr.
  Select...
  
  append gs_ausgabe to gt_ausgabe.
ENDLOOP.
Besten Dank im Voraus


Re: Wert aus interner Tabelle auslesen

Beitrag von Lukas Sanders (ForumUser / 25 / 5 / 12 ) »
Hallo,

sind interne Tabellen oder Datenbanktabellen gemeint und wie ist denn die andere interne Tabelle aufgebaut?

Aus einer internen Tabelle könnte man mit READ TABLE Werte auslesen, man muss aber wissen, wie man an die jeweilige Zeile kommt (Schlüsselfelder oder Index der Zeile):

Code: Alles auswählen.

IF <lfs_aupidt>-nett2 GT 0. 
    READ TABLE andere_itab INTO andere_wa WITH KEY schluessel = <lfs_aupidt>-schluessel TRANSPORTING feld. 
    gs_ausgabe-spalte = andere_wa-feld.
ELSE. 
    gs_ausgabe-spalte = 0.
ENDIF. 
Mit modernen Mitteln ginge es auch so (direkter Zugriff auf die Zeile ohne Umweg über eine Struktur):

Code: Alles auswählen.

IF <lfs_aupidt>-nett2 GT 0. 
    gs_ausgabe-spalte = andere_itab[ schluessel = <lfs_aupidt>-schluessel ]-feld.
ELSE. 
    gs_ausgabe-spalte = 0.
ENDIF. 

Re: Wert aus interner Tabelle auslesen

Beitrag von DeathAndPain (Top Expert / 1523 / 171 / 339 ) »
Beides recht riskant, weil Du nicht prüfst, ob Du zu dem Schlüssel <lfs_aupidt>-schluessel tatsächlich einen Wert in der andere_itab gefunden hast. Wenn nicht, wird Deine "moderne" Version dumpen, und Deine herkömmliche Version wird Werte aus dem vorhergehenden Loopdurchlauf (mit anderen Worten: falsche Werte) verwenden, was noch schlimmer ist.

Davon abgesehen würde ich bei Einsatz "moderner" Mittel (d.h. Release >= 7.40) auf den IF ganz verzichten und Folgendes schreiben:

Code: Alles auswählen.

gs_ausgabe-spalte = COND #( WHEN <lfs_aupidt>-nett2 > 0 THEN VALUE #( andere_itab[ schluessel = <lfs_aupidt>-schluessel ]-feld OPTIONAL ) ).
Jedenfalls sofern 0 als Ergebniswert akzeptabel ist, wenn in der andere_itab kein Wert gefunden wird. Muss dieser Fehlerfall abgefangen werden, ist statt des VALUE ... OPTIONAL ein TRY-ENDTRY-CATCH-Block angesagt, der den Dump abfängt und behandelt.

Seite 1 von 1

Aktuelle Forenbeiträge

JSON parsen in Node-Table
vor 11 Stunden von ralf.wenzel 3 / 48
Inlcudes in SapScripts
vor 15 Stunden von Tron 5 / 60
Typ des Lieferdatums ME23N
vor 23 Stunden von Bright4.5 4 / 107

Vergleichbare Themen

Gleiche Datensätze aus interner Tabelle auslesen
von Marc K. » 06.03.2012 09:36
dynamische Spalten von interner Tabelle auslesen?
von Jinn » 14.05.2004 17:54
Spalten Interner Tabellen nacheinander auslesen.
von JulDen » 13.02.2018 18:33
wert aus Feld auslesen
von bibo » 06.04.2006 13:55
Wert des Eingabefeldes vor PAI auslesen
von ABAP_User » 16.05.2012 22:12