El modulo de QM del sistema Sap, contiene las funcionalidades para grabar y tratar los diferentes problemas de calidad que puedan surgir en la ejecución de servicios o procesos de fabricación. Los avisos de calidad pueden servir de ayudad para tratar problemas tanto internos como externos:
- Reclamaciones presentadas por clientes
- Reclamaciones a proveedores
- Problemas internos
- Otros problemas propios del usuario
En esta entrada vamos a explicar como añadir nuevos campos a las transacciones QM01/QM02/QM03/QM10 para la gestión de avisos de calidad.
Creamos un nuevo append a la tabla QMEL con los nuevos campos para los avisos de calidad.
|
append a la tabla QMEL |
El siguiente paso es, añadir una nueva subscreen , que contiene los nuevos campos, a la clase de aviso de calidad correspondiente.
Transacción SPRO -> IMG referencia SAP -> Gestión de calidad -> Aviso de calidad -> Resumen de la clase de aviso
Seleccionamos la clase de aviso que queremos modificar y doble clic en
"Formato de imagen p.vista ampliada"
|
Clases de aviso de calidad |
En "Formato de imagen p.vista ampliada" se configuran todas las pestañas que aparecen a la hora de introducir o visionar datos en las transacciones de QM. Cada pestaña puede contener hasta 5 subscreens.
Doble clic en la pestaña donde queremos incluir la nueva subscreen.
|
Pestañas asignadas a un aviso de calidad |
|
subcreens asignadas a la pestaña "Ejecución" de la clase de aviso de calidad F2 |
Antes de añadir nuestra subscreen, hay que decidir entre el ámbito de imagen 090 y el 091
- El ámbito de imagen 90: La subscreen se utilizara en todas las clases de aviso
- El ámbito de imagen 91: La subscreen solo se utilizara en la clase de aviso seleccionado
Si utilizamos el ámbito de imagen 90, no tenemos que indicar el número de subscreen. Por defecto, para el ámbito de imagen 90, la subscreen es la número 0090 del grupo de funciones XQQM. Para el ámbito de imagen 91, si que es obligatorio indicar una subcreen, que debe pertenecer también al grupo de funciones XQQM.
Así que el siguiente paso es crear una nueva dynpro en el grupo de funciones ZQQM.
Transacción SE80 -> Grupo de funciones -> XQQM -> Crear -> Dynpro -> nº 0100
Si ya existe una dynpro 0100, pues crearla como 0101 , 102, 103.... a menos que, como hemos dicho, utilicemos el ámbito de imagen 90, que entonces tenemos que crear o modificar la dynpro 0090 del grupo de funciones XQQM.
En la pestaña de
atributos, marcar la opción
subscreen para la dynpro y aseguraros de que el número de columnas de la dynpro no excede de 83.
|
Grupo de funciones XQQM |
|
Atributos de la dynpro |
Añadir los campos de la vista VIQMEL, que contiene los campos de la tabla QMEL y es la que utilizan las exits como veremos mas adelante, a la subscreen. Grabar y activar.
|
editor de dynpros |
En este punto, ya es posible ver los campos en las transacciones QM01/QM02/QM03. pero ni guardan , ni muestran ningun dato. necesitamos implementar el código que permita guardar y leer los datos.
|
Los nuevos campos ya aparecen en las transacciones pero no funcionan |
Implementar la ampliación QQMA0001 en la transacción CMOD para poder grabar y recuperar los datos.
Necesitamos implementar las siguientes exits de la ampliación QQMA0001:
- EXIT_SAPMIWO0_008: Seria el PBO de la subcreen, para transportar los datos desde la base de datos a pantalla.
- EXIT_SAPMIWO0_009: Seria el PAI de la subcreen, para transportar los datos de la pantalla a la base de datos.
Si has utilizado los campos de la VIQMEL en la subscreen, no es necesario que implementes la EXIT_SAPMIWO0_008, se traspasan automáticamente. Pero si tendrás que implementar la exit para poder guardar los datos introducidos en las transacciones de QM.
Doble clic sobre EXIT_SAPMIWO0_009 y aceptamos crear el include ZXQQMU08. Dentro del include, escribimos nuestro código para mover los datos de la base de datos a los campos de la subcreen:
MOVE: viqmel-ZZCAMPO1 to e_viqmel-ZZCAMPO1,
viqmel-ZZPERNR to e_viqmel-ZZPERNR,
viqmel-ZZCAMPO2 to e_viqmel-ZZCAMPO2.
Con un breakpoint, se puede ver como mueve los datos antes de guardarlos.
Y en la transacción SE11 comprobamos que se han guardado los datos en la tabla QMEL
|
debugger de la EXIT_SAPMIWO0_009 |
|
Tabla QMEL con los nuevos campos |
Para que veáis como se utilizan las dos exit. vamos a incluir un elemento radio button para ZZCAMPO2 de forma que solo pueda tener 3 valores: ALTA, MEDIA y BAJA. Modificamos la subscreen y añadimos los radiobuttons con las tres opciones
|
Editor de dynpros: radiobuttons |
Las variables globales para el radiobutton las creamos en el include ZXQQMTOP, que se crea haciendo doble clic sobre la instrucción "include ZXQQMTOP" en el include LXQQMTOP del grupo de funciones XQQM.
|
include ZXQQMTOP |
Transacción CMOD, accedemos al proyecto con la ampliación , si no existe lo creamos y le asignamos la ampliación saltamos a componentes de la ampliación.
|
componentes de la ampliación QQMA0001 |
Doble clic sobre EXIT_SAPMIWO0_008 y aceptamos crear el include ZXQQMU07. Dentro del include, escribimos nuestro codigo para mover los datos de la base de datgos a los campos de la subcreen:
* Radio Button ZZCAMPO2 ( PRIORIDAD)
CASE viqmel-ZZCAMPO2.
WHEN 'ALTA'.
CLEAR: WG_MEDIA, WG_BAJA.
WG_ALTA = 'X'.
WHEN 'MEDIA'.
CLEAR: WG_ALTA, WG_BAJA.
WG_MEDIA = 'X'.
WHEN OTHERS.
CLEAR: WG_MEDIA, WG_ALTA.
WG_BAJA = 'X'.
ENDCASE.
Doble clic sobre EXIT_SAPMIWO0_009 y aceptamos crear el include ZXQQMU07. Dentro del include, escribimos nuestro código para guardar la opción del radiobutton del campo ZZCAMPO2.
move: viqmel-ZZCAMPO1 to e_viqmel-ZZCAMPO1,
viqmel-ZZPERNR to e_viqmel-ZZPERNR.
IF ( WG_ALTA IS NOT INITIAL ).
MOVE 'ALTA' TO e_viqmel-ZZCAMPO2.
ELSEIF ( WG_MEDIA IS NOT INITIAL ).
MOVE 'MEDIA' TO e_viqmel-ZZCAMPO2.
ELSEIF ( WG_BAJA IS NOT INITIAL ).
MOVE 'BAJA' TO e_viqmel-ZZCAMPO2.
ENDIF..
Y así queda el aviso de calidad:
|
aviso de calidad con radiobuttons |
Por ultimo, so queda modificar el listado de avisos de calidad ( transacción QM10 ) para incluir los nuevos campos. Modificamos la estructura RQMQMEL1 y añadimos los nuevos campos.
|
append a la estructura RQMQMEL1 |
|
nuevos campos en la QM10 |
Referencias:
Buenos días David.
ResponderEliminarGracias por tu articulo esta de lujo man. Te queria preguntar... tienes alguna forma de inahbilitar esos campos en la QM03?.
Saludos.
Muchas gracias!! En la PBO de la subscreen, dentro de un modulo podrías hacer un LOOP AT SCREEN para cambiar los atributos de los campos.
EliminarBuen documento Pregunta hasta cuantos campos es permitido definir para colocar en un nuevo TAB de avisos?
ResponderEliminar