Einzelnen Beitrag anzeigen

Benutzerbild von Misek
Misek

Registriert seit: 19. Okt 2006
Ort: Bottrop
22 Beiträge
 
#40

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden

  Alt 20. Feb 2007, 11:21
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;
  Mit Zitat antworten Zitat