SAP Netweaver / ABAP                  Notas técnicas / Tips / Tutorials

Cómo crear una vista de mantenimiento para una tabla y asociarla a una transacción en SAP

Conozca cómo modificar el contenido de una tabla mediante la creación de una vista de mantenimiento en SAP y cómo asociarla luego a una transacción.

Cuando se presentan situaciones en donde es necesario modificar el contenido de uno o de varios campos en una tabla, una manera sencilla de realizar estas modificaciones es por medio de una Vista de mantenimiento creada previamente. 

Posteriormente, si se desea acceder en forma más directa a la vista de mantenimiento, también puede ser conveniente y útil asociarla a una transacción.

Los pasos a realizar para ambas tareas se detallan en el artículo presente.

Pasos para crear la Vista de mantenimiento

El primer paso será acceder a la transacción SE11, donde será necesario ingresar el nombre de la tabla para la cual se desea crear la vista de mantenimiento.

Asumiendo que la tabla fue creada previamente, bastará con ingresar el nombre de la misma en el campo correspondiente.

En este caso, a modo de ejemplo, la tabla tiene como nombre ZDI_EMPLEADOS.

SAP-transaccion-SE11_1

Luego será necesario seleccionar Change.

En la pantalla obtenida, se mostrará la estructura de la tabla y dirigirse a Utilities → Table Maintenance Generator.

SAP-tip-generar-Vista-mantenimiento_2

La próxima pantalla que aparecerá en este proceso será similar a la siguiente:

SAP-TIP-vista-mantenimiento-find-screen_3

Como se muestra en la figura precedente, será necesario seleccionar la opción Find Scr. Number(s).

En la mayoría de los casos bastará con dejar la opción por defecto que es la primera:

SAP-TIP-maint-screen-number_4

Finalmente, habrá que seleccionar el icono correspondiente a crear:

SAP-TIP-crear-vista-mantenimiento_5

Luego se deberá seleccionar el motivo por el cual se está creando la vista de mantenimiento:

SAP-TIP-vista-mant-razones-cambio_6

Es recomendable en la pantalla siguiente, dejar los valores que se muestran por defecto:

SAP-TIP-vista-razones-cambio-detail_7

El mensaje siguiente informa que la vista ha sido creada satisfactoriamente.

SAP-TIP-confirmacion-vista-mantenimiento-creada_8

Finalmente, para corroborar que la vista de mantenimiento ha sido creada correctamente, bastará con acceder a la transacción SM30 y colocar el nombre correspondiente a la tabla para la cual se ha creado la vista de mantenimiento, como se muestra en la figura siguiente:

SAP-TIP-vista-mantenimiento-transaccion-SM30_9-1

 

A partir de aquí, se podrán visualizar los datos al entrar a través de la opción Display o alterar los mismos entrando por la opción Maintain.

 

Pasos para asociar la vista de mantenimiento a una transacción

Para poder asociar la vista de mantenimiento creada previamente a una transacción, los pasos a seguir serán los siguientes:

Acceder a la transacción SE93:

SAP-TIP-vista-mantenimiento-transacion-SE93_10-1

En esta pantalla se escribirá el nuevo nombre de la transacción y luego seleccionar Create (en este caso el nombre de la transacción será el mismo que el de la vista de mantenimiento y el de la tabla para que sea más claro el ejemplo, de todas formas, se podría asignar un nombre diferente).

Habrá que ingresar una descripción (en este caso se eligió EMPLEADOS) y luego seleccionar la opción Transaction with parameters.

SAP-TIP-transaction-with-parameters_11-1

En la siguiente pantalla será necesario configurar los siguientes parámetros:

  • Transaction: se indtroducirá SM30 (que corresponde a la transacción de vistas de mantenimiento).
  • Name of screen field (debajo de Default Values, abajo del lado izquierdo): se completará con VIEWNAME y se colocará en el parámetro Value, el nombre de la vista de mantenimiento creada (en este caso: ZDI_EMPLEADOS).
  • Finalmente será necesario tildar la opción Inherit GUI atributes.

SAP-TIP-asociar-transaccion_12-2

 

Resta que se guarden los cambios realizados presionando SAP-TIP-vista-mantenimiento-boton-SAVE

SAP solicitará información correspondiente al Package en el cual se está trabajando y el usuario responsable, como se presenta en la figura siguiente:

SAP-TIP-vista-mantenimiento-crear-paquete_13

Posteriormente, se solicitará información referente a la orden de transporte:

SAP-TIP-vista-mantenimiento-orden-transporte_14

Solo restará ingresar el nombre de la transacción recientemente creada y verificar que esté funcionando correctamente:

 

SAP-TIP-ingresar-transaccion-vista-mantenimiento_15-1

Como último paso, ya a partir de aquí se puede acceder a la vista de mantenimiento creada previamente accediendo a la transacción que fue creada recientemente, como se muestra en la siguiente pantalla:

SAP-TIP-vista-mantenimiento-final_16-1

n_Diego-Perez Especialista ABAP

Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


 

Cómo investigar una orden de transporte importada en el sistema SAP

