[53960] in SAPr3-news

home help back first fref pref prev next nref lref last post

=?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

home help back first fref pref prev next nref lref last post