Recherche…


Introduction

J'aimerais décrire les conditions préalables et les étapes à suivre pour construire le module perl CPAN sapnwrfc avec l'environnement Strawberry Perl sous Windows 7 x64. Il devrait également fonctionner pour toutes les versions ultérieures de Windows telles que 8, 8.1 et 10.

J'utilise Strawberry Perl 5.24.1.1 64 bit mais il devrait aussi fonctionner avec les anciennes versions.

Il m'a fallu un peu de temps pour réussir avec plusieurs tentatives (installation de 32 vs 64 bits de Perl, SDK RFC SDK, compilateur MinGW vs Microsoft C). J'espère donc que certains bénéficieront de mes découvertes.

Remarques

Installez un package Strawberry Perl 64 bits à partir de http://strawberryperl.com . Dans mon cas, c'était 5.24.1.1.

Téléchargez la version actuelle du bit SDK RFC SDK x64 à partir de https://launchpad.support.sap.com/#/softwarecenter

Vous pouvez le trouver avec la trace suivante: Support Packages et Patches => Par catégorie => Composants supplémentaires => SDK RFC SAP NW => SDK RFC SDK 7.20

Dans mon cas, la version actuelle était 7.20 PL42 x64.

Extrayez le fichier téléchargé avec sapcar -xvf NWRFC_42-20004568.SAR

J'ai renommé le dossier en C:\nwrfcsdk_x64

Créez des fichiers .def et .a pour le compilateur / éditeur de liens MinGW avec les commandes suivantes dans le répertoire 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

Dans le répertoire C: \ nwrfcsdk_x64 \ lib, les fichiers suivants doivent exister:

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       

Démarrez l'invite de commande avec cmd.exe et démarrez le programme cpan .

Lancez la commande get sapnwrfc pour télécharger le module Perl sapnwrfc depuis CPAN.

Laissez l'environnement cpan avec la commande exit . Changez de répertoire en C:\Strawberry\cpan\build\sapnwrfc-0.37-0 .

Construisez le ou les fichiers Make avec la commande suivante. Adaptez les noms de dossier en fonction de votre configuration.

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

Exécutez les commandes dmake et dmake install pour créer et installer le module.

Copiez les fichiers de C:\nwrfcsdk_x64\lib vers C:\Strawberry\perl\site\lib\auto\SAPNW\Connection .

Exemple simple pour tester la connexion RFC

Exemple simple à partir de 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow