Функциональный модуль SAP для хранимой процедуры SQL Server - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь преобразовать процесс SAP ETL (реализованный BODS) в SQL Server (SSIS).

Процесс предназначен для дельта-изменений (каждые 15 минут), и объект называется «0FI_AP_4» вSAP.Я хочу реализовать пакет служб SSIS (хранимая процедура SQL Server), выполнив ту же самую операцию.

Человек, который внедрил этот пакет в BODS, ушел, и я не знаю SAP ABAP или BODS.

Я вижу, что имя источника данных для этого пакета - «BWFID_GET_FIAP_ITEM», который является функциональным модулем.

Мне нужно знать, какие таблицы SAP заполняются этим пакетом или функциональным модулем «BWFID_GET_FIAP_ITEM».

Как узнать процесс, реализуемый этим пакетом?

Или как узнать исходные и целевые таблицы этого функционального модуля?

Можно ли вызвать этот функциональный модуль с помощью openquery или opensql в SQL Server и получить доступ к результатам из таблицы SAP?

1 Ответ

0 голосов
/ 01 июня 2019

Предполагая, что ваш отставной коллега указал FM RFC в качестве источника задания BODS

enter image description here

вам нужно сделать две вещи

  1. Проанализируйте, что делается в FM, что помещается в качестве ввода и что возвращается.Для этого используйте t37-код SE37 в SAP, это довольно просто и не требует пояснений
  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

Также посмотрите на SAP BW Source компонент Microsoft Connector для SAP BW, он предположительно имеет возможность вызывать RFC-модули изSSIS Designer. Это простое руководство копание в архитектуре SAP BODS также поможет вам найти решение.

...