Ausgabe einer ganzen Work Area?

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

Ausgabe einer ganzen Work Area?

Beitrag von Corn (ForumUser / 3 / 0 / 0 ) » 07.08.2020 20:56
Hallo,

wenn man einen Datensatz per select Anweisung in eine interne Tabelle schreibt und dann in einer Loop at zeilenweise in eine work area liest, kann man ja die einzelnen Felder der work area Struktur per write ausgeben. Gibt es eine Möglichkeit, die gesamte work area auszugeben ohne auf die einzelnen Felder zugreifen zu müssen?

Der Hintergrund ist, dass erst zur Laufzeit die Anzahl und der Name der Felder festgelegt wird. D.h. Ich weiß jetzt noch nicht, wie die Felder heißen.

Danke!
LG
Corn


Re: Ausgabe einer ganzen Work Area?

Beitrag von a-dead-trousers (Top Expert / 3504 / 113 / 910 ) » 08.08.2020 09:01
Grundsätzlich funktioniert "WRITE workarea", aber nur wenn alle Felder von der Art CLIKE (C,N,D,T) sind und das workarea somit eine "flache" Struktur hat. Sobald z.B. Strings, Binär oder Zahlfelder (I,F,P) verwendet werden funktioniert es nicht mehr. (Details siehe ABAP Hilfe)

Was mich jetzt aber wundert ist, wie du eine workarea bei einer erst zur Laufzeit bestimmten Struktur haben kannst. Für mich klingt das sehr nach dynamischer Programmierung und da workareas etwas rein statisches sind gibt es das nicht bei dieser Art von Programmen. Nur Referenzen (REF TO) und Zuweisungen (ASSIGN mit FIELD-SMYBOLS) sind damit möglich.

Nichts desto trotz, um auf (unbekannte) Felder einer Struktur zugreifen zu können gibt es ASSIGN COMPONENT x OF STRUCTURE ... TO ...
Das x kann hier entweder ein Index oder der Feldname sein.
(Mehr dazu auch hier wieder in der ABAP-Hilfe)

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

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.07
Basis: 7.40

Re: Ausgabe einer ganzen Work Area?

Beitrag von Corn (ForumUser / 3 / 0 / 0 ) » 08.08.2020 10:55
Danke, das werde ich mir am Montag mal angucken. Bezüglich der dynamischen Programmierung kann es gut sein, dass ich da was falsch verstanden habe. Bin totaler Anfänger.

Gruß
Corn

Re: Ausgabe einer ganzen Work Area?

Beitrag von ralf.wenzel (Top Expert / 3542 / 167 / 242 ) » 09.08.2020 15:32
Rückfrage: Hat die Ausgabe per WRITE einen besonderen Grund? Oder bist du offen für alternative Ausgaben?


Ralf

Re: Ausgabe einer ganzen Work Area?

Beitrag von Corn (ForumUser / 3 / 0 / 0 ) » 10.08.2020 13:35
Also ich konnte das mit dem assign component mal testen. Aber auch das klappt nur, wenn die Struktur nur aus Clike besteht, so wie du es oben geschrieben hattest.

Ne, ich hänge nicht an der write Ausgabe. War nur ein schneller Weg etwas zu sehen^^

Re: Ausgabe einer ganzen Work Area?

Beitrag von black_adept (Top Expert / 3412 / 66 / 656 ) » 10.08.2020 13:49

Code: Alles auswählen.

REPORT.
SELECT *
  FROM t005
  INTO TABLE @DATA(gt_t005).

cl_salv_table=>factory(
  IMPORTING
    r_salv_table   = DATA(go_salv)
  CHANGING
    t_table        = gt_t005 ).
go_salv->display( ).
Das ist der ganz triviale Ansatz. Normalerweise kapselt man das dann in eine Klasse wo man über einen statischen Methodenaufruf einfach eine Tabelle übergibt die das dann auf denn Screen dumpt, wobei man dann allerdings noch die eine oder andere Sache berücksichtigen sollte um das allgemein verwendbar und halbwegs hübsch zu machen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Ausgabe einer ganzen Work Area?

Beitrag von DeathAndPain (Top Expert / 1427 / 153 / 327 ) » 10.08.2020 14:15
Und das funktioniert auch bei einer nicht-flachen Tabelle oder einer, die xstring und so'n Kram enthält? Bin grad zu faul es auszuprobieren, aber wie will das ALV das denn ausgeben?

Re: Ausgabe einer ganzen Work Area?

Beitrag von a-dead-trousers (Top Expert / 3504 / 113 / 910 ) » 10.08.2020 15:21
Corn hat geschrieben:
10.08.2020 13:35
Also ich konnte das mit dem assign component mal testen. Aber auch das klappt nur, wenn die Struktur nur aus Clike besteht, so wie du es oben geschrieben hattest.
Dann hast du was falsch gemacht.
Das funktioniert definitiv mit jeder Art von Datentyp.

DeathAndPain hat geschrieben:
10.08.2020 14:15
Und das funktioniert auch bei einer nicht-flachen Tabelle oder einer, die xstring und so'n Kram enthält? Bin grad zu faul es auszuprobieren, aber wie will das ALV das denn ausgeben?
Solange die Daten (wie in der Anforderung hier) aus einer DB-Tabelle kommen ist es kein Problem. ("nicht flach" bedeutet in SAP nicht automatisch "tabelle in tabelle" sondern nur "nicht rein zeichenartig")
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.07
Basis: 7.40

Re: Ausgabe einer ganzen Work Area?

Beitrag von ewx (Top Expert / 4246 / 200 / 449 ) » 10.08.2020 15:31
Ich warte ja immer noch, dass CL_DEMO_OUTPUT tiefe Strukturen endlich mal unterstützt...

Seite 1 von 1

Aktuelle Forenbeiträge

NAST in Smartforms
vor 20 Stunden von L0w-RiDer 2 / 23
Zuordnen einer HU zu einer Lieferung
vor 21 Stunden von SayAndre 8 / 4970
Append mehrer Zeilen mit VALUE #
vor 22 Stunden von Romaniac gelöst 11 / 5951
Funktionsbaustein ALSM_EXCEL_TO_INTERNAL_TABLE
vor 22 Stunden von Romaniac gelöst 7 / 2047

Vergleichbare Themen

Rechnen mit ganzen Zahlen >> 30 Stellen
von danielpaul » 22.03.2016 15:12
Download einer ganzen BSP-Applikation
von Jens W » 28.05.2003 10:44
Collapsible area
von Lydia » 26.02.2008 06:53
Transaction FM_SETS_FUNCTION1 Funtional area
von niermaj » 26.10.2005 10:36
Org-Area Merkmal an Klassen ändern
von Sebastian82 » 13.09.2019 09:52