Conozca una manera de obtener información sobre órdenes de transporte importadas en el sistema SAP, y aprenda, además, cómo investigar su origen.

A veces se presentan situaciones en donde de forma casi espontánea alguna funcionalidad de un sistema SAP deja de estar operativa o genera errores. Este tipo de eventos es normal que ocurra en las fases de implementación y desarrollo de procesos, por lo que generalmente se puede aislar e identificar la falla. Sin embargo, otras veces se detecta que el error no proviene de ninguno de los objetos que los equipos de desarrollo estaba manipulando. Ante estas situaciones, el próximo paso es revisar el "log" de transporte del objeto conflictivo.

Leer más...

Qué artículos y temas interesan más a los profesionales SAP y ABAP?

A la hora de visitar Teknodatips, los programadores, consultores o líderes SAP y ABAP, encuentran una gama muy variada de notas técnicas, tutoriales, tips, blogs, artículos conceptualizadores, etc.
Pero . . . ¿ cuáles son las preferencias de nuestros lectores? ¿Cuáles son los tips más visitados? ¿Cuáles son los temas que más movilizan a la comunidad SAP?

La siguiente es una estadística (parcial) de Hits por artículo, y a continuación, una estadísticas de hits organizada por tema. Hemos considerado los últimos 10 meses, ponderando, desde ya,  el tiempo de publicación que lleva cada artículo. Obviamente los datos nunca son precisos dado que influye el posicionamiento de cada artículo en los buscadores, la época de publicación, la cantidad de referencias externas al artículo, etc. No obstante, sirve para extraer alguna tendencia de cuáles son los temas "hot", frente a otros que no lo son tanto o que abordan temas técnicos muy específicos en una determinada área.

 

Teknodatips: Hits por artículo (parcial), últimos 10 meses

hit_por_articulo_600

Teknodatips: Hits por tema (parcial) últimos 10 meses

hits_por_tema_400

Los números hablan por sí mismos. Los temas como SAP HANA,  manejo de ampliaciones (enhancements) y Workflow son claramente temas muy interesantes para la comunidad SAP.

Sin embargo, todavía se llevan la mayor atención los temas tradicionales de programación como administración de cambios, (Change Management), y manejo de tablas.

 

Cómo ingresar texto en ABAP a través de un editor y guardarlo en una tabla

Descubra cómo ingresar texto en un programa ABAP de forma interactiva a través de un editor y guardarlo en una tabla interna para su procesamiento posterior.

En muchas oportunidades se le exige a los usuarios que ingresen al sistema textos explicativos sobre ciertas acciones que se llevaron a cabo o como simples descripciones de procesos o decisiones. Por ejemplo, es muy común que un usuario que rechace una Orden de Compra de materiales quiera o deba informar el motivo por el cual llegó a esa conclusión para así poder corregir el error rápidamente. 

A continuación se detallará una forma sumamente rápida y sencilla de implementar esta funcionalidad gracias a una función estándar de la API de SAP.

Uso de la función TERM_CONTROL_EDIT

1. En principio se procederá a testear la función. Ir a la transacción SE37 e ingresar TERM_CONTROL_EDIT. Luego hacer click en el botón “Test”.

ABAP-Function-Builder-Initial-Screen-1

2. La función tiene dos parámetros de Importing, un título para la ventana del editor y el idioma. Completar ambos campos y hacer click en “Execute”.

 

ABAP-Test-Function-Module-Initial-Screen

3. El resultado es un POP-UP con un editor de texto bastante cómodo e intuitivo. Se puede ingresar texto, importar y exportar archivos, deshacer y rehacer acciones; lo cual lo hace altamente funcional.

ABAP-MOTIVO-DE-RECHAZO

 

4. Finalmente cuando el usuario confirma la operación, la función retorna una tabla con el texto ingresado.

ABAP-Structure-Editor-Display

Para tener en cuenta ...

  • Usando la función TERM_CONTROL_EDIT, si el usuario en vez de confirmar la operación la cancela, se disparará la excepción USER_CANCELLED. Por este motivo siempre es necesario usar la clausula “EXCEPTION” en la llamada a la misma y consultar el valor del SY-SUBRC para poder reaccionar antes esta situación.

ABAP-Editor-Change-Report-1

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


Cómo solucionar un error en la edición de un template en un Smartform en SAP

Conozca cómo realizar los cambios adecuados en un Smartform en SAP para solucionar el error RC = CM, FORM = CONVERT_METRIC, NR = 9, generado en el mismo por la edición incorrecta del tamaño de una línea del template. 

En ocasiones, al desarrollar un Smartform en SAP puede ocurrir que, mientras se está editando el Template de una ventana cualquiera, al ingresar el alto o el ancho de una linea (Height o Width) requerido para ese diseño, se cometa un error de tipeo en el momento de escribir la unidad. Por ejemplo, en vez de escribir LN (correspondiente al tamaño de línea) se escriba LM por error, como se muestra en la imagen siguiente:

ABAP-Smartform-1

SAP permitirá grabar los cambios sin ningún inconveniente, pero cuando se desee editar o ver nuevamente dicho Template, aparecerá el siguiente error:

