Buen dia a todos, estoy empezando en esto del Abap y necesito leer un archivo txt en Abap y mostrarla con alvlist; me podrian ayudar con un ejemplo para poder hacerlo. Gracias.
Anuncio
Colapsar
No hay anuncio todavía.
Archivo texto
Colapsar
X
-
¿El archivo está en el servidor o en el pc del usuario?"Soy el señor Lobo, arreglo problemas"
http://sapymas.blogspot.com/
-
Archivo texto
Originalmente publicado por bisonye Ver Mensaje¿El archivo está en el servidor o en el pc del usuario?
Comentario
-
Archivo texto
Originalmente publicado por bisonye Ver Mensaje¿El archivo está en el servidor o en el pc del usuario?
El archivo esta en el PC del usuario.
Comentario
-
Para leer un archivo de un pc local utiliza la función GUI_UPLOAD tal que así:
Código:CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = fich filetype = 'ASC' HAS_FIELD_SEPARATOR = 'T' * HEADER_LENGTH = 0 * READ_BY_LINE = 'X' * DAT_MODE = ' ' * CODEPAGE = ' ' * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = '#' * CHECK_BOM = ' ' * VIRUS_SCAN_PROFILE = * NO_AUTH_CHECK = ' ' * IMPORTING * FILELENGTH = * HEADER = TABLES data_tab = it_fich 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 OTHERS = 17 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
Para obtener la ruta donde está el fichero en la pantalla de selección usas un parameter así:
PARAMETERS fich TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR fich.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Abrir'
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* WITH_ENCODING =
* INITIAL_DIRECTORY =
* MULTISELECTION =
CHANGING
file_table = filetable
rc = rc
* USER_ACTION =
* FILE_ENCODING =
* EXCEPTIONS
* FILE_OPEN_DIALOG_FAILED = 1
* CNTL_ERROR = 2
* ERROR_NO_GUI = 3
* NOT_SUPPORTED_BY_GUI = 4
* others = 5
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE filetable INDEX 1 INTO fich.
DATA filetable TYPE filetable.
DATA rc TYPE i."Soy el señor Lobo, arreglo problemas"
http://sapymas.blogspot.com/
Comentario
-
Originalmente publicado por Rafael44 Ver MensajeBuen dia a todos, estoy empezando en esto del Abap y necesito leer un archivo txt en Abap y mostrarla con alvlist; me podrian ayudar con un ejemplo para poder hacerlo. Gracias.
Recien te hice un ejemplo super sencillo para guiarte paso a paso y puedas ver tu ALV en pantalla.
ejemplo:
Report ejemplo no standar page heading line-size 1023.
Tables :
.
.
**** Declaraciones para el ALV.
type-pools: slis.
data: g_repid like sy-repid,
gs_print type slis_print_alv,
gt_list_top_of_page type slis_t_listheader,
gt_events type slis_t_event,
gt_sort type slis_t_sortinfo_alv,
gs_layout type slis_layout_alv,
gt_fieldcat type slis_t_fieldcat_alv,
fieldcat_ln like line of gt_fieldcat,
col_pos type i.
*Suponiendo que la tabla que vas a subir de C:\ y desplegar en ALV es:
data: begin of tab occurs 0,
cliente like kna1-kunnr,
matnr like makt-matnr,
maktx like makt-maktx,
maktg like makt-maktg.
data: end of tab.
** Declaraciones para subir archivo de la PC (armas el Layout para vaciar txt a este) deberas respetar como **fue hecho en modo texto
DATA: BEGIN OF i_tablapc OCCURS 0,
Cliente(10) type c,
Matnr(17) type c,
Maktx(25) type c,
Maktg(25) type c,
END OF i_tablapc.
DATA: v_fsize TYPE i,
v_fname TYPE rlgrap-filename,
v_ftype TYPE rlgrap-fileTYPE.
* SUbes el archivo y se queda en la tabla del layout
CALL FUNCTION 'UPLOAD'
EXPORTING
codepage = 'IBM'
filename = 'C:\ARCHIVO.TXT'
filetype = 'DAT'
item = 'Lee informac de la pc '
IMPORTING
filesize = v_fsize
act_filename = v_fname
act_filetype = v_ftype
TABLES
data_tab = i_tablapc
EXCEPTIONS
conversion_error = 1
invalid_table_width = 2
invalid_type = 3.
*mueves a la tabla que vas a visualizar
LOOP AT i_tablapc.
move:
i_tablapc-clliente to tab-cliente ,
i_tablapc-matnr to tab-matnr ,
i_tablapc-maktx to tab-maktx ,
.
Append tab.
ENDLOOP.
** AHora la despliegas en el ALV
sort tab by CLIENTE.
g_repid = sy-repid.
data: fieldcat_in type slis_fieldcat_alv.
clear fieldcat_in.
fieldcat_ln-fieldname = 'CLIENTE'.
fieldcat_ln-tabname = 'TAB'.
fieldcat_ln-ref_tabname = KNA1’.
fieldcat_ln-seltext_l = 'Cliente’.
fieldcat_ln-no_out = ' '.
append fieldcat_ln to gt_fieldcat.
clear fieldcat_in.
fieldcat_ln-fieldname = 'MATNR'.
fieldcat_ln-tabname = 'TAB'.
fieldcat_ln-ref_tabname = MAKT’.
fieldcat_ln-seltext_l = 'Material.
fieldcat_ln-no_out = ' '.
append fieldcat_ln to gt_fieldcat.
clear fieldcat_in.
fieldcat_ln-fieldname = ‘MAKTX'.
fieldcat_ln-tabname = 'TAB'.
fieldcat_ln-ref_tabname = ‘MAKT'.
fieldcat_ln-seltext_l = 'Descripcion'.
fieldcat_ln-no_out = ' '.
append fieldcat_ln to gt_fieldcat.
*** Resto campos de la tabla a visualizar
.
.
data: gs_sort type slis_sortinfo_alv.
clear gs_sort.
* Ordenar el despliegue:
gs_sort-fieldname = 'CLIENTE'.
gs_sort-spos = 1.
gs_sort-up = 'X'.
append gs_sort to gt_sort.
gs_sort-fieldname = 'MATNR'.
gs_sort-spos = 2.
gs_sort-up = 'X'.
append gs_sort to gt_sort.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = g_repid
i_structure_name = 'TAB'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_sort = gt_sort[]
it_events = gt_events[]
is_print = gs_print
tables
t_outtab = tab
exceptions
program_error = 1
others = 2.
PRUEBALO, ESPERO TE SIRVA SOLO GENERA EL ARCHIVO ARCHIVO.TXT Y DEJALO EN C:\
Saludos
Comentario
-
Como subir un txt al servidor
Necesito subir un archivo txt de 200mb, de una maquina al servidor
ejemplo sap esta en una maquina y un usuarion esta en otra maquina
y necesito subir un archivo txt desde esa maquina al servisor sap.
Tengo una funcuin que me ayuda a subir de la misma maquina puedo subir
ejemplo maquina con sap en la unidad c: Y el archivo en la misma maquina en la unidad d:
Sin problema pero ..
Necesito subir de otra maquina al servisor.-
Comentario
Comentario