AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein SAP RFC: Case Insensitive bei RFC_READ_TABLE
Thema durchsuchen
Ansicht
Themen-Optionen

SAP RFC: Case Insensitive bei RFC_READ_TABLE

Ein Thema von s.h.a.r.k · begonnen am 17. Sep 2012 · letzter Beitrag vom 24. Sep 2012
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 17. Sep 2012, 14:40
Heyho,

hänge gerade an einem etwas blöden Thema, bei dem ich im Moment irgendwie nicht so wirklich weiter komme. Ich soll Daten aus SAP auslesen, was ich üebr die RFC-Funktion RFC_READ_TABLE bewerkstellige. Das ganze klappt eigentlich auch wunderbar, allerdings habe ich mir zum Test eine kleine Anwendung gebastelt und mir ist dabei (negativ) aufgefallen, dass die Abfragen eben leider case sensitive sind. Hätte es gerne so, dass diese (in den gewünschten Fällen) eben case insensitive sind.

Habe schon einige Varianten im WHERE-Clause probiert, welcher ja der OPTIONS-Tabelle mit übergeben wird. Dachte eigentlich, dass der WHERE-Clause direkt an die DB geleitet wird, aber scheinbar ist das nicht der Fall, wenn mann ich folgendes mache, dann erscheint die folgende Fehlermeldung:
Code:
Dim Condition As String = String.Format("MANDT = 140 AND LOWERCASE(BNAME) = '{0}'", Username.ToUpper())
' ODER
Dim Condition As String = String.Format("MANDT = 140 AND LOWER(BNAME) = '{0}'", Username.ToUpper())
Code:
RfcAbapRuntimeException: Ein dynamisch angegebener Spaltenname ist unbekannt.
Ideen? Vorschläge? Lösungen?

PS: Ich code das ganze über VB.Net und SAP NCo 3.0.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 08:11
Hat damit noch keiner was gemacht oder eine Idee?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 09:57
Ist es Absicht, dass Du links ~lower und recht vom Vergleich ~upper verwendest?

Ichhatte bis jetzt nur einmal das Vergnügen im Rahmen einer Schulung mit SAP zu arbeiten. Demzufolge gäbe 2 Wege, das zu realisieren:
1. Eine SAP eigene Funktion für die Caseumwandlung zu verwenden (kenne ich nicht)
2. Die Datenbankspezifische Variante zu nutzen.
Die drunterliegende DB kann man kennen oder raten, Oracle ist es offenbar nicht, bleibt z.B. DB2 oder was da sonst noch heutzutage drunter ist.
Variante 2 ist natürlich schäbig, aber das stört bei SAP scheinbar selten jemand.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 12:29
Der RAF_READ_TABLE Baustein erzeugt direkt ein ABAP-Select-Befehl und geht nicht direk auf die Datenbank. Und eine entsprechende ABAP-Funktion habe ich noch nicht gefunden, die mir das entsprechend umsetzen lassen würde... Nachdem ich im Web nichts dazu finde, ist es wohl so direkt nicht möglich...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 12:39
Die drunterliegende DB kann man kennen oder raten, Oracle ist es offenbar nicht, ...
Warum nicht?
Oracle kann man auch auf casesensitive umstellen/einstellen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 13:41
Der RAF_READ_TABLE Baustein erzeugt direkt ein ABAP-Select-Befehl und geht nicht direk auf die Datenbank.
Ja, schon klar. Am Ende landet das Stück SQL mit großer Wahrscheinlichkeit trotzdem auf der eigentlichen DB- die Nutzung einer nativen Funktion wäre also möglich.
Wie auch immer, außer der alten, grausligen Schulung, habe ich weiter keine Erfahrungen damit.
@p80286: Wenn es Oracle wäre und der Code unverdaut auf der DB ankommt, hätte ein Lower()- wie im Beispiel angegeben- funktionieren sollen.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 13:49
Ausgehend von obiger Fehlermeldung denke ich, dass da irgendwas geparst wird. Selbst, wenn ich das Lower nur um den Wert selbst positioniere und nicht um die Spalte schlägt die Abfrage dann fehl.

Trotzdem vielen Dank für die Mühe!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 14:14
Am Ende landet das Stück SQL mit großer Wahrscheinlichkeit trotzdem auf der eigentlichen DB- die Nutzung einer nativen Funktion wäre also möglich.
@p80286: Wenn es Oracle wäre und der Code unverdaut auf der DB ankommt, ...
Wenn hier nicht gegen Fehl- und unberechtigte Eingaben geprüft würde wäre einer SQL-Injection Tür und Tor geöffnet. Und ich glaube nicht das sich SAP hier so eine geöffnetes Scheunentor erlaubt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 20. Sep 2012, 14:28
Selbst, wenn ich das Lower nur um den Wert selbst positioniere und nicht um die Spalte schlägt die Abfrage dann fehl.
Das ist doch der spannende Punkt. Angenommen es wird nicht geparst, dann setzt diese where clause voraus, das LOWER() im Befehlsumfang des SQL Dialekts liegt.
Lower ist jedenfalls eine Oracle Funktion, die Du hier ja offenbar nutzen willst.

@Bernhard:
Da hast Du sicher nicht Unrecht. Meine "Kenntnisse" sind vage und veraltet (5Jahre?). Es wäre allerdings auch denkbar, ohne Parsen nur auf Basis der aktuellen Berechtigungen zu arbeiten. Also die so zu setzen, dass außer der View in der Fromclause nichts geht.

Ich kann mich jedenfalls noch gut an mein "Staunen" erinnern, als wir in dem Kurs "Bedingungen" gebaut haben. Es waren schlicht 'where clauses', die String für String untereinander geklascht wurden, Parametrierung hat keinen interessiert. Ja und Zitat Kursleiter: "als erste Bedingungen nennen wir mal 1=1, da sind wir auf der sicheren Seite".
Gruß, Jo
  Mit Zitat antworten Zitat
Thomas Horstmann

Registriert seit: 25. Apr 2007
86 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE

  Alt 24. Sep 2012, 11:50
Hallo,
das Problem mit "Case Insensitive" und RFC kommt bei mir auch vor. Und ich habe bei RFC_READ_TABLE z.B. in den "OPTIONS" keine Möglichkeit gefunden dies zu ändern. Das liegt wahrscheinlich daran, dass SAP außer bei beim Benutzer/Passwort auch nicht zwischen Groß- und Kleinschreibung unterscheidet (Selektionsbildschirm usw.). Die zugrundeliegende Datenbank und deren Funktionen spielt dabei keine Rolle, da sich diese per RFC nicht direkt ansprechen lässt. Deshalb prüfe ich beim Abholden der Daten (Schleife über "DATA") die Felder nochmal und werfe die Datensätze raus, die nicht passen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz