Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

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

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

Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von menkto1 (ForumUser / 7 / 2 / 0 ) »
Hallo zusammen,

ich habe folgendes Problem.

Eine Ausgabe-Tabelle soll als CSV Datei heruntergeladen werden, diese Ausgabe-Tabelle soll aber vordefinierte Überschriften haben, damit anhand der Spaltenüberschrift die Datei in einem Online-Portal hochgeladen werden kann.

Die Ausgabe-Tabelle hat 66 Spalten, da ich die vordefinierte Bezeichungen aber nicht als "Konstante" im Programm hinterlegen möchte, habe ich eine eigene Tabelle mit den Feldern "Feldname" und "Bezeichnung" angelegt.

Jetzt möchte ich zum Feld bzw. zur Spalte der Ausgabetabelle die Bezeichnung aus der "Überschriftentabelle" in der 1. Zeile hinzufügen.

Hier komme ich nicht weiter. Über

Code: Alles auswählen.

assign compoment sy-index of structure gs_output to <fs_field> 
würde ich den Feldnamen der Spalte von Tabelle "gt_output" bekommen, ist das korrekt?

Danach würde ich aus der Tabelle gt_description die Bezeichnung auslesen:

Code: Alles auswählen.

read table gt_description assigning <descr> with key fieldname = <fs_field>.
Wie bekomme ich jetzt in die 1. Zeile der Ausgabetabelle (gt_output) die Bezeichnung hinzugefügt?
Zunächst eine leere Zeile zur Ausgabetabelle hinzufügen und dann füllen?

Code: Alles auswählen.

append initial line to gt_output assiging <output>
assign component (<fs_field>) to <fs>. 
<fs> = <descr>-bezeichnung.
Und wie setze ich den Wert in die 1. Zeile der Ausgabetabelle?

Beispiel Inhalt der beiden Tabellen:

Code: Alles auswählen.

data: begin of gt_output,
         kunnr type kunnr,
         matnr type matnr, 
         vbeln  type vbeln,
         posnr type posnr, 
.....                                      "insgesamt 66 Felder
end of gt_output. 

*Aufbau Tabelle Bezeichnung ( Pflegetabelle angelegt)
data: begin of gt_descr
           feldname     type feldname
           bezeichnung type scrltxt_l
       end of gt_descr.

* Inhalt Tabelle gt_output:
123456;4711;9872511;00010;VX;.....

* Inhalt Tabelle gt_descr
KUNNR; Kunde
MATNR; Material
VBELN; Rechnung
.......

* Ausgabe nach Zusammenführung:
Kunde; Material; Rechnung...
123456;4711;9872511.....
Stehe gerade komplett auf dem Schlauch.

Vielen Dank u. viele Grüße
Torsten

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


Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 413 ) »
Dein Fehler ist gleich am Anfang, deshalb kann der Rest dann auch nicht mehr richtig werden.
Hier komme ich nicht weiter. Über

Code: Alles auswählen.

assign compoment sy-index of structure gs_output to <fs_field>
würde ich den Feldnamen der Spalte von Tabelle "gt_output" bekommen, ist das korrekt?
Nein. Abgesehen davon, dass es "component" und nicht "compoment" heißt, bekommst Du mit dem Befehl den Inhalt der betreffenden Spalte von gs_output, nicht aber ihren Namen! Wenn Du den Namen haben möchtest, musst Du mit einer der ersten beiden Methoden der Klasse CL_ABAP_STRUCTDESCR arbeiten. Da musste ein bisschen fummeln, aber damit kriegt man über das Attribut CL_ABAP_STRUCTDESCR->COMPONENTS die Spaltennamen ran. Die kannst Du dann der Reihe nach durchgehen und dann anhand der Nummer mit Deinem ASSIGN COMPONENT zu jeder Spalte Deiner eingefügten Leerzeile aus CL_ABAP_STRUCTDESCR->COMPONENTS den passenden Spaltennamen holen.

