Ordnen folgender WRITE-Ausgabe

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Ordnen folgender WRITE-Ausgabe

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
Hallo Leute,

ich habe einen dynamischen Selekt geschrieben, dieser gibt die Felder der ausgewählten Tabelle aus nun sieht meine Ausgabe aber so aus:
Druckerverwaltung.PNG
Felder sind verschoben da manche Tabellen nicht die selben haben.
Wie kann ich dort ein bisschen Ordnung reinbekommen?

Code: Alles auswählen.

  IF p_nach = 'X'.

    FIELD-SYMBOLS: <lt_table2>   TYPE STANDARD TABLE,
                   <fs2>         TYPE any,
                   <field2>      TYPE any,
                   <field12>     TYPE any.

    DATA: lt_nach  TYPE TABLE OF nach,
          ls_nach  TYPE nach.

    DATA: lv_table2 TYPE string,
          ls_line2  TYPE string.

    DATA: o_ref2 TYPE REF TO data.

    SELECT * FROM NACH INTO TABLE lt_nach WHERE LDEST = p_ldest.


    LOOP AT lt_nach INTO ls_nach.
    CONCATENATE ls_nach-kvewe ls_nach-kotabnr INTO lv_table2.

    SELECT * FROM dd03l INTO TABLE gt_dd03l
    WHERE tabname = lv_table2.

    CREATE DATA o_ref2 TYPE TABLE OF (lv_table2).
    ASSIGN o_ref2->* TO <lt_table2>.

    SELECT * FROM (lv_table2) INTO TABLE <lt_table2> WHERE KNUMH = ls_nach-knumh.

    IF sy-subrc = 0.
      LOOP AT <lt_table2> ASSIGNING <fs2>.
        CLEAR ls_line2.
        ls_line2 = lv_table2.
        LOOP AT gt_dd03l INTO gs_dd03l.
        ASSIGN gs_dd03l-fieldname TO <field12>.
        ASSIGN COMPONENT <field12> OF STRUCTURE <fs2> TO <field2>.
        IF sy-subrc = 0.
              IF NOT <field2> IS INITIAL.
                WRITE: <field2> TO fieldc.
                CONCATENATE ls_line2 gs_dd03l-fieldname '=' fieldc INTO ls_line2 SEPARATED BY space.
*                CONCATENATE ls_line2 ls_nach-knumh '=' fieldc INTO ls_line2 SEPARATED BY space.
              ENDIF.
        ENDIF.
      ENDLOOP.
        WRITE: / ls_line2.
        ENDLOOP.
    ENDIF.
  ENDLOOP.
  ENDIF.
Danke im voraus.

Gruß
Max
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

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


Re: Ordnen folgender WRITE-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Eventuell hilft dir der RESPECTING BLANKS Zusatz beim CONCATENATE bereits. Damit werden die schließenden Leerzeichen berücksichtigt. Aber vermutlich dürfte dir dann die Ausgabe zu breit sein, da FIELDNNAME alleine schon 30 Zeichen lang ist. Wenn dem so ist, wirst du wohl oder übel in den sauren Apfel beißen müssen und VOR der Ausgabe bestimmen welcher Feldname/Wert nun der Längste ist und entsprechend die Ausgabe allgemein auf einen fixen Wert festlegen (Siehe Hilfe zur Längenangabe beim WRITE Befehl)
Da du ja bereits mit der DD03L herumhantierst, findest du dort auch die Längenangabe für das jeweilige Feld. (Decimalsangaben, Aufbereitungsmasken und Ausgabelänge der Domäne nicht vergessen!)

lg ADT
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

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Hmmm... Je länger ich darüber nachdenke, desto mehr Fallstricken fallen mir ein. :oops:
Ich würde vorschlagen die Daten vor der Ausgabe in eine interne Tabelle einzutragen.

Code: Alles auswählen.

TYPES:
  BEGIN OF ts_data,
    tabname   TYPE tabname,
    fieldname TYPE fieldname,
    fieldpos  TYPE i, "<-- Position des Feldes in der Ausgabezeile
    content   TYPE text255, "<-- Damit der Write-Befehl direkt funktioniert
  END OF ts_data,
  tt_data TYPE STANDARD TABLE OF ts_data WITH DEFAULT KEY.
Damit hast du alle Informationen zur Laufzeit vorliegen und kannst die max. Länge der Feldnamen/Werte vor der Ausgabe dynamisch bestimmen.

lg ADT

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

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

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
Danke für die Antwort! :)

Mit RESPECTING BLANKS funktioniert es nicht, dass habe ich bereits versucht. Danke für den Tipp mit der itab, das werde ich mal versuchen. :)

Gruß
Max
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Hi,

ist dir das zu viel Aufwand die Daten mit CL_SALV_TABLE auszugeben?
Ist doch schnell gemacht und du bist sehr variabel mit der Ausgabe, auch im Hintergrund.

Grüße
Frank

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
Übrigens Danke a-dead-trousers so hat es funktioniert. :)

@ST22: Wenn ich den Arbeitsauftrag bekomme es in einen WRITE auszugeben werde ich nicht in einem ALV Grid ausgeben.
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
hmaxi96 hat geschrieben:Übrigens Danke a-dead-trousers so hat es funktioniert. :)
@ST22: Wenn ich den Arbeitsauftrag bekomme es in einen WRITE auszugeben werde ich nicht in einem ALV Grid ausgeben.
Hallo Max,
die Aussage von einem erfahrenen Entwickler wie Frank (ST22) würde ich nicht so einfach abbügeln. Wenn mir z.B. jemand sagen würde "Gib es am Ende mit WRITE" aus und das Ergebnis der Aufgabe ist eine Liste würde ich auch versuchen dem Auftraggeber klar zu machen, dass so eine ALV-Ausgabe deutlich flexibler und besser wartbar ist.

Die Frage ist ja - WARUM soll es mit WRITE ausgegeben werden.
Da du Azubi bist könnte es eine Übungsaufgabe sein, die dir den WRITE-Befehl näher bringen soll - in dem Fall hast du also gar keine Wahl.
Ähnlich gelagert ist der Fall, wenn ein bestehendes Programm erweitert werden soll.
Ich kann jetzt natürlich nicht für die Masse der ABAPler sprechen - aber ich schätze, dass ein nicht unerheblicher Teil der Leute die schon länger dabei sind zur ALV-Ausgabe tendieren und diese versuchen werden den Auftraggeber hiervon zu überzeugen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
black_adept hat geschrieben:
hmaxi96 hat geschrieben:Übrigens Danke a-dead-trousers so hat es funktioniert. :)
@ST22: Wenn ich den Arbeitsauftrag bekomme es in einen WRITE auszugeben werde ich nicht in einem ALV Grid ausgeben.
Hallo Max,
die Aussage von einem erfahrenen Entwickler wie Frank (ST22) würde ich nicht so einfach abbügeln. Wenn mir z.B. jemand sagen würde "Gib es am Ende mit WRITE" aus und das Ergebnis der Aufgabe ist eine Liste würde ich auch versuchen dem Auftraggeber klar zu machen, dass so eine ALV-Ausgabe deutlich flexibler und besser wartbar ist.

