En SAP cuando pulsas F1 sobre alguno de los campos de una pantalla, por ejemplo numero de pedido en la transacción VA03, aparece una ventana emergente con información sobre ese campo.
Dicha ayuda es una especie de Sapscript, que se puede definir también para los campos no estándar que se creen, para así aportar información al usuario cuando utilice dichos campos tal y como hace SAP estándar.
Ahora, la pregunta es: ¿donde se almacena dicha información?
Pues ha habido suerte, dicha información se almacena en la tabla DOKTL. Una tabla transparente que contiene el contenido de esas ventanas de ayuda, línea a línea.
Gracias a Alfonso por despertar esta duda y por auto responderse.
martes, 9 de octubre de 2007
lunes, 19 de febrero de 2007
Función llamada en UPDATE TASK
Muchas veces tenemos que comprobar en nuestro código ABAP, si nuestro programa se está ejecutando en fondo. Para ello nos valemos de la variable de sistema sy-batch, y de este modo evitamos lanzar cuadros de diálogo cuando un programa se esta ejecutando en fondo, ya que esto provocaría la terminación inmediata de dicho programa con un DUMP breve.
Esto es bien sabido por todos los programadores y raro es el programa que te encuentras que no controle este error; pero muy distinto es el caso de los módulos de funciones que son ejecutados en "UPDATE TASK", es decir, en proceso de actualización.
Cuando se hace una llamada a un módulo de funciones de la siguiente manera:
En estos casos tampoco está permitido hacer llamadas a cuadros de diálogo, ni llamadas a otras transacciones mediante CALL TRANSACTION. En caso de que dentro de una de estás funciones se haga una llamada de este tipo, el programa terminará de manera inmediata con un DUMP breve.
Para controlar si estamos dentro de una función que haya sido llamada en UPDATE TASK, deberemos añadir un control mediante cualquiera de las dos siguientes fórmulas:
Por lo tanto y como norma general cada vez que creemos un módulo de funciones que vaya a ser llamado en UPDATE TASK, además de marcarlo como tal en los atributos de dicho módulo de funciones, deberemos comprobar cada vez que vayamos a mostrar un cuadro de diálogo, o un CALL TRANSACTION, que no se haya llamado a dicho módulo de funciones en UPDATE TASK. Así siempre tendremos aislados este tipo de errores.
Esto es bien sabido por todos los programadores y raro es el programa que te encuentras que no controle este error; pero muy distinto es el caso de los módulos de funciones que son ejecutados en "UPDATE TASK", es decir, en proceso de actualización.
Cuando se hace una llamada a un módulo de funciones de la siguiente manera:
CALL FUNCTION funcion IN UPDATE TASK
Este módulo de funciones se ejecutará cuando el programa en cuestión este actualizando, básicamente cuando se haga un COMMIT.En estos casos tampoco está permitido hacer llamadas a cuadros de diálogo, ni llamadas a otras transacciones mediante CALL TRANSACTION. En caso de que dentro de una de estás funciones se haga una llamada de este tipo, el programa terminará de manera inmediata con un DUMP breve.
Para controlar si estamos dentro de una función que haya sido llamada en UPDATE TASK, deberemos añadir un control mediante cualquiera de las dos siguientes fórmulas:
- Comprobando que SY-ONCOM <> 'V'.
- Con la función TH_IN_UPDATE_TASK.
Por lo tanto y como norma general cada vez que creemos un módulo de funciones que vaya a ser llamado en UPDATE TASK, además de marcarlo como tal en los atributos de dicho módulo de funciones, deberemos comprobar cada vez que vayamos a mostrar un cuadro de diálogo, o un CALL TRANSACTION, que no se haya llamado a dicho módulo de funciones en UPDATE TASK. Así siempre tendremos aislados este tipo de errores.
lunes, 12 de febrero de 2007
Fecha de vencimiento / Due date
Cuando quieras calcular la fecha de vencimiento igual que hace la FBL5N hay que utilizar la siguiente función:
La determinación de la fecha de vencimiento se basa en los campos SHKZG (Indicador debe/haber), KOART (Clase de cuenta) y ZFBDT(Fecha base para cálculo del vencimiento).
call function 'DETERMINE_DUE_DATE'
EXPORTING
i_faede =
i_gl_faede = 'X'
IMPORTING
e_faede =
EXCEPTIONS
others = 1
La determinación de la fecha de vencimiento se basa en los campos SHKZG (Indicador debe/haber), KOART (Clase de cuenta) y ZFBDT(Fecha base para cálculo del vencimiento).
Suscribirse a:
Entradas (Atom)