ABAP-Smartform-2

 

Al presionar el botón ABAP-Smartform-boton-exit , se producirá de manera abrupta la finalización de la transacción de Smartforms iniciada para el smartform en cuestión.

Pasos para resolver el error

Para solucionar este inconveniente (debido a que no se podrá editar el Template para modificar el valor que fue ingresado erróneamente), realizar el procedimiento siguiente:

1) En primer lugar será necesario Descargar el formulario a formato XML.

Para ello habrá que seleccionar Utilities y luego Download Form, como se muestra en la siguiente imagen:

 

ABAP-Smartform-3

2) En la siguiente pantalla ingresar un nombre para el fomulario, que describa el contenido en formato XML:

ABAP-formulario-XML-Smartform-4

 

Nota: Será necesario disponer de un editor que sea capaz de interpretar código XML, por ejemplo Notepad++ o Writer de OpenOffice.

3) Como se puede apreciar en la siguiente imagen (imagen 1.4), el error se detecta entre los “tags” <U_LHEIGHT> y </U_LHEIGHT>, remarcadas en la figura:

 

ABAP-codigo-tags-Smartform-5

Es importante señalar que para encontrar el error, será necesario realizar un recorrido en el código para detectar las etiquetas que corresponden al sector que presenta el inconveniente planteado.

4) Observando el código anterior, se detecta el error en la línea siguiente:

<U_LHEIGHT> LM</U_LHEIGHT>

Nota: También es posible que se hubiera encontrado el error entre los tags <U_WIDTH> y </U_WIDTH> si el error se hubiera presentado al especificar el ancho del Smartform.

5) Para corregir el error, en este caso sólo bastará con sustituir LM por LN y guardar el archivo XML.

 

Importante: Sería conveniente, previo a la modificación, realizar un backup del archivo que se va a editar, porque si se edita el archivo incorrectamente se podría dañar el Smartform.

 

6) Luego, resta subir el archivo XML nuevamente al sistema SAP por medio de Utilities Upload y seleccionar el nombre del archivo XML que se ha editado, como se muestra en la imagen que sigue:

ABAP-upload-Smartform-6

 

7) Posteriormente, será necesario realizar una confirmación para subir el XML a SAP nuevamente  y salir de la transacción Smartforms.

ABAP-confirmacion-XML-Smartform-7

8) Luego de subir el XML modificado a SAP, será necesario guardar los cambios (botón ABAP-smatforms-boton-save) para que los mismos surtan efecto

9) Finalmente, volver a acceder a la transacción Smartforms para comprobar que el error haya quedado solucionado.

 

Siguiendo los pasos mencionados anteriormente y realizando los cambios de manera adecuada, garantiza una solución al inconveniente presentado en este tip.

n_Diego-Perez Especialista ABAP

Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


 

Generación de archivos PDF desde SPOOL en SAP

¿Qué posibilidades ofrece SAP para generar archivos en formato PDF y cómo puedo generarlos a partir de OTF y ABAP Lists en el SPOOL?

Introducción: PDF (Portable Document Format) es un estándar sólido y universalmente aceptado para captura, visualización e intercambio de información multiformato, desde celulares hasta sistemas de misión crítica. Existen varias posibilidades, sobre todo en las versiones más nuevas de Netweaver, para producir salida en formato PDF desde un sistema SAP.

Es interesante conocerlas todas dado que difieren bastante conceptualmente al igual que su ámbito de aplicación y limitaciones. Las opciones más comunes en SAP para la generación de PDF´s son:

1. Conversión desde el SPOOL (programa RSTXPDFT4)

Si se trata simplemente de convertir a formato PDF documentos que ya están en el “spool”, es aplicable el método descripto en este tip. Es relativamente sencillo pero no es automático ni directo, se trata de una conversión.  El programa provisto por SAP, RSTXPDFT4, levanta los archivos de spool tanto ABAP Lists u OTF,y aplica un proceso de conversión basado en Function Modules de ABAP. (CONVERT_OTFSPOOLJOB_2_PDF, CONVERT_ABAPSPOOLJOB_2_PDF )

LOS PASOS A SEGUIR para esta operación SE DETALLAN MAS ABAJO EN ESTE TIP.

 

2. SAP Interactive Forms by Adobe

Con Netweaver 2004 (rel. 6.4) SAP propone la tecnología “SAP Interactive Forms by Adobe”, que es la forma más real y genuina de generar PDF's desde SAP, en forma NATIVA y sin mediar programas convertidores. Esta forma de trabajar con PDF´s está descripta en detalle en el tip publicado por Teknoda en el 2007. Cómo crear formularios de impresión basados en PDF e imprimirlos desde un programa ABAP


3. Configurar tipo de dispositivo "PDF1"

A partir la versión 4.6D es posible configurar un tipo de dispositivo virtual “PDF1”, que generará una salida PDF para archivar, enviar por mail, etc. Este se configura al igual que las impresoras, como una más. Existen algunas restricciones para la conversión a PDF a través del “device type”. (se tratará en próximos tips).

 

4. "Function Modules" de Conversión

