¿Se pueden añadir campos al listado de órdenes?

lunes, 4 de febrero de 2013

¿Se pueden añadir campos al listado de órdenes?

Hace unos días me formularon esta pregunta. ¿Se podrían añadir un par de campos al listado de órdenes de mantenimiento? Bien, después de darle un par de vueltas e investigar la parametrización me di cuenta que el estándar no lo permitía. Sin embargo, buscando un poco más en google me encontré con este artículo en la wiki de SAP, New field display at IW38 or IW39


Pues sí, SAP nos permite modificar el listado de órdenes, listado que puedes encontrar en:

Logística / Mantenimiento / Gestión de mantenimiento / Orden / Lista de órdenes / IW38 - Modificar

Debía añadir dos campos de una operación de la orden de mantenimiento en la cabecera del listado. Todo para determinar si la orden contenía dicha operación sin tener que ir a listar las operaciones de la orden. Y así evitar tener que consultar también el listado de operaciones en

Logística / Mantenimiento / Gestión de mantenimiento / Orden / Lista de operaciones / IW37 - Modificar

Sin embargo, yo no conseguí hacerlo exactamente como se explica en el artículo. Así que ideé una forma muy parecida en tres pasos.

1. Añadir los campos a la estructura CI_AUFK

  • Vamos al diccionario ABAP.
Herramientas / Workbench ABAP / Desarrollo / SE11 - Diccionario ABAP
  • Modificamos la estructura CI_AUFK y añadimos los campos que queremos. Activamos y esperamos. El proceso puede durar bastante tiempo ya que modifica la estructura de la tabla AUFK asociada a esta estructura.


Con estos dos pasos ya hemos añadido nuestros campos a la tabla de la base de datos que almacenará nuestra información.

2. Hacer visibles los campos en el listado de órdenes

Ahora hay que mostrar los campos que hemos añadido a la tabla en el listado de órdenes. Para ello buscaremos la estructura sobre la que se soporta el listado de órdenes, la estructura RIHAUFK_LIST.

Herramientas / Workbench ABAP / Desarrollo / SE11 - Diccionario ABAP
  • Vamos a Pasar a / Estructura append.
  • Añadimos un append al que damos el nombre que queramos, en mi caso es ZZOPERACION.



  • Añadimos los mismos campos que hemos añadido a la estructura CI_AUFK, con la misma definición de datos.
  • Guardamos y activamos.

3. Informar los campos de la tabla AUFK

Finalmente, hay que traspasar la información de la operación en cuestión a los campos de cabecera de la orden que hemos creado. Este punto fue el que no conseguí reproducir del artículo de la wiki de SAP. Así que ideé un pequeño código ABAP que recogiese la información y la actualizase directamente sobre la tabla AUFK. Como ya sabéis los que me seguís en el blog, no suelo crear programas y tengo preferencias por las queries que me dan más flexibilidad y sobre todo rapidez. Los pasos que seguí fueron:

  • Crear una query sobre las tablas AUFK y AFKO (cabecera de la orden).
  • Añadir un pequeño código ABAP adicional sobre esta query a partir de un campo adicional g_ok.

  CLEAR g_ok.
  IF NOT p_operac IS INITIAL.
*   Operación, clave modelo y descripción
    SELECT vornr ktsch ltxa1 FROM afvc UP TO 1 ROWS
      INTO (afvc-vornr, afvc-ktsch, afvc-ltxa1)
      WHERE aufpl = afko-aufpl
      ORDER BY vornr.
    ENDSELECT.
*   Actualización
    UPDATE aufk
      SET zzktsch = afvc-ktsch
          zzltxa1 = afvc-ltxa1
      WHERE aufnr = afko-aufnr.
    IF sy-subrc = 0.
      g_ok = 'X'.
    ENDIF.
  ENDIF.

De este modo conseguí incorporar los valores de una operación concreta a los campos que había añadido a la tabla AUFK. Programando el lanzamiento de la query en un job diario los datos se van actualizando en la tabla y luego son visibles en el listado. Así podemos mostrar datos adicionales que no son propios de la cabecera de la orden en el listado de cabecera de órdenes de mantenimiento.

Imagen inicial | Chrissy Johnson1

2 comentarios:

  1. Muy buen post. ¿Sabrías cómo se puede añadir un campo a la lista de notificaciones (IW47)?
    Gracias.

    ResponderEliminar
  2. Te paso un par de enlaces del foro de la scn
    http://scn.sap.com/thread/1746017
    http://scn.sap.com/thread/1746512

    ResponderEliminar