Descargar Archivo según Variante de Visualización

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • eljota
    Member
    • dic
    • 48

    #1

    Descargar Archivo según Variante de Visualización

    Hola,

    Tengo un ALV Grid que maneja variantes de visualización y me gustaría poder bajar la info a un archivo de texto con algun separador ( |, *, - , ... )

    Lo que me gustaría es que los campos a descargar sean dinámicos, según la disposición de columnas elegida por el usuario en pantalla (mediante alguna variante creada o movimiento d columnas)

    Veo que las funciones standard del toolbar en el ALV para bajar ficheros hace esta seleccion dinámica, pero no me permite decir que use algún separador.

    Espero que me ayuden en identificar en el user_command posiblemente qué columnas están actualmente visibles para poder bajar esa info

    salu2
    Jaime Zegarra V.
    ________________
    ABAP Developer
  • Atlas
    Senior Member
    • ago
    • 107

    #2
    Si bajas el listado como html, creo que si te pone separadores

    Comentario

    • eljota
      Member
      • dic
      • 48

      #3
      Lo de HTML no ayudó

      Gracias x la sugerencia, pero al bajarlo como HTML no me solicita algún separador para usar... a no ser q haya hecho algo mal.

      Lo que necesito es una de dos:

      1.- Utilizo de alguna manera la funcionalidad standard para bajar el contenido del alv a un texto usando un separador ( * , - , | , ... )

      o

      2.- Desarrollar una funcionalidad que haga esta descarga según los campos visibles en el reporte

      Si tienen mas ideas, espero respuestas!!

      salu2
      Jaime Zegarra V.
      ________________
      ABAP Developer

      Comentario

      • Atlas
        Senior Member
        • ago
        • 107

        #4
        Perdona, pero no termino de entender lo que necesitas, ¿Es decirle tu el separador o te vale cualquiera? ya que si lo bajas en formato texto sin conversión te pone '|' como separador y si le da a hoja de calculo y seleccionas .txt te pone un tabulador como separador.

        Comentario

        • eljota
          Member
          • dic
          • 48

          #5
          Bueno, lo que en realidad necesito es bajar la info separado por | pero no como lo presenta la funcion standard del alv ya que pone info extra en la cabecera.

          Solo necesito que salga como lista, tal como si usaras el GUI_DOWNLOAD o funciones similares.

          El plus que quiero que tenga la funcionalidad es que los campos que se descarguen sean los que actualmente se muestra en pantalla, es decir, luego que el usuario realice cambios en la disposición de los campos. Así que necesito una función que me devuelva la disposición actual (nuevo fieldcat) y con eso armar una lógica de descarga con un GUI_DOWNLOAD de los campos del nuevo fieldcat cuyo NO_OUT sea diferente de X. A no ser que haya funcionalidad que haga este trabajo

          Espero ser claro en lo q intento hacer.

          Gracias
          Jaime Zegarra V.
          ________________
          ABAP Developer

          Comentario

          • Atlas
            Senior Member
            • ago
            • 107

            #6
            ok comprendido

            una pregunta mas, el alv es por funciones u objetos???

            Comentario

            • eljota
              Member
              • dic
              • 48

              #7
              El ALV es por funciones así que me gustaría terminar x ahi. Ahora, si ese camino no es el más facil, no tendría inconveniente en crear un ALV OO

              gracias,
              Jaime Zegarra V.
              ________________
              ABAP Developer

              Comentario

              • eljota
                Member
                • dic
                • 48

                #8
                Solucionado

                Bueno,

                Les comento que conseguí hacer lo que quería, pero tuve que pasar mi ALV a OO

                En la funcionalidad del nuevo botón, invoqué el método:

                CALL METHOD GRID1->GET_FRONTEND_FIELDCATALOG
                IMPORTING
                ET_FIELDCATALOG = L_FIELDCATF.

                De modo que en L_FIELDCATF tengo la disposición actual de pantalla, es decir, si el usuario modifica en algo las columnas, agrega / elimina, cambia d posición, etc.. se verá detallado en la variable L_FIELDCATF.

                Con eso, agrego mi lógica para concatenar los campos de mi reporte con el separador que yo quiera y en el orden q aparece en pantalla. Les dejo ese codigo d referencia:

                FIELD-SYMBOLS: <L_LINEDET> LIKE LINE OF IT_REPORTE,
                <L_LINEFCA> TYPE LINE OF LVC_T_FCAT,
                <L_FIELD> TYPE ANY.

                CLEAR IT_REPDESC[].

                LOOP AT IT_REPORTE ASSIGNING <L_LINEDET>.
                CLEAR LS_DETALLE.
                LOOP AT P_FIELDCATF ASSIGNING <L_LINEFCA>
                WHERE NO_OUT NE 'X'
                AND TECH NE 'X'. "No se descargan las señales (campo técnico)
                ASSIGN COMPONENT <L_LINEFCA>-FIELDNAME OF STRUCTURE <L_LINEDET> TO <L_FIELD>.
                WRITE <L_FIELD> TO LD_VALORC.
                LD_VALORS = LD_VALORC.
                CONDENSE LD_VALORS.
                IF LS_DETALLE IS INITIAL.
                LS_DETALLE-LINEA = LD_VALORS.
                ELSE.
                CONCATENATE LS_DETALLE-LINEA LD_VALORS INTO LS_DETALLE-LINEA SEPARATED BY LD_SEPARAD.
                ENDIF.
                ENDLOOP.
                APPEND LS_DETALLE TO IT_REPDESC.
                ENDLOOP.
                Me parece una funcionalidad muy util ya que permite bajar la disposición que quieras y ponerle el saparador deseado.

                PD: No se si exista ya una funcionalidad standard q haga esto , si existe me avisan

                salu2
                Jaime Zegarra V.
                ________________
                ABAP Developer

                Comentario

                • Atlas
                  Senior Member
                  • ago
                  • 107

                  #9
                  Gracias por la aclaración ^_^ y perdona por no haber contestado, estuve durante dos días ( en los ratos libres que me lo permitían ) intentado hacerlo por funciones y no fuí capaz

                  Comentario

                  Trabajando...