Buscar..


Introducción

Me gustaría describir los requisitos previos y los pasos de cómo construir el módulo Perl CPAN sapnwrfc con el entorno de Strawberry Perl en Windows 7 x64. Debería funcionar también para todas las versiones posteriores de Windows como 8, 8.1 y 10.

Uso Strawberry Perl 5.24.1.1 de 64 bits, pero también debería funcionar con versiones anteriores.

Me tomó algo de tiempo para tener éxito con varios intentos (instalación de Perl, SAP NW RFC SDK de 32 vs. 64 bits, compilador de MinGW vs. Microsoft C). Así que espero que algunos se beneficien de mis hallazgos.

Observaciones

Instale un paquete actual de Strawberry Perl de 64 bits desde http://strawberryperl.com . En mi caso fue 5.24.1.1.

Descargue la versión actual de SAP NW RFC SDK x64 bit desde https://launchpad.support.sap.com/#/softwarecenter

Puede encontrarlo con la siguiente traza: Paquetes de soporte y parches => Por categoría => Componentes adicionales => SDK SAP NW RFC => SDK 7.20 SAP NW RFC

En mi caso la versión actual era 7.20 PL42 x64.

Extraiga el archivo descargado con sapcar -xvf NWRFC_42-20004568.SAR

C:\nwrfcsdk_x64 el nombre de la carpeta a C:\nwrfcsdk_x64

Cree archivos .def y .a para el compilador / enlazador MinGW con los siguientes comandos en el directorio 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

En el directorio de direcciones C: \ nwrfcsdk_x64 \ lib deben existir los siguientes archivos:

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       

Inicie el símbolo del sistema con cmd.exe e inicie el programa cpan .

Inicie el comando get sapnwrfc para descargar el módulo Perl sapnwrfc desde CPAN.

Salga del entorno cpan con el comando exit . Cambie el directorio a C:\Strawberry\cpan\build\sapnwrfc-0.37-0 .

Construye los Makefile (s) con el siguiente comando. Adapte los nombres de las carpetas de acuerdo a su configuración.

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

Ejecute los comandos dmake y dmake install para compilar e instalar el módulo.

Copie los archivos de C:\nwrfcsdk_x64\lib en C:\Strawberry\perl\site\lib\auto\SAPNW\Connection .

Ejemplo simple para probar la conexión RFC.

Ejemplo simple 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow