1

I am trying to convert a SAP ETL process (implemented by BODS) to SQL Server (SSIS).

The process is for delta changes (every 15 minutes) and the object is called “0FI_AP_4” in SAP. I want to implement an SSIS package (SQL Server stored procedure) doing the same thing.

The person who implemented this package in BODS is gone and I have no knowledge of SAP ABAP or BODS.

I can see that the Data Source Name for this package is “BWFID_GET_FIAP_ITEM” which is a function module.

I need to know which SAP tables are being populated by this package or by function module “BWFID_GET_FIAP_ITEM”.

How can I find out the process implemented by this package?

Or how can I find out the source tables and target tables of this function module?

Can I call this function module using openquery or opensql in SQL Server, and access the results from a SAP table?

Sandra Rossi
  • 11,934
  • 5
  • 22
  • 48
  • 2 solutions: ask an expert of the FI-CO module, or analyze the algorithm of the function module. Huge work. But why do you want to rewrite it? – Sandra Rossi Oct 27 '18 at 06:36
  • I need to replace BODS ETL tool with SSIS ETL. In one of the BODS packages “0FI_AP_4” data source is used (which in return it calls BWFID_GET_FIAP_ITEM function module). – user3707761 Oct 29 '18 at 00:13
  • Shouldn't you continue calling 0FI_AP_4 from SSIS ? There are RFC SDKs for all operating systems, so you might be able to create a program to call 0FI_AP_4 remotely. – Sandra Rossi Oct 29 '18 at 06:54
  • @SandraRossi, can you please give more information on this? As I have mentioned I am new to SAP/ABAP. I'd appreciate if you could explain it more. Thanks – user3707761 Nov 01 '18 at 22:21

1 Answers1

0

Assuming your retired colleague specified RFC FM as a source of BODS job

enter image description here

you need to do two things

  1. Analyze what is done in the FM, what is put as input and what is returned. For this use SE37 tcode in SAP, it is is quite easy and self-explanatory
  2. Analyze what is done in BODS job itself, how data returned from RFC is mapped to resulting SQL Server table(s) and whether any transformations are conducted

The task of moving all FM logic to SQL procedure can be huge depending on the implementation of FM, so to minimize your effort you can implement in SQL only BODS mappings/code and all remaining FM logic just call directly. Here is the sample of VBScript code you can use

Function Connect_RFC ()
  dim retcd

  Set funcControl = CreateObject ("SAP.Functions")
  set objconnection=funcControl.connection

  objconnection.ApplicationServer = "sap.bods.server.com"   
  objconnection.System="B06"    
  objconnection.Client="403"    
  objconnection.User="boqas"        
  objconnection.Password="x3x33"
  objconnection.Language"'PT"
  objconnection.tracelevel=6
  objconnection.SystemNumber="01"

  retcd = objconnection.Logon(0, True)    ' Calling logon method

  if retcd = False Then
    msgbox "retcd = FALSE"
  end if

  set tab_handle = funcControl.Add( "BWFID_GET_FIAP_ITEM" )
  tab_handle.call
  set TDATA = tab_handle.tables ("T_INPUT")   ' input table parameter for FM

  if retcd = True then
    Connect_RFC = True
  else
    Connect_RFC = False
  end if
End Function

Also look at the SAP BW Source component of Microsoft Connector for SAP BW, it supposedly has the ability to call RFC modules from SSIS Designer. This simple guide digging into SAP BODS architecture will also help you to find the solution.

Suncatcher
  • 10,355
  • 10
  • 52
  • 90