hi Christoph
Zitat von
pertzschc:
Zitat von
kalmi01:
Bei einer aktuellen Aufgabenstellung, ergab sich mir die Frage:
wie transferiere ich TABELLEN gleichzeitig hin/zurück ?
Du initialisierst alle benötigten Tabellen vor dem Aufruf.
Dann bestückst Du die "Import"-Tabellen mit den notwendigen Werten und machst Deinen
RFC-Aufruf.
Anschließend nimmst Du Dir die "Export"-Tabellen und liest wenn Werte vorhanden diese aus.
Vielen Dank für den Tip.
Soweit, so gut.
Bei der Gelegenheit dachte ich mir, machste doch gleich ne Klasse draus.
Um die Strukturen dynamisch halten zu können, hab ich mir Array's als Container angelegt, welche
die Initialisierungparameter in Records beinhalten.
Meine Überlegung ging dahin, die für den
RFC-Call benötigten Strukturen erst kurz vor dem
Call zu realisieren, um bei der Parameteranzahl flexibel zu bleiben.
Delphi-Quellcode:
function TSAP.CallRFC(Name : string) : boolean;
var
tmpImport,
tmpExport,
tmpChange : array [0..10] of TRfcParam; // array of TRfcParam;
tmpTables : array [0..10] of TRfcTable; // array of TRfcTable;
tmpTableRow : TTableRow;
TableNames : string;
pException,
iTab : pointer;
FuncRes : integer;
i, j : integer;
begin
// SetLength(tmpImport, Length(FImport) + 1);
for i := 0 to Length(FImport) - 1
do begin
tmpImport[i].name := PChar(FImport[i].Name);
tmpImport[i].nlen := Length(FImport[i].Name);
tmpImport[i].atype := FImport[i].Typ;
tmpImport[i].leng := Length(FImport[i].Wert);
tmpImport[i].addr := PChar(FImport[i].Wert);
end;
tmpImport[Length(FImport)].name := nil;
Seltsamer weise funktioniert obiges.
Delphi-Quellcode:
tmpChange : array of TRfcParam;
tmpTables : array of TRfcTable;
lege ich die Array's dynamisch an und setze die Länge mit
SetLength(tmpImport, Length(FImport) + 1);
kommt nur Mist bei rum.