MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Exportar a TXT con espacios a la derecha (foro/showthread.php?t=43156)

malaga01 10/05/11 10:08:41

Exportar a TXT con espacios a la derecha
 
Buenos días foreros:

Tengo un problema al que no le encuentro solución. A ver si me podéis echar una mano.

Estoy bajandome información de sap en formato TXT, pero necesito que se cada línea tenga una longitud fija. Si la información no llega a esa longitud se comleta con blancos. Pero al bajar el ficheo no hay manera de conservar estos espacios. No sirve la opción de modificar manualmente puesto que el fichero se exporta directamente a otro sistema.
Tengo la version 4.6.c

¿Sabéis como se podría arreglar?

Muchas gracias de antemano.

seimeinomi 10/05/11 14:49:53

Con que funcion estas bajandolo a txt?

Por que por ahi vi que con la funcion GUI_DOWNLOAD en el parametro TRUNC_TRAILING_BLANKS puede conservar los espacios en blanco.

Saludos.

javi_garcia18 10/05/11 16:10:31

Hola malaga01, lo que puedes hacer es darle tu una longitud con el write y asi respetaria los espacios en blanco, te pongo un ejemplo:

DATA: v_record(500) TYPE c.
DATA: BEGIN OF t_download OCCURS 0,
linea(500) TYPE c,
END OF t_download.
-------------------------------------------------------------
LOOP AT t_data_comp WHERE lifnr EQ t_reg_pago-lifnr.
WRITE t_data_comp-espacio_blank TO v_record+0(1).
WRITE t_data_comp-tipo_reg TO v_record+1(1).
WRITE t_data_comp-tipo_prod TO v_record+2(1).
WRITE t_data_comp-nro_cuen_abo TO v_record+3(20).
WRITE t_data_comp-razsoc TO v_record+23(40).
WRITE t_data_comp-moneda TO v_record+63(2).
WRITE t_data_comp-impte TO v_record+65(15).
WRITE t_data_comp-tip_doc_id TO v_record+80(3).
WRITE t_data_comp-nro_doc_id TO v_record+83(12).
WRITE t_data_comp-tip_doc TO v_record+95(1).
WRITE t_data_comp-nro_doc TO v_record+96(10).
WRITE t_data_comp-tip_abo TO v_record+106(1).
WRITE t_data_comp-ref_adi TO v_record+107(40).
WRITE t_data_comp-flag_not_abo TO v_record+147(1).
WRITE t_data_comp-flag_del TO v_record+148(1).
WRITE t_data_comp-flag_val_ruc TO v_record+149(1).
WRITE t_data_comp-direccion TO v_record+150(40).
WRITE t_data_comp-distrito TO v_record+190(20).
WRITE t_data_comp-provincia TO v_record+210(20).
WRITE t_data_comp-departamento TO v_record+230(20).
WRITE t_data_comp-contacto TO v_record+250(40).
t_download-linea = v_record.
APPEND t_download.
CLEAR t_download.
ENDLOOP.

IF t_download[] IS NOT INITIAL.
PERFORM zf_donwload_tabla.
ENDIF.

*&---------------------------------------------------------------------*
*& Form zf_donwload_tabla
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM zf_donwload_tabla .

*Activamos la opción de permitir espacios en blanco.
PERFORM set_trail_blanks(saplgrap) USING 'X'.

CONCATENATE p_file '.txt'
INTO v_file_name.

CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = v_file_name
filetype = 'ASC'
TABLES
data_tab = t_download
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.

ENDFORM. " zf_donwload_tabla

espero que te sirva.. saludos!!!

malaga01 12/05/11 09:40:12

Muchas gracias javi_garcia18 y seimeinomi.

He probado ambas cosas y no funciona. Conserva los espacios entre los los caracteres del fichero, pero suiempre me los bnorra al final de la línea.

Si cada línea del fichero debe tener obligatoriamente una longitud de 100, y la información sólo llega a 80 caractéres, los 20 espacios en blanco que deberían estar en fichero de texto desaparecen.

Seguré mirando.

Un saludo.

kiboqac 12/05/11 12:12:59

En la funcion GUI_DOWNLOAD debes setear el campo TRUNC_TRAILING_BLANKS_EOL = ' '.

Prueba eso y luego me dices

DCErick 12/05/11 14:17:21

Intenta poniendo lo siguiente antes del GUI_DOWNLOAD


rafa_fonseca 11/08/15 13:28:18

Funciona en SAP 3.1i
 

Buenos días, a pesar que esta solución fue posteada hace 4 años, me ha servido de mucho, muchas gracias.

La versión de SAP que utilizamos es la 3.1i (si demasiado vieja jeje).
y el form de descarga es call function 'WS_DOWNLOAD'
no podemos usar el nuevo GUI_DOWLOAD por que en esta versión no existe el tipo STRING, y este post me ha dado una gran ayuda.



Saludos.


Husos Horarios son GMT. La hora en este momento es 20:01:18.

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