Поиск…


Вступление

Я хотел бы описать предварительные условия и шаги по созданию модуля sapnwrfc CPAN Perl с средой Strawberry Perl под Windows 7 x64. Он должен работать и для всех последующих версий Windows, таких как 8, 8.1 и 10.

Я использую Strawberry Perl 5.24.1.1 64 бит, но он также должен работать со старыми версиями.

Мне потребовалось несколько часов, чтобы преуспеть с несколькими попытками (32-битная установка 64-разрядной версии Perl, SAP NW RFC SDK, MinGW и компилятор Microsoft C). Поэтому я надеюсь, что некоторые из моих результатов получат пользу.

замечания

Установите текущий пакет с 64-битным пакетом Strawberry Perl с сайта http://strawberryperl.com . В моем случае это было 5.24.1.1.

Загрузите текущую версию пакета SAP NW RFC SDK x64 с https://launchpad.support.sap.com/#/softwarecenter

Вы можете найти его со следующей трассировкой: Пакеты поддержки и патчи => По категориям => Дополнительные компоненты => SAP NW RFC SDK => SAP NW RFC SDK 7.20

В моем случае текущая версия была 7.20 PL42 x64.

Извлеките загруженный файл с помощью sapcar -xvf NWRFC_42-20004568.SAR

Я переименовал папку в C:\nwrfcsdk_x64

Создайте файлы .def и .a для компилятора / компоновщика MinGW со следующими командами в каталоге C: \ nwrfcsdk_x64:

gendef *.dll
dlltool --dllname icuin34.dll --def icuin34.def --output-lib icuin34.a
dlltool --dllname icudt34.dll --def icudt34.def --output-lib icudt34.a
dlltool --dllname icuuc34.dll --def icuuc34.def --output-lib icuuc34.a
dlltool --dllname libsapucum.dll --def libsapucum.def --output-lib libsapucum.a
dlltool --dllname libicudecnumber.dll --def libicudecnumber.def --output-lib libicudecnumber.a
dlltool --dllname sapnwrfc.dll --def sapnwrfc.def --output-lib sapnwrfc.a

В dircectory C: \ nwrfcsdk_x64 \ lib должны существовать следующие файлы:

icudt34.a          
icudt34.def        
icudt34.dll        
icuin34.a          
icuin34.def        
icuin34.dll        
icuuc34.a          
icuuc34.def        
icuuc34.dll        
libicudecnumber.a  
libicudecnumber.def
libicudecnumber.dll
libsapucum.a       
libsapucum.def     
libsapucum.dll     
libsapucum.lib     
sapdecfICUlib.lib  
sapnwrfc.a         
sapnwrfc.def       
sapnwrfc.dll       
sapnwrfc.lib       

Запустите командную строку с cmd.exe и запустите программу cpan .

Запустите команду get sapnwrfc чтобы загрузить модуль perl sapnwrfc из CPAN.

Оставьте среду cpan командой exit . Измените каталог на C:\Strawberry\cpan\build\sapnwrfc-0.37-0 .

Создайте Makefile (ы) с помощью следующей команды. Адаптируйте имена папок в соответствии с настройками.

perl Makefile.PL --source=C:\nwrfcsdk_x64 --addlibs "C:\nwrfcsdk_x64\lib\sapnwrfc.a C:\nwrfcsdk_x64\lib\libsapucum.a"

Запустите команды dmake и dmake install для сборки и установки модуля.

Скопируйте файлы из C:\nwrfcsdk_x64\lib в C:\Strawberry\perl\site\lib\auto\SAPNW\Connection .

Простой пример для проверки соединения RFC

Простой пример из http://search.cpan.org/dist/sapnwrfc/sapnwrfc-cookbook.pod

use strict;
use warnings;
use utf8;
use sapnwrfc;

SAPNW::Rfc->load_config('sap.yml');
my $conn = SAPNW::Rfc->rfc_connect;

my $rd = $conn->function_lookup("RPY_PROGRAM_READ");
my $rc = $rd->create_function_call;
$rc->PROGRAM_NAME("SAPLGRFC");

eval {
$rc->invoke;
};
if ($@) {
    die "RFC Error: $@\n";
}

print "Program name: ".$rc->PROG_INF->{'PROGNAME'}."\n";
my $cnt_lines_with_text = scalar grep(/LGRFCUXX/, map { $_->{LINE} } @{$rc->SOURCE_EXTENDED});
$conn->disconnect;


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow