Auslesen eines Exportparameters generischen Typs

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

Auslesen eines Exportparameters generischen Typs

Beitrag von BecomingAnAbapGuru (ForumUser / 83 / 31 / 3 ) »
Hallo zusammen!

Ich habe in einer Methode einen Exportparameter mit type any table definiert.

Nun möchte diese Variable auch in meinem Report auslesen. Ich weiß aber nicht wie ich im Report die interne Tabelle definieren soll, sodass kein Typkonflikt entsteht.


Wenn ein Instanz-Attribute nach Type ref to DATA typisiert und Public ist.
Wie kann ich von außen auf diese Variable zugreifen? mit objekt->attribut funktioniert es nicht

Danke

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


Re: Auslesen eines Exportparameters generischen Typs

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Etwa so

Code: Alles auswählen.

data itab type standard table of tholt with non-unique default key.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Auslesen eines Exportparameters generischen Typs

Beitrag von BecomingAnAbapGuru (ForumUser / 83 / 31 / 3 ) »
black_adept hat geschrieben:
22.05.2022 18:10
Etwa so

Code: Alles auswählen.

data itab type standard table of tholt with non-unique default key.
nein. tholt ist eine transparente Tabelle.
Ich kenne ja die Struktur der Tabelle nicht, wenn sie dynamisch ist und über einen Exportparameter in meinen Report importiert wird.

Re: Auslesen eines Exportparameters generischen Typs

Beitrag von Icke0801 (Specialist / 126 / 97 / 7 ) »
Suchst Du in etwa sowas?

Code: Alles auswählen.

lo_object=>get_table(  IMPORTING et_table = DATA( lt_table ) ).
--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

Re: Auslesen eines Exportparameters generischen Typs

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Bei dynamisch typisierten Export-Parameter, die verschiedene Datentypen annehmen können, musst du Datenreferenzen verwenden. D. h. von außen muss bekannt sein, welcher Datentyp dem Parameter zugrunde liegt. Die Inline-Anweisung lo_object=>get_table( IMPORTING et_table = DATA( lt_table ) ) funktioniert hier nicht, da der Datentyp nicht zur Compilezeit bekannt ist.
Hier ein Beispiel mit einer solchen Methode. Die Klasse habe ich dabei um eine zweite Methode erweitert, die als Hülle die passende Datenreferenz übergibt.

Code: Alles auswählen.

CLASS class_dyn_export_param DEFINITION.
  PUBLIC SECTION.

    " Select-from hat einen dynamisch typisierten Parameter
    CLASS-METHODS select_from
       IMPORTING
          table_name TYPE tabname
       EXPORTING
           content TYPE ANY TABLE.

    " Hülle für Methode select_from, die die passende Datenreferenz
    " übergibt
    CLASS-METHODS select_from_wrapper
       IMPORTING
          table_name TYPE tabname
       EXPORTING
           content TYPE REF TO DATA.

ENDCLASS.

CLASS class_dyn_export_param IMPLEMENTATION.

  METHOD select_from.
     SELECT * FROM (table_name) INTO TABLE content.
  ENDMETHOD.

  METHOD select_from_wrapper.
     FIELD-SYMBOLS: <content> TYPE ANY TABLE.

     " Erzeugen der Datenreferenz mit dem passenden Datentyp
     CREATE DATA content TYPE STANDARD TABLE OF (table_name).

     ASSIGN content->* TO <content>.
     select_from( EXPORTING table_name = table_name
       IMPORTING content = <content> ).

  ENDMETHOD.

ENDCLASS.
Aufgerufen wird später nur die Methode SELECT_FROM_WRAPPER. Die Datenreferenz wird dereferenziert und an ein Feldsymbol zugewiesen.

Code: Alles auswählen.

START-OF-SELECTION.
  FIELD-SYMBOLS: <content> TYPE ANY TABLE.

  class_dyn_export_param=>select_from_wrapper( EXPORTING table_name = 'SCARR'
    IMPORTING content = DATA(content) ).
  ASSIGN content->* TO <content>.
  cl_demo_output=>display( <content> ).

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag (Insgesamt 2):
Icke0801a-dead-trousers


Re: Auslesen eines Exportparameters generischen Typs

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Das macht doch alles keinen Sinn.
Wenn ein dyn. Exportparameter vom Typ "ANY TABLE" da ist, kann man doch jede beliebige Tabelle übergeben. Da kommt nie ein Problem wg. Typprüfung.
Oder meint der OP evtl. gar nicht "Ich weiß aber nicht wie ich im Report die interne Tabelle definieren soll, sodass kein Typkonflikt entsteht" sondern stattdessen "Ich weiß aber nicht wie ich innerhalb der Methode auf die interne Tabelle zugreifen soll"?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Auslesen eines Exportparameters generischen Typs

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Naja, das Problem ist genau umgekehrt zu sehen:
Bei einem dynamischen Exporting/Importing Parameter bestimmt der AUFRUFER den tatsächlichen Typ. Das heißt eigentlich muss die Methode den vom Report übergebenen Tabellentyp bestimmen und das Ergebnis entsprechend zurückliefern. Sonst gibt es in der Methodenverarbeitung selbst div. Exceptions, die man sich meist nicht sofort erklären kann, sobald man versucht auf ein Feld zuzugreifen, das in der Struktur des Aufrufers nicht vorkommt.
Nachdem nun aber die Methode das Ergebnis bestimmen können soll, ist meines Erachtens die Typisierung mit TYPE falsch. Richtig ist TYPE REF TO (DATA). Ich würde dann aber auch mit RETURNING arbeiten. Der Aufrufer ist somit (wie im OP gefordert) dafür verantwortlich den Typ korrekt zu bestimmen. Stichwörter RTTI, Casting, ASSIGN (COMPONENT) usw.
Die Methode selbst muss den Inhalt dann natürlich auch im HEAP (CREATE DATA ... TYPE ... ) und nicht im STACK (DATA ... TYPE ...) ablegen.
Alles schön umgesetzt in der Lösung jocoder.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1201
Views
Nachträgliches ändern des Infoprovider-Typs
von realtimeedv » 07.01.2009 14:57 • Verfasst in Sonstige Module
5
Antw.
2521
Views
Generischen Structurpfad auswerten?
von littlepeopleman78 » 27.08.2008 16:29 • Verfasst in ABAP® für Anfänger
1
Antw.
3598
Views
ArchiveLink mit den generischen Objektdiensten
von void » 13.08.2007 11:26 • Verfasst in ABAP® Core
0
Antw.
991
Views
Zugriff auf Anlagen von generischen Objektdiensten
von urk » 27.03.2005 23:04 • Verfasst in Basis
2
Antw.
3208
Views
Zeilentyp einer generischen Tabelle
von horn » 08.08.2008 20:35 • Verfasst in ABAP® für Anfänger

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.