Die zweite Datenbanktabelle tut eigentlich dann sagen wo die "Matnr" auf dem Formular ist und wird beschrieben durch die Felder "Feldname", "Zeile" , "Spalte"z.B: MATNR 4711 POS 1
MATNR 0915 POS 2
POSNR 001 POS 1
(Zeile 1 Spalte 1 etc.)MATNR 1 1
POSNR 1 2
Code: Alles auswählen.
DATA stk_pos_tab TYPE zjm_pos_tab.
DATA stk_felder TYPE zjm_type_felder.
DATA main_data TYPE zjm_feld_data.
DATA main_data_t TYPE TABLE OF zjm_feld_data.
DATA stk_zeilen TYPE zjm_zeilen_tab.
DATA stk_input LIKE LINE OF it_input.
DATA pos_alt TYPE i.
DATA anzahl_pos TYPE i.
anzahl_pos = 1.
DATA anzahl_zeilen TYPE i.
anzahl_zeilen = 1.
*Feldinformationen Lesen
SELECT * FROM zjm_feld_data INTO main_data.
APPEND main_data TO main_data_t.
SORT main_data_t BY zeile name ASCENDING .
ENDSELECT.
DATA it_data TYPE zjm_pos_name_value_tt.
DATA stk_data TYPE zjm_pos_name_value.
SELECT * FROM zjm_dummy_data INTO CORRESPONDING FIELDS OF TABLE it_data WHERE positions_art = 'DATEN' .
SORT it_data BY zeile feld_name pos ASCENDING.
*Feldinformationen entsprechend umsetzen
LOOP AT it_data INTO stk_input.
READ TABLE main_data_t WITH KEY name = stk_input-feld_name INTO main_data.
IF anzahl_zeilen NE main_data-zeile.
APPEND stk_zeilen TO stk_pos_tab-zeile.
anzahl_zeilen = anzahl_zeilen + 1.
CLEAR stk_zeilen-felder.
ENDIF.
IF anzahl_pos NE stk_input-pos.
APPEND stk_pos_tab TO et_pos_tab.
anzahl_pos = anzahl_pos + 1.
anzahl_zeilen = 1.
CLEAR stk_zeilen-felder.
CLEAR stk_pos_tab-zeile.
ENDIF.
stk_felder-feld_nr = main_data-spalte.
stk_felder-feld_name = main_data-name.
stk_felder-type = main_data-type.
stk_felder-layout = main_data-layout_stil.
stk_felder-wert = stk_input-value.
APPEND stk_felder TO stk_zeilen-felder.
SORT stk_zeilen-felder BY feld_nr ASCENDING.
ENDLOOP.
*Ausnahme für letzte Zeile bzw. Position
APPEND stk_zeilen TO stk_pos_tab-zeile.
APPEND stk_pos_tab TO et_pos_tab.