2017-02-22 57 views
4

У меня нет опыта программирования ABAP, и я хотел бы узнать, можно ли вызвать стороннюю библиотеку с интерфейсом языка программирования C из приложения SAP.Является ли библиотека (с интерфейсом языка программирования C) вызываемой изнутри ABAP?

Чтобы быть более точным, целью является использование IBM CPLEX Optimizer (работающего на локальной машине) внутри приложения SAP. Оптимизатор - это библиотека и имеет API, адаптированный к C++, Java и .NET (C#, VB.NET). Я полагаю, что это DLL-файл.

Итак, можете ли вы сказать, можно ли вызывать функции DLL из приложения ABAP?

+0

Вы хотите, чтобы оптимизатор CPLEX работал на клиентской машине или сервере = – vwegert

ответ

7

Вы можете использовать внешние библиотеки DLL непосредственно в следующем порядке:

DATA: cmp_dll TYPE ole2_object. 
CREATE OBJECT cmp_dll 'COMPANY.STOCK_DLL'. 
CALL METHOD OF cmp_dll 'check_order' = order 
EXPORTING p_num = 'number' 
      p_date = 'date' 
      p_vendor = 'vendor'. 

До этого вы должны зарегистрировать вашу DLL в SOLE транзакции, он может быть зарегистрирован либо на клиенте или на сервере приложений (и, таким образом, доступным из любой клиент).

Лучшим вариантом может быть оболочка RFC, упомянутая Trixx.
Также можно запустить код C непосредственно на AS через SXPG_COMMAND_EXECUTE, но это выходит за рамки вашего вопроса.

+0

Хорошо, но похоже, что это решение требует, чтобы DLL экспортировала COM-интерфейс, не так ли? Это не сработает для какой-либо произвольной DLL, не так ли? – Lanzelot

4

Да, это возможно, но только с некоторым собственным развитием на внешней стороне. Например, вы можете обращаться и вызывать внешние программы из ABAP по протоколу RFC SAP. Внешней программе необходимо использовать некоторый SDK SAP Connector для получения такого удаленного вызова функции. Тогда ваша собственная программа может делать все, что вы хотите, конечно, также использовать некоторые другие программы или библиотеки.

SAP предлагает следующие RFC Connector SDKs для различных языков программирования и сред выполнения:

  • для Java: САП Java Connector (JCo)
  • для .NET: САП .NET Connector (NCO)
  • для C/C++: САП NetWeaver RFC SDK (NW RFC SDK)

Пожалуйста, смотрите http://service.sap.com/connectors для получения дополнительной информации.