MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Cambiar nombre de archivo en GUI_DOWNLOAD (foro/showthread.php?t=76433)

Vecino 22/11/16 12:16:51

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 22/11/16 13:19:09

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

J e f f 22/11/16 13:25:13


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!!


Husos Horarios son GMT. La hora en este momento es 19:39:06.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web