iTAB an Methode übergeben

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

iTAB an Methode übergeben

Beitrag von Diesel83 (ForumUser / 7 / 3 / 0 ) »
Hallo,
ich bin gerade dabei etwas ABAP zu lernen, scheitere allerdings daran eine interne Tabelle
an eine (statische) Klassenmethode zu übergeben. Hab keine Idee wo der Fehler sein soll im
folgenden Sample:

Code: Alles auswählen.

class l_cl_test DEFINITION.
  PUBLIC SECTION.
    class-METHODS:
      do_something IMPORTING i_tab TYPE SPFLI.
ENDCLASS.

Data: l_tab TYPE TABLE OF SPFLI.
SELECT * FROM spfli into TABLE l_tab.
l_cl_test=>do_something( EXPORTING i_tab = l_tab ).
Es kommt folgender Fehler:
"L_TAB" ist nicht typkompatibel zum formalen Parameter "I_TAB".

Hab die Implementierung der Klassenmethode weggelassen, um
den Beitrag kurz zu halten. SPFLI ist eine DB-Tabelle für Flugpläne.

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


Re: iTAB an Methode übergeben

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
SPFLI ist im Sinne einer Datendeklaration nur eine Tabellenstruktur.

Code: Alles auswählen.

DATA l_wa_spfli TYPE spfli.  --> Workarea
DATA l_tab_spfli TYPE TABLE OF spfli. --> interne Tabelle
Da du nun in der Methode kein TYPE TABLE OF deklarieren kannst, sondern nur ein TYPE brauchst du einen Tabellentyp, der als Zeilentyp die SPFLI hat.
Sofern es im SAP keinen solchen Typ gibt (bin grad nicht eingelogged), musst du dir einen eigenen anlegen.

Folgende Benutzer bedankten sich beim Autor casman für den Beitrag:
Diesel83


Re: iTAB an Methode übergeben

Beitrag von Diesel83 (ForumUser / 7 / 3 / 0 ) »
Verstehe ich das richtig:
Nur weil man bei Methoden nicht TYPE TABLE OF deklarieren kann, muss man
immer einen eigenen Tabellentypen anlegen, wenn man iTabs an Methoden übergeben möchte?

Re: iTAB an Methode übergeben

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Type Table of, wollte er bei mir auch nicht, aber eigenen Datentyp anlegen ist ja in dem Fall nur eine Zeile...

Code: Alles auswählen.

TYPES lt_spfli_tab TYPE TABLE OF splfi.

CLASS l_cl_test DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:
      do_something IMPORTING i_tab TYPE lt_splfi_tab.
ENDCLASS.                   


CLASS l_cl_test IMPLEMENTATION.
  METHOD do_something.
    WRITE: sy-subrc.
  ENDMETHOD.                    
ENDCLASS.                    

DATA: itab_spfli TYPE lt_spfli_tab.

START-OF-SELECTION.

  DO 5 TIMES.
    SELECT single * FROM spfli APPENDING TABLE itab_spfli.
  ENDDO.

  l_cl_test=>do_something( EXPORTING i_tab = itab_spfli ).

Re: iTAB an Methode übergeben

Beitrag von Diesel83 (ForumUser / 7 / 3 / 0 ) »
Das es nur eine Zeile ist ist mir schon klar, auch das TYPE SPFLI nicht geht
weil es eine Workarea ist, ich aber eine iTab an die Methode übergebe.
Habe das Wort 'immer' bewusst fett markiert, falls es doch Alternativen gibt
eine iTab an eine Methode zu übergeben (ohne vorher einen eigenen Typen anzulegen).
Bin ABAP Noob, muss daher alles hinterfragen :-)

Re: iTAB an Methode übergeben

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Hi Diesel83,

kein Problem, jeder war mal Noob. :-)

Es gibt keine andere Möglichkeit, du brauchst einen Tabellentyp, wenn du eine ITAB an eine Methode übergeben willst. Entweder du deklarierst einen oder du musst im DDIC einen anlegen.

Re: iTAB an Methode übergeben

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
casman hat geschrieben:[...]
Es gibt keine andere Möglichkeit, du brauchst einen Tabellentyp, wenn du eine ITAB an eine Methode übergeben willst. Entweder du deklarierst einen oder du musst im DDIC einen anlegen.
Hallo ihr beiden,

dem obigen Posting muss ich energisch widersprechen. Man darf auch Tabellen an Methoden übergeben ohne vorher explizit einen Typ im Dictionary oder im Coding anzulegen. Aber dann muss der Parameter generisch typisiert werden.

