PDA

Ver la Versión Completa : Carga de fichero en tabla interna de SAP


oieraz
15/01/09, 08:36:18
Hola me gustaría saber si hay alguna función que me cargue un fichero en una tabla interna de Sap y como debería definirme esa tabla interna.

Muchas gracias y un cordial saludo.:)

Mike
15/01/09, 11:15:16
Con la clase CL_GUI_FRONTEND_SERVICES y el Metodo GUI_UPLOAD pasas de un archivo a una tabla interna SAP

La tabla interna debe tener la estructura del archivo, con FILETYPE = 'DAT' si el archovo viene separado por tabulaciones y FILETYPE = 'ASC' si la separacion es la longitud de los campos .

CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = FILENAME
FILETYPE = 'DAT'
* HAS_FIELD_SEPARATOR = SPACE
* HEADER_LENGTH = 0
* DAT_MODE = SPACE
* CODEPAGE = SPACE
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* READ_BY_LINE = 'X'
* IMPORTING
* FILELENGTH =
* HEADER =
CHANGING
DATA_TAB = IT_Tab
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
NOT_SUPPORTED_BY_GUI = 17
ERROR_NO_GUI = 18
others = 19
.

oieraz
15/01/09, 11:54:45
Gracias por tu ayuda

fernando_c
30/01/09, 02:27:17
Podés usar dos funciones: la función WS_UPLOAD es la antigua y la función GUI_UPLOAD es la moderna. WS_UPLOAD carga los datos directamente en una tabla interna mientras que en el caso de GUI_UPLOAD lo que hacer es cargarnos los datos en una variable de tipo STRING, la que después hay que tratar.

WS_UPLOAD:
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_filen "Nombre de Archivo
filetype = 'DAT'
TABLES
data_tab = record. "Tabla Interna


GUI_UPLOAD:
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_filen
filetype = 'DAT'
TABLES
data_tab = record.

Cualquiera de estas dos funciones te sirve para lo que estás intentando de hacer. Espero te sirva. Saludos.

nachosds
17/11/09, 09:53:27
Buenos dias.

Tengo que cambiar la funcion WS_UPLOAD por la nueva, concretamente por el metodo CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD

Pues bien, a la hora pasarle la tabla DATA_TAB me da error.
Antes con la funcion WS_UPLOAD me funcionaba.

¿Que podria ser?
A DATA_TAB le estoy pasando una tabla interna creada de la manera:
DATA: BEGIN OF it_datos OCCURS 0,
a(40),
b(10),
c(2),
d(5) TYPE c,
error.
DATA: END OF it_datos.


Un saludo y mil gracias!


EDITO PARA AUTORESPONDERME.

Le tenia que pasar it_datos[]. Antes se lo pasaba sin corchetes...

Gracias de todas formas!