die RfcInstallStructure2 ist die aktuellere Variante. Einige Sachen in der älteren
Dll werden von SAP bald nicht mehr supportet.
Das liegt daran, dass es nur ein Beispiel Code dazu war. Wahrscheinlich gibt es diese Tabelle in deinem SAP System gar nicht. Lass dir direkt nach dem Failure eine
Exception anzeigen lassen.
Zum anderen Problem:
das Anhängen von Daten als Importparameter ist ein wenig einfacher. Du brauchst einfach nur eine Funktionen aus der
DLL Laden (CallReceiveEx)... im code ganz unten.
Nicht verwirren lassen bei "SetRFCInputParam"... dort wird nur ein Array gefüllt, welches beim Execute hochgeladen wird.
Ich hoffe ich konnte helfen! Ich weiss wie mühselig der kram ist!
Delphi-Quellcode:
procedure EingabeEintragen();
var
sIEingabe1 : I_EINGABE1;
sIEingabe2 : I_EINGABE2;
errorinfo :
begin
sIEingabe1 := '
Test';
sIEingabe2 := '
Test Eingabe 2';
SetRFCInputParam( '
I_EINGABE1', sizeof(sIEingabe1), @sIEingabe1,0);
SetRFCInputParam( '
I_EINGABE2', sizeof(sIEingabe2), @sIEingabe2,0);
if RFC.Execute <> rcRFC_OK
then
begin
errorinfo :=
rfc.LastErrorInfo;
end;
end;
procedure SetRFCInputParam(ParamName:
string; Paramlength: integer; pParamValue: pointer;
ParamType: integer);
var
iIdx: integer;
begin
iIdx := 0;
while (iIdx < SAPRFC_Maxparameters)
and (FExporting[iIdx].
name <>
nil)
do
inc(iIdx);
if iIdx = SAPRFC_Maxparameters
then
begin
raise exception.create('
Max params exeeded!');
Exit;
end;
FExporting[iIdx].
Name := PChar(ParamName);
FExporting[iIdx].NLen := Length(ParamName);
FExporting[iIdx].AType := ParamType;
FExporting[iIdx].Leng := Paramlength;
FExporting[iIdx].Addr := pParamValue;
end;
function TSAPRFC.Execute(): TRFC_RC;
begin
result := Connection.FRfcCallReceiveEx(Connection.ConnectionHandle, PChar(FRFCName),
@FExporting, @FImporting, @FChanging,
@FTables, @pException);
end;