Existen “function modules” de conversión desde documentos OTF y ABAP lists hacia formato PD binary, que pueden invocarse para customizar/ automatizar la generación de PDF´s . (también lo trataremos en futuros tips).

 

Método 1: Generación de PDF´s a partir de spool con el programa RSTXPDFT4

Pasos a seguir:

a. Utilizando la transacción “SP01” identifique los archivos que desea convertir.

sp01

 

b. Desde la transacción SE38, invoque el programa RSTXPDFT4 y ejecútelo (Execute (F8)).

rstxpdft4_spool_to_pdf

 

c .Indique en el dialog box:

  • el número de entrada de spool a convertir.
  • Tilde el casillero “Download PDF File”
  • Ingrese el nombre que le dará al archivo PDF
  •  

     

d. Indique Execute (F8)

Obtendrá una ventana para seleccionar el destino del archivo.

pdf_location

 

e. Una vez indicado “Save” el archivo quedará guardado en esa ubicación.

pdf_result

 

 

Para tener en cuenta:

 

  • La tabla “TSP01 contiene las entradas con los requerimientos en spool.
  • Unas líneas sobre SAP Interactive Forms

 

La tecnología más reciente para la creación de formularios en SAP, es la solución SAP Interactive Forms by Adobe. Esto permite crear formularios interactivos y formularios de impresión basados en Adobe PDF para optimizar los procesos de impresión de las aplicaciones.

El punto interesante en el uso de esta tecnología es su compatibilidad con las personalidades ABAP y JAVA del SAP Netweaver Application Server. Actualmente, el uso de los formularios de impresión basados en PDF, puede reemplazar a los SmartForms, del lado ABAP, y además, potenciar a las Web Dynpro, del lado de Java, así como a las Web Dynpro for ABAP en la personalidad ABAP, usando formularios interactivos.

Para tal efecto esta nueva solución SAP Interactive Forms by Adobe (disponible a partir de SAP Netweaver 04) utiliza el Adobe LiveCycle Designer, que es una herramienta de diseño que permite la creación de formularios utilizando UI Elements, de manera muy intuitiva y fácil de utilizar, y está totalmente integrado en el ABAP Workbench y en el Netweaver Developer Studio. Para leer más sugerimos Cómo crear formularios de impresión basados en PDF e imprimirlos desde un programa ABAP

Cómo habilitar la edición de un programa ABAP bloqueado ante una salida inesperada del sistema

Conozca cómo habilitar la edición de cualquier programa ABAP, o de cualquier otro objeto como una tabla o un SmartForm, que ha quedado bloqueado por una desconexión inadecuada de la sesión iniciada en un sistema SAP.

Existen casos en que por diversos motivos no podemos "deslogonearnos" correctamente de una sesión iniciada en el sistema SAP, ya sea porque la VPN no responde, la computadora se reinicia sin previo aviso, o algún otro motivo inesperado. 

El sistema SAP protege datos si múltiples usuarios intentan cambiar esos datos simultáneamente. Esto garantiza la integridad y consistencia de la información aún cuando un gran número de de usuarios estén conectados al mismo sistema SAP. Se vale para esto, entre otras cosas, de mecanismos de bloqueo.

Por ejemplo, solamente un desarrollador único (una sesión) puede cambiar el código fuente de un programa ABAP al mismo tiempo, y además, sólo a un usuario se le permite visualizar la pantalla de mantenimiento de una tabla de customizing en particular.  Pero, si el usuario estaba editando algún objeto, por ejemplo un progrma ABAP, y en ese momento se produce una salida inesperada de la sesión del usuario que lo estaba editando, el mismo quedará en estado bloqueado.  Esto significa que el programa no podrá ser accedido para editarlo nuevamente (ni por este usuario ni por ningún otro) debido a que el mismo ya está "tomado" por el usuario que no pudo realizar la salida del sistema de manera adecuada, y se emite el siguiente mensaje de error:

ABAP-Mensaje-Error-bloqueo-1

Se hace necesario entonces, en algunos casos, disponer de un mecanismo que permita desbloquear un objeto que el sistema registra como  "tomado" cuando en realidad la sesión que gestionaba sobre él se ha extinguido. Para ésto se utiliza la transacción SM12.

 

Cómo desbloquear un objeto "tomado" por otro usuario

Una vez que el usuario realiza el login,

1) Acceder a la transacción SM12:

ABAP-bloqueo-programa-3

 

3) En el campo "User Name", colocar el usuario correspondiente (por defecto aparecerá el usuario con el cual estamos logueados). Al seleccionar la opción “List”, se accederá a un listado con los objetos bloqueados para el usuario que se esté analizando.

4) En la siguiente imagen, a modo de ejemplo, se lista un único objeto correspondiente al usuario “80487” y el programa relacionado llamado “INVOICE”.

ABAP-bloqueo-programa-4

5) Al seleccionar el ícono remarcado en la pantalla anterior, se solicitará la confirmación para desbloquear el objeto:

ABAP-bloqueo-programa-5

6) En el momento de confirmar la supresión de esta entrada, se presenta la siguiente pantalla:

ABAP-mensaje-de-bloqueo-SM12

 

