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;


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow