{"id":1339,"date":"2024-01-30T08:00:31","date_gmt":"2024-01-30T07:00:31","guid":{"rendered":"http:\/\/192.168.20.3\/?p=1339"},"modified":"2024-12-09T15:56:02","modified_gmt":"2024-12-09T14:56:02","slug":"nuevas-funcionalidades-de-lenguaje-abap-ii","status":"publish","type":"post","link":"https:\/\/orekait.com\/es\/nuevas-funcionalidades-de-lenguaje-abap-ii\/","title":{"rendered":"Nuevas funcionalidades de lenguaje II<br> <span class=\"font-300\">Programaci\u00f3n ABAP<\/span>"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_row admin_label=&#8221;Imagen principal&#8221; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_image src=&#8221;https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/funcionalidades-abap.png&#8221; alt=&#8221;cloud-public&#8221; title_text=&#8221;funcionalidades-abap&#8221; admin_label=&#8221;Imagen principal&#8221; module_class=&#8221;post-img&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Cuerpo&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text admin_label=&#8221;Texto&#8221; _builder_version=&#8221;4.25.2&#8243; header_2_font_size=&#8221;24px&#8221; header_3_font_size=&#8221;20px&#8221; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>En este segundo art\u00edculo nos centraremos en algunas de estas nuevas funcionalidades que se han introducido en ABAP. Si te perdiste el primero puedes<a href=\"https:\/\/orekait.com\/blog\/nuevas-funcionalidades-del-lenguaje-i\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u00a0leerlo aqu\u00ed.<\/a><\/p>\n<h2>Programaci\u00f3n orientada a objetos<\/h2>\n<p>En programaci\u00f3n orientada a objetos, un\u00a0<strong>proceso DOWNCAST<\/strong>\u00a0es aquel en el un objeto de referencia tipificada hereda el tipo de un objeto m\u00e1s espec\u00edfico. Un\u00a0<strong>proceso UPCAST<\/strong>\u00a0es lo contrario, un objeto especifico se convierte en un objeto gen\u00e9rico.<\/p>\n<p>Para este caso queremos una definici\u00f3n de una estructura, obteniendo todos los elementos de esa estructura. Para ello, nos ayudaremos de la clase \u00abCL_ABAP_TYPEDESCR\u00bb, que es una subclase de la clase \u00abCL_ABAP_STRUCTDESCR\u00bb, por lo que necesitaremos servirnos del DOWNCAST para convertir la instancia de la clase padre \u00abCL_ABAP_STRUCTDESCR\u00bb en la instancia de la subclase \u00abCL_ABAP_TYPEDESCR\u00bb.<\/p>\n<div class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1363 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image002-.png\" alt=\"\" width=\"654\" height=\"108\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image002-.png 654w, https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image002--480x79.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 654px, 100vw\" \/><\/div>\n<p>En las versiones recientes podremos ejecutar todas estas sentencias en una sola l\u00ednea empleando para ello el comando \u00abCAST\u00bb, y de esta forma nos estar\u00edamos ahorrando un paso intermedio y la declaraci\u00f3n de \u00ablo_structure_comp\u00bb.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1359 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image004-1-.png\" alt=\"\" width=\"542\" height=\"72\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image004-1-.png 542w, https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image004-1--480x64.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 542px, 100vw\" \/><\/figure>\n<\/div>\n<h2>ABAP SQL:<\/h2>\n<p>En primer lugar, vamos a diferenciar entre Open SQL y Native SQL:<\/p>\n<ul>\n<li><strong>Open SQL<\/strong>\u00a0te permite acceder a las tablas de la base de datos declaradas en el diccionario ABAP independientemente de la plataforma de base de datos que utilice el sistema R\/3.<\/li>\n<li>Con\u00a0<strong>native SQL<\/strong>\u00a0podemos utilizar sentencias SQL de un programa ABAP y utilizar tablas de base de datos que no est\u00e1n administradas por el diccionario ABAP. Para emplear estas sentencias debemos emplear el comando EXEC SQL y ENDEXEC al finalizar.<\/li>\n<\/ul>\n<h2>CASE and colums:<\/h2>\n<p><strong>A partir de la versi\u00f3n 7.4, podemos emplear \u201cCASE\u201d en selecciones Open SQL<\/strong>. En el siguiente ejemplo seleccionamos 2 campos (PERNR y BEGDA) y un tercero que se define con el alias de BKRS_TEXT, que tomar\u00e1 el valor de \u201cMutilva\u201d, \u201cFrance\u201d o \u201cNo Company\u201d en funci\u00f3n del valor que contenga el campo \u201cBUKRS\u201d correspondiente a esa entrada. Podemos ver c\u00f3mo nos permite la posibilidad de crear la estructura \u201cls_0001\u201d in situ.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1367 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image005-.png\" alt=\"\" width=\"364\" height=\"276\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image005-.png 364w, https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image005--300x227.png 300w\" sizes=\"auto, (max-width: 364px) 100vw, 364px\" \/><\/figure>\n<\/div>\n<p>Como resultado obtendremos una estructura \u2018ls_0001\u2019 que a su vez contiene la\u00a0<strong>estructura del infotipo \u20180001\u2019<\/strong>, en la que, al ser el campo \u2018BUKRS\u2019 = ZMUT, nuestro campo \u2018bukrs_text\u2019 adquiere el valor de la constante \u2018Mutilva\u2019.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1371 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image006-1-.png\" alt=\"\" width=\"359\" height=\"143\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image006-1-.png 359w, https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image006-1--300x119.png 300w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><\/figure>\n<\/div>\n<h2>GROUP BY<\/h2>\n<p>La idea principal es, como su propio nombre indica, agrupar los datos que necesitamos, evitando un loop anidado. El primer \u2018Loop\u2019 es donde usamos el campo clave por el que vamos a agrupar:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1375 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image007-.png\" alt=\"\" width=\"664\" height=\"285\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image007-.png 664w, https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image007--480x206.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 664px, 100vw\" \/><\/figure>\n<\/div>\n<p>En el segundo \u2018Loop\u2019 es donde, recorriendo los diferentes grupos que hemos formado, a\u00f1adimos la l\u00f3gica:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1379 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image009-.png\" alt=\"\" width=\"599\" height=\"317\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image009-.png 599w, https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image009--480x254.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 599px, 100vw\" \/><\/figure>\n<\/div>\n<p>A continuaci\u00f3n, podemos ver las distintas iteraciones. Hemos agrupado nuestra tabla interna por el campo \u2018Werks\u2019. Por lo que en cada una de esas iteraciones podemos realizar la l\u00f3gica que deseamos, como puede ser mandar un mail a una serie de destinatarios, agrupar esas entradas en otra tabla interna, etc.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1383 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2024\/01\/image012-1.png\" alt=\"\" width=\"136\" height=\"277\" \/><\/figure>\n<\/div>\n<p>Esperamos que este art\u00edculo te haya resultado interesante. Si tienes alguna duda, no dudes en ponerte en\u00a0contacto\u00a0con nuestro equipo de HXM<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;M\u00e1s informaci\u00f3n&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p class=\"morado\">M\u00e1s informaci\u00f3n:<\/p>\n<p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/orekait.com\/es\/area-recursos-humanos&#8221; button_text=&#8221;M\u00e1s informaci\u00f3n&#8221; module_class=&#8221;entrada-btn&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#8156EA&#8221; button_bg_color=&#8221;RGBA(255,255,255,0)&#8221; button_border_color=&#8221;#8156EA&#8221; button_border_radius=&#8221;30px&#8221; button_font=&#8221;Plus Jakarta Sans|600|||||||&#8221; button_icon=&#8221;&#x24;||divi||400&#8243; button_icon_color=&#8221;#8156EA&#8221; button_on_hover=&#8221;off&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; button_text_color__hover_enabled=&#8221;on|desktop&#8221; button_text_color__hover=&#8221;#8156EA&#8221; button_bg_color__hover_enabled=&#8221;on|hover&#8221; button_bg_color__hover=&#8221;#8156EA&#8221; button_bg_enable_color__hover=&#8221;on&#8221; button_icon_color__hover_enabled=&#8221;on|hover&#8221; button_icon_color__hover=&#8221;#ffffff&#8221; url_new_window=&#8221;on&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_button][et_pb_divider show_divider=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||40px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; admin_label=&#8221;Noticias relacionadas titulo&#8221; module_id=&#8221;fondo-articulos&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#f7f7f7&#8243; width=&#8221;100%&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider show_divider=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;RGBA(255,255,255,0)&#8221; custom_margin=&#8221;||40px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_heading title=&#8221;Quizas te pueda interesar&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; title_level=&#8221;h2&#8243; title_text_align=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_heading][et_pb_divider show_divider=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||30px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row admin_label=&#8221;Noticias relacionadas&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; custom_margin=&#8221;-150px||||false|false&#8221; custom_margin_tablet=&#8221;0px||||false|false&#8221; custom_margin_phone=&#8221;0px||||false|false&#8221; custom_margin_last_edited=&#8221;on|desktop&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blog fullwidth=&#8221;off&#8221; posts_number=&#8221;3&#8243; include_categories=&#8221;current&#8221; show_author=&#8221;off&#8221; show_date=&#8221;off&#8221; show_pagination=&#8221;off&#8221; _builder_version=&#8221;4.25.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blog][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este segundo art\u00edculo nos centraremos en algunas de estas nuevas funcionalidades que se han introducido en ABAP. Si te perdiste el primero puedes\u00a0leerlo aqu\u00ed. Programaci\u00f3n orientada a objetos En programaci\u00f3n orientada a objetos, un\u00a0proceso DOWNCAST\u00a0es aquel en el un objeto de referencia tipificada hereda el tipo de un objeto m\u00e1s espec\u00edfico. Un\u00a0proceso UPCAST\u00a0es lo [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":1341,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"Lorem ipsum dolor sit amet consectetur adipiscing elit congue montes, imperdiet taciti erat elementum fermentum sem ante ultrices ridiculus, sagittis sociis egestas quisque ac semper quis odio. Aenean hendrerit ac metus dis nascetur aliquet mollis integer, rutrum vel laoreet posuere proin sagittis luctus est, tempus duis nisl ultrices parturient tempor praesent. Dignissim curabitur nascetur pellentesque augue fringilla pulvinar eros, tempus fames vehicula maecenas cubilia id, rutrum euismod integer ut scelerisque mus.\r\n\r\nVivamus auctor odio aenean rhoncus natoque dictum purus, volutpat pellentesque laoreet ridiculus consequat nisi varius euismod, augue platea convallis curae magnis taciti. Imperdiet nibh curabitur quisque orci consequat aenean pellentesque, cubilia duis senectus felis sed posuere tortor, magnis enim diam a odio sociis. Enim tellus nisl nec molestie augue luctus tempor habitant, nunc dictumst phasellus volutpat sem facilisis taciti, habitasse laoreet at turpis vel fermentum vulputate.","_et_gb_content_width":"","footnotes":""},"categories":[36,37],"tags":[],"class_list":["post-1339","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-recursos-humanos","category-sap-hxm"],"_links":{"self":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/1339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/comments?post=1339"}],"version-history":[{"count":10,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/1339\/revisions"}],"predecessor-version":[{"id":20664,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/1339\/revisions\/20664"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/media\/1341"}],"wp:attachment":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/media?parent=1339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/categories?post=1339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/tags?post=1339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}