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;


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow