Autor Tema: Generar ficheros en fondo sobre ruta windows  (Leído 8920 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado trullols

  • Novato
  • *
  • Mensajes: 1
    • Ver Perfil
Generar ficheros en fondo sobre ruta windows
« en: 15 de Septiembre de 2010, 09:48:46 am »
Hola!

Tengo entendido que desde un proceso en fondo en mi servidor AIX no puedo generar un fichero en una ruta de un servidor windows de mi red. ¿Es correcto?

En ese caso, los he generado sobre una ruta AIX y luego supongo que desde mi programa tendré que ejecutar algún comando desde SAP que haga un FTP y lo pase a la ruta de mi servidor windows. Pero no tengo claro si se pueden usar comandos, qué comando usar, o cómo hacerlo. ¿Alguien podría darme alguna pincelada de como montarlo?

Muchas gracias y un cordial saludo,
César.

Desconectado Enrique.Borroni

  • Moderador_
  • Usuario Completo
  • *****
  • Mensajes: 89
    • Ver Perfil
Re: Generar ficheros en fondo sobre ruta windows
« Respuesta #1 en: 23 de Septiembre de 2010, 04:55:52 pm »
César,

  Hola...Aqui te dejo un codigo fuente para realizar FTP.

  Espero que esto te ayude...



REPORT  Y_EBF_PRUEBAS_FTP.

*----------------------------------------------------------------------*
* DECLARACION GLOBAL DE DATOS
*----------------------------------------------------------------------*
DATA: BEGIN OF tbi_ftp_result OCCURS 0,
        line(100) TYPE c,
      END OF tbi_ftp_result.
*
DATA : w_nomb_arch            LIKE rlgrap-filename.
DATA : w_nomb_sali            TYPE string.
*
*
*----------------------------------------------------------------------*
* SELECTION-SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE txt001.

*----------> Usuario FTP
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(45) txt020 FOR FIELD p_user.
PARAMETERS: p_user(30) TYPE c LOWER CASE    DEFAULT 'UserName'.
SELECTION-SCREEN END OF LINE.
*
*----------> Password Usuario FTP
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(45) txt022 FOR FIELD p_pwd.
PARAMETERS: p_pwd(30)  TYPE c LOWER CASE    DEFAULT 'PassWord'.
SELECTION-SCREEN END OF LINE.
*
*----------> Direccion IP del Servidor FTP
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(45) txt024 FOR FIELD p_host.
PARAMETERS: p_host(64) TYPE c LOWER CASE    DEFAULT '192.XXX.XXX.XX'.
SELECTION-SCREEN END OF LINE.
*
*----------> Directorio de Destino Servidor FTP
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(45) txt026 FOR FIELD p_cmd1.
PARAMETERS: p_cmd1(80) TYPE c LOWER CASE    DEFAULT '/DATA'.
SELECTION-SCREEN END OF LINE.
*
*----------> Destino RFC para Servicio FTP de SAP
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(45) txt028 FOR FIELD p_dest.
PARAMETERS: p_dest     LIKE rfcdes-rfcdest  DEFAULT 'SAPFTPA'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN: END OF BLOCK b01.


*----------------------------------------------------------------------*
* LLAMA RUTINA FTP
*----------------------------------------------------------------------*
PERFORM envia_ftp USING w_nomb_arch w_nomb_sali.



*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
*
  txt001 = 'TEST DE FTP - SERVER SAP A OTRO'.
*
  txt020 = 'Usuario FTP'.
  txt022 = 'Password FTP'.
  txt024 = 'IP Servidor FTP'.
  txt026 = 'Directorio Destino FTP'.
  txt028 = 'Destino lógico RFC'.


*----------------------------------------------------------------------*
* FORM : ENVIA_FTP
*----------------------------------------------------------------------*
FORM envia_ftp  USING    p_w_nomb_arch
                         p_nom_sali.
*
  DATA : user(30)   TYPE c,
         pwd(30)    TYPE c,
         host(64)   TYPE c,
         cmd0(256)  TYPE c,
         cmd1(256)  TYPE c,
         cmd2(256)  TYPE c,
         cmd3(256)  TYPE c,
         dest       LIKE rfcdes-rfcdest,
         compress   TYPE c VALUE 'N'.
*
  DATA: hdl         TYPE i,
        key         TYPE i  VALUE 26101957,
        slen        TYPE i.
*

  DATA : w_status(1) TYPE c.

  DATA: BEGIN OF result OCCURS 0,
          line(100) TYPE c,
        END OF result.
  DATA : w_result LIKE result.
*
  w_status = 'F'.


  user  = p_user.
  pwd   = p_pwd.
  host  = p_host.
  dest  = p_dest.
*
  CONCATENATE '/'
              p_cmd1
                      INTO cmd0.
*
  CONCATENATE 'cd'
              cmd0
                      INTO cmd1 SEPARATED BY space.
  CONCATENATE 'put'
              p_w_nomb_arch
              p_nom_sali
                      INTO cmd2 SEPARATED BY space.

*
  SET EXTENDED CHECK OFF.
  slen = STRLEN( pwd ).
*
  CALL FUNCTION 'HTTP_SCRAMBLE'
    EXPORTING
      SOURCE      = pwd
      sourcelen   = slen
      key         = key
    IMPORTING
      destination = pwd.
*
  CALL FUNCTION 'FTP_CONNECT'
    EXPORTING
      user            = user
      password        = pwd
      host            = host
      rfc_destination = dest
    IMPORTING
      handle          = hdl
    EXCEPTIONS
      not_connected   = 1
      OTHERS          = 2.
*
  IF ( sy-subrc EQ 0 ).
*
    CALL FUNCTION 'FTP_COMMAND'
      EXPORTING
        handle        = hdl
        command       = cmd1
        compress      = compress
      TABLES
        data          = result
      EXCEPTIONS
        command_error = 1
        tcpip_error   = 2.

    IF ( sy-subrc EQ 0 ).

      CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          handle        = hdl
          command       = cmd2
        TABLES
          data          = tbi_ftp_result
        EXCEPTIONS
          command_error = 1
          tcpip_error   = 2.
*
      IF ( sy-subrc EQ 0 ).
        w_status = 'T' .
      ENDIF.
    ENDIF.
*
    CALL FUNCTION 'FTP_DISCONNECT'
      EXPORTING
        handle = hdl.
*
    CALL FUNCTION 'RFC_CONNECTION_CLOSE'
      EXPORTING
        destination = dest
      EXCEPTIONS
        OTHERS      = 1.
*
  ENDIF.
*------>>>  SI SE REALIZA LA TRANSFERENCIA FTP - SE ELIMINA EL ARCHIVO DESDE EL SERVIDOR
  IF ( w_status EQ 'T' ).
    DELETE DATASET p_w_nomb_arch.
  ENDIF.
*
ENDFORM.                                                               "
Saludos.

Atte.,
Enrique Borroni

maito : enrique.borroni@abap.es