Group by con una tabla interna en SAP (ABAP)
Hay muchas maneras de realizar un group by en ABAP, generalmente se usa un select para leer la tabla y después se realiza una instrucción loop con los datos para agruparlos individualmente. por lo cual se ejecutan dos ciclos. En el siguiente ejemplo realizaremos un reporte utilizando un group by en un solo ciclo, luego insertaremos los datos en una tabla interna para su posterior descarga en formato .txt con tabulación. El código a continuación muestra el proceso para esta tarea:
REPORT ywm001.
"structure of internal table
TYPES: BEGIN OF ty_item ,
lgnum TYPE lqua-lgnum,
matnr TYPE lqua-matnr,
can_mat TYPE i,
END OF ty_item.
DATA it_lqua TYPE TABLE OF ty_item. "internal table
DATA wa_lqua TYPE ty_item. "work area
START-OF-SELECTION.
"simple variables to make an into
DATA: matnr TYPE lqua-matnr,
can_mat TYPE i,
lgnum TYPE lqua-lgnum.
"select with group by into simple variables
SELECT matnr COUNT( * ) lgnum
FROM lqua
INTO (matnr, can_mat, lgnum)
WHERE lgnum = 'CAD' GROUP BY matnr lgnum.
"taking values
CLEAR wa_lqua.
wa_lqua-lgnum = lgnum.
wa_lqua-matnr = matnr.
wa_lqua-can_mat = can_mat.
"insert in an internal table
APPEND wa_lqua TO it_lqua.
ENDSELECT.
"function to export to txt tabulation
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'lcl_filename'
filetype = 'ASC'
write_field_separator = 'X'
TABLES
data_tab = it_lqua
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.
Comentarios
Publicar un comentario