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: 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. |
||||||||||||||||
Tipps & Tricks |
|
||||||||||||||||
Komponente | GuiXT +
InputAssistant Fall dll: nur GuiXT nötig |