-------------------------------------
php+sap/r3 (parte i de iii)
php+sap/r3 (parte ii de iii)
php+sap/r3 (parte iii de iii)
-------------------------------------
Existe una manera de hacer una aplicación Web que acceda a SAP/R3 sin
tener que pagar un duro. Esto es utilizando PHP y un componente
llamado saprfc. Este componente es un módulo de PHP que es capaz de
hacer llamadas a funciones de SAP. Es decir, si eres programador de
ABAP en SAP, puedes crear funciones que devuelvan o reciban datos vía
RFC. Este módulo hace de enlace con tú aplicación web en PHP.
También es posible instalar saprfc sobre una plataforma PHP creada para Windows.
Básicamente necesitas dos cosas. Primero bajarte la última versión del
saprfc y luego unas librerías llamadas "Non-unicode SAP RFCSDK for
UNIX compilation" que sólo se puede bajar desde SAP. Sólo las puedes
bajar de http://service.sap.com si tienes cuenta de usuario. Si eres un cliente de SAP debería tener usuario para entrar.
Empezamos la instalación en un CentOS 5.
+ Bajamos "Non-unicode SAP RFCSDK 6.20 for UNIX" que será un archivo
comprimido con el nombre RFC_46-10001782.SAR. Los archivos SAR y CAR
son unos archivos especiales de SAP que están comprimidos al estilo de
un Zip.
Todo el soft que necesitemos se SAP esta en http://service.sap.com/swdc o "SAP software distribution center".
+ Ahora necesitamos el descompresor llamado SAPCAR (la última versión
es la 7 para Linux IA32) que también esta disponible dentro de
service.sap.com. Una vez copiado en tú servidor Linux tendrás que
darle propiedades de ejecución ya que se trata de un ejecutable.
+ Creamos la carpeta /usr/sap y copiamos estos dos archivos. Ahora
miramos lo que hay dentro del archivo .SAR y lo descomprimimos con la
utilidad SAPCAR.
# ./SAPCAR -tvsf RFC_46-10001782.SAR # ./SAPCAR -xvf RFC_46-10001782.SAR
El resultado serán unas librerías compiladas dentro de una carpeta llamada rfcsdk. SAP proporciona las librerías ya compiladas, así que no tenemos el código para ver que es lo que hacen. Básicamente son las API de las llamadas RCF para SAP.
+ Antes de continuar tenemos que tener instalado las herramientas de desarrollo de C como gcc, make, libtools., etc. También tenemos que tener instalado php-devel. Si no fuera el caso las instalamos con un "yum install php-devel".
+ Descargamos la última versión del saprfc desde sourceforge en una carpeta temporal. La última versión que hay ahora es la 1.4.1. Descomprimiremos, compilaremos e instalaremos el módulo resultante dentro del la carpeta de modulos dinámicos PHP.
El hacer un módulo dinámico PHP me evita tener que recompilar todo el PHP y me mantiene apartado este módulo de todo PHP.
# tar –xzvf saprfc-1.4.1.tar.gz # cd saprfc-1.4.1 # phpize # ./configure # make # make install
Esto nos creará un nuevo módulo para PHP dentro de /usr/lib/php/modules/php_saprfc.so.
Este módulo tenemos que añadirlo al archivo de configuración de PHP en /etc/php.ini. Añadiremos la siguiente linea:
extension=php_saprfc.so
Ahora reiniciamos apache con un "service httpd restart" y comprobamos queen el archivo de log de Apache (normalmente será /var/log/httpd/error_log) no se produce ningún error al arrancar el módulo.
Si durante el arranca vemos que en log nos dice que no se encuentra la librería "libstdc++-libc6.1-1.so.2" tendremos que instalarlas con el RPM "compat-libstdc++-296-2.96-141.i386.rpm".
Nota: Existe una versión 6.40 de RFCSDK pero sólo esta para 64 bits y no para 32 bits que es lo que hemos instalado aquí.
Más informacion:
+ Master the five remote function call (RFC) types in ABAP
+ RFC en SAP/R3
7 comentarios:
No sé donde conseguir Non-unicode SAP RFCSDK 6.20 for UNIX, no tengo cuenta de usuario.
Si tienes SAP en tú empresa deberías tener usuario SAP para buscar notas técnicas, papers o software.
Tambien le puedes decir a tú proveedor de de SAP que te mande este soft.
Hola:
Cuando arranco en servicio de apache aparece lo siguiente
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/saprfc.so' - librfccm.so: failed to map segment from shared object: Permission denied in Unknown on line 0
Alguna idea de que pueda ser
De verdad agradeceré cualquier ayuda.
Saludos
Enrique
Kike has resuelto el problema?
tengo el mismo problema que te dio
si lo has solucionado me podrias hechar una mano
te lo agradecere
Corregi el problema, tengo Red Hat Advanced, y dentro del php.ini le inserte
extension=saprfc.so
no como
extension=php_saprfc.so
esto debido que cuando se instala el modulo lo crea como saprfc.so. gracias saludos
For those who have the problem in CentOS with librfccm.so: failed to map segment from shared object
just run system-config-securitylevel-tui and disable SELinux.
Reboot the machine and that's it...
Hope that helps anyone, because this stopped me for a while
Thanks for the 'disable SELinux' tip.
It helped me a lot !
hacer un comentario en esta entrada