Die Frage ist ja - WARUM soll es mit WRITE ausgegeben werden.
Da du Azubi bist könnte es eine Übungsaufgabe sein, die dir den WRITE-Befehl näher bringen soll - in dem Fall hast du also gar keine Wahl.
Ähnlich gelagert ist der Fall, wenn ein bestehendes Programm erweitert werden soll.
Ich kann jetzt natürlich nicht für die Masse der ABAPler sprechen - aber ich schätze, dass ein nicht unerheblicher Teil der Leute die schon länger dabei sind zur ALV-Ausgabe tendieren und diese versuchen werden den Auftraggeber hiervon zu überzeugen.
Gegenargument: Wieviele Spalten sollte ein ALV-Grid aufweisen um die gegebene Anforderung abzudecken? 50,100,200? Oder macht man es dynamisch?
Ich hab mir auch kurz ein ALV überlegt, aber bin dann rasch wieder davon abgekommen, eben weil es statisch zu unflexibel ist und das dynamische für Anfänger zu kompliziert ist.
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

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
Antwort an @adt: Statisch, wenn ich weiß welche Schlüssel im auszuwertenden Bereich vorkommen können, dynamisch wenn's ganz allgemein sein soll.
Was das "kompliziert" angeht. Ja - das kann hinreichend komplex werden.
Aber für den Normalgebrauch ist der dynamische Aufbau einer Tabelle doch schnell gemacht und wenn man eine brauchbare Vorlage hat bzw. wenn man es einmal verstanden hat. Und wenn man bedenkt, was ein ALV einem dann alles automatisch noch schenkt, lohnt sich der Aufwand in meinen Augen fast immer.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
black_adept hat geschrieben:Antwort an @adt: Statisch, wenn ich weiß welche Schlüssel im auszuwertenden Bereich vorkommen können, dynamisch wenn's ganz allgemein sein soll.
Was das "kompliziert" angeht. Ja - das kann hinreichend komplex werden.
Aber für den Normalgebrauch ist der dynamische Aufbau einer Tabelle doch schnell gemacht und wenn man eine brauchbare Vorlage hat bzw. wenn man es einmal verstanden hat. Und wenn man bedenkt, was ein ALV einem dann alles automatisch noch schenkt, lohnt sich der Aufwand in meinen Augen fast immer.
Vorlangen zu haben ist immer gut. :wink:
Dass ein ALV in diesem konkreten Fall Vorteile bringen kann, wage ich jedoch zu bezweiflen. Die Felder sollen ja nur ausgegeben werden, wenn sie befüllt sind. Damit bringt eine Spaltendarstellung IMHO schon mal recht wenig, da je Zeile unterschiedlich viele Spalten befüllt sein können. Lässt man Löcher für die leeren Zellen oder füllt man nach links auf? Wenn man in einem Lauf evtl. auch Informationen aus unterschiedlichen Tabellen anzeigen möchte wird es ganz lustig.
Ich geb dir recht, oft bringt es sehr viel den Aufwand für die Integration in ein ALV zu betreiben, aber in dem Fall eher nicht.
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

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Mir kommt es ja fast so vor, als ob ADTs User gehackt wurde. Sonst ist ADT doch nichts kompliziert genug :-) :-) :-) <--- Bitte die Smilies beachten!!!

Die obige Listausgabe ging bei mir gar nichts, das ist ja Steinzeit.

Ich wuerde, wenn moeglich, immer einen ALV (Fuba, Cl_SALV oder CL_GUI_ALV...) einer Write-Liste vorziehen.

Wenn Spalten komplett leer sind und nicht angezeigt werden sollen, erst gar nicht anzeigen/ oder ausschalten.

Wenn Felder leer sind, finde ich es trotzdem immer noch besser, als diese Write Ausgabe. Und man kann sogar nach diesen leeren Felder sortieren, wenn man wollte.

"Wenn man in einem Lauf evtl. auch Informationen aus unterschiedlichen Tabellen anzeigen möchte wird es ganz lustig." Dann muss wohl das ganze Programm angefasst werden. Aber, "wenn" ist ja hier erst einmal nicht verlangt oder?

Auf der einen Seite wird hier teilweise diskutiere, ALLES in OO zu schreiben und hier geht man 3 Schritte zurueck und priorisiert eine Listeausgabe mit Write?

Re: Ordnen folgender WRITE-Ausgabe

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
Weil hier diskutiert wird möchte ich auch mal kurz was sagen. Ich weiß dass ALV viele Vorteile bietet, habe auch schon des öfteren mit der dynamischen ALV Ausgabe gearbeitet. Nur bei diesem Arbeitsauftrag musste ich mal mit dem WRITE-Befehl arbeiten, weiß selbst nicht wieso da es auch nicht wirklich gut aussieht :D
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2622
Views
Write-Ausgabe vor Alv-Grid Ausgabe
von L0w-RiDer » 14.08.2019 14:09 • Verfasst in ABAP® für Anfänger
10
Antw.
3995
Views
WRITE Ausgabe auf einem Dynpro
von Paul » 30.10.2018 14:39 • Verfasst in ABAP® für Anfänger
3
Antw.
2009
Views
Write Ausgabe mit Feldern dynamisch gestalten
von Hagbard » 25.08.2005 09:52 • Verfasst in ABAP® für Anfänger
1
Antw.
3967
Views
7
Antw.
4721
Views
write ... under
von Gast » 19.04.2005 15:40 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741