Difference between revisions of "SAP ABAP FILES"
From SapWiki
| (10 intermediate revisions by the same user not shown) | |||
| Line 41: | Line 41: | ||
MESSAGE i000(0k) WITH 'Error al crear archivo' l_file DISPLAY LIKE 'E'. | MESSAGE i000(0k) WITH 'Error al crear archivo' l_file DISPLAY LIKE 'E'. | ||
ENDIF.</nowiki> | ENDIF.</nowiki> | ||
| + | |||
| + | ==Crear archivo de largo fijo== | ||
| + | <nowiki> | ||
| + | TYPES: BEGIN OF ty_data, | ||
| + | field01(11) TYPE c, | ||
| + | field02(50) TYPE c, | ||
| + | field03(80) TYPE c, | ||
| + | field04(50) TYPE c, | ||
| + | END OF ty_data. | ||
| + | |||
| + | DATA gt_filet TYPE ppe_cust_table. | ||
| + | DATA gt_data TYPE TABLE OF ty_data. | ||
| + | DATA wa_data LIKE LINE OF gt_data. | ||
| + | |||
| + | wa_data-field01 = 'HHHHHH'. | ||
| + | wa_data-field03 = 'AAAAAAAAAAAAAA'. | ||
| + | APPEND wa_data TO gt_data. | ||
| + | |||
| + | PERFORM crear_file USING gt_data CHANGING gt_filet. | ||
| + | |||
| + | FORM crear_file USING p_tabla TYPE ANY TABLE | ||
| + | CHANGING p_tabla_csv TYPE ppe_cust_table. | ||
| + | |||
| + | DATA: l_struc_raw_data TYPE char1024, | ||
| + | l_begin TYPE i. | ||
| + | |||
| + | FIELD-SYMBOLS <fs_field> TYPE any. | ||
| + | FIELD-SYMBOLS <ls_envio> TYPE any. | ||
| + | |||
| + | DATA: lr_tab TYPE REF TO data, | ||
| + | lr_typedesc TYPE REF TO cl_abap_typedescr, | ||
| + | lr_tabdesc TYPE REF TO cl_abap_tabledescr, | ||
| + | lr_datadesc TYPE REF TO cl_abap_datadescr, | ||
| + | lr_structdesc TYPE REF TO cl_abap_structdescr. | ||
| + | FIELD-SYMBOLS: <ls_structcomp> TYPE abap_compdescr. | ||
| + | |||
| + | * GET REFERENCE OF p_tabla INTO lr_tab. | ||
| + | * lr_typedesc ?= cl_abap_tabledescr=>describe_by_data_ref( lr_tab ). | ||
| + | lr_typedesc ?= cl_abap_tabledescr=>describe_by_data( p_tabla ). | ||
| + | lr_tabdesc ?= lr_typedesc. | ||
| + | lr_datadesc = lr_tabdesc->get_table_line_type( ). | ||
| + | lr_structdesc ?= lr_datadesc. | ||
| + | |||
| + | LOOP AT p_tabla ASSIGNING <ls_envio>. | ||
| + | CLEAR: l_struc_raw_data . | ||
| + | DO. | ||
| + | READ TABLE lr_structdesc->components ASSIGNING <ls_structcomp> INDEX sy-index. | ||
| + | IF sy-subrc = 0. | ||
| + | ASSIGN COMPONENT <ls_structcomp>-name OF STRUCTURE <ls_envio> TO <fs_field>. | ||
| + | l_struc_raw_data+l_begin = <fs_field>. | ||
| + | l_begin = l_begin + ( <ls_structcomp>-length / 2 ). "1 char = 2 bytes in unicode system | ||
| + | ELSE. | ||
| + | EXIT. | ||
| + | ENDIF. | ||
| + | ENDDO. | ||
| + | l_struc_raw_data+l_begin = cl_bcs_convert=>gc_crlf. | ||
| + | APPEND l_struc_raw_data TO p_tabla_csv. | ||
| + | ENDLOOP. | ||
| + | ENDFORM. | ||
| + | </nowiki> | ||
| + | ==[[SAP ABAP VARIOS#CL_GUI_FRONTEND_SERVICES|Clase CL_GUI_FRONTEND_SERVICES]]== | ||
| + | ==[[SAP ABAP VARIOS#Bajar tabla en formato CSV (función hr_cl_if_prvd_generate_file)|Crear archivo CSV]]== | ||
| + | ==[[SAP ABAP VARIOS#Leer archivo CSV|Leer archivo CSV]]== | ||
| + | ==[[SAP ABAP VARIOS#Leer archivo Excel|Leer archivo Excel]]== | ||
| + | ==[[SAP ABAP VARIOS#Leer archivo XML|Leer archivo XML]]== | ||
| + | ==[[SAP ABAP VARIOS#Leer Arhivo PDF y Visualizarlo|Leer Arhivo PDF y Visualizarlo]]== | ||
| + | ==[[SAP ABAP VARIOS#Grabar XSTRING en equipo como Binario(XML,PDF,etc.)|Grabar XSTRING en equipo como Binario(XML,PDF,etc.)]]== | ||
==[[SAP ABAP UNIX#Unix_Varios|Bajar/Subir archivos servidor]]== | ==[[SAP ABAP UNIX#Unix_Varios|Bajar/Subir archivos servidor]]== | ||
==[[SAP ABAP REPORT#Obtener_vía_F4_archivo_y_directorio_en_un_reporte|Obtener vía F4 archivo y directorio en un reporte]]== | ==[[SAP ABAP REPORT#Obtener_vía_F4_archivo_y_directorio_en_un_reporte|Obtener vía F4 archivo y directorio en un reporte]]== | ||
Latest revision as of 20:56, 4 July 2024
Contents
- 1 OPEN DATASET & TRANSFER
- 2 Crear archivo de largo fijo
- 3 Clase CL_GUI_FRONTEND_SERVICES
- 4 Crear archivo CSV
- 5 Leer archivo CSV
- 6 Leer archivo Excel
- 7 Leer archivo XML
- 8 Leer Arhivo PDF y Visualizarlo
- 9 Grabar XSTRING en equipo como Binario(XML,PDF,etc.)
- 10 Bajar/Subir archivos servidor
- 11 Obtener vía F4 archivo y directorio en un reporte
OPEN DATASET & TRANSFER
DATA: l_error TYPE string,
lo_x TYPE REF TO cx_root,
l_file TYPE string,
l_nombre TYPE string,
l_butxt TYPE t001-butxt,
l_linea(8000).
OPEN DATASET l_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc <> 0.
MESSAGE i000(0k) WITH 'Error al crear archivo' l_file DISPLAY LIKE 'E'.
RETURN.
ENDIF.
LOOP AT gt_csv_tab INTO ls_csv_tab.
TRY.
move ls_csv_tab to l_linea.
TRANSFER l_linea TO l_file.
CATCH cx_sy_codepage_converter_init
cx_sy_conversion_codepage
cx_sy_file_authority
cx_sy_file_io
cx_sy_file_open
cx_sy_file_open_mode
cx_sy_pipe_reopen
cx_sy_too_many_files INTO lo_x.
l_error = lo_x->get_text( ).
MESSAGE i000(0k) WITH 'Error en transferencia de datos' l_error DISPLAY LIKE 'E'.
CLOSE DATASET l_file.
RETURN.
ENDTRY.
ENDLOOP.
CLOSE DATASET l_file.
IF sy-subrc = 0.
MESSAGE i000(0k) WITH 'Archivo creado con éxito' p_file l_nombre DISPLAY LIKE 'S'.
ELSE.
MESSAGE i000(0k) WITH 'Error al crear archivo' l_file DISPLAY LIKE 'E'.
ENDIF.
Crear archivo de largo fijo
TYPES: BEGIN OF ty_data,
field01(11) TYPE c,
field02(50) TYPE c,
field03(80) TYPE c,
field04(50) TYPE c,
END OF ty_data.
DATA gt_filet TYPE ppe_cust_table.
DATA gt_data TYPE TABLE OF ty_data.
DATA wa_data LIKE LINE OF gt_data.
wa_data-field01 = 'HHHHHH'.
wa_data-field03 = 'AAAAAAAAAAAAAA'.
APPEND wa_data TO gt_data.
PERFORM crear_file USING gt_data CHANGING gt_filet.
FORM crear_file USING p_tabla TYPE ANY TABLE
CHANGING p_tabla_csv TYPE ppe_cust_table.
DATA: l_struc_raw_data TYPE char1024,
l_begin TYPE i.
FIELD-SYMBOLS <fs_field> TYPE any.
FIELD-SYMBOLS <ls_envio> TYPE any.
DATA: lr_tab TYPE REF TO data,
lr_typedesc TYPE REF TO cl_abap_typedescr,
lr_tabdesc TYPE REF TO cl_abap_tabledescr,
lr_datadesc TYPE REF TO cl_abap_datadescr,
lr_structdesc TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS: <ls_structcomp> TYPE abap_compdescr.
* GET REFERENCE OF p_tabla INTO lr_tab.
* lr_typedesc ?= cl_abap_tabledescr=>describe_by_data_ref( lr_tab ).
lr_typedesc ?= cl_abap_tabledescr=>describe_by_data( p_tabla ).
lr_tabdesc ?= lr_typedesc.
lr_datadesc = lr_tabdesc->get_table_line_type( ).
lr_structdesc ?= lr_datadesc.
LOOP AT p_tabla ASSIGNING <ls_envio>.
CLEAR: l_struc_raw_data .
DO.
READ TABLE lr_structdesc->components ASSIGNING <ls_structcomp> INDEX sy-index.
IF sy-subrc = 0.
ASSIGN COMPONENT <ls_structcomp>-name OF STRUCTURE <ls_envio> TO <fs_field>.
l_struc_raw_data+l_begin = <fs_field>.
l_begin = l_begin + ( <ls_structcomp>-length / 2 ). "1 char = 2 bytes in unicode system
ELSE.
EXIT.
ENDIF.
ENDDO.
l_struc_raw_data+l_begin = cl_bcs_convert=>gc_crlf.
APPEND l_struc_raw_data TO p_tabla_csv.
ENDLOOP.
ENDFORM.