Beispiel:

Code: Alles auswählen.

REPORT.
*----------------------------------------------------------------------*
*       CLASS my_class DEFINITION
*----------------------------------------------------------------------*
CLASS my_class DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: import_table IMPORTING it_table TYPE STANDARD TABLE.
ENDCLASS.                    "my_class DEFINITION

*----------------------------------------------------------------------*
*       CLASS my_class IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS my_class IMPLEMENTATION.
  METHOD import_table.
    FIELD-SYMBOLS: <line> TYPE ANY.

    LOOP AT it_table ASSIGNING <line>.
      WRITE:/ <line>.
    ENDLOOP.
  ENDMETHOD.                    "import_table
ENDCLASS.                    "my_class IMPLEMENTATION


DATA: t_t000 TYPE STANDARD TABLE OF t000.

START-OF-SELECTION.
  SELECT * INTO TABLE t_t000 FROM t000.

  my_class=>import_table( t_t000 ).

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Diesel83

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: iTAB an Methode übergeben

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Hi black_adept,

ok, mea culpa, da hast du natürlich Recht. :-)

Allerdings lebst du dann wieder mit dem Nachteil, dass du rumwurschteln musst, um auf Felder der Tabelle direkt per Namen zuzugreifen, oder?
Ist zwar generischer, aber IMHO halt auch umständlicher für den Standardfall.

Re: iTAB an Methode übergeben

Beitrag von Diesel83 (ForumUser / 7 / 3 / 0 ) »
@casman
sehe ich genauso. Zugriff auf spezielle Spalten der Tabelle sind dann kompliziert oder gar unmöglich!?
Trotzdem gut zu wissen, dass es diese Möglichkeit gibt.

Re: iTAB an Methode übergeben

Beitrag von black_adept (Top Expert / 4117 / 129 / 952 ) »
Hallo Diesel83 und casman,

ich habe öfters mal Tabellen, die ich dynamisch aufbaue. Häufig haben diese einen konstanten Anfangsteil und danach kommen dann mehrere gleichartige weitere Teile.
So etwas wie im Arbeitsplan verschiedenen Leistungsarten oder im FI die Aufschlüsselung auf die verschiedenen Buchungsperioden. Oder ganz banal Werte aus verschiedenen Org-Einheiten ( Buchungskreise, Werke, Verkaufsorgs, ... )

Wenn ich nun Methoden verwende, die auf diesen Tabellen arbeiten sollen, muss ich natürlich die o.a. Übergabemethode verwenden.
Wenn ich dann auf einzelne Spalten/Felder zugreifen möchte lässt sich das meist relativ einfach mit "move-corresponding" auf bekannte Strukturen lösen, da ich ja weiß wie der fixe Teil der Tabelle und die jeweiligen sich wiederholenden Strukturen lauten. Danach kann ich dann mit den nun typisierten Variablen weiterarbeiten wie gehabt ohne mich allzu sehr einschränken zu müssen oder den Code extrem kompliziert oder schwer lesbar zu machen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1823
Views
ITab von Class1 an Class2 übergeben
von der-hinterm-deich » 07.04.2010 11:06 • Verfasst in ABAP Objects®
10
Antw.
1110
Views
Tabellen aus Methode übergeben
von Nion » 11.09.2023 07:34 • Verfasst in ABAP® für Anfänger
15
Antw.
2528
Views
Select-Options an Methode übergeben
von Karl der Große » 31.01.2024 17:00 • Verfasst in ABAP® für Anfänger
3
Antw.
4356
Views
Weiß die Methode ob ein optionaler Parameter übergeben wurde
von OBOP » 05.04.2017 10:11 • Verfasst in ABAP Objects®
3
Antw.
615
Views

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Mahnung erstellen
vor 3 Stunden von wreichelt 2 / 23
Absprung VA02 Position
vor 5 Stunden von gs3rr4 gelöst 3 / 34
OPD Druck im SPOOL
vor 7 Stunden von Manfred K. 1 / 20

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.

Aktuelle Forenbeiträge

Mahnung erstellen
vor 3 Stunden von wreichelt 2 / 23
Absprung VA02 Position
vor 5 Stunden von gs3rr4 gelöst 3 / 34
OPD Druck im SPOOL
vor 7 Stunden von Manfred K. 1 / 20

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 7 Stunden von Manfred K. 1 / 20
Export von Spools in XLSX
vor 5 Tagen von abapamateur 1 / 404