was ist l_func für ein Typ? Kann es sein, dass du die BAPIS mit
ActiveX ansteuerst?
Im Moment sieht es bei mir noch so aus:
Hier werden die Inputparameter gesetzt. Bitte nicht verwirren lassen... der name FExporting ist das, was an das SAP raus geht. trotzdem verwende ich den Namen "setRFCInputParam" als Funktionsaufruf.
Delphi-Quellcode:
procedure TSAPRFC.setRFCInputParam(paramName:
string; paramlength: integer; pparamValue: pointer;
paramType: integer);
// Setzt Eingabeparameter für den RFC
var
i: integer;
begin
i := 0;
while (i < SAPRFC_Maxparameters)
and (FExporting[i].
name <>
nil)
do inc(i);
if i = SAPRFC_Maxparameters
then raise exception.create('
Max params exeeded!');
FExporting[i].
name := pchar(paramName);
FExporting[i].nlen := length(paramName);
FExporting[i].atype := paramType;
FExporting[i].leng := paramlength;
FExporting[i].addr := pparamValue;
end;
Und nun wird das ganze abgeschickt mit folgendem Code...
Delphi-Quellcode:
function TSAPRFC.execute: string;
var
funcres: integer;
begin
result := '';
funcRes := connection.FRfcCallReceiveEx(connection.fconnHandle, pchar(fRfcName),
@FExporting, @FImporting, @FChanging, @FTables, @pException);
if funcres <> 0 then begin
result := pchar(pException);
// Wenn wir keinen Klartext-Fehler bekommen, geben wir den Fehlercode aus
if result = '' then result := 'Error ' + IntToStr(funcres);
end;
end;