Page 1 of 1

Tabelle dynamisch füllen

PostPosted: Fri May 29, 2015 12:31 pm
by Aliya3110
Hallo zusammen,
kann jemand mich unterstützen, ich möchte Daten aus einer Tabelle dynamisch füllen. Wie kann ich die Values in den richtigen Spalten zuordnen?
Vielen Dank im Voraus.

Ich habe eine Tabelle mit drei Spalten. "Nummer" "Name" und "Value".

Ich habe eine zweite Tabelle mit 80 Spalten.
1. Spalte: Personalnummer
2. Spalte: Name
3. Spalte: Vorname
4....
80.....
Die Inhalte von der zweiten Tabelle müssen nur mit den Value Daten aus der ersten Tabelle gefüllt werden.

1. Tabelle
Spalten: Nummer Name Value
1.Datensatz 1 Personalnummer 1
2.Datensatz 2 Nachname Schmidt
3. Datensatz 3 Vorname Christian
80. Datensatz

2. Tabelle
Spalten: Personalnummer Name Vorname ....usw....

Ergebnis soll so aussehen:
Spalten: Personalnummer Nachname Vorname ....usw....
1 Schmidt Christian

Re: Tabelle dynamisch füllen

PostPosted: Wed Jun 03, 2015 12:57 pm
by Angela1614
Wo genau liegt denn das Problem?
Du loopst über die erste Tabelle und merkst dir in einer Variablen die Personalnummer. Immer wenn eine neue kommt, merkst Du Dir die und weisst, Du musst mit einer neuen Zeile anfangen.

Ob Du nun am Anfang einer neuen Persnr immer eine leere Zeile in die zweite Tabelle schreibst, die Du dann füllst (s. "APPEND INITIAL LINE ... ASSIGNING ...) oder eine Struktur aufbaust, die Du füllst und am Ende in Deine zweite Tabelle schreibst, kannst Du Dir im Grunde aussuchen.

Und die dynamische Zuordnung sieht im zweiten Fall dann ungefähr so aus:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FIELD-SYMBOLS: <field> TYPE any.
  2. ...
  3. ASSIGN COMPONENT ls_tab1-feldname OF STRUCTURE ls_struk TO <field>.
  4. <field> = ls_tab1-value.
  5.  
GeSHi ©

Re: Tabelle dynamisch füllen

PostPosted: Sun Jun 07, 2015 5:44 pm
by Aliya3110
Hallo GastX,

vielen Dank für die Antwort, ich habe die Lösung umgesetzt aber leider habe ich mit der Übernahme von Zahlen mit 2 Kommastellen Probleme. Wie kann ich sie übernehmen?

DATA: ls_invoiceheader TYPE zsmm_invoiceheader,
lt_invoiceheader TYPE ztymm_invoiceheader,
lv_spaltenname TYPE string,
lv_addinvoice_table TYPE i,
lv_table TYPE boolean.
DATA: lv_exceptiontext TYPE string.

FIELD-SYMBOLS:
<ls_xml_data> LIKE LINE OF lt_xml_data,
<lv_value> TYPE any,
<lv_addvalue> TYPE any,
<ls_invoiceheader> TYPE zsmm_invoiceheader.

LOOP AT lt_xml_data ASSIGNING <ls_xml_data>.

* check fieldname
ASSIGN COMPONENT lv_spaltenname OF STRUCTURE ls_invoiceheader TO <lv_addvalue> .
IF sy-subrc = 0.
TRY.
<lv_addvalue> = <ls_xml_data>-cvalue.
CATCH cx_sy_conversion_no_number INTO lo_exception.
lv_exceptiontext = lo_exception->get_text( ).
ENDTRY.
ENDIF.
lv_spaltenname = <ls_xml_data>-cvalue.

* add fieldvalue in Structur
ASSIGN COMPONENT <ls_xml_data>-cvalue OF STRUCTURE ls_invoiceheader TO <lv_value>.
IF sy-subrc = 0.
TRANSLATE <ls_xml_data>-cvalue TO UPPER CASE.
ENDIF.

Genau hier müssen die zahlen übernommen werden, aber eine Exception wird ausgelöst:

TRY.
<lv_addvalue> = <ls_xml_data>-cvalue.
CATCH cx_sy_conversion_no_number INTO lo_exception.
lv_exceptiontext = lo_exception->get_text( ).
ENDTRY.