Perl Language
Compiler le module cpan Perl sapnwrfc à partir du code source
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;