BAPI_ALM_NOTIF_CREATE / BAPI_ALM_NOTIF_DATA_MODIFY– Actualizar campo Duración de Parada (Breakdown duration)

Si necesitamos crear un aviso con la BAPI BAPI_ALM_NOTIF_CREATE o modificarlo vía BAPI_ALM_NOTIF_DATA_MODIFY.

Y debemos actualizar el campo “duración de parada” (Breakdown Duration) deberemos seguir las intrucciones de la nota 

1619709 – Notification breakdown duration not populated by BAPI call

Es una nota informativa, explicando que la funcionalidad no está en dichas BAPIs, por lo cual deberemos implementar la BADI NOTIF_EVENT_SAVE.

method IF_EX_NOTIF_EVENT_SAVE~CHANGE_DATA_AT_SAVE.
IF CS_VIQMEL-AUSZT is initial.
*   Only execute if breakdown time is not already set
     IF ( CS_VIQMEL-MSAUS = 'X' ) AND ( CS_VIQMEL-AUSVN <> 0 ) AND ( CS_VIQMEL-AUSBS >= CS_VIQMEL-AUSVN ).
*       Only if breakdown indicator is set, valid start date, end date not less than start date
        CS_VIQMEL-AUSZT = ( CS_VIQMEL-AUSBS - CS_VIQMEL-AUSVN ) * 24 * 60 * 60.
        CS_VIQMEL-AUSZT = CS_VIQMEL-AUSZT
                  + ( CS_VIQMEL-AUZTB - CS_VIQMEL-AUZTV ).
    ENDIF.
ENDIF.

endmethod.

image

Modificar descripción de Textos – Cabecera y Posición

Necesitabamos modificar la descripción del texto de cabecera de la solped (ME51N) y descubrimos que por customizing si bien se pueden en los pedidos (purchase order) no se puede en las solped, no existe, únicamente tiene de posición. Pero lo que si se puede es modificar las vista de textos en general, ingresando su objeto de texto.

Si ingresamos via SM30 a la vista V_TTXID_N, nos pedirá ingresar el objeto de texto deseado, EBANH es cabecera de solped y EBAN de posiciones por ejemplo.

image

Entonces ahí le puedo cambiar la descripción. Por default tenia texto de cabecera.

Esto nos generará una OT, si deseamos cambiar varios idiomas debemos loguearnos en el deseado y seguir los mismos pasos.

Las dos tablas que contienen todos los ID de textos y sus descripciones son las:

  • TTXID: IDs y Objeto texto
  • TTXIT: Textos

Tablas y funciones Workflow – Reporting

Estas son algunas tablas y funciones útiles para realizar reportes de WF. En WF ya sea el WF o todos los Workitems poseen un ID, ese ID es que se usa en la mayoría de las tablas de WF.

Tablas:

  • SWWWIHEAD:  Cabecera de Workitem
  • SWPSTEPLOG:  Pasos del WF (workitems que se fueron disparando)
  • SWW_CONT:     Datos del Container de un Workitem
  • SWWUSERWI:   Work Items que posee un user en inbox
  • SWW_WI2OBJ:  Link entre el objeto del WF y el WF

Funciones:

  • SAP_WAPI_READ_CONTAINER:  Datos Container
  • SWN_UWL_GET_WORKLIST:  Work items pendientes de un user
  • SAP_WAPI* :   Varias funciones de WF

Leer y modificar un Infotipo – Infotipo texto 0128.

Si deseamos leer un infotipo podemos utilizar la función HR_READ_INFOTYPE.

Para realizar operaciones sobre dicho infotipo se utiliza la función HR_INFOTYPE_OPERATION donde en el parámetro OPERATION se define la acción.

  • INS = Insert
  • DEL = Delete
  • MOD = Change
  • EDQ = Approve
  • COP = Create Succesor
  • CHK = Check Record

Al utilizar estas funciones si o si debemos primero bloquear dicho legajo con HR_EMPLOYEE_ENQUEUE y desbloquearlo luego con HR_EMPLOYEE_DEQUEUE.

Hay infotipos que poseen “textos” (por ejemplo 0128) que no pueden ser actualizados por medio de HR_INFOTYPE_OPERATION, nos devolverá un error que faltan completar campos, esto se debe a que el titulo del texto que es obligatorio no existe en el infotipo de tipo P0128 sino que es del tipo Q0128.

Para poder modificar este infotipo debemos usar directamente la función HR_MAINTAIN_MASTERDATA (dicha función es llamada internamente en la HR_INFOTYPE_OPERATION) Entonces a la HR_MAINTAIN_MASTERDATA le completamos todos los campos P0128 del infotipo (que posee el idioma, objeto, nombre, ID, etc) le agregamos a la tabla proposed_values los valores:

proposed_values-infty = ‘0128’.
proposed_values-fname = ‘Q0128′-TDTITLE’.
proposed_values-fval = ‘Titulo ejemplo’.
append proposed_values.

En el caso que estemos creando un infotipo que fue borrado anteriormente, nos generará el texto usado anteriormente, sin importar el titulo que le pongamos.

Determinación de responsables en workflow MM Solped

Para saber si hay un problema al momento de la determinación de responsables al utilzar el WF standard de liberación de solicitud de pedidos.

Se puede poner un break en la función ME_REL_GET_RESPONSIBLE para ver si se pudo determinar responsable.

BTE 00001820 – Proceso de lista de propuesta de pago (bloqueo)

Esta BTE nos permite cambiar la vía de pago (ZLSCH) y el bloqueo (ZLSPR). Pasa por cada uno de las posiciones de los doc. de partidas abiertas.

image

Además si usamos MESSAGE de tipo ‘S’. Estos serán incluidos en el log de la corrida (siempre y cuando esté habilitado el log de la propuesta).

De desear cambiar el bloqueo aconsejo usar un bloqueo que no permita modificar la propuesta, ya que la BTE pasa una sola vez al ejecutarse por primera vez, si se hacen cambios en la propuesta no pasará por la BTE, generando posibles inconsistencias.

Debug de BTEs en la F110

La propuesta de pago y el pago a través de la F110 se hace de fondo, por lo cual no es posible debuguearlo cuando se usa la F110.

Pero lo que sí podemos hacer es debuguear el programa SAPF110S, lo cual sería una emulación por así decirlo, le pasamos el identificador, la fecha y el indicador si es una propuesta, pero ademas hay que hacer algunos pasos extras para que nos frene la BTE, de esta forma sabremos lo que haría la BTE de haberse ejecuta la F110.

Para poder debuguear BTEs en la F110 necesitamos si o si tener permiso de “replace” en debug.

Pasos a seguir para poder hacer que un break-point frene en una BTE de la F110:

  1. Crear el proyecto y asociarlo con el evento y el Módulo
  2. Poner un breakpoint en la función del módulo creado
  3. En el programa F110MAIN (Línea 36) poner un breakpoint.
  4. Ejecutar el programa SAPF110S. Al frenar en el break-point del punto anterior. Cambiar el valor de la Variable XDEBUG a XDEBUG = ‘X’. Por default vendrá vacía y de no cambiarla no frenará la BTE.
  5. F8 y nos frenará en la BTE.