#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 |
#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 |
#3
|
||||
|
||||
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!! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|