Perl Language
Compil Perl cpan module sapnwrfc van broncode
Zoeken…
Invoering
Ik wil graag de vereisten beschrijven en de stappen voor het bouwen van de Perl CPAN-module sapnwrfc met de Strawberry Perl-omgeving onder Windows 7 x64. Het zou ook moeten werken voor alle latere Windows-versies zoals 8, 8.1 en 10.
Ik gebruik Strawberry Perl 5.24.1.1 64 bit, maar het zou ook moeten werken met oudere versies.
Het kostte me enige uren om te slagen met verschillende pogingen (32 vs. 64 bit installatie van Perl, SAP NW RFC SDK, MinGW vs. Microsoft C compiler). Dus ik hoop dat sommigen zullen profiteren van mijn bevindingen.
Opmerkingen
Installeer een huidig Strawberry Perl 64-bits pakket van http://strawberryperl.com . In mijn geval was het 5.24.1.1.
Download de huidige versie van de SAP NW RFC SDK x64-bit van https://launchpad.support.sap.com/#/softwarecenter
U kunt het vinden met de volgende trace: Ondersteuningspakketten en patches => Op categorie => Aanvullende componenten => SAP NW RFC SDK => SAP NW RFC SDK 7.20
In mijn geval was de huidige versie 7.20 PL42 x64.
Pak het gedownloade bestand uit met sapcar -xvf NWRFC_42-20004568.SAR
Ik heb de map hernoemd naar C:\nwrfcsdk_x64
Maak .def- en .a-bestanden voor de MinGW-compiler / linker met de volgende opdrachten in de map 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
In de map C: \ nwrfcsdk_x64 \ lib zouden de volgende bestanden moeten bestaan:
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
Start opdrachtprompt met cmd.exe
en start het programma cpan
.
Start de opdracht get sapnwrfc
om de Perl-module sapnwrfc van CPAN te downloaden.
Verlaat de cpan-omgeving met het exit
commando. Wijzig de map in C:\Strawberry\cpan\build\sapnwrfc-0.37-0
.
Bouw de Makefile (s) met de volgende opdracht. Pas de mapnamen aan volgens uw instellingen.
perl Makefile.PL --source=C:\nwrfcsdk_x64 --addlibs "C:\nwrfcsdk_x64\lib\sapnwrfc.a C:\nwrfcsdk_x64\lib\libsapucum.a"
Voer de opdrachten dmake
en dmake install
uit om de module te bouwen en te installeren.
Kopieer de bestanden van C:\nwrfcsdk_x64\lib
naar C:\Strawberry\perl\site\lib\auto\SAPNW\Connection
.
Eenvoudig voorbeeld om de RFC-verbinding te testen
Eenvoudig voorbeeld van 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;