![]() |
SAP RFC: Case Insensitive bei RFC_READ_TABLE
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:
Ideen? Vorschläge? Lösungen?
RfcAbapRuntimeException: Ein dynamisch angegebener Spaltenname ist unbekannt.
PS: Ich code das ganze über VB.Net und SAP NCo 3.0. |
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
Hat damit noch keiner was gemacht oder eine Idee?
|
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
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. |
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
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...
|
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
Zitat:
Oracle kann man auch auf casesensitive umstellen/einstellen. Gruß K-H |
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
Zitat:
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. |
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
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! |
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
Zitat:
|
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
Zitat:
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". |
AW: SAP RFC: Case Insensitive bei RFC_READ_TABLE
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz