Report Write a txt - orden spool a txt

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Ariel-StaFe
    Senior Member
    • nov
    • 321

    #1

    Report Write a txt - orden spool a txt

    Estimados.
    Tengo un report write que genera una salida en pantalla.
    Me piden que guarde esa salida en un archivo con formato .txt
    3 consultas

    1ra)
    Hay alguna manera de indicar que la salida de las sentencias "write" vayan a parar directamente a una tabla, para luego grabarse en formato txt en el disco o servidor ?

    2da)
    Si corro el programa de fondo, genera una orden de spool, con dicha salida (report write).
    Como es para convertir (desde abap) una orden de spool en txt ?
    para poder guardarla en el servidor ?

    3ra)
    O me conviene lanzar un job con 2 tareas, programas, que el primero me genere la orden de spool
    y el 2do.. tome esa orden de spool generada recientemente y la convierta a un archivo con formato txt ?

    Desde ya muchas gracias.
    Saludos
    Ariel-StaFe
    Analista Programador Abap Senior
    Santa Fe Capital
    Pcia de Santa Fe
    Argentina
  • Ariel-StaFe
    Senior Member
    • nov
    • 321

    #2
    SPOOL a .TXT

    Sigo con este tema.
    El problema es que el reporte arroja casi 14.000 paginas..
    y si voy a "Visualizacion Grafica" del mismo
    y le doy que me muestre todas las paginas
    me da "posible debordamiento de memoria"
    y luego Me genera dumps. TSV_TNEW_PAGE_ALLOC_FAILED
    No more storage space available for extending an internal table.

    Alguien sabe en que tabla se graban dichos datos de spool ?
    o alguna funcion que tome ese spool y convierta a archivo ?
    o algun programa que convierta de orden de spool a archivo .txt ?

    Desde ya muchas gracias por su colaboracion
    Ariel-StaFe
    Analista Programador Abap Senior
    Santa Fe Capital
    Pcia de Santa Fe
    Argentina

    Comentario

    • DCErick
      Moderator
      • mar
      • 1090

      #3
      ¿Tiene que ser a un TXT?

      Porque podrias pasar el spool a PDF.

      Saludos,
      -------------------
      ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

      Comentario

      • Ariel-StaFe
        Senior Member
        • nov
        • 321

        #4
        Tema cerrado

        DCErik
        Gracias por tu ayuda.
        En este caso debe ser a txt y ya encontre la solucion
        Hay que hacerlo con la SP01 o SP02
        Sin entrar a la orden de spool - solo tildarla (la que hay que exportar)
        Y luego Menu/Orden SPOOL/ Transmitir/Exportar como texto
        Abrir otro modo para que no caiga por time out si es muy grande
        Y al final informa donde lo guarda.
        en mi caso C:\Documents and Settings\NOMBREPC\SapWorkDir
        Espero le sirva a alguien
        Saludos
        Ariel-StaFe
        Analista Programador Abap Senior
        Santa Fe Capital
        Pcia de Santa Fe
        Argentina

        Comentario

        • DCErick
          Moderator
          • mar
          • 1090

          #5
          Originalmente publicado por Ariel-StaFe
          DCErik
          Gracias por tu ayuda.
          En este caso debe ser a txt y ya encontre la solucion
          Hay que hacerlo con la SP01 o SP02
          Sin entrar a la orden de spool - solo tildarla (la que hay que exportar)
          Y luego Menu/Orden SPOOL/ Transmitir/Exportar como texto
          Abrir otro modo para que no caiga por time out si es muy grande
          Y al final informa donde lo guarda.
          en mi caso C:\Documents and Settings\NOMBREPC\SapWorkDir
          Espero le sirva a alguien
          Saludos
          Si, de hecho eso estoy viendo ahorita... pero creí que se requeria automatizar ese paso...

          Bueno llegué a este punto

          PROGRAMA.- SAPLSPOOL_SP01R
          FORM.- USER_COMMAND3
          UCOMM.- DOWN

          Por si alguien quiere seguirle investigando....
          -------------------
          ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

          Comentario

          • DCErick
            Moderator
            • mar
            • 1090

            #6
            Bueno pues ya les dejo la solución en código jejeje.

            Código:
                  CALL FUNCTION 'RSPO_DOWNLOAD_SPOOLJOB'
                    DESTINATION destination
                        exporting
                          id                    = lsporq-rqident "<---Número orden spool
                          fname                 = filename      "<---Nombre archivo
                      fullpath              = fullpath             "<---Ruta donde lo grabaremos
                      encoding              = encoding         "<---UTF-8 etc
                    CHANGING
                          directory             = folder
                        EXCEPTIONS
                          communication_failure = 102  message msg_text
                          system_failure        = 103  message msg_text
                          others                = 1.
            -------------------
            ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

            Comentario

            • Ariel-StaFe
              Senior Member
              • nov
              • 321

              #7
              No funciona con 44.000 paginas

              DCErick
              Sabes que la exportacion desde SP01, con 14.000 paginas funciona, pero con otro spool de 50.000 me da error, falta de memoria, lo normal.
              Esto lo corro On Line.
              Probé la funcion que pasaste y ON Line tambien da el mismo DUMP.
              ...
              Creo que no, pero te pregunto x las dudas.. estimo que si meto la funcioin en un programa para correrlo de fondo.. tambien arrojaria dump.. pensas igual ?

              Datos del dump
              Errores tiempo ejec. TSV_TNEW_PAGE_ALLOC_FAILED
              Fecha y hora 28.01.2012 10:01:44
              Texto breve
              No more storage space available for extending an internal table.
              ¿Qué ha sucedido?
              You attempted to extend an internal table, but the required space was
              not available.
              ¿Qué puede hacer?
              Note which actions and input led to the error.

              For further help in handling the problem, contact your SAP administ
              .

              You can use the ABAP dump analysis transaction ST22 to view and man
              termination messages, in particular for long term reference.

              Try to find out (e.g. by targetted data selection) whether the
              transaction will run with less main memory.

              If there is a temporary bottleneck, execute the transaction again.
              -

              If the error persists, ask your system administrator to check the
              following profile parameters:

              o ztta/roll_area (1.000.000 - 15.000.000)
              Classic roll area per user and internal mode
              usual amount of roll area per user and internal mode
              o ztta/roll_extension (10.000.000 - 500.000.000)
              Amount of memory per user in extended memory (EM)
              o abap/heap_area_total (100.000.000 - 1.500.000.000)
              Amount of memory (malloc) for all users of an application
              server. If several background processes are running on
              one server, temporary bottlenecks may occur.
              Of course, the amount of memory (in bytes) must also be
              available on the machine (main memory or file system swap).

              Gracias y saludos.
              Ariel-StaFe
              Analista Programador Abap Senior
              Santa Fe Capital
              Pcia de Santa Fe
              Argentina

              Comentario

              • Ariel-StaFe
                Senior Member
                • nov
                • 321

                #8
                Funcion

                DCErick
                Como estas. Pudiste proba esa funcion ?
                La uso, me dice que lo graba.. pero lo busco en el path y no lo encuentro
                Uso estos parametros
                Nro.de Spool: 22.552
                Nombre Arch.TXT a Grabar PruebaAriel
                Identif.Form Caract ej.UTF-8: UTF-8
                Path donde Guarda TXT: D:\USR\SAP\D01\DVEBMGS00\WORK\AFIP

                Me da este mensaje
                839 Bytes transferidos, code page 1160

                Pero no lo encuentro
                Gracias
                Ariel-StaFe
                Analista Programador Abap Senior
                Santa Fe Capital
                Pcia de Santa Fe
                Argentina

                Comentario

                • DCErick
                  Moderator
                  • mar
                  • 1090

                  #9
                  Originalmente publicado por Ariel-StaFe
                  DCErick
                  Como estas. Pudiste proba esa funcion ?
                  La uso, me dice que lo graba.. pero lo busco en el path y no lo encuentro
                  Uso estos parametros
                  Nro.de Spool: 22.552
                  Nombre Arch.TXT a Grabar PruebaAriel
                  Identif.Form Caract ej.UTF-8: UTF-8
                  Path donde Guarda TXT: D:\USR\SAP\D01\DVEBMGS00\WORK\AFIP

                  Me da este mensaje
                  839 Bytes transferidos, code page 1160

                  Pero no lo encuentro
                  Gracias
                  Sabes no la probé, pero es al función que se usa en el SP02, igual no creo que corriendo en fondo no te dé el dump ya que el problema es mas tema de BASIS problemente ellos puedan permitir mas memoria para los procesos, ¿en donde ? no tengo idea , pero el el dump te sale esto

                  Código:
                  If the error persists, ask your system administrator to check the
                   following profile parameters:
                   
                  o ztta/roll_area (1.000.000 - 15.000.000)
                   Classic roll area per user and internal mode
                   usual amount of roll area per user and internal mode
                   o ztta/roll_extension (10.000.000 - 500.000.000)
                   Amount of memory per user in extended memory (EM)
                   o abap/heap_area_total (100.000.000 - 1.500.000.000)
                   Amount of memory (malloc) for all users of an application
                   server. If several background processes are running on
                   one server, temporary bottlenecks may occur.
                   Of course, the amount of memory (in bytes) must also be
                   available on the machine (main memory or file system swap).
                  En cuanto a la función creo que hay otras funciones antes de esa que probablemente alimenten variables globales, intenta fullpath lo ultimo que ví es que no se está llenando cuando lo corres desde la SP02...

                  En fin de semana no puedo entrar al servidor, el luenes reviso de nuevo el código para ver que puede estar fallando en esa función...
                  -------------------
                  ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                  Comentario

                  • Ariel-StaFe
                    Senior Member
                    • nov
                    • 321

                    #10
                    DCErick
                    Te cuento que tengo que seguir investigando porque el Basis me indica que el área de memoria para Abap ya se encuentra optimizado, no se puede ampliar.
                    Asi que sigo viendo.
                    Cualquier novedad te aviso.
                    Gracias por tu molestia.
                    Saludos
                    Ariel
                    Ariel-StaFe
                    Analista Programador Abap Senior
                    Santa Fe Capital
                    Pcia de Santa Fe
                    Argentina

                    Comentario

                    • Ariel-StaFe
                      Senior Member
                      • nov
                      • 321

                      #11
                      Tema cerrado

                      Comento que pude resolver el tema generando un programa Z,
                      utilizando código de las funciones RSPO_DOWNLOAD_SPOOLJOB y RSPO_RETURN_SPOOLJOB
                      adaptándolo para poder correr de fondo
                      y que genere un archivo .txt en una carpeta del servidor.
                      Gracias DCErick por tu molestia.
                      Saludos
                      Ariel-StaFe
                      Analista Programador Abap Senior
                      Santa Fe Capital
                      Pcia de Santa Fe
                      Argentina

                      Comentario

                      • DCErick
                        Moderator
                        • mar
                        • 1090

                        #12
                        Originalmente publicado por Ariel-StaFe
                        Comento que pude resolver el tema generando un programa Z,
                        utilizando código de las funciones RSPO_DOWNLOAD_SPOOLJOB y RSPO_RETURN_SPOOLJOB
                        adaptándolo para poder correr de fondo
                        y que genere un archivo .txt en una carpeta del servidor.
                        Gracias DCErick por tu molestia.
                        Saludos

                        Oye y a esta que le moviste RSPO_RETURN_SPOOLJOB, la otra pues es entendible es la parte del download, pero medio le dí una pasadita a esa del return y no sé en donde pudiste moverle xD.

                        hRizHi This
                        -------------------
                        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                        Comentario

                        • Ariel-StaFe
                          Senior Member
                          • nov
                          • 321

                          #13
                          Respuesta

                          Es esto lo que me preguntas ?
                          Es una llamada a la funcion RETURN, dentro de la funcion DOWNLOAD
                          ...
                          Código:
                           
                           IF list_width <= 255.
                                CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
                                  EXPORTING
                                    rqident              = p_id
                                    first_line           = startline
                                    last_line            = endline
                                    desired_type         = 'RAW'
                                  TABLES
                                    buffer               = buffer
                                  EXCEPTIONS
                                    no_such_job          = 1
                                    job_contains_no_data = 2
                                    selection_empty      = 3
                                    no_permission        = 4
                                    can_not_access       = 5
                                    read_error           = 6
                                    type_no_match        = 7
                                    OTHERS               = 8.
                          [B]*      handle_error.[/B]
                                PERFORM graba_archivo TABLES buffer
                                                     USING  startline
                                                            fnstr
                                                            p_encod.  "encoding.
                              ELSE.
                                REFRESH buffer_wide.
                                CALL FUNCTION 'RSPO_RETURN_SPOOLJOB'
                                  EXPORTING
                                    rqident              = p_id     "id
                                    first_line           = startline
                                    last_line            = endline
                                    desired_type         = 'RAW'
                                  TABLES
                                    buffer               = buffer_wide
                                  EXCEPTIONS
                                    no_such_job          = 1
                                    job_contains_no_data = 2
                                    selection_empty      = 3
                                    no_permission        = 4
                                    can_not_access       = 5
                                    read_error           = 6
                                    type_no_match        = 7
                                    OTHERS               = 8.
                          [B]*      handle_error.[/B]
                                PERFORM graba_archivo TABLES buffer_wide
                                               USING startline
                                                           fnstr
                                                           p_encod.  "encoding.
                          Ariel-StaFe
                          Analista Programador Abap Senior
                          Santa Fe Capital
                          Pcia de Santa Fe
                          Argentina

                          Comentario

                          • DCErick
                            Moderator
                            • mar
                            • 1090

                            #14
                            Si a eso me refiero....

                            ¿Oye y que error te salía como para que comentaras el handler de errores sin tener consecuencias?
                            -------------------
                            ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                            Comentario

                            • Ariel-StaFe
                              Senior Member
                              • nov
                              • 321

                              #15
                              Ja !. No recuerdo. pero al quitarle eso me dio el resultado esperado.
                              Estoy complicado con tiempos pero cuando tenga un blanco lo vuelvo a probar descomentando asi te cuento. Si es que lo necesitas.
                              Gracias por tu ayuda.
                              Ss
                              Ariel-StaFe
                              Analista Programador Abap Senior
                              Santa Fe Capital
                              Pcia de Santa Fe
                              Argentina

                              Comentario

                              Trabajando...