{"id":16,"date":"2021-04-21T21:00:30","date_gmt":"2021-04-22T00:00:30","guid":{"rendered":"https:\/\/www.matiasvillagarcia.com\/blog\/?p=16"},"modified":"2024-11-26T19:52:27","modified_gmt":"2024-11-26T22:52:27","slug":"simple-alv-en-abap","status":"publish","type":"post","link":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/2021\/04\/21\/simple-alv-en-abap\/","title":{"rendered":"Simple ALV en ABAP"},"content":{"rendered":"\n<p>Les comparto una forma de hacer un ALV muy r\u00e1pido que incluye varias opciones \u00fatiles.<\/p>\n\n\n\n<p>Lo primero que tenemos que hacer es crear un reporte, en este caso lo llamaremos ZPRUEBA_ALV.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"294\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image.png\" alt=\"\" class=\"wp-image-17\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image.png 754w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-300x117.png 300w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/figure>\n\n\n\n<p>Con el reporte ya creado, hacemos un select simple como para tener datos para mostrar:<\/p>\n\n\n\n<p>Por ejemplo:<\/p>\n\n\n\n<p>SELECT&nbsp;*&nbsp;FROM&nbsp;sflight<br>&nbsp;&nbsp;INTO&nbsp;TABLE&nbsp;@DATA(lt_sflight)<br>&nbsp;&nbsp;UP&nbsp;TO&nbsp;1000&nbsp;ROWS.<br>IF&nbsp;sy-subrc&nbsp;=&nbsp;0.<br><br>ENDIF.<\/p>\n\n\n\n<p>Con lo cual nos quedar\u00eda de la siguiente forma:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"265\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-1.png\" alt=\"\" class=\"wp-image-18\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-1.png 700w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-1-300x114.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>Paso siguiente creamos el c\u00f3digo que nos interesa para mostrar el ALV:<\/p>\n\n\n\n<p>Primero declaramos los siguientes objetos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DATA: lo_table     TYPE REF TO cl_salv_table,\n      lo_functions TYPE REF TO cl_salv_functions_list,\n      lo_columns   TYPE REF TO cl_salv_columns_table.<\/code><\/pre>\n\n\n\n<p>Estos objetos usan clases (las que est\u00e1n despu\u00e9s de TYPE REF TO) para poder usar el ALV.<\/p>\n\n\n\n<p>Dentro del IF que valida si encontr\u00f3 datos el SELECT agregamos el siguiente c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  cl_salv_table=&gt;factory( IMPORTING r_salv_table = lo_table\n                          CHANGING t_table = lt_sflight ).\n\n  lo_columns = lo_table-&gt;get_columns( ).\n  lo_columns-&gt;set_optimize( abap_true ).\n  lo_functions = lo_table-&gt;get_functions( ).\n  lo_functions-&gt;set_all( ).\n\n  lo_table-&gt;set_screen_status(\n              pfstatus = 'ZSTATUS_GUI'\n              report = sy-repid\n              set_functions = lo_table-&gt;c_functions_all ).\n\n  lo_table-&gt;display( ).<\/code><\/pre>\n\n\n\n<p>La clase cl_salv_table es una clase que contiene m\u00e9todos relacionados a los ALV, con el m\u00e9todo factory lo que hacemos es obtener una nueva instancia del ALV, pasando como par\u00e1metros lo_table, que es el que declaramos previamente, y los datos a mostrar (lt_sflight) que es donde guardamos el resultado del SELECT.<\/p>\n\n\n\n<p>lo_columns = lo_table-&gt;get_columns( ). Con esta sentencia le indicamos que obtenga las columnas.<\/p>\n\n\n\n<p>lo_columns-&gt;set_optimize( abap_true ). Con esta sentencia le indicamos que el ALV ajuste autom\u00e1ticamente el tama\u00f1o de las columnas.<\/p>\n\n\n\n<p>lo_functions-&gt;set_all(&nbsp;). Usamos este m\u00e9todo para activar todas las funciones gen\u00e9ricas del ALV.<\/p>\n\n\n\n<p>Con la sentencia lo_table-&gt;set_screen_status, lo que hacemos es especificarle un STATUS (que crearemos en breve).<\/p>\n\n\n\n<p>Finalmente con el m\u00e9todo lo_table-&gt;display( ). Mostramos el ALV.<\/p>\n\n\n\n<p>Ahora agregamos el STATUS.<\/p>\n\n\n\n<p>Para esto desde la se38 podemos hacer click en el siguiente icono para abrir el \u00e1rbol de objetos:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"759\" height=\"113\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-2.png\" alt=\"\" class=\"wp-image-20\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-2.png 759w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-2-300x45.png 300w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/figure>\n\n\n\n<p>En la ventana de objetos hacemos click derecho Create&#8211;&gt;GUI STATUS:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"450\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-3.png\" alt=\"\" class=\"wp-image-21\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-3.png 500w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-3-300x270.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p>Completamos la pantalla que nos aparece y le damos OK:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"495\" height=\"354\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-4.png\" alt=\"\" class=\"wp-image-22\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-4.png 495w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-4-300x215.png 300w\" sizes=\"auto, (max-width: 495px) 100vw, 495px\" \/><\/figure>\n\n\n\n<p>Nos aparecer\u00e1 la siguiente pantalla:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"257\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-5-1024x257.png\" alt=\"\" class=\"wp-image-23\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-5-1024x257.png 1024w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-5-300x75.png 300w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-5-768x193.png 768w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-5.png 1166w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/figure>\n\n\n\n<p>Vamos al menu Extras&#8211;&gt;Adjust Template:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"329\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-6.png\" alt=\"\" class=\"wp-image-24\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-6.png 343w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-6-300x288.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><\/figure>\n\n\n\n<p>Nos aparecer\u00e1 otra ventana en donde seleccionamos &#8220;List Viewer&#8221; y le damos OK<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"418\" height=\"488\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-7.png\" alt=\"\" class=\"wp-image-25\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-7.png 418w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-7-257x300.png 257w\" sizes=\"auto, (max-width: 418px) 100vw, 418px\" \/><\/figure>\n\n\n\n<p>Haciendo esto se nos completara todo lo que necesitamos, todos lo que nos resta es activar el GUI STATUS.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-8-1024x283.png\" alt=\"\" class=\"wp-image-26\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-8-1024x283.png 1024w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-8-300x83.png 300w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-8-768x212.png 768w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-8.png 1161w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/figure>\n\n\n\n<p>El c\u00f3digo completo quedar\u00eda as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPORT zprueba_alv.\n\nDATA: lo_table     TYPE REF TO cl_salv_table,\n      lo_functions TYPE REF TO cl_salv_functions_list,\n      lo_columns   TYPE REF TO cl_salv_columns_table.\n\nSELECT * FROM sflight\n  INTO TABLE @DATA(lt_sflight)\n  UP TO 1000 ROWS.\nIF sy-subrc = 0.\n\n  cl_salv_table=&gt;factory( IMPORTING r_salv_table = lo_table\n                          CHANGING t_table = lt_sflight ).\n\n  lo_columns = lo_table-&gt;get_columns( ).\n  lo_columns-&gt;set_optimize( abap_true ).\n  lo_functions = lo_table-&gt;get_functions( ).\n  lo_functions-&gt;set_all( ).\n\n  lo_table-&gt;set_screen_status(\n              pfstatus = 'ZSTATUS_GUI'\n              report = sy-repid\n              set_functions = lo_table-&gt;c_functions_all ).\n\n  lo_table-&gt;display( ).\n\nENDIF.<\/code><\/pre>\n\n\n\n<p>Finalmente si ejecutamos nuestro reporte vemos lo siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"935\" height=\"994\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-9.png\" alt=\"\" class=\"wp-image-27\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-9.png 935w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-9-282x300.png 282w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-9-768x816.png 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/figure>\n\n\n\n<p>Si por ejemplo queremos bajar el listado a un archivo .XLSX, hacemos click en el siguiente bot\u00f3n y seleccionamos como aparece en la pantalla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"141\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-10.png\" alt=\"\" class=\"wp-image-28\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-10.png 791w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-10-300x53.png 300w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-10-768x137.png 768w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"381\" height=\"288\" src=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-11.png\" alt=\"\" class=\"wp-image-29\" srcset=\"https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-11.png 381w, https:\/\/www.matiasvillagarcia.com\/blog\/wp-content\/uploads\/2021\/04\/image-11-300x227.png 300w\" sizes=\"auto, (max-width: 381px) 100vw, 381px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Les comparto una forma de hacer un ALV muy r\u00e1pido que incluye varias opciones \u00fatiles. Lo primero que tenemos que hacer es crear un reporte, en este caso lo llamaremos ZPRUEBA_ALV. Con el reporte ya creado, hacemos un select simple como para tener datos para mostrar: Por ejemplo: SELECT&nbsp;*&nbsp;FROM&nbsp;sflight&nbsp;&nbsp;INTO&nbsp;TABLE&nbsp;@DATA(lt_sflight)&nbsp;&nbsp;UP&nbsp;TO&nbsp;1000&nbsp;ROWS.IF&nbsp;sy-subrc&nbsp;=&nbsp;0. ENDIF. Con lo cual nos quedar\u00eda [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-abap"],"_links":{"self":[{"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":5,"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":686,"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/16\/revisions\/686"}],"wp:attachment":[{"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matiasvillagarcia.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}