Perl Language
Skompiluj moduł cpan Perl sapnwrfc z kodu źródłowego
Szukaj…
Wprowadzenie
Chciałbym opisać wymagania wstępne i kroki, jak zbudować moduł Perl CPAN sapnwrfc w środowisku Strawberry Perl pod Windows 7 x64. Powinien działać również dla wszystkich późniejszych wersji systemu Windows, takich jak 8, 8.1 i 10.
Używam Strawberry Perl 5.24.1.1 64-bit, ale powinien również działać ze starszymi wersjami.
Kilka prób zajęło mi kilka godzin (32-bitowa i 64-bitowa instalacja Perla, SAP NW RFC SDK, kompilator MinGW vs. Microsoft C). Mam więc nadzieję, że niektórzy skorzystają z moich odkryć.
Uwagi
Zainstaluj bieżący 64-bitowy pakiet Strawberry Perl ze strony http://strawberryperl.com . W moim przypadku było to 5.24.1.1.
Pobierz bieżącą wersję pakietu SAP NW RFC SDK x64 z https://launchpad.support.sap.com/#/softwarecenter
Można go znaleźć za pomocą następującego śledzenia: Pakiety wsparcia i łatki => Według kategorii => Dodatkowe komponenty => SAP NW RFC SDK => SAP NW RFC SDK 7.20
W moim przypadku obecna wersja to 7.20 PL42 x64.
Wyodrębnij pobrany plik za pomocą sapcar -xvf NWRFC_42-20004568.SAR
C:\nwrfcsdk_x64
nazwę folderu na C:\nwrfcsdk_x64
Utwórz pliki .def i .a dla kompilatora / linkera MinGW za pomocą następujących poleceń w katalogu 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
W katalogu C: \ nwrfcsdk_x64 \ lib powinny istnieć następujące pliki:
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
Uruchom cmd.exe
polecenia za pomocą cmd.exe
i uruchom program cpan
.
Uruchom polecenie get sapnwrfc
aby pobrać moduł Perl sapnwrfc z CPAN.
Opuść środowisko cpan za pomocą komendy exit
. Zmień katalog na C:\Strawberry\cpan\build\sapnwrfc-0.37-0
.
Zbuduj pliki Makefile za pomocą następującego polecenia. Dostosuj nazwy folderów zgodnie z konfiguracją.
perl Makefile.PL --source=C:\nwrfcsdk_x64 --addlibs "C:\nwrfcsdk_x64\lib\sapnwrfc.a C:\nwrfcsdk_x64\lib\libsapucum.a"
Uruchom komendy dmake
i dmake install
aby skompilować i zainstalować moduł.
Skopiuj pliki z C:\nwrfcsdk_x64\lib
do C:\Strawberry\perl\site\lib\auto\SAPNW\Connection
.
Prosty przykład testowania połączenia RFC
Prosty przykład z 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;