Selektionstabelle als Parameter an Form Routine übergeben

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Selektionstabelle als Parameter an Form Routine übergeben

Beitrag von ronin (ForumUser / 2 / 0 / 0 ) »
Hallo,

ich suche einen Weg, eine Selektionstabelle als Parameter an eine Form Routine zu übergeben, bin aber leider bisher daran kläglich gescheitert.
Das Ganze sieht ungefähr so aus:

Code: Alles auswählen.

...
DATA: g_role TYPE agr_name.
...
SELECT-OPTIONS so_i_r FOR g_role.
...
PERFORM get_users_by_role
  USING so_i_r.
...
FORM get_users_by_role
  USING c_so_r TYPE RANGE OF agr_name.
...
ENDFORM.
...
In der ABAP Onlinehilfe wird erklärt, wie man mit RANGE OF interne Tabellen vom gleichen Typ wie Selektionstabellen anlegen kann. So bin ich auf das "USING c_so_r TYPE RANGE OF agr_name" gekommen.

Der Syntaxcheck quittiert das aber mit folgender Fehlermeldung
Program XYZ
Different number of parameters in FORM and PERFORM (routine:
GET_USERS_BY_ROLE, number of formal parameters: 3, number of actual
parameters: 1).
Die mich leider vollends verwirrt. Ich habe doch in beiden Fällen die gleiche Anzahl an Parametern. Nämlich genau einen.

Hat jemand einen Tipp parat, was ich hier falsch mache, bzw. wie es richtiger aussehen sollte.

Herzlichen Dank.
Ronin

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Selektionstabelle als Parameter an Form Routine übergeben

Beitrag von ST22 (Specialist / 274 / 40 / 40 ) »
Hallo, so sollte es klappen, beachte bitte die eckigen Klammern beim Perform.
Mit Select-Options definierst du eine interne Tabelle mit Kopfzeile, mit TYPE RANGE OF definierst du eine int. Tabelle ohne Kopfzeile. Genau diesen Unterschied meckert der Syntaxcheck aber an...

Code: Alles auswählen.

...
DATA: g_role TYPE agr_name.
...
SELECT-OPTIONS so_i_r FOR g_role.
...
PERFORM get_users_by_role
  USING so_i_r[].
...
FORM get_users_by_role
  USING c_so_r TYPE RANGE OF agr_name.
...
ENDFORM.
...

Gruß

Frank

Beitrag von ronin (ForumUser / 2 / 0 / 0 ) »
Hallo Frank,

Vielen Dank für die Antwort.
Leider klappt es selbst mit nachgestellter eckiger Klammer nicht. Gleiche Fehlermeldung. Laut ABAP Doku soll durch die eckige Klammt ja eigentlich bei einer Tabelle mit Kopfzeile nur der Tabelleninhalt betrachtet werden. Die Form Routine weiß davon aber wohl nichts und meint eine Struktur anstatt einer Tabelle übergeben zu bekommen.

Ein Kollege hat mich jetzt auf folgenden Workaround gebracht, der auch funktionert.
- Selbst einen Tabellentyp anlegen mit Zeilenstruktur
.INCLUDE RSDSSELOPT
SIGN TVARV_SIGN
OPTION TVARV_OPTI
LOW RSDSSELOP_
HIGH RSDSSELOP_
- Einen interne Tabelle dieses Typs anlegen und den Inhalt der Selektionstabelle hineinloopen.
- Dann diese interne Tabelle anstelle der Selektionstabelle übergeben.

Von hinten durch die Brust ins Auge, aber Hauptsache es funktioniert. :)

Gruß,
Ronin

Beitrag von ST22 (Specialist / 274 / 40 / 40 ) »
Hallo,

Sonntag abends sollte man nicht posten sondern auf der Couch liegen ;-)

so geht es definitiv....

Code: Alles auswählen.

DATA: g_role TYPE agr_name.

SELECT-OPTIONS so_i_r FOR g_role.

PERFORM get_users_by_role USING so_i_r[].

*&---------------------------------------------------------------------*
*&      Form  get_users_by_role
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->SO_I_R     text
*----------------------------------------------------------------------*
FORM get_users_by_role USING so_i_r LIKE so_i_r[].
  BREAK-POINT.
ENDFORM.                    "get_users_by_role

Seite 1 von 1

Vergleichbare Themen

5
Antw.
5247
Views
Selektionstabelle an Unterprogramm übergeben
von kbit100 » 30.03.2010 09:54 • Verfasst in ABAP® für Anfänger
2
Antw.
1516
Views
Änderung per Form Routine
von thr74 » 23.07.2011 00:48 • Verfasst in ABAP® für Anfänger
6
Antw.
3363
Views
form-Routine und interne Tabellen
von HR-SAPLER » 06.07.2004 11:09 • Verfasst in ABAP® Core
5
Antw.
7895
Views
Form-routine dynamisch aufrufen
von Pyro » 20.08.2010 09:20 • Verfasst in ABAP® für Anfänger
4
Antw.
3787
Views
dynamische Maßnahme in externe Form-Routine
von donny » 06.04.2006 17:38 • Verfasst in Human Resources

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.