Hola, Evangelos
Muchas gracias por tu información muy útil.
Saludos cordiales,
Leon
Avalados por :
Hi, everybody
Please refer to the example below to help me understand the meaning of "pVal.BeforeAction = False".
The code will add a button to a Business Partner Master Data Form in SAP B1, and disable the combo.
-------------
Sub SBO_Application_ ItemEvent( ByVal FormUID As String , _
ByRef pVal As SAPbouiCOM. ItemEvent, _
ByRef BubbleEvent As Boolean )
Handles SBO_Application.ItemEvent
If pVal. FormTypeEx = “134” AND pVal.BeforeAction = False Then
‘ 134 refers to the BP Master data Form in SAP’
If pVal. EventType = et_FORM_LOAD Then
'adding a button to the BP Master Data form when it just has been loaded
Dim
oItems
As
SAPbouiCOM.Items
Hola, Evangelos
Muchas gracias por tu información muy útil.
Saludos cordiales,
Leon
Hola Leon,
SAPB1 envía dos eventos para cada evento. Uno con Before Action = True y otro con Before Action = False.
Uno de los usos de Before Action = True es para fines de validación. Por ejemplo, para un formulario de gestor automático cuando presionas el botón (UID = "1"), el formulario realizará la acción predeterminada (Agregar / Actualizar / Encontrar). Si deseas completar un campo específico (que no es obligatorio en tu Base de Datos (UDF)), puedes verificarlo y manejarlo con el Before Action = True. En caso de que haya un "error" (el campo esté vacío), entonces debes enviar BubbleEvent = true. De esta manera informas a SAPB1 que no envíe otro evento hasta que el usuario realice un nuevo evento.
Before Action = False maneja eventos cuando el proceso se ha completado. Por lo general, se combina con el evento ActionSuccess.
Saludos cordiales,
Evangelos D. Plagianos
Hola Pedro
Muchas gracias por tu respuesta.
Me ha ayudado mucho.
Saludos cordiales,
Leon
Hola Leon,
pVal.BeforeAction = False
"pVal.BeforeAction = False" significa que la aplicación "SAP B1" ya ha manejado el evento.
¿A qué evento se refiere el código anterior?
¿Se refiere al evento et_FORM_LOAD?
¿Significa "pVal.BeforeAction = False" que SAP B1 ya ha cargado el formulario de datos maestros de BP?
El evento es el también contenido en pVal.EventType. Por lo tanto, pVal.BeforeAction = False significa que pVal.EventType ya ha sido manejado por B1.
En el caso de et_FORM_LOAD significaría que B1 ha terminado de cargar el formulario (nota que cargar el formulario no es lo mismo que mostrarlo en pantalla).
pVal.BeforeAction = True
"pVal.BeforeAction = True" significa que la aplicación "SAP B1" aún no ha manejado el evento.
¿Significa "pVal.BeforeAction = True" que SAP B1 aún no ha cargado el formulario de datos maestros de BP?
¿Qué diferencia haría si reemplazo el código original "pVal.BeforeAction = False" por "pVal.BeforeAction = True"?
¿Significa esto que SAP B1 aún no ha cargado el formulario de datos maestros de BP y por lo tanto los códigos debajo de él no se ejecutarán?
Esto significa que el evento aún no ha sido manejado. En el caso de et_FORM_LOAD, significa que el formulario aún no ha sido cargado.
Si lo reemplazas por = true, entonces tu código se ejecutará después de que el formulario haya sido cargado.
Un ejemplo simple: quieres cargar un formulario solo si hay un permiso presente. Capturarías el BeforeAction = true del evento FORM_LOAD y verificarías el permiso. Si el permiso está bien, entonces estableces BubbleEvent = true para permitir que la operación continúe.
Otro ejemplo: quieres cargar un combobox con datos después de que se cargue el formulario. En este caso, capturas el evento FORM_LOAD con BeforeAction = False y luego ejecutas el código para cargar los datos en el combobox.
Conclusión:
BeforeAction = true -> tu código se ejecuta antes de que el evento sea manejado por B1.
BeforeAction = false -> tu código se ejecuta después de que el evento es manejado por B1.
Pedro Magueija
Si esta respuesta fue útil o correcta, considera marcarla como tal.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute