Introducción
El uso de FTP desde ABAP parece haber sido un tema candente en los Foros de ABAP últimamente. Pensé que podría sentarme y documentar todo lo que pudiera encontrar sobre este tema y compartirlo como un blog.
A lo largo de los años, he visto muchas soluciones diferentes para mover archivos dentro y fuera de un sistema SAP. He visto scripts de FTP externos escritos en lenguajes de shell de sistemas operativos. He visto aplicaciones personalizadas completas hechas para interactuar con el sistema SAP. Sin embargo, creo que encontrarás que la mayoría de la tecnología que necesitas para realizar un simple FTP desde ABAP ya está contenida en el sistema estándar. Todos mis ejemplos y capturas de pantalla vendrán de un sistema 46C.
Solución de SAP
Si alguna vez has echado un vistazo al directorio del kernel de tu sistema SAP, es posible que hayas notado un pequeño ejecutable interesante: sapftp.exe (el nombre del archivo en los Kernels de Windows SAP). Es esta parte del Kernel la que expone la funcionalidad de FTP al lenguaje de programación ABAP.
Así que tienes la sospecha de que hay funcionalidad de FTP en ABAP, pero no estás seguro de cómo usarla. ¿Por dónde empiezas? Siempre recurro primero al Marketplace de Servicios. Una búsqueda rápida en SAPFTP revela que hay un componente completo (BC-SRV-COM-FTP) sobre el tema. La nota más general y nuestro punto de partida es la Nota OSS 93042. Esta nota comienza con una buena descripción de lo que es SAPFTP: una aplicación RFC cliente a la que se accede vía RFC desde ABAP. Pero también descubrimos que además de que SAPFTP forma parte del kernel, también forma parte del SAPGui. Esto significa que podemos realizar comandos de FTP que se originan desde nuestro servidor R/3 o desde una estación de trabajo cliente.
Bueno, si esta solución se accede vía RFC, entonces debemos configurar algunos destinos RFC. De hecho, tenemos dos que necesitamos; SAPFTP para FTP de Front-end y SAPFTPA para el acceso en el servidor de aplicaciones. Afortunadamente, ni siquiera tenemos que molestar en configurar estos destinos RFC en SM59. SAP ha proporcionado un programa, RSFTP005, para generar los destinos por nosotros.
Antes de empezar a escribir código por nuestra cuenta para utilizar estas funciones de FTP, ¿por qué no asegurarnos de que todo esté configurado y funcionando? Una vez más, SAP nos ha ayudado proporcionándonos un programa de prueba, RSFTP002. (En caso de que te lo estés preguntando, la funcionalidad de FTP y muchos otros programas de prueba están todos contenidos en la Clase de Desarrollo de SAP SFTP). Cuando ejecutamos esta prueba, obtenemos un conjunto de parámetros de entrada para el servidor, nombre de usuario, contraseña, etc. Queremos empezar de forma simple y simplemente asegurarnos de que estamos obteniendo una conexión. Por lo tanto, solo ejecutaremos el comando pwd (Imprimir Directorio de Trabajo).
Tu respuesta debería verse algo así:
Si deseas ver una lista de comandos de FTP, intenta usar el comando HELP en lugar de PWD:
Si algo salió mal durante la prueba, te sugiero activar la opción de traza en SM59 para el Destino de FTP. Luego puedes usar el programa RSFTP001 para mostrar el archivo de traza actual.
Programando el FTP
El programa RSFTP002 no solo nos proporciona un entorno de prueba, sino que también nos brinda un ejemplo de programación. Podemos ver que la funcionalidad de FTP se proporciona realmente mediante un conjunto de módulos de función todos dentro del Grupo de Funciones SFTP. Tenemos los comandos básicos como FTP_CONNECT, FTP_COMMAND y FTP_DISCONNECT que se pueden unir para crear una acción de operación de archivo completa. La Función FTP_COMMAND te permite emitir comandos de FTP arbitrarios siempre que la función SAPFTP, el Host y el servidor de destino admitan el comando. Luego tienes las funciones especializadas como FTP_R3_TO_SERVER, FTP_R3_TO_CLIENT y FTP_CLIENT_TO_R3. Esto te permite tomar algunos datos en memoria y transferirlos a otro lugar. Esto tiene la ventaja de no tener que escribir los datos en el sistema de archivos primero y no tener que emitir comandos de FTP. Sin embargo, estas funciones también están limitadas al alcance descrito.
Si ya estás familiarizado con FTP en general, trabajar con estos módulos de función no debería parecer demasiado difícil. Las acciones de Conexión, Comando y Desconexión parecerían algo autoexplicativas. Así que en lugar de analizar el programa completo en detalle, centrémonos en dos cosas que
Quitar espacios en una consulta SQL
Quitar espacios en una consulta SQL
Cuando trabajamos con consultas SQL, a menudo nos encontramos con la necesidad de limpiar o mani...
Transacciones MIGO y MIRO en SAP MM
Transacciones MIGO y MIRO en SAP MM
1. ¿Qué es la transacción MIGO?
La transacción MIGO (Entrada de Mercancías) se utiliza para registrar las mercancías que...
HOLA EXPERTOS,
¿QUÉ ESQUEMA DE CÁLCULO ME SIRVE PARA CALCULAR EL IVA EN BOLIVIA?
EL PORCENTAJE DE IVA EN BOLIVIA ES EL 13%.
LA FACTURA QUE TENGO COMO EJEMPLO ES LA...
Pasos para abrir y cerrar período - MM FI CO
Muchos de nosotros luchamos con los cambios de períodos en nuestros entornos DEV y QA, aquí tienes una referencia rápida para abrir y...