El objetivo de este blog es proporcionar una forma sencilla de configurar una conexión SFTP entre un sistema SAP y un servidor SFTP.
El principal problema al que nos enfrentamos al utilizar el estándar SAP se describe en la nota:
795131 - FAQ: SAPFTP no puede realizar comunicación segura por FTP
.
Este tema también ha sido abordado por muchos blogs. Aunque estos diversos blogs son buenos, lo propuesto aquí es una forma de hacerlo sin ninguna restricción. Los excelentes blogs:
https://blogs.sap.com/2013/10/03/write-file-on-sftp-server-from-sap/
ya describen la solución de este blog actual, solo que no proporciona una solución paso a paso.
Problema principal
Como se dijo, SAP no cubre SFTP utilizando SAPFTP. Según la nota 795131, la mejor solución es utilizar un software de terceros para hacerlo y luego llamar al software de terceros desde SAP (usando el comando de host SM49/69). Sin embargo, si el sistema SAP se está ejecutando en un sistema basado en Unix, todo está bien, porque la sintaxis ofrecida por Unix te permite ejecutar el comando SFTP en una línea (usando | eventualmente), pero si el sistema SAP se está ejecutando en un sistema basado en Windows NT, surgen problemas.
El comando SFTP nativo no se puede utilizar como OneLiner. El impacto de esto es que debes encontrar una forma de construir un script capaz de conectarse a SFTP y luego realizar acciones dentro de la aplicación nativa de SFTP.
Solución propuesta
Como se describe en los blogs citados anteriormente, una solución sería utilizar la aplicación Winscp de uso gratuito. Winscp te permite conectarte y realizar acciones en un SFTP remoto en una sola línea de comando.
Requisitos previos
-
Winscp debe estar instalado en el servidor,
Ejemplo paso a paso
-
-
Creación del comando del sistema (SM69)
Asumiendo que Winscp está instalado de forma "clásica", aquí está el comando que permitirá al sistema invocar a Winscp:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /command
SM69 para la creación del Comando del Sistema (Captura de pantalla desde mi propio sistema)
-
-
Construcción de un comando simple "Put"
Como se describe anteriormente, el objetivo es tener un OneLiner. Nos pide poner todos los argumentos al mismo tiempo y en el orden correcto. A continuación, un ejemplo de comando, lo detallaremos más adelante:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /command "open sftp://<user>:<password>@<host>:<remote_folder>" "put C:\Users\sapabap\testfile.txt testfile.txt" "exit"
La primera parte ya es conocida y será tenida en cuenta por nuestro SM69.
Después de eso, viene el "open":
"open sftp://<user>:<password>@<host>:<remote_folder>"
Habla por sí mismo, pero para que funcione: <user> debe ser un usuario con los derechos de acceso en el <host>, la contraseña se puede proporcionar aquí. Como la comunicación se realiza a través de SSH, la consideraremos segura.
La carpeta remota es la