Finde es übrigens gut, dass Du von den Befehlen her modernen Stil programmierst. Das sieht man hier in Fragen eher selten. 7.40 oder höher hast Du ja offenbar. Lediglich an dem READ TABLE ... ASSIGNING ließe sich kosmetisch noch was verbessern. Statt

Code: Alles auswählen.

read table gt_description assigning <descr> with key fieldname = <fs_field>.
kannste nämlich hübscher schreiben:

ASSIGN gt_description[ fieldname = <fs_field> ] to <descr>.

Nur kannst Du dann den code-Tag hier im Forum nicht mehr nutzen, da der nicht mit eckigen Klammern (und Ampersands) klarkommt. Außerdem liefert der ASSIGN keinen SY-TABIX (wohl aber den SY-SUBRC). Solange Du den SY-TABIX nicht brauchst, ist der ASSIGN aber schöner. 8)

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
menkto1


Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von menkto1 (ForumUser / 7 / 2 / 0 ) »
Super, vielen Dank für den Hinweis!! :up:
Werde es ausprobieren - aber erst Montag. :)

....Ich werde berichten. :)

PS:
Das Coding habe ich auf die Schnelle selbst hier reingeschrieben, daher die Schreibfehler im "CODE".
Hatte es noch nicht im Programm umgesetzt. :|

Unsere Firma hat Systeme von 4.6c bis ECC 6.0 EHP7, da versuche ich flexibel zu sein und immer so modern wie möglich zu programmieren... und natürlich an unseren Programmierrichtlinien halten :D

Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 413 ) »
4.6c, um Himmels willen - das war ja vor 10 Jahren schon alt!

Meine alternative Syntax geht erst ab 7.40. (musste unter Menü System -> Status nachsehen) Generell bringt 7.40 eine Menge neuer Syntaxmöglichkeiten, die den alten von der Lesbarkeit und Effizienz her um Größenordnungen überlegen sind. Details hier:

https://blogs.sap.com/2013/07/22/abap-n ... lease-740/

Bis 7.20 habe ich noch mit Tabellenkopfzeilen gearbeitet, weil ich das Hantieren mit den sperrigen Workareas schrecklich fand (auch von der Lesbarkeit her, wobei ich mich mit der Einstellung bei einigen hier im Forum etwas unbeliebt gemacht habe :) ). Seit 7.40 ist das Thema vom Tisch, weil man mit der neuen Syntax die Workareas fast gar nicht mehr benötigt und ich damit auch keinen Grund mehr hatte, auf Kopfzeilen zu setzen. Ein Beispiel habe ich Dir ja gerade geboten.

Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von menkto1 (ForumUser / 7 / 2 / 0 ) »
Naja, viele Gesellschaften mit eigenen SAP Systemen... Es soll bald HANA kommen, dann wird sich das ändern.
Sind jetzt schon am Migrieren ohne Ende, dass die ganzen kleinen Sales Gesellschaften in ein SAP System kommen...

Aber nochmals danke für den Tipp, mit diesem Coding hat es geklappt! :)

Code: Alles auswählen.

*# get fieldnames of table gt_outputdl
    go_struct ?= cl_abap_structdescr=>describe_by_data( gt_outputdl ).

    CLEAR: gs_outputdl.

    LOOP AT go_struct->components ASSIGNING <comp>.

*# read table zsovost0001 to get header description
      READ TABLE gt_zsovost0001 ASSIGNING <zsovost0001> WITH KEY field = <comp>-name.

      IF sy-subrc = 0 AND
         <zsovost0001> IS ASSIGNED.
*# add header description to structure gs_outputdl
        ASSIGN COMPONENT <comp>-name OF STRUCTURE gs_outputdl TO <fs_field>.
        <fs_field> = <zsovost0001>-scrtext_l.
      ENDIF.
    ENDLOOP.

