[53960] in SAPr3-news
=?ISO-8859-1?Q?interne_Tabelle_dynamisch_ermittel?=
daemon@ATHENA.MIT.EDU (discomiller)
Thu Mar 31 03:25:17 2005
To: sapr3-news@mit.edu
Date: 31 Mar 2005 00:25:06 -0800
From: mm@dsc-gmbh.com (discomiller)
Message-ID: <79d70ad8.0503310025.5d9e060@posting.google.com>
Hallo zusammen,
gegeben sei ein Funktionsbaustein, dessen Parameter zwei 'tables'
erwarten.
Die tables entsprechen den Strukturen der Tabellen
1) SAIRPORT = Flughäfen
2) SFLIGHT = Flug
(Anmerkung: der Name der angegebenen Tabellen spielt für das Problem
keine Rolle; die Namen 1) und 2) dienen lediglich der Beschreibung des
Problems)
Weiter sei eine interne Tabelle (im Folgenden ITAB genannt) gegeben,
die folgende Struktur aufweist
TABLENAME FIELDNAME WERT
Die ITAB sei wie folgt gefüllt
TABLENAME FIELDNAME WERT
SAIRPORT ID 001
SAIRPORT NAME FRANKFURT
SAIRPORT ID 002
SAIRPORT NAME STUTTGART
SFLIGHT CARRID 500
SFLIGHT CONNID 0010
SFLIGHT CARRID 500
SFLIGHT CONNID 0020
--> Die Tabelle ITAB enthält somit Einträge, die entweder mit SAIRPORT
oder mit SFLIGHT
korrespondieren.
Ich benötige nun eine Routine, die mir zwei interne Tabelle
(I_SAIRPORT und I_SFLIGHT) füllt.
Das Ergebnis soll sein
1. Eintrag I_SAIRPORT-ID = 001 I_SAIRPORT-NAME = FRANKFURT
2. Eintrag I_SAIRPORT-ID = 002 I_SAIRPORT-NAME = STUTTGART
1. Eintrag I_SFLIGHT-CARRID = 500 I_SFLIGHT-CONNID = 0010
2. Eintrag I_SFLIGHT-CARRID = 500 I_SFLIGHT-CONNID = 0020
ANFORDERUNG:
Die Routine soll dynamisch sein (ohne Case-Verteiler oder
IF-Anweisung)!
Die Routine muss zur Laufzeit anhand von ITAB-TABLENAME und
ITAB-FIELDNAME ermitteln können, welche
Zielstruktur (I_SAIRPORT oder I_SFLIGHT) mit Werten zu versorgen ist.
1.ter Ansatz (kann aber sein, dass ich in eine total falsch Richtung
gehe und ein ganz anderer Ansatz besser wäre)
Allerdings wird bei diesem Ansatz noch keine interne Tabelle gefüllt!
DATA: H_DDIC_STRUC(61).
FIELD-SYMBOLS <DD> TYPE ANY.
TABLES: SFLIGHT, SAIRPORT.
DATA: BEGIN OF ITAB OCCURS 0,
TABLENAME(30),
FIELDNAME(30),
WERT(255).
DATA: END OF ITAB.
ITAB-TABLENAME = 'SAIRPORT'.ITAB-FIELDNAME = 'ID '.
ITAB-WERT = '001 '.APPEND ITAB.
ITAB-TABLENAME = 'SAIRPORT'.ITAB-FIELDNAME = 'NAME '.
ITAB-WERT = 'FRANKFURT'. APPEND ITAB.
ITAB-TABLENAME = 'SAIRPORT'.ITAB-FIELDNAME = 'ID '.
ITAB-WERT ='002 '. APPEND ITAB.
ITAB-TABLENAME = 'SAIRPORT'.ITAB-FIELDNAME = 'NAME '.
ITAB-WERT = 'STUTTGART'. APPEND ITAB.
ITAB-TABLENAME = 'SFLIGHT '.ITAB-FIELDNAME = 'CARRID '.
ITAB-WERT = '500 '. APPEND ITAB.
ITAB-TABLENAME = 'SFLIGHT '.ITAB-FIELDNAME = 'CONNID '.
ITAB-WERT = '0010 '. APPEND ITAB.
ITAB-TABLENAME = 'SFLIGHT '.ITAB-FIELDNAME = 'CARRID '.
ITAB-WERT = '500 '. APPEND ITAB.
ITAB-TABLENAME = 'SFLIGHT '.ITAB-FIELDNAME = 'CONNID '.
ITAB-WERT ='0020 '.APPEND ITAB.
LOOP AT ITAB.
CONCATENATE ITAB-TABLENAME
'-'
ITAB-FIELDNAME
INTO H_DDIC_STRUC.
ASSIGN (H_DDIC_STRUC) TO <DD>.
MOVE ITAB-WERT TO <DD>.
WRITE:/ <DD>.
ENDLOOP.
*************************+
Vielen Dank
Mario Müller