BAPI Selektion aus Ranges Tabellen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

BAPI Selektion aus Ranges Tabellen

Beitrag von Besi (ForumUser / 30 / 0 / 0 ) »
Hallo,
ich lege ein GetList BAPI an. In dem Funktionsbaustein habe ich 18 Übergabe-Tabellen definiert. Diese Tabellen sind mit Ranges definiert ( Sign, Option, High and Low ).
Wie kann ich in diesem Fall am Besten überprüfen
, welche Range Tabellen der User befüllt hat und demnach Daten aus Datenbanktabellen selektieren?

Hat Jemand eine Idee für mich?

Danke!

Grüsse
Besi

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


Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Definiere die Range-Tabellen als "CHANGING"-Parameter und prüfe ab ob der User sie an die Schnittstelle übergeben hat. ("... IF REQUESTED ")
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
black_adept hat geschrieben:Definiere die Range-Tabellen als "CHANGING"-Parameter und prüfe ab ob der User sie an die Schnittstelle übergeben hat. ("... IF REQUESTED ")
so weit ich mich erinnere, sind CHANGING-Parameter für BAPI's tabu... :roll:

Aber es gibt ab ca. 6.10 IF SUPPLIED..., eventuell auch schon zu 4.6C, was mich aber wundern würde...
Gruß
Ereglam


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

Beitrag von CrashOverride (ForumUser / 10 / 0 / 0 ) »
Wenn die tebellen vorher inizial sind:

if not rangetab[] is initial.

MfG Crash Override

(Das verwende ich immer wenn ich mit Ranges rumspiele)

Re: BAPI Selektion aus Ranges Tabellen

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Besi hat geschrieben:Hallo,
ich lege ein GetList BAPI an. In dem Funktionsbaustein habe ich 18 Übergabe-Tabellen definiert. Diese Tabellen sind mit Ranges definiert ( Sign, Option, High and Low ).
Wie kann ich in diesem Fall am Besten überprüfen
, welche Range Tabellen der User befüllt hat und demnach Daten aus Datenbanktabellen selektieren?

Hat Jemand eine Idee für mich?

Danke!

Grüsse
Besi
Halt, Platz, Sitz!!!

Ranges-Tabellen, die keinen Inhalt haben werden bei der Bedingung mit Operator IN als 'ohne Einschränkung' gewertet.

Man braucht die Tabellen nicht auf Inhalt zu prüfen.

Code: Alles auswählen.

DATA:
  r_matnr TYPE RANGE OF matnr.
* R_MATNR ist leer !!!
SELECT * FROM mara
         WHERE matnr IN r_matnr.
...
ENDSELECT. "nur des Beispiels willens mit ENDSELECT

SELECT * FROM mara.
...
ENDSELECT. "nur des Beispiels willens mit ENDSELECT
Diese beiden SELECT's holen bei die gesamte MARA...

Beitrag von CrashOverride (ForumUser / 10 / 0 / 0 ) »
Wenn man alles selektieren will wenn eine Rangestabelle leer ist stimme ich Dir zu, nur ist es meistens bei mir so gewesen dass dann auch nichts selektiert werden sollte, und in dem Fall kommt man mit meiner if-Anweisung um den Select weiter.

MfG Crash Override

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
CrashOverride hat geschrieben:Wenn man alles selektieren will wenn eine Rangestabelle leer ist stimme ich Dir zu, nur ist es meistens bei mir so gewesen dass dann auch nichts selektiert werden sollte, und in dem Fall kommt man mit meiner if-Anweisung um den Select weiter.

MfG Crash Override
das entspricht aber nicht ganz der SAP-Philosophie...

Für einen solchen Anwendungsfall hast Du recht.
Gruß
Ereglam


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

Hallo

Beitrag von Besi (ForumUser / 30 / 0 / 0 ) »
Hallo,

Vielen Dank für die Antworten.
Wenn ich aber aus mehreren tabellen je nach User-Eingabe selektieren soll, Wie mache ich das?
Ausserdem sollen für die Ranges ohne Eingabe nichts selektiert werden.

Grüsse
Besi

Beitrag von Thomas R. (Expert / 755 / 78 / 34 ) »
Hallo Besi,

als ich einmal einen Fall hatte, wo ein leerer Range auch "nichts selektieren" bedeutete habe ich in den Range eine nie zutreffende Bedingung eingeführt, um nicht mit dynamischen Selects oder verschiedenen selects arbeiten zu müssen. Ob diese unschöne Vorgehensweise sinnvoll ist hängt vom konkreten Einsatz ab.

MfG
Thomas R.

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Besi,

ich würde die Tabellen im BAPI ganz normal als Tabellenparameter definieren. Du kannst dann zu 4.6 wie folgt abfragen:

if t_ranges01 is requested.
select * from table01
where feld in t_ranges01.
endif.
if t_ranges02 is requested.
select * from table02
where feld in t_ranges02.
endif.

Darüberhinaus kannst du auch abfragen, ob angegebene Tabellen leer sind.
if t_ranges01 is requested.
if not t_ranges01[] is initial.
select * from table01
where feld in t_ranges01.
endif.
endif.

In 4.7 geht anstatt "is requested" auch "is supplied", wie ereglam gesagt hat.

mfg dele


Seite 1 von 1

Vergleichbare Themen

41
Antw.
10805
Views
Selektion aus mehreren Tabellen
von Nadine_2706 » 23.09.2011 07:20 • Verfasst in ABAP® für Anfänger
0
Antw.
1156
Views
BAPI-Aufruf von Visual Basic und Verarb. von überg. Tabellen
von Ornella Santini » 25.08.2005 15:24 • Verfasst in ABAP® Core
1
Antw.
741
Views
Ranges
von dyv » 18.08.2014 16:32 • Verfasst in ABAP® für Anfänger
1
Antw.
1046
Views
Ranges dynamisch aufbauen
von Gast » 19.01.2006 11:48 • Verfasst in ABAP® Core
0
Antw.
3273
Views
RFC_READ_TABLE mit RANGES selection
von Tron » 12.11.2019 07:28 • Verfasst in Tips + Tricks & FAQs

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 4 Stunden von Bright4.5 3 / 1476
Regex in where
vor 6 Stunden von tar 6 / 143
Programm anlegen mit Vorlage
vor 21 Stunden von DeathAndPain 2 / 126
IT0024 Qualifikationen CP-ID
vor 21 Stunden von DeathAndPain 2 / 355

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

Daten an Tabelle binden
vor 4 Stunden von Bright4.5 3 / 1476
Regex in where
vor 6 Stunden von tar 6 / 143
Programm anlegen mit Vorlage
vor 21 Stunden von DeathAndPain 2 / 126
IT0024 Qualifikationen CP-ID
vor 21 Stunden von DeathAndPain 2 / 355

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 23 Stunden von snooga87 1 / 86
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821