Funktion |
Mit der
Call
-Anweisung
können Sie aus einem GuiXT Script oder einem InputScript heraus eine Funktion
aufrufen. Es kann sich entweder um einen in ABAP implementierten
Funktionsbaustein handeln, der über die SAP-RFC-Schnittstelle aufgerufen
wird, oder eine lokal (am Frontend) als dll-Funktion z.B. in VC++
implementierte Funktion.
Zu beachten: Die Call -Anweisung über RFC setzt die Komponente "InputAssistant" voraus. Weitere Funktionen (wie automatische Formatkonvertierung, Bündelung von Aufrufen) bietet die "Open Call" Schnittstelle von GuiXT, siehe unten. |
|||||||||||||||||||||||||||
Beispiele |
Call "BAPI_USER_GET_DETAIL" in.USERNAME="MEYER " out.LOGONDATA="UserLogonData" Der Funktionsbaustein "BAPI_USER_GET_DETAIL" wird aufgerufen. Call "ImgName" dll="utilities.dll" in="&F[Material]" out="Datei" Die Funktion "ImgName" der dll-Datei "utilities.dll" wird lokal aufgerufen. |
|||||||||||||||||||||||||||
Format |
RFC Aufruf
Call "Funktionsname" in.Name1="value1" in.Name2="value1" ... out.Name1="vname1" out.Name2="vname2"... table.Name1="tab1" table.Name2="tab2" ... Zu beachten:
dll Aufruf
|
|||||||||||||||||||||||||||
Alternatives Format: OpenCall Schnittstelle |
Call
"Funktionsname"
export.Name1="vname1"
export.name2="vname2"
...
import.Name3="vname3"
import.Name3
"vname4"
....
Zu beachten:
Bei der Umstellung bestehender Call-Anweisungen auf die Open Call Schnittstelle bitte beachten:
|
|||||||||||||||||||||||||||
Format der OpenCall Schnittstelle für ABAP OO Remote Method Call |
Call
"classname.methodname"
object="objname"
export.name1="vname1"
export.name2="vname2"
...
import.Name3="vname3"
import.name4="vname4"
....
Ruft die Methode "methodname" des angegeben Objekts. Das Objekt muss
der Klasse "classname" angehören. Falls object= nicht angegeben ist,
wird eine statische Methode der KLasse aufgerufen. Beispiel: .......
// start a request bundle
// Create ALV object
// allow all standard functions
// Set Title
// Set popup position
// display popup
// run all calls |
|||||||||||||||||||||||||||
Zusatzoptionen |
|
|||||||||||||||||||||||||||
Weitere Zusatzoptionen
für den Fall der Open Call Schnittstelle |
|
|||||||||||||||||||||||||||
RFC Aufruf |
Parameterübergabe Call "funktionsname" in.Name1="value1" in.Name2="value2" ... out.Name1="vname1" out.Name2="vname2" ... table.Name1="tab1" table.Name2="tab2" Restriktionen
Handhabung von Tabellen
Beispiel 1:
Call
"BAPI_USER_GET_DETAIL"
in.USERNAME="&V[_user]"
out.LOGONDATA="UserLogonData"
Danach steht in der Variablen V[UserGroup] die Benutzergruppe zur Verfügung. Erläuterung (vergleichen Sie die Schnittstellendefinition in Transaktion SE37):
Beispiel 2: / / User parameter id to be changed, and new value: Set V[Paramid] "ND9" Set V[Paramva] "Printer2400" // Read user parameters // Clear output parameter table // "found" indicator // Loop through all user parameters Label next_parameterCopyText fromText="ipt" toString="p" line="&V[i]" if Q[ok]Set V[parid] "&V[p] (BAPIPARAM1-PARID) " if V[parid=&V[Paramid]] Set V[p] (BAPIPARAM1-PARVA) "&V[Paramva]" Set V[found] "X" endif // add parameter to new parameter table CopyText fromString="p" toText="opt" -appendLine // next line Set V[i] &V[i] + 1 goto next_parameter endif // parameter not found: add parameter line Set V[p] (BAPIPARAM1-PARID) "&V[Paramid]" Set V[p] (BAPIPARAM1-PARVA) "&V[Paramva]" CopyText fromString="p" toText="opt" -appendLine endif // Write back parameters |
|||||||||||||||||||||||||||
dll-Aufruf |
Die Funktion wird bei z.B. 2 IN und 3 OUT-Parametern vom Typ
__declspec(dllexport) int funcname(char* p1, char* p2, char* p3, char* p4, char* p5)
definiert. Alle Parameter (in= und out=)
werden in der angegebenen Reihenfolge übergeben. Die maximale Länge jedes
einzelnen Strings beträgt 4000 Zeichen. Bitte achten Sie darauf, in dem
Script genügend viele Parameter anzugeben, sonst greift die dll-Funktion
auf eine ungültige Adresse zu.
Beispiel 1: Call "alphanum" Fügt vorangestellte 0000... zu einem numerischen Feld hinzu. Parameter:
Aufruf: Call "alphanum" dll="guixtstring.dll" in="&[Material]" in="8" out="NumMaterial" Beispiele für Ergebnisse:
Beispiel 2: Call "StripQuotationMarks" Entfernt die Anführungszeichen von einem String. Typischerweise werden beim Generieren von ASCII Textdateien doppelte Anführungszeichen um die Zeichen gelegt. In SAP ERP sind diese Anführungszeichen unerwünscht. Parameter:
Beispiel: Call "StripQuotationMarks" dll="guixtstring.dll" in="&[QMaterial]" out="SMaterial"
Kompilierte DLL und Visual Studio Beispielprojekt
Sie können die DLL sowie den Quellcode herunterladen und frei verwenden
oder auch erweitern. Bitte beachten Sie, dass Sie richtige Zielplattform
im Projekt auswählen je nach dem, ob Sie für die 32bit oder 64bit
Version von GuiXT bzw. dem SAP GUI erstellen möchten.
Download Visual Studio Projekt Download guixtstring.dll (32bit) Download guixtstring.dll (64bit) |
|||||||||||||||||||||||||||
Tipps & Tricks |
|
|||||||||||||||||||||||||||
Komponente |
GuiXT +
InputAssistant Fall dll: nur GuiXT nötig |