Feldsymbol an Unterprogramm übergeben

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

Feldsymbol an Unterprogramm übergeben

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hi,
ich habe ein Field Symbol definiert und einer Variablen zugewiesen.
Nun möchte ich eine Subroutine aufrufen und mit dem Feldsymbol arbeiten

Code: Alles auswählen.

assign itab_S1_S3 to <fs_kum>.
assign ges_auft_bez to <fs>.
perform ausgabe_auftrag using <fs_kum> <fs>.

Code: Alles auswählen.

FORM ausgabe_auftrag  USING    <FS_KUM>
                               <FS>.
Ich erhalte nun die Meldung
Der Name eines Datenobjektes darf nicht mit '<' beginnen und mit '>' enden.
Die Meldung kommt bei der Definition der Subroutine, nicht beim Aufruf.

Wie kann ich das Feldsymbol übergeben?

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


Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
versuch einfach:
FORM ausgabe_auftrag USING fs_kum fs.
a s
s oon
a s
p ossible
h elp
http://www.clv.de/

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hi,

das habe ich jetzt mal gemacht:

Code: Alles auswählen.

FORM kumuliere_lief  USING    FS
                              FS_KUM.

data: wa_lief type lief_mengen,
      hlp_lief type lief_mengen.


sort <fs> by lief_wadat lief_art lief_meins.

loop at <fs> into wa_lief.
Nun erhalte ich weiter unten die Medlung:
<fs> ist keine interne Tabelle
Was jedoch nicht zutrifft. Ich habe diese zuvor per Assign zugewiesen:

Code: Alles auswählen.

ASSIGN itab_F2 to <fs>.
ASSIGN itab_f2_kum to <fs_kum>.

perform kumuliere_lief 
       using <fs> <fs_kum>.


Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
doppelter Post

Beitrag von JHM (Top Expert / 1188 / 1 / 195 ) »
Die FORM kennt den Type des Fieldsymbols nicht. Du mußt das Feldsymbole typisieren. Entweder statisch, wenn das FieldSymbole immer den gleichen Type hat nimm diesen, wenn es verschiedene Typen sein können schau dir mal die generischen Typen (ANY TABLE, SORTED TABLE, HASHED TABLE, etc. ) an.

So sollte der Syntaxcheck nicht mehr zu schlagen:

Code: Alles auswählen.

FORM kumuliere_lief  USING    FS TYPE ANY TABLE
                                                 FS_KUM TYPE ANY TABLE.

data: wa_lief type lief_mengen,
      hlp_lief type lief_mengen.


sort <fs> by lief_wadat lief_art lief_meins.

loop at <fs> into wa_lief.
Gruß Hendrik

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hi,

habe ich nun gemacht:

Code: Alles auswählen.

FORM kumuliere_lief  USING    fs type any table
                              FS_KUM type any table.

data: wa_lief type lief_mengen,
      hlp_lief type lief_mengen.


sort <fs> by lief_wadat lief_art lief_meins.

loop at <fs> into wa_lief.

Aber ich erhalte beim Sort immer noch
"<FS>" ist keine interne Tabelle.
kommentiere ich das aus, erhalte ich beim LOOP
"<FS>" ist weder unter "TABLES" angegeben noch als interne Tabelle definiert.

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Halt ich habs:

Es lag an der Definition des Field Symbols.
Ich habe es vom Typ ANY statt vom Typ ANY TABLE deklariert.

Jetzt gehts. Danke euch allen.

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
FORM kumuliere_lief USING fs type any table
FS_KUM type any table.

data: wa_lief type lief_mengen,
hlp_lief type lief_mengen.


sort <fs> by lief_wadat lief_art lief_meins.

loop at <fs> into wa_lief.
Ist aber imme rnoch ein Fehlerchen drin.

Wahrscheinlich tut das ganze weil du das Feldsymbol als global im Rahmenprogramm angelegt hast und die Form im selben Programm steht. So wie es bisher ist greift die Form jedenfalls nicht auf die Parameter der Schnittstelle "fs" zu sondern aufs globale Feldsymbol <fs>. Das sollte man noch umstellen da ansonsten der Einsatz von Parametern beim Aufruf umsonst ist.

Gruss,
Flo

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Stimmt, das ist richtig.
Womit wir wieder bei meiner ursprünglichen Frage wären, wie ich
das realisieren kann.
Wie sieht der Aufruf denn korrekt aus?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »

Code: Alles auswählen.

PERFORM kumuliere_lief
  USING 
    <fs>
    <fs_kum>.
...

FORM kumuliere_lief 
  USING 
    fs type any table
    FS_KUM type any table.

data: wa_lief type lief_mengen,
hlp_lief type lief_mengen.


sort fs by lief_wadat lief_art lief_meins.

loop at fs into wa_lief. 
...
innerhalb der Unterroutine sprichst Du die Daten, die über die Feldsymbole hereinbekommst, ganz normal über deren Parameternamen an.

Einzig beim Zugriff auf die Felder wirst Du ein Problem bekommen, denn durch die generischen Typisierungen sind keine Strukturinformationen in der Unterroutine vorhanden.
Daher entweder diskrete Typen mitgeben, oder innerhalb der Unterroutine wieder mit Feldsymbolen und dynamischen Befehlen arbeiten.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

5
Antw.
5235
Views
Selektionstabelle an Unterprogramm übergeben
von kbit100 » 30.03.2010 09:54 • Verfasst in ABAP® für Anfänger
5
Antw.
410
Views
Referenz-Variable ins Unterprogramm übergeben
von Oliver67 » 17.03.2022 13:54 • Verfasst in ABAP® für Anfänger
3
Antw.
1469
Views
Unterprogramm
von Gast » 20.09.2005 09:42 • Verfasst in ABAP® für Anfänger
2
Antw.
630
Views
Funktionsbaustein mit Unterprogramm
von tekko » 17.12.2019 13:24 • Verfasst in ABAP® für Anfänger
1
Antw.
2515
Views
Funktionsbaustein, Unterprogramm
von tech » 28.12.2007 10:25 • Verfasst in ABAP® für Anfänger

Ü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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141