Code: Alles auswählen.
assign compoment sy-index of structure gs_output to <fs_field>
Code: Alles auswählen.
read table gt_description assigning <descr> with key fieldname = <fs_field>.
Code: Alles auswählen.
append initial line to gt_output assiging <output>
assign component (<fs_field>) to <fs>.
<fs> = <descr>-bezeichnung.
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.....
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.Hier komme ich nicht weiter. Überwürde ich den Feldnamen der Spalte von Tabelle "gt_output" bekommen, ist das korrekt?Code: Alles auswählen.
assign compoment sy-index of structure gs_output to <fs_field>
Code: Alles auswählen.
read table gt_description assigning <descr> with key fieldname = <fs_field>.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
menkto1
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.
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.Naja, viele Gesellschaften mit eigenen SAP Systemen...
######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.