7) Una vez confirmado el desbloqueo, el objeto queda removido de la lista, como se muestra en la figura siguiente:

ABAP-bloqueo-programa-6

8) Completados los pasos anteriores, se podrá volver a editar el programa ABAP sin inconvenientes.

Consideraciones

Si bien no es un escenario muy frecuente, puede existir que un entorno de prueba o "laboratorio" se ingrese al mismo sistema SAP con el  mismo usuario. En esos casos va a existir más de una sesión activa en el sistema SAP, iniciada por el mismo usuario.

También en este escenario puede presentarse la situación de bloqueo de algún programa ABAP, como se trató en los párrafos anteriores.

A continuación se consideran algunas alternativas presentadas en este escenario que permiten el desbloqueo de "ese" programa ABAP tomado para poder seguir editándolo:

  • 1) Una alternativa posible para desbloquear ese objeto sería, que al momento iniciar sesión nuevamente en SAP, en la pantalla que se presenta para realizar el login, se seleccione la primera opción presentada. Esta manera de inicio de sesión implicará "desloguear" todas las sesiones en el sistema ya iniciadas con ese usuario, como se muestra en la pantalla siguiente.

ABAP-bloqueo-programa-opciones-1

Utilizar el método anterior para poder editar el programa nuevamente implicaría desconectar "de prepo" al resto de los que ya iniciaron sesión con el mismo usuario, y pudieran estar trabajando en el sistema con otras tareas, por lo que ésta no resulta la alternativa más acertada.

  • 2) otra alternativa más apropiada es al momento de iniciar sesión elegir entre las opciones presentadas, la segunda, y permitir de esa manera al resto de los que iniciaron sesión con el mismo usuario, seguir logueados en el sistema. La figura siguiente muestra la opción a elegir en este caso:

ABAP-bloqueo-programa-opciones-2

Una vez dentro del sistema, será necesario proceder como fue explicado en párrafos anteriores, accediendo a la transacción SM12 y luego ir siguiendo los pasos indicados.


n_Diego-Perez Especialista ABAP

 

 

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


 

Cómo mostrar múltiples mensajes en una única ventana, en programas ABAP

Conozca un modo de mostrar múltiples mensajes de diferentes tipos en una única ventana en programas ABAP, utilizando la función standard de SAP C14ALD_BAPIRET2_SHOW.

Resulta trivial mostrar al usuario el status erróneo del proceso que acaba de disparar para un documento comercial determinado. De hecho el problema se resuelve con una única sentencia MESSAGE … que mostrará un mensaje potencialmente expresivo y acorde a los estándares de SAP. 

Sin embargo, cuando se procesan muchos documentos en un reporte al mismo tiempo, por ejemplo en un ALV, es complicado mostrar un resumen de mensajes indicando los resultados individuales.

Una posibilidad implicaría el desarrollo de una dynpro que muestre este resumen en un “modal dialog box” , pero se requiere un esfuerzo adicional por la codificación manual necesaria para ello y la mayoría de las veces no se dispone de ese tiempo extra.

Entre algunas alternativas de solución, este artículo detalla la utilización de una función standard apropiada para mostrar mensajes de BAPIs, que tiene una interfaz altamente estandarizada y fácil de usar.

Uso de la función C14ALD_BAPIRET2_SHOW

1. Ir a la transacción SE37 para testear la función. Escribir el nombre: C14ALD_BAPIRET2_SHOW y hacer click en “Test/Execute” . ABAP-Test-function-module-boton-execute

Se podrá ver que solo existe un parámetro del tipo TABLES. En él se escribirán los datos propios a cada mensaje como se explica a continuación.

Notar que la estructura de la tabla es del tipo BAPIRET2, utilizada para recibir los mensajes en la mayoría de las BAPIs.

 

ABAP-Test-function-module

2. Hacer click en ABAP-Test-function-module-boton-Entries para comenzar a llenar la tabla. Se podrá ver la estructura de la misma, que se completa de la siguiente forma:

a. TYPE (T): Es el tipo de mensaje, ej: ‘E’, ‘W’, ‘I’, etc. Esto impactará en un ícono a modo de “semáforo” de acuerdo a la gravedad del tipo de mensaje elegido.

b. ID: El nombre de la Clase de Mensajes de la cual proviene el mensaje que se quiere mostrar, ej: ZMSJ_CLASS01.

c. NUMBER (NUM): El número de mensaje que se quiere mostrar en la clase de mensaje especificada en el ítem anterior, ej: 001 o 127.

d. MESSAGE_V1/2/3/4: Si el mensaje especificado tiene valores variables (‘&’) en él. Es en estos campos donde se pueden escribir sus valores. Es equivalente al agregado WITH… de la sentencia MESSAGE…, donde se puede escribir lo que se desee.

e. El resto de los campos de la estructura no requieren ser completados.

A modo de ejemplo se puede completar la estructura de la siguiente manera, mostrando los campos a completar en las 2 figuras que siguen::

ABAP-function-module-message-1

ABAP-function-module-message-2

 

