In einer Methode auf Rangetabelle zugreifen

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

In einer Methode auf Rangetabelle zugreifen

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Hallo zusammen,

Ich verzweifle gerade etwas.
Ich habe ein Select-Option im Rahmenprogramm, die Daten die ich da eingebe benötige ich in meiner Methode. Nun weiß ich das die Daten die ich benötige in der Range-Tabelle vom Import Parameter liegen ABER wie bekomme ich diese ausgelesen bzw wie kann ich diese einzeln nutzen?
Zum Beispiel ip_infotyp[1]-low benötige ich um lv_infotyp zusammen bauen zu können

Code: Alles auswählen.

CLASS mar_test DEFINITION.

  PUBLIC SECTION.
    TYPES: rt_info TYPE RANGE OF infty.
    TYPES: rt_subty TYPE RANGE OF pa0001-subty..
    "   Defining a method with a returning parameter
    METHODS get_infotyp
      IMPORTING ip_infotyp         TYPE rt_info
                VALUE(ip_stichtag) TYPE dats
                ip_subtyp          TYPE rt_subty
      RETURNING VALUE(r_data)      TYPE REF TO data.


ENDCLASS.                    "mar_test DEFINITION

*----------------------------------------------------------------------*
*       CLASS mar_test IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS mar_test IMPLEMENTATION.

  METHOD get_infotyp.
    DATA: lv_info TYPE string.
    FIELD-SYMBOLS: <returning> TYPE any.

*    DO x TIMES. 

      CONCATENATE: 'PA' '0006' INTO lv_info. "Zusammenbauen eines Infotypes (ip_infotyp[1]-low möchte ich verwenden können)

      "   Erstellung einer Reference zur Variable r_data
      CREATE DATA r_data TYPE (lv_info).

      "   Referenz zum Feldsymbol zugewiesen
      ASSIGN r_data->* TO <returning> CASTING TYPE (lv_info).

      "   <variable> wird befüllt -> Returning parameter
      SELECT SINGLE * FROM (lv_info) INTO <returning> WHERE begda <= ip_stichtag AND endda >= ip_stichtag AND subty IN ip_subtyp. 

*    ENDDO.

  ENDMETHOD.                    "get_infotyp

ENDCLASS.                    "mar_test IMPLEMENTATION
Ein großes Dankeschön schon mal im vorraus.

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


Re: In einer Methode auf Rangetabelle zugreifen

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
NLengner hat geschrieben:
25.04.2019 13:16

Zum Beispiel ip_infotyp[1]-low benötige ich um lv_infotyp zusammen bauen zu können
schau mal in die übergebene Range-Tabelle ( via Debugger ) rein. Dann weißt du in der Regel wie man drauf zugreift.

Du hast dort nämlich verschiedene Zeilen, z. b.
sign = 'I' option 'EQ' low = '0006'
sign = 'I' option 'EQ' low = '0008'
sign = 'I' option 'BT' low = '0030' high = '0034'

über diese zeilen kannst du drüber loopen:

Code: Alles auswählen.

loop at s_infty into data(infty_struc). 
data(infty) = infty_struc-low.
endloop. 
sowas wäre theoretisch möglich... du kannst auch direkt über s_infty loopen ohne eine eigene struktur zu erstellen, da range-tabellen ( soweit ich weiß immer(?) ) Tabellen mit Kopfzeile sind... oder zumindest sind select-options Tabellen mit kopfzeilen..

in deinem Fall wäre das dann also:

Code: Alles auswählen.

data(nfty_db_itable) = 'PA' && infty_struc-low. 

Folgende Benutzer bedankten sich beim Autor SaskuAc für den Beitrag:
NLengner


Re: In einer Methode auf Rangetabelle zugreifen

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
Hallo,

bin mir nicht sicher ob das hilft

https://www.tricktresor.de/blog/ausgabe ... lektionen/

Gruß Wolfgang

Re: In einer Methode auf Rangetabelle zugreifen

Beitrag von NLengner (ForumUser / 31 / 7 / 2 ) »
Dankeschön!
Jetzt kann ich es beenden was ich angefangen habe. :D

Re: In einer Methode auf Rangetabelle zugreifen

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Saskuac hat geschrieben:du kannst auch direkt über s_infty loopen ohne eine eigene struktur zu erstellen, da range-tabellen ( soweit ich weiß immer(?) ) Tabellen mit Kopfzeile sind...
Wenn sie per RANGES oder SELECT-OPTIONS definiert sind ja. Aber wenn sie per TYPE RANGE OF definiert sind nicht (es sei denn, Du schreibst explizit WITH HEADER LINE dazu).

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
SaskuAc


Re: In einer Methode auf Rangetabelle zugreifen

Beitrag von Somani (ForumUser / 81 / 12 / 20 ) »
Sieh dir mal den Funktionsbaustein 'RH_DYNAMIC_WHERE_BUILD' an. Eventuell kann der dir ja helfen.
Damit könntest du z.B. deine Range Tabelle(n) umschreiben und auch eigene Bedingungen einfügen und danach einen dynamischen wehre absetzen.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4273
Views
In Superklasse auf Methode der Unterklasse zugreifen?
von Gast » 20.10.2005 12:23 • Verfasst in ABAP Objects®
2
Antw.
2857
Views
Auf eine Protected - Methode zugreifen
von Walter_2 » 04.10.2004 10:23 • Verfasst in ABAP Objects®
2
Antw.
1992
Views
Mit SAP auf VBS zugreifen?
von sabouka » 16.09.2004 17:37 • Verfasst in ABAP Objects®
0
Antw.
3049
Views
Von Java auf SAP zugreifen
von Challana » 27.07.2007 09:40 • Verfasst in Java & SAP®
2
Antw.
5591
Views
Von Servlet auf SAP zugreifen
von Challana » 27.07.2007 09:48 • Verfasst in Java & SAP®

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140