1

我正在尝试将 SAP ETL 流程(由 BODS 实现)转换为 SQL Server(SSIS)。

该过程用于增量更改(每 15 分钟),该对象在 SAP 中称为“0FI_AP_4”。我想实现一个 SSIS 包(SQL Server 存储过程)做同样的事情。

在 BODS 中实现这个包的人已经走了,我对 SAP ABAP 或 BODS 一无所知。

我可以看到这个包的数据源名称是“BWFID_GET_FIAP_ITEM”,它是一个功能模块。

我需要知道这个包或功能模块“BWFID_GET_FIAP_ITEM”正在填充哪些 SAP 表。

我怎样才能找到这个包实现的过程?

或者如何找到这个功能模块的源表和目标表?

我可以在 SQL Server 中使用 openquery 或 opensql 调用此功能模块,并从 SAP 表中访问结果吗?

4

1 回答 1

0

假设您的退休同事指定 RFC FM 作为 BODS 工作的来源

在此处输入图像描述

你需要做两件事

  1. 分析在 FM 中做了什么,输入了什么,返回了什么。对于在 SAP 中使用 SE37 tcode,它非常简单且不言自明
  2. 分析 BODS 作业本身完成了什么,从 RFC 返回的数据如何映射到生成的 SQL Server 表以及是否进行了任何转换

将所有 FM 逻辑移动到 SQL 过程的任务可能很大,具体取决于 FM 的实现,因此为了最大限度地减少您的工作量,您可以在仅 SQL 的 BODS 映射/代码中实现,而所有剩余的 FM 逻辑只需直接调用。这是您可以使用的 VBScript 代码示例

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

另请查看 Microsoft Connector for SAP BW 的SAP BW Source组件,据说它能够从 SSIS Designer 调用 RFC 模块。 这个深入研究 SAP BODS 架构的简单指南也将帮助您找到解决方案。

于 2019-06-01T11:44:40.257 回答