{"id":2453,"date":"2023-07-12T08:00:31","date_gmt":"2023-07-12T06:00:31","guid":{"rendered":"http:\/\/192.168.20.3\/?p=2453"},"modified":"2024-12-09T16:44:38","modified_gmt":"2024-12-09T15:44:38","slug":"sap-pi-tratamiento-de-contextos-en-el-mapeo-grafico","status":"publish","type":"post","link":"https:\/\/orekait.com\/es\/sap-pi-tratamiento-de-contextos-en-el-mapeo-grafico\/","title":{"rendered":"SAP PI<br> <span class=\"font-300\">Tratamiento de contextos en el mapeo gr\u00e1fico<\/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\/2023\/07\/mapeo-pi.png&#8221; alt=&#8221;cloud-public&#8221; title_text=&#8221;mapeo-pi&#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<h2>Ejemplo de UDF \u00fatiles<\/h2>\n<p>Despu\u00e9s de ver c\u00f3mo hacer tratamiento de mensajes usando los cambios expl\u00edcitos de contexto y las funciones de nodo proporcionadas por\u00a0<a href=\"https:\/\/orekait.com\/blog\/desarrollo-y-configuracion-de-mapeos-java-en-sap-pi\/\" target=\"_blank\" rel=\"noreferrer noopener\">SAP PI<\/a>\u00a0en los apartados\u00a0<a href=\"https:\/\/orekait.com\/blog\/sap-pi-mapeo-de-valores-dentro-del-graphical-mapping-editor\/\" target=\"_blank\" rel=\"noreferrer noopener\">anteriores<\/a>, vamos a profundizar en el tratamiento de los contextos mediante funciones definidas por el usuario para casos m\u00e1s complicados. Este apartado incluye un ejemplo de UDF para quitar duplicados dentro de un contexto, as\u00ed como algunas indicaciones para otras funciones que pueden resultar \u00fatiles cuando estamos tratando contextos en la cola en PI, como la supresi\u00f3n de contextos o agrupaci\u00f3n de registros por contexto.<\/p>\n<h2 class=\"has-medium-font-size\"><strong>Quitar duplicados dentro de un contexto<\/strong><\/h2>\n<p>En este primer ejemplo, queremos\u00a0<strong>eliminar duplicados<\/strong>\u00a0en el campo fecha dentro de un mismo contexto. No podemos usar la funci\u00f3n\u00a0<em>removeContext<\/em>s() para ordenar los registros y quitar duplicados, puesto que necesitamos hacerlo dentro de cada contexto por separado. Por lo tanto,\u00a0<strong>crearemos una funci\u00f3n propia (UDF)<\/strong>\u00a0para hacerlo.<\/p>\n<p>Lo que queremos, en la salida de la funci\u00f3n, es tener el mismo n\u00famero de contextos, pero eliminar las filas duplicadas.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2461 \" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image001-5.png\" alt=\"\" width=\"205\" height=\"322\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image001-5.png 213w, https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image001-5-191x300.png 191w\" sizes=\"auto, (max-width: 205px) 100vw, 205px\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Para esto, el par\u00e1metro de entrada a la funci\u00f3n ser\u00e1 la lista de fechas en formato\u00a0<em>string<\/em>\u00a0y la salida, la lista de resultados, manteniendo los cambios de contexto de la lista inicial, pero sin los valores duplicados.<\/p>\n<p><strong>Recordemos que para tratar los datos a nivel de contexto debemos elegir\u00a0<em>All Values of a Context<\/em>\u00a0como tipo de ejecuci\u00f3n al crear la funci\u00f3n.<\/strong><\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2465 \" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/imagen002-.png\" alt=\"\" width=\"472\" height=\"306\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n<p>El c\u00f3digo de la funci\u00f3n ser\u00e1 el siguiente, haciendo un bucle dentro de los contextos y a\u00f1adiendo \u00fanicamente los valores \u00fanicos, descartando los duplicados, pero sin modificar los contextos existentes.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2469 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image004-.png\" alt=\"\" width=\"708\" height=\"152\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image004-.png 708w, https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image004--480x103.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 708px, 100vw\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n<p>El resultado ser\u00e1 una reducci\u00f3n del n\u00famero de valores en la cola, manteniendo los cambios de contexto (marcados en gris en la cola).<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2473 size-full\" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image06-1.png\" alt=\"\" width=\"262\" height=\"365\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image06-1.png 262w, https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image06-1-215x300.png 215w\" sizes=\"auto, (max-width: 262px) 100vw, 262px\" \/><\/figure>\n<\/div>\n<h2>\u00a0<\/h2>\n<h2 class=\"has-medium-font-size\"><strong>Eliminar y a\u00f1adir cambios de contexto<\/strong><\/h2>\n<p>En la cola de los mapeos los valores de cambio y supresi\u00f3n de contextos son constantes. Se puede acceder a ellos usando:\u00a0<strong>ResultList.SUPPRESS<\/strong>\u00a0y\u00a0<strong>ResultList.CC<\/strong>\u00a0en una UDF.<\/p>\n<p>Si queremos realizar acciones para los cambios de contexto o contextos eliminados por otra funci\u00f3n de tratamiento, solo tendremos que filtrar por estos valores y a\u00f1adir a continuaci\u00f3n el c\u00f3digo seg\u00fan nuestras necesidades (eliminar cambios de contexto seg\u00fan una condici\u00f3n o a\u00f1adir nuevos contextos previamente eliminados, por ejemplo).<\/p>\n<p>public void remove(String[] input, ResultList result, Container container) {<\/p>\n<p>for (int i = 0; i &lt; input.length; i++) {<\/p>\n<p>if (input[i].equals(ResultList.CC)) {<\/p>\n<p>\/\/ c\u00f3digo para los cambios de contexto<\/p>\n<p>} else if (input[i].equals(ResultList.SUPPRESS)) {<\/p>\n<p>\/\/ c\u00f3digo para contextos eliminados<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>De la misma manera, podemos usar el c\u00f3digo\u00a0<strong>addValue(ResultList.CC)<\/strong>\u00a0cuando queramos introducir un cambio de contexto dadas ciertas condiciones de entrada, por ejemplo, despu\u00e9s de valores duplicados, tras un cambio de valor para separar listas o a partir de un valor constante dado en la entrada.<\/p>\n<h2 class=\"has-medium-font-size\"><strong>Agrupar registros<\/strong><\/h2>\n<p>A veces, se hace necesario agrupar registros de manera diferente al contexto original del mensaje de entrada. En este ejemplo tenemos los usuarios de tres empleados y el correspondiente al responsable que tienen asignado. Necesitamos mapear estos empleados a una estructura de salida en la que los tres empleados se agrupen en un solo contexto bajo el nombre de su responsable de departamento.<\/p>\n<p>Har\u00e1 falta una\u00a0<strong>UDF<\/strong>\u00a0que elimine los contextos y agrupe los usuarios bajo un mismo contexto para la estructura formSubject, a la vez que se mapea la formSender como contexto principal con el responsable.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2477 \" src=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image007-5.png\" alt=\"\" width=\"397\" height=\"453\" srcset=\"https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image007-5.png 460w, https:\/\/orekait.com\/wp-content\/uploads\/2023\/07\/image007-5-263x300.png 263w\" sizes=\"auto, (max-width: 397px) 100vw, 397px\" \/><\/figure>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Con este tercer art\u00edculo terminamos la serie de tratamiento de contextos en el mapeo gr\u00e1fico de SAP PI. No dudes en contactar con el equipo de UX\/I para aclarar cualquier duda.<\/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-personalizacion&#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>Ejemplo de UDF \u00fatiles Despu\u00e9s de ver c\u00f3mo hacer tratamiento de mensajes usando los cambios expl\u00edcitos de contexto y las funciones de nodo proporcionadas por\u00a0SAP PI\u00a0en los apartados\u00a0anteriores, vamos a profundizar en el tratamiento de los contextos mediante funciones definidas por el usuario para casos m\u00e1s complicados. Este apartado incluye un ejemplo de UDF para [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":2455,"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":[58,51],"tags":[],"class_list":["post-2453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sap-pi-process-integration","category-user-experience-integracion"],"_links":{"self":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/2453","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=2453"}],"version-history":[{"count":7,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/2453\/revisions"}],"predecessor-version":[{"id":20774,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/posts\/2453\/revisions\/20774"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/media\/2455"}],"wp:attachment":[{"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/media?parent=2453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/categories?post=2453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orekait.com\/es\/wp-json\/wp\/v2\/tags?post=2453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}