3. Luego hacer click en “Back” ABAP-function-module-message-boton-Back y posteriormente “Execute” ABAP-function-module-message-boton-Executepara probar la salida de la función. En el ejemplo se verá un POP-UP con un aspecto similar a la imagen siguiente:

ABAP-function-module-message-document-lines

Customizando la función C14ALD_BAPIRET2_SHOW

Un detalle a tener en cuenta es la simplicidad del código fuente de esta función que consiste en una serie de llamadas a otras funciones estándar que permiten Inicializar, Guardar, y Mostrar los mensajes recibidos.

La posibilidad de customizar la función, permite que la ultima Funtion Module en ser llamada: MESSAGES_SHOW, cobre mayor importancia.

 

ABAP-function-module-message-codigo

Tener en cuenta que la mayoría de los parámetros están con sus valores por defecto.

Aprovechando las diferentes posibilidades que ofrece la función C14ALD_BAPIRET2_SHOW , se la puede “adaptar” (customizar) copiándola a una versión Z modificando los parámetros de la función anterior según se requiera. Así, es posible generar rápidamente una variante que se ajuste aún más a los requerimientos del negocio.


n_Marco_Gatti - Especialista ABAP y Workflow

 

 

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


FICHA TECNICA: Notas técnicas – Tips de SAP Netweaver ABAP ”Cómo mostrar múltiples mensajes en una única ventana, en programas ABAP"

Tema: Programación ABAP, funciones standard SAP . Descripción: Conozca un modo de mostrar múltiples mensajes de diferentes tipos en una única ventana en programas ABAP, utilizando una función standard de SAP.

Cómo actualizar un infotipo de HR en background en SAP

Utilice la función estándar de SAP HR_INFOTYPE_OPERATION, para actualizar, generar, o eliminar datos de un infotipo de HR en background y conozca cómo operar con ella.

En reiteradas ocasiones el desarrollador ABAP se encuentra con el problema de agregar o modificar información en tablas estándar. 

Es conocido por todos los desarrolladores el hecho de que siempre es conveniente anticiparse a posibles cambios en el modelo de datos de SAP, por lo que se deben evitar sentencias ABAP del tipo UPDATE, INSERT o DELETE a estas tablas del sistema. La dificultad aparece cuando no existe una BAPI o función estándar capaz de realizar estos cambios de forma transparente, por lo que en muchos casos la solución es realizar un Batch-Input de la transacción que normalmente hace los cambios.

En este artículo se conocerá una forma de ingresar, actualizar y eliminar información relativa al módulo de HR. Específicamente se tratará el caso de una función estándar pensada para actualizar todos los infotipos existentes.

Características de la función HR_INFOTYPE_OPERATION

La función HR_INFOTYPE_OPERATION es una función específica para el módulo HR de SAP. Se caracteriza por ser extremadamente flexible ya que brinda la posibilidad de actualizar la gran mayoría de los infotipos existentes de forma transparente mediante una única interfaz. Como contrapartida, el uso de la misma es relativamente complejo.

La función permite una serie de operaciones típicas, entre ellas: Creación, Copia, Modificación y Eliminación de datos. En este tip se mostrará un caso concreto de su utilización en una operación de Actualización, considerado en el ambiente de SAP como el más propenso a errores.

1. Interfaz de la función:

En la pantalla siguiente se describen los parámetros de Importing necesarios (y algunos opcionales) para el uso de esta herramienta:

ABAP-Bibl.funciones-HR_INFOTYPE_OPERATION-Visualizar

  • INFTY: Número de infotipo, representado en un CHAR de longitud 4. Ejemplo: ‘0001’.
  • NUMBER: Número de empleado (PERNR).
  • SUBTYPE: Subtipo (SUBTY).
  • OBJECTID: Identificación de objeto (OBJPS).
  • LOCKINDICATOR: Indicador de bloqueo (SPRPS).
  • VALIDITYEND, VALIDITYBEGIN: Fin e inicio de la validez, respectivamente (ENDDA, BEGDA).
  • RECORDNUMBER: Número de un registro de infotipo para misma clave (SEQNR).
  • RECORD: Estructura que contiene los datos actualizados. Luego de la ejecución de la función, el infotipo de número ‘INFTY’ contendrá los datos que se encuentren en esta estructura. La misma debe ser del tipo del infotipo correspondiente.

Nota: No es posible usar la estructura de la tabla correspondiente al infotipo. Por ejemplo si se trata del 0001, no es posible usar una estructura del tipo PA0001. En su lugar se debe usar P0001.

  • OPERATION: Código de operación representado en un CHAR de longitud 20, por ejemplo:

‘INS’: Crear

‘COP’: Copiar

‘MOD’: Modificar

‘DEL’: Borrar

‘DIS’: Mostrar

  • DIALOG_MODE: Modo de diálogo, por ejemplo: ‘0’ Background, ‘2’ En línea.

Importante: Luego de ejecutar la función, ejecutar un COMMIT WORK AND WAIT para garantizar que los cambios se hayan efectuado correctamente.

2. Uso de la función:

Para ejecutarla se necesita proveer todos los parámetros mostrados en la sección anterior a excepción de DIALOG_MODE, por defecto vale ‘0’ Background.

