Tabelle als Rückgabewert

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Tabelle als Rückgabewert

Postby Finley5039 » Fri Aug 08, 2003 9:19 am

Hallo zusammen,

gibt es eine Möglichkeit, dass eine Methode eine Tabelle zurückliefert?
Sprich, ich will mit der Methode Daten von der Datenbank selektieren und diese Daten zurückgeben.

Vielen Dank für eure Hilfe,

unwell
Finley5039
.
.
 
Posts: 2
Joined: Fri Aug 08, 2003 9:19 am

Postby Emre397 » Fri Aug 08, 2003 10:25 am

Hi unwell,

Der bezugstyp des Parametes der Methode muß TABLE sein. Diese scheint dann jede beliebige struktur zu haben ;)

Gruß Azreal
Emre397
...
...
 
Posts: 141
Joined: Mon Dec 09, 2002 1:53 pm

Postby Finley5039 » Sat Aug 09, 2003 9:43 pm

Hi Azreal,

danke. Aber als Bezugstyp gibt es doch nur like, type und type ref.
Hab jetzt rausgefunden, dass wenn man als bezugstyp "type "nimmt und als datenelement ein tabellentyp, es dann geht. dann müsst ich aber von jeder tabelle die ich benutzen will und auch zurückgeben will so ein Typ anlegen, was ein wenig nervig ist.
Sonst noch Ideen?

Dank,

unwell
Finley5039
.
.
 
Posts: 2
Joined: Fri Aug 08, 2003 9:19 am

Postby Walter4536 » Mon Aug 11, 2003 8:35 am

Hi,

wenn Du eine Tabelle über eine Methode übergeben willst, dann muss diese im ABAP-Dictionary hinterlegt sein. Wenn die Tabelle als Returning-Parameter deklariert ist, bekommst Du sogar zusätzlich die Fehlermeldung, dass in diesem Falle die Tabelle vollständig typisiert sein muss.

Was man auch noch machen kann, ist eine untypisierte Tabelle (zumindest als Exporting-Parameter) zurückzugeben. Dann hat man allerdings mehr Aufwand, weil Du dann dynamisch programmieren musst (ausserdem ist das fehleranfälliger).

Bei Funktionsbausteinen hast Du im übrigen dasselbe 'Problem'. Wenn Du dort Tabellen übergeben willst, muss entweder die Struktur angelegt sein und über TABLES übergeben werden oder alternativ ein Tabellentyp angelegt werden, der dann im Rahmen IMPORTING, EXPORTING oder CHANGING übergeben wird, d.h. im Rahmen von Methoden ist es auch nicht 'nerviger' ;-) als wie bei Funktionsbausteinschnittstellen.

Gruß,
Steff
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Postby Quinn1225 » Tue Aug 12, 2003 5:38 pm

Natürlich kann man eine Tabelle als Ergebnis einer Methode zurückliefern. Man definiert sich einfach einen entsprechenden Tabellentyp (z.B. im DDIC).
Da Rückgabe-Parameter imm Value-Parameter sind, muss der Tabelle allerdings vollständig typisiert sein, wie bereits geschreiben wurde (alles andere würde auch keinen Sinn machen, weil ja zur Laufzeit eine entsprechende Variable angelegt werden muss, um das Ergebnis aufzunehmen. Mit generischen (also unvollständigen Typen) geht das natürlich nicht).
Möchte man eine Routine verwenden, um verschiedene Arten von Tabellen zu befüllen, so nimmt man einen Changing-Parameter. Dieser kann generisch typisiert werden (dies ist möglich, weil ja zur Laufzeit immer der konkrete Typ des Aktual-Parameters ermittelt werden kann und dieser dann zugrunde gelegt wird).
Quinn1225
..
..
 
Posts: 30
Joined: Thu Jan 02, 2003 4:16 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 13 guests