cancel
Showing results for 
Search instead for 
Did you mean: 

Call RFC in Delphi

Former Member
0 Kudos

Hi,all

I am a SAP newbie .I have a strange question. My Delphi Development Environment is Delphi 7. SAP ECC 6 , Delphi Call RFC through COM.



procedure TFrm_SAP.Button3Click(Sender: TObject);
var
  myIFunction:IFunction;

  myIStructure_EDRAT:IStructure;
  myIStructure_ORDER:IStructure;

  myIParam_AUFNR  :IParameter;
  myIParam_AUTYP10:IParameter;
  myIParam_WERKS  :IParameter;

begin
  if not Logon_bool then
  begin
    Showmessage('Logon SAP/R3 Failure');
    Exit;
  end;

  SAPFunctions1.Connection:=Connection;

  myIFunction:=SAPFunctions1.Add('Z_XX_GET_PRODORDER_HEADER') AS IFunction;


  myIParam_AUFNR:=myIFunction.Exports_['I_AUFNR'] AS IParameter;
  myIParam_AUFNR.value:='000001002864';

  myIParam_AUTYP10:=myIFunction.Exports_['I_AUTYP10'] AS IParameter;
  myIParam_AUTYP10.Value:='X';

  myIParam_WERKS:=myIFunction.Exports_['I_WERKS'] AS IParameter;
  myIParam_WERKS.Value:='2010';


  myIStructure_EDRAT:=myIFunction.Exports_['IT_ERDAT'] AS IStructure;
  myIStructure_EDRAT.Value['SIGN']  :='I';
  myIStructure_EDRAT.Value['OPTION']:='BT';
  myIStructure_EDRAT.Value['LOW']   :='20090101';
  myIStructure_EDRAT.Value['HIGH']  :='20090330';


  if  not myIFunction.Call then
  begin
    ShowMessage(myIFunction.Exception);   
  end
  else
  begin
     myIStructure_ORDER:=myIFunction.Imports['ET_ORDER'] AS IStructure;
     ...
  end;
end;

************************************************************************

after execute myIFunction.Call method ,Show

I trace Log file , as following Show

T:764 Error in program '': ======> Data error (invalid data type 17) in a Remote Function Call

T:764 Error in program '': <* RfcReceive [1] : returns 3:RFC_SYS_EXCEPTION

T:764 Error in program '': <* RfcCallReceive [1] : returns 3:RFC_SYS_EXCEPTION

Could anybody have helped me to resolve this problem?

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi

Check RFC Import Parameters Data Type and Data Sent from your Delphi System is not matching , Some data type mismatch is going on.

Check Data Type of when Sent from Delphi == Import (Request) of RFC is equal

rgds

srini