Para el caso del parámetro RECORD, como se mencionó anteriormente, se debe usar una estructura del tipo PXXXX y no PAXXXX (donde XXXX es el número de infotipo). Se debe cargar esta estructura con los nuevos datos que pasará a tener el infotipo, notar que TODOS los campos de la estructura se transfieren a la base de datos, por lo que una forma segura de completarla es primero recuperando el registro completo de la tabla, modificar los datos que se requieran, y luego invocar a la función.

Es importante notar que las estructuras PXXXX, a diferencia de las PAXXXX, tienen un campo adicional ‘INFTY’ que es un CHAR de longitud 4 utilizado para contener el numero de infotipo. Es necesario completar este campo con el mismo valor de ‘INFTY’ que se provee a la función en su llamada. Por ejemplo si se quiere actualizar el infotipo 0001, INFTY = ‘0001’ y PXXXX-INFTY = ‘0001’.

A continuación se muestra un ejemplo de uso de la función HR_INFOTYPE_OPERATION funcionando correctamente, se trata de una nueva función Z que dado un número de empleado y un área de nómina, asigna dicha área de nómina al empleado:

  • Primero se obtienen los datos vigentes del infotipo 0001 del empleado. Dicho infotipo es el que contiene el campo a modificar. Luego se valida el área de nomina provista, y por último, se asigna la nueva área de nómina a la estructura que contiene los datos.

ABAP-Bibl.funciones-ZWF_0001-modificar-2

En el ejemplo de arriba, la estructura lr_0001 (TYPE P0001) contiene los datos a grabar en el infotipo.

Nota: en la subrutina F_OBTENER_DATOS_EMPLEADO, además se carga el campo INFTY de la estructura lr_p0001 con el valor ‘0001’. Este paso es obligatorio.

 

  • Luego se llama a la función HR_INFOTYPE_OPERATION.

ABAP-Bibl.funciones-ZWF_0001-modificar-3

Importante: Antes de realizar una llamada a la función HR_INFOTYPE_OPERATION, se debe bloquear el registro del empleado que se quiere modificar. Para ello se pueden utilizar las funciones BAPI_EMPLOYEE_ENQUEUE o HR_EMPLOYEE_ENQUEUE, que en este caso resultan equivalentes. Una vez terminada la operación se debe llamar a la correspondiente función de desbloqueo: BAPI_EMPLOYEE_DEQUEUE o HR_EMPLOYEE_DEQUEUE. Ambas parejas de funciones reciben como único parámetro el número de empleado (PERNR). En suma, el código resultante debe tener el siguiente aspecto:

ABAP-Bibl.funciones-ZWF_0001-modificar

Para tener en cuenta ...

  • La función HR_INFOTYPE_OPERATION soporta muchas operaciones diferentes: COP (Copiar), DEL (Borrar), DIS (Mostrar), EDQ (Bloquear/Desbloquear), INS (Crear), MOD (Modificar), entre otras, para realizar sobre la totalidad de los infotipos de SAP.
  • Además permite ejecutar la operación solicitada tanto en background como en línea mediante el parámetro de Importing DIALOG_MODE.

      • n_Marco_Gatti

      - Especialista ABAP y Workflow


    •  

       

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


 

 

  •  

Modificar dinámicamente el "binding" entre un Workflow y sus tareas en SAP

Aprenda una manera de leer y modificar los “Containers” del Workflow en el momento del “binding” entre el Workflow y sus tareas en SAP. (Programmed Binding)

Muchas veces ocurre que a la hora de construir un Workflow (WF) en algún sistema SAP se dispone de muchas tareas (TS) tanto estándar como Z para ser utilizadas como toolkits. También suele ocurrir que estos utilitarios no cumplen con la interfaz que dicho Workflow desearía. 

Por ejemplo, si existen discrepancias entre órdenes de compra y facturas de logística, es común que se disponga de una TS que en base a la diferencia, realice varias acciones. El problema se presenta cuando el Workflow sobre el que se trabaja no conoce dichos valores, sino solamente los objetos de negocio.

Una solución rápida para esta situación es crear un nueva TS que calcule discrepancias. Pero siguiendo este criterio se podría llegar a la situación de estar creando una nueva TS por cada dato desconocido sólo para adaptarse a la interfaz de otra TS. Uno de los problemas que este procedimiento trae aparejado es la complejidad creciente de los Workflows así como la dificultad para su mantenimiento y un aumento sostenido de la cantidad de métodos en los objetos de negocio (Business Objects - BO -).

Este artículo presenta una alternativa capaz de adaptar los Containers propios de un Workflow a los requeridos por cualquier TS que se especifique al momento de ejecutar el binding entre ambos.

Pasos para modificar el binding WF-TS/TS-WF

1. Una vez dentro del Workflow Builder (transacciones PFTC o SWDM), hacer doble click en la TS que va a recibir los datos modificados, ir a la solapa Control y luego click en Binding.

ABAP-binding-Workflow-1

2. En la pantalla obtenida, completar con los containers requeridos a excepción del/los que se van a modificar. Luego hacer click en el Pushbutton ABAP-flecha-binding de alguna línea vacía.

