Cambiar nombre de archivo en GUI_DOWNLOAD

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Vecino
    Member
    • jun
    • 39

    #1

    Cambiar nombre de archivo en GUI_DOWNLOAD

    Buenos días y gracias por adelantado.

    Estoy creado mi primer programa, en él extraigo unos campos de una tabla, los llevo a una tabla interna y la descargo a mi C:\
    En principio todo va perfecto.

    Pero el problema es que el nombre del archivo debe ser la fecha ayer. He creado una variable en la que se calcula correctamente la fecha de ayer, pero no sé como hacer que el filename del archivo tome el nombre de variable.

    Lo que he escrito es lo siguiente:

    CONSTANTS LC_1 TYPE C VALUE '1'.

    [...]

    DATA: lv_fechahoy TYPE sy-datum.
    DATA: lv_fechaayer TYPE sy-datum,
    num_dias TYPE i.

    lv_fechahoy = sy-datum.
    num_dias = LC_1.
    lv_fechaayer = lv_fechahoy - num_dias.

    * Exportar
    call function 'GUI_DOWNLOAD'
    exporting
    filename = 'C:\lv_fechaayer'
    filetype = 'ASC'
    write_field_separator = 'T'
    TABLES
    DATA_TAB = lt_/opt/vim_1head
    EXCEPTIONS
    file_write_error = 02
    unknow_error = 07.

    Con esto me crea un archivo en C:\ llamado lv_fechaayer
    pero quiero que tome como nombre de campo la propia fecha de ayer.

    Espero haberme explicado
    Gracias
  • Vecino
    Member
    • jun
    • 39

    #2
    Solucion encontrada

    Hola

    Ya lo he encontrado

    1- He declarado una variable
    DATA: lv_fichero TYPE string.

    2- Y luego le he puesto como nombre la concatenacion de la fecha que saco de variable ya calculada.
    CONCATENATE 'C:\' lv_fechaayer(4) lv_fechaayer+4(2) lv_fechaayer+6(2) '_VIM' INTO lv_fichero.

    3- Finalmente en el 'GUI_DOWNLOAD' cambio el filename por la variable.
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = lv_fichero
    filetype = 'ASC'
    write_field_separator = 'T'
    TABLES
    data_tab = lt_/opt/vim_1head
    EXCEPTIONS
    file_write_error = 02
    unknow_error = 07.

    Gracias en todo caso.
    Vecino

    Comentario

    • J e f f
      Member
      • nov
      • 90

      #3
      Originalmente publicado por Vecino
      Buenos días y gracias por adelantado.

      Estoy creado mi primer programa, en él extraigo unos campos de una tabla, los llevo a una tabla interna y la descargo a mi C:\
      En principio todo va perfecto.

      Pero el problema es que el nombre del archivo debe ser la fecha ayer. He creado una variable en la que se calcula correctamente la fecha de ayer, pero no sé como hacer que el filename del archivo tome el nombre de variable.

      Lo que he escrito es lo siguiente:

      CONSTANTS LC_1 TYPE C VALUE '1'.

      [...]

      DATA: lv_fechahoy TYPE sy-datum.
      DATA: lv_fechaayer TYPE sy-datum,
      num_dias TYPE i.

      lv_fechahoy = sy-datum.
      num_dias = LC_1.
      lv_fechaayer = lv_fechahoy - num_dias.

      * Exportar
      call function 'GUI_DOWNLOAD'
      exporting
      filename = 'C:\lv_fechaayer'
      filetype = 'ASC'
      write_field_separator = 'T'
      TABLES
      DATA_TAB = lt_/opt/vim_1head
      EXCEPTIONS
      file_write_error = 02
      unknow_error = 07.

      Con esto me crea un archivo en C:\ llamado lv_fechaayer
      pero quiero que tome como nombre de campo la propia fecha de ayer.

      Espero haberme explicado
      Gracias
      Buenas! Antes que nada hay que analizar una serie de cosas.
      Primero es la fecha, si bien el restarle un dia a la fecha actual tiene sentido, solo es valida cuando la fecha se mayor al primero de cada mes, ya que sino, vas a restarle a 1 un 1, y te va a quedar un 20161100, y no queremos que suceda esto.
      Por otro lado, cuando vos pones en la funcion el nombre del archivo, lo estas haciendo entre comillas, y esto hace que SAP lo tome como si fuera un texto, por eso sale el nombre de la variable en el archivo, y no el contenido.

      Habiendo dicho esto, vamos por puntos.
      En el segundo caso, lo que deberias hacer es crear una variable del mismo tipo que el parametro FILENAME de la funcion, este si te metes en la funcion es STRING.
      Una vez tengas el parametro lv_filename, debes concatenar la ruta con la fecha, y meterlo en la variable que le pasaras a la funcion.

      CONCATENATE 'C:\' lv_fechaayer INTO lv_filename. Resta pasarle la variable filename a la funcion.

      Respecto a la fecha, podrias usar una funcion para restarle un dia a la fecha, y asi evitar el problema de que te quede una fecha con dia 00.
      La siguiente funcion suma/resta dias a una fecha.

      ADD_TIME_TO_DATE
      En el parametro I_IDATE le pones la fecha de referencia.
      En el I_TIME los dias que quieres restar/sumar, en este caso seria 1-.
      Y en el O_IDATE recibes el resultado.
      Puedes mirarla y probarla por la se37.

      Espero te haya servido todo esto. Cualquier cosa, pregunta!
      Saludos

      EDIT: Me alegra que lo hayas podido resolver!!
      Código:
      [B]*** ABAP Developer (since 2007)[/B]

      Comentario

      Trabajando...