*# insert header description to table gt_outputdl
    INSERT gs_outputdl INTO gt_outputdl INDEX 1.

Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 413 ) »
Naja, viele Gesellschaften mit eigenen SAP Systemen...
Das erklärt für mich trotzdem nicht, wie man mit einem Release leben kann, dass meines Wissens von der SAP schon lange nicht mehr supportet wird. Klar, wenn man Geld in die Hand nimmt, kriegt man für alles Support, aber das soll kostengünstiger sein als einmalig ein koordiniertes Releaseupgrade? Abgesehen von den Beraterstunden, die man ggf. für die Durchführung braucht, sowie etwas Downtime und Testung hat solch Upgrade ja auch keine Nachteile. Der ganze alte Code läuft ja in aller Regel unverändert weiter.

Immerhin weißt Du offenbar, was Du tust. Du hast sogar das geisteskranke Casting hingekriegt, um von TYPEDESCR zu STRUCTDESCR zu kommen.

Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von menkto1 (ForumUser / 7 / 2 / 0 ) »
Ehrlich gesagt, ist das für mich Neuland. Hab viel gegoogelt und mich eingelesen und dann im QAS getestet ohne Ende :)
DeathAndPain hat geschrieben:Immerhin weißt Du offenbar, was Du tust. Du hast sogar das geisteskranke Casting hingekriegt, um von TYPEDESCR zu STRUCTDESCR zu kommen.
######
Bin bei der Firma fest angestellt, daher keine Beraterstunden. Haben ein eigenes SAP Team für alle Module, verteilt auf mehrere Zeitzonen. ;)
Die 4.6c Systeme sind kleinere Vertriebsgesellschaften, bei denen vor zig Jahren SAP eingeführt wurde. Bis jetzt musste nichts geändert werden, da die Prozesse laufen.
Für ein Upgrade auf ECC6.0 fehlt die Kapazität im SAP Team. Unser Unternehmen hat fast 20 Produktivsysteme, da ist es schwierig, einen Upgrade Termin zu finden. :D

Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 413 ) »
Wer sagt denn, dass die alle gleichzeitig hochgezogen werden müssen? Ich hätte gesagt, das macht man der Reihe nach, eins nach dem anderen.

Re: Zuweisung Zeile 1. Tabelle zu Spalte 2. Tabelle

Beitrag von menkto1 (ForumUser / 7 / 2 / 0 ) »
Wir sind ein Produktionsunternehmen, einige Gesellschaften produzieren 24/7. Da bekommt man kaum freie Termine (Wochenenden), wo der Upgrade durchgeführt werden darf.

Wir planen für ein Upgrade ca 2-3 Monate ein. Da neben der IT auch die Fachbereiche involviert werden, müssen entsprechende Termine gefunden werden und die Mitarbeiter-Ressourcen frei sein.
Zudem haben wir viele Schnittstellen, AddOns und Eigenentwicklungen, die getestet werden müssen. Glaub mir, das ist bei uns nicht so einfach! War vor 2-3 Jahren selbst Projekleiter beim Upgrade (4.6c auf ECC 6.0) einer Produktionsgesellschaft in Osteuropa, die 24/7 produziert. Da bekommst Du die Krise, einen richtigen Termin zu finden. ;)

Aber das ist ein anderes Thema :D

Seite 1 von 1

Vergleichbare Themen

2
Antw.
642
Views
falsche Zuweisung zu dynamischer Spalte
von Akatash » 05.06.2019 16:19 • Verfasst in ABAP® Core
5
Antw.
2159
Views
REUSE_ALV_GRID_DISPLAY und Spalte aus anderer Tabelle
von Andrea F. » 05.12.2005 12:37 • Verfasst in ABAP® für Anfänger
1
Antw.
723
Views
Spalte in interner Tabelle hinzufügen
von Gekomo » 04.10.2022 11:56 • Verfasst in ABAP® für Anfänger
2
Antw.
2342
Views
Einer Tabelle eine Spalte hinzufügen
von Accetron » 19.04.2021 08:58 • Verfasst in ABAP® für Anfänger
2
Antw.
1970
Views
spalte einer internen Tabelle befüllen
von CSZ_Berater » 21.09.2017 09:20 • 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

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2416
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9006