Discussion:
ABAP Objects: Selektionstabelle an Methode einer Klasse übergeben
(zu alt für eine Antwort)
Alexander Billner
2007-06-27 15:40:47 UTC
Permalink
Hi,

ich versuche verzweifelt ;-), eine Selektionstabelle an eine Methode
meiner Klasse zu übergeben, doch dem Syntaxcheck passen die Typen
nicht. Ich habe alle Tabellentypen durch, Range geht auch nicht...
Weiß jemand Rat?

Das solls ungefähr sein:

Klassenmethode Definition: METHOD tu_was_mit_selektion IMPORTING
sel_tab TYPE ???

Implementierung:
METHOD tu_was_mit_selektion.

SELECT * FROM MARA WHERE MATNR IN sel_tab.

ENDMETHOD.


START-OF-SELECTION.

DATA: sel TYPE MARA-MATNR.
SELECT-OPTIONS seltab FOR sel.

MeineKlasse->tu_was_mit_selektion( seltab ).


Schöne Grüße,
Alex
Andreas Loch
2007-06-27 16:52:01 UTC
Permalink
2007-06-27, Alexander Billner:

[Selektionstabelle an Methode übergeben]
Post by Alexander Billner
Ich habe alle Tabellentypen durch, Range geht auch nicht...
Klar doch, der Range-Typ passt schon. Ich passe Dein Beispiel mal ein
wenig an.

Klassenmethode Definition:
METHOD tu_was_mit_selektion IMPORTING sel_tab TYPE range_t_matnr.

Implementierung:
METHOD tu_was_mit_selektion.
SELECT * FROM MARA WHERE MATNR IN sel_tab.
ENDMETHOD.


START-OF-SELECTION.

DATA: sel TYPE MARA-MATNR.
SELECT-OPTIONS seltab FOR sel.

MeineKlasse->tu_was_mit_selektion( seltab[] ).


Entscheidend beim Methodenaufruf ist, dass hinter dem Namen des
(Selektions-)Tabellenparameters seltab die eckigen Klammern angegeben
werden. Damit übergibst Du eine Tabelle *ohne* Kopfzeile, die dann auch
zum Ranges-Typ passt, obwohl per Anweisung SELECT-OPTIONS eine
Ranges-Tabelle mit Kopfzeile definiert wurde.

Andreas
--
40tude Dialog - http://40tude.com/dialog/
Newsoffice.de - http://newsoffice.de/
Alexander Billner
2007-06-28 15:03:05 UTC
Permalink
Am Wed, 27 Jun 2007 18:52:01 +0200 schrieb Andreas Loch:

Hallo Andreas,
Post by Andreas Loch
METHOD tu_was_mit_selektion IMPORTING sel_tab TYPE range_t_matnr.
Danke Dir, funktioniert mit diesem Typ.

Ich hatte in der Methode den Parameter mit TYPE RANGE OF definiert.
Das klappt leider in keinem Fall.

Bei der MATNR geht es auf Deinem Weg. Geht es allgemeiner und vor allem
programmlokal, damit ich nicht jedesmal einen Typen im Dictionary anlegen
muß? Wenn ich z.B. aus der QMEL die QMNUM lesen möchte?

Herzliche Grüße,
Alex

P.S. Danke für den Newsreaderlink in Deiner Sig. Damit hat mein Agent wohl
ausgedient ;-)
Andreas Loch
2007-06-29 05:31:59 UTC
Permalink
Post by Andreas Loch
METHOD tu_was_mit_selektion IMPORTING sel_tab TYPE range_t_matnr.
[...} Geht es allgemeiner und vor allem programmlokal, damit ich nicht
jedesmal einen Typen im Dictionary anlegen muß? Wenn ich z.B. aus der
QMEL die QMNUM lesen möchte?
Zum Beispiel so:

REPORT ztest.

DATA g_qmnum TYPE qmel-qmnum.
SELECT-OPTIONS s_qmnum FOR g_qmnum.

CLASS lcl_MeineKlasse DEFINITION.

PUBLIC SECTION.

* Typ sichtbar nur innerhalb der Klasse
TYPES lty_r_qmnum TYPE RANGE OF qmel-qmnum.

CLASS-METHODS tu_was_mit_selektion
IMPORTING imr_qmnum TYPE lty_r_qmnum.

ENDCLASS. " DEFININTION

CLASS lcl_MeineKlasse IMPLEMENTATION.

METHOD tu_was_mit_selektion.
ENDMETHOD.

ENDCLASS. " IMPLEMENTATION


START-OF-SELECTION.

lcl_MeineKlasse=>tu_was_mit_selektion( s_qmnum[] ).
P.S. Danke für den Newsreaderlink in Deiner Sig. Damit hat mein Agent
wohl ausgedient ;-)
Bei mir war es schon vor dem Versionssprung zum Agent 2.0 so weit. ;-)

Andreas
--
40tude Dialog - http://40tude.com/dialog/
Newsoffice.de - http://newsoffice.de/
Alexander Billner
2007-06-29 16:05:03 UTC
Permalink
Am Fri, 29 Jun 2007 07:31:59 +0200 schrieb Andreas Loch:

Hallo Andreas,

<snip>
vielen Dank, funktioniert jetzt perfekt!
Post by Andreas Loch
Post by Alexander Billner
P.S. Danke für den Newsreaderlink in Deiner Sig. Damit hat mein Agent
wohl ausgedient ;-)
Bei mir war es schon vor dem Versionssprung zum Agent 2.0 so weit. ;-)
Manche brauchen immer länger :-))

Grüße,
Alex

Loading...