Importar archivo XML desde servidor externo a SAP

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • julk32
    Junior Member
    • ago
    • 7

    #1

    Importar archivo XML desde servidor externo a SAP

    Cordial saludo,

    Quería pedirles el favor de ayudarme informándome como importar uno o varios archivos xml que están en un servidor Windows Server externo al de SAP que está en Unix.

    No tienen la herramienta PI por lo que se descarta esta opción.

    Cualquier información que me puedan compartir sería de gran ayuda.

    Hasta pronto!
  • sconoredhot
    Senior Member
    • feb
    • 341

    #2
    hola

    Yo usaria Idocs. Hay varios manuales dando vuelta.
    Sebas

    Desarrollador ABAP.

    Comentario

    • coloso
      Senior Member
      • feb
      • 110

      #3
      También tienes otra solución, compartir por NFS la carpeta de Windows con el servidor de aplicación de SAP y luego tú ya te lo lees desde un programa de SAP.

      Salu2.

      Comentario

      • julk32
        Junior Member
        • ago
        • 7

        #4
        Importar archivo XML desde servidor externo a SAP

        Se me olvidaba especificar que el servidor externo que contiene los archivos XML es SFTP

        Comentario

        • coloso
          Senior Member
          • feb
          • 110

          #5
          Hola compañero, entonces usa los comandos que tiene SAP para conexión por FTP...

          Busca por internet información sobre estas funciones:

          HTTP_SCRAMBLE
          FTP_CONNECT
          FTP_COMMAND
          FTP_DISCONNECT

          Salu2.

          Comentario

          • julk32
            Junior Member
            • ago
            • 7

            #6
            Importar archivo XML dse servidor externo a Sap

            Gracias por responder,

            estuve analizando la función FTP_CONNET con los datos del servidor y no se conecta, los datos son correctos por que usando filezilla si se conecta bien.

            No se si hay que registrar el servidor en alguna tabla de Sap?
            gracias por su
            atención y quedo atento.



            Saludos!
            Editado por última vez por julk32; 04/03/2015, 12:40:51.

            Comentario

            • coloso
              Senior Member
              • feb
              • 110

              #7
              Hola compañero, entonces algo estás haciendo mal.
              Manda el código como lo estás haciendo la conexión en ABAP.........

              Otra cosa que se puede hacer, nosotros lo tenemos con algún cliente o proveedor es en un servidor Windows tenemos compartidas una carpeta en dropbox, el proveedor o cliente nos pones el fichero que sea y nosotros tenemos compartida esa carpeta con NFS con el servidor de aplicación de SAP y luego tenemos un procesos que se pasa cada "X" tiempo en un job y lee el fichero hacemos con los datos lo que haga falta, pedidos, estadísticas, etc y luego lo borras o lo mueves a otros directorio. Según el cliente hay que hacer unas cosas o otras.....

              Sino manda el código y lo miramos........

              Salu2.

              Comentario

              • julk32
                Junior Member
                • ago
                • 7

                #8
                Importar archivo XML desde servidor externo a SAP

                Hola Compañero, de antemano muchas gracias por la ayuda, acá te comparto el código



                DATA : hdl TYPE i.
                DATA : v_dstlen TYPE i, x_pwd(64) TYPE c.
                DATA: v_cmd(80) TYPE c.
                DATA: v_path LIKE sxpgcolist-parameters.
                DATA: v_file LIKE rlgrap-filename.
                DATA: v_error(1) TYPE c.
                DATA: i_messages LIKE soli OCCURS 0 WITH HEADER LINE.
                DATA: BEGIN OF it_result OCCURS 0,
                line(100) TYPE c.
                DATA: END OF it_result.
                DATA: key TYPE i VALUE 26101957.

                CONSTANTS: v_host(64) TYPE c VALUE '200.63.217.106'.
                CONSTANTS: v_user(64) TYPE c VALUE '#######'.
                CONSTANTS: v_pwd(64) TYPE c VALUE '#######'.

                START-OF-SELECTION.
                v_path = '/BACKUPS/RET_20140923_0004/'.
                v_file = 'RET_20140923_0004.txt'.


                PERFORM ftp_to_obe.

                LOOP AT i_messages.
                WRITE :/ i_messages-line.
                ENDLOOP.

                ***************************
                * FTP CONNECTION
                ***************************
                FORM ftp_to_obe.
                CLEAR: v_dstlen, x_pwd.
                DESCRIBE FIELD v_pwd LENGTH v_dstlen IN CHARACTER MODE.


                *.Se encripta la contraseña
                CALL 'AB_RFC_X_SCRAMBLE_STRING'
                ID 'SOURCE' FIELD v_pwd
                ID 'KEY' FIELD key
                ID 'SCR' FIELD 'X'
                ID 'DESTINATION' FIELD x_pwd
                ID 'DSTLEN' FIELD v_dstlen.

                CALL FUNCTION 'FTP_CONNECT'
                EXPORTING
                user = v_user
                password = x_pwd
                host = v_host
                rfc_destination = 'SAPFTP' " create using report program RSFTP002
                IMPORTING
                handle = hdl
                EXCEPTIONS
                not_connected = 1
                OTHERS = 2.

                WRITE : / ' sy-subrc ' , sy-subrc.
                WRITE : / 'hdl' , hdl.

                IF sy-subrc = 0.
                CLEAR v_cmd.
                CONCATENATE 'lcd' v_path INTO v_cmd SEPARATED BY space.
                PERFORM ftp_command USING v_cmd.
                CLEAR v_cmd.
                CONCATENATE 'put' v_file INTO v_cmd SEPARATED BY space.
                PERFORM ftp_command USING v_cmd.
                ELSE.
                v_error = 'X'.
                CONCATENATE 'Not connected to ftp: world finest '
                'user:'
                INTO i_messages SEPARATED BY space.
                APPEND i_messages.
                CLEAR i_messages.
                ENDIF.

                ENDFORM. " FTP_TO_OBE

                ***************************
                * FTP COMMAND
                ***************************

                FORM ftp_command USING v_cmd.
                CLEAR it_result.
                REFRESH it_result.

                CALL FUNCTION 'FTP_COMMAND'
                EXPORTING
                handle = hdl
                command = v_cmd
                TABLES
                data = it_result
                EXCEPTIONS
                tcpip_error = 1
                command_error = 2
                data_error = 3
                OTHERS = 4.

                IF sy-subrc = 0.
                CONCATENATE 'FTP command:'
                'executed on host:'
                INTO i_messages SEPARATED BY space.
                APPEND i_messages.
                CLEAR i_messages.
                LOOP AT it_result.
                i_messages = it_result.
                APPEND i_messages.
                CLEAR i_messages.
                ENDLOOP.
                CLEAR it_result.
                REFRESH it_result.
                ELSE.
                v_error = 'X'.
                CONCATENATE 'Command:'
                'not run for host:'
                INTO i_messages SEPARATED BY space.
                APPEND i_messages.
                CLEAR i_messages.
                ENDIF.
                ENDFORM. " FTP_COMMAND

                Comentario

                • coloso
                  Senior Member
                  • feb
                  • 110

                  #9
                  Lo primero de todo prueba que te hace la conexión desde SAP, te da algún mensaje de error o algo ?????

                  Pruebo con esto para ver si te hace conexión...

                  data: ftp_user(64), "VALUE 'clones', "Case sensitive
                  ftp_pwd(64), "VALUE '2133', "Case Sensitive
                  ftp_host(50), "VALUE '192.xxx.xxx.xxx', "I.P. FTP server
                  rfc_dest like rscat-rfcdest value 'SAPFTPA',
                  hdl type i,
                  key type i value 26101957,
                  dstlen type i,
                  cmd(255),
                  ftp_file type string,
                  slen type i.

                  move: tserv-usuario to ftp_user,
                  tserv-password to ftp_pwd,
                  tserv-ip to ftp_host.

                  describe field ftp_pwd length dstlen in character mode. "Añadido IN CHARACTER MODE POR EL TEMA DE UNICODE ALFONSO PEREZ 30/06/2014
                  slen = strlen( ftp_pwd ).

                  * conectamos.
                  call function 'HTTP_SCRAMBLE'
                  exporting
                  source = ftp_pwd
                  sourcelen = slen
                  key = key
                  importing
                  destination = ftp_pwd.

                  ***Connect to FTP
                  call function 'FTP_CONNECT'
                  exporting
                  user = ftp_user
                  password = ftp_pwd
                  host = ftp_host
                  rfc_destination = rfc_dest
                  importing
                  handle = hdl
                  exceptions
                  not_connected = 1
                  others = 2.

                  if sy-subrc ne 0.
                  write:/ 'COULD NOT CONNECT TO', ftp_host.
                  g_flag_conexion = 'FALSE'.
                  else.
                  write:/ 'Conexión(OK): ', ftp_host.
                  g_flag_conexion = 'TRUE'.
                  move ftp_host to g_errores-line.
                  append g_errores.
                  endif.

                  Ya me dirás que pasa...........
                  Salu2.

                  Comentario

                  • julk32
                    Junior Member
                    • ago
                    • 7

                    #10
                    Importar archivo XML desde servidor externo a SAP

                    Mil Gracias Coloso, ya me funcionó, ahora ando buscando como proceder con lo archivos xml que están en el servidor ftp externo.

                    El archivo XML se carga en memoria y se mete en una tabla interna o se trae al ERP en un directorio?

                    He estado ensayando con FTP_SERVER_TO_R3 no se si necesito la FTP_COMMAND o debo usar otra función? por que no me ha funcionado

                    Agradezco tu atención.

                    Comentario

                    • coloso
                      Senior Member
                      • feb
                      • 110

                      #11
                      Mira si te vale con esto, después de hacer la conexión tendrás que usar la función FTP_SERVER_TO_R3.

                      http://scn.sap.com/thread/898858

                      http://scn.sap.com/message/2847551#2847551

                      Salu2.

                      Comentario

                      Trabajando...