ABAP-binding-Workflow-2

3. En el POP-UP seleccionar el Radiobutton Container-->Container”, y en el ComboBox seleccionar la opción “Programmed Binding (Container IF)”. Luego, debajo de la etiqueta “Exit Function Module” se podrá ver un campo en blanco, en él se debe escribir en nombre de la función que contendrá el código responsable de modificar los Containers durante el binding.

Suponiendo que aún no se creó dicha función, en el campo vacío escribir el nombre “SWA_BINDING_TEMPLATE” y hacer click en el botón Copy ABAP-copy-binding. De esta manera se hace una copia del template a una nueva función Z. (Esta metodología es similar a la utilizada en el caso de las BTE). En el ejemplo el nombre del módulo de función final será “ZWF_TEST_BINDING_001”.

ABAP-binding-Workflow-3

Finalmente, luego de confirmar la operación, el binding tendrá el siguiente aspecto.

ABAP-binding-Workflow-4

 

4. Una vez creada la Función, editarla a través de la transacción SE37. Se puede ver que el sistema ya generó código y que dividió la función en dos secciones a través de una sentencia IF, una para el binding WF->TS y otra para TS-WF. Es importante respetar esta separación para evitar Runtime Errors.

ABAP-binding-Workflow-codigo-1

Es aquí donde se puede codificar la lógica necesaria para calcular los datos que recibirá la TS. En el ejemplo se utilizará el ID de aeropuerto ubicado en un container del Workflow para calcular la cantidad de vuelos que partieron de él y enviárselos a una TS de decisión para que muestre este número.

En la sección siguiente se detallan las herramientas que se pueden utilizar para extraer y escribir información en los containers.

Cómo obtener/cambiar la información almacenada en los Containers

Se puede observar en la función recién copiada que ésta tiene una serie de parámetros de IMPORTING. De ellos, se van a considerar SOURCE_CONTAINER y TARGET_CONTAINER, ambos del tipo SWFPARACNT, los cuales representan TODOS los containers del Workflow y TODOS los containers de la TS en cuestión, respectivamente. Es decir que hay visibilidad sobre el 100% de ellos a pesar de que no figuren en el binding.

El tipo de datos SWFPARACNT corresponde a un objeto que respeta la interfaz IF_SWF_IFS_PARAMETER_CONTAINER, la cual permite ejecutar una serie de métodos sobre los mismos

  • Leer un Container: Para ello se puede ejecutar el método “GET” sobre el objeto SOURCE_CONTAINER. Como parámetro de EXPORTING completar “NAME”, que representa el nombre del Container que se quiere leer del Workflow. Y como IMPORTING sólo recibir “VALUE” que representa el contenido. Se debe tener especial cuidado al escribir el nombre del Container ya que de otra manera el sistema dejará el Workflow en estado erróneo, a menos que se capture la excepción.

ABAP-binding-Workflow-codigo-2

  • Escribir un Container: Para ello se puede ejecutar el método “SET” sobre el objeto TARGET_CONTAINER. Como parámetros de EXPORTING completar “NAME” y “VALUE” teniendo en cuenta lo mencionado en el punto anterior.

ABAP-binding-Workflow-codigo-3

 

Consideraciones importantes a tener en cuenta:

  • En la sentencia IF principal, en la porción correspondiente a “dataflow_event = swfbn_dataflow_export”, sólo se puede escribir sobre los Containers de la TS, y en la otra porción sólo se puede escribir sobre los Containers del Workflow. De otro modo provocará un error.
  • El binding se ejecuta de forma secuencial, Container por Container en el orden en que figuran, es decir que si en esta función se llegara a modificar el contenido de un Container que fue “bindeado” en una línea anterior, entonces se sobrescribirá con ese nuevo valor. Del mismo modo, si esta función modifica un Container que también figura en una línea posterior del binding, entonces dicho Container adoptará el último valor.

ABAP-binding-Workflow-5

&NUMBEROFFLIGHTS& es el Container que modifica la función en este caso, luego es sobrescrito en la ultima línea del binding.

 

Ejemplo:

El siguiente código ABAP ejecuta correctamente en un sistema SAP Netweaver AS ABAP 7.0. El código ejemplo detalla el uso de los métodos responsables de extraer y escribir información en diferentes containers.

 

ABAP-binding-Workflow-codigo-funcion-1

ABAP-binding-Workflow-codigo-funcion-2

ABAP-binding-Workflow-codigo-funcion-3

ABAP-binding-Workflow-codigo-funcion-4

 


n_Marco_Gatti - Especialista ABAP y Workflow

 

 

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


FICHA TECNICA: Notas técnicas – Tips de SAP Netweaver ABAP ”Modificar dinámicamente el "binding" entre un Workflow y sus tareas en SAP"

Tema: Programación ABAP, Workflow, Programmed Binding. Descripción: Aprenda una manera de leer y modificar los “Containers” del Workflow en el momento del “binding” entre el Workflow y sus tareas en SAP. (Programmed Binding)

Copyright © 2025 Teknoda Tech Portal & Training. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.