TB 1300 -
API de interfaz de usuario del SDK de SAP
Business One: creación de formularios
julio, 2019
PUBLIC
Creación de formularios: objetivos del tema
Después de completar este tema, podrá
Explicar cómo crear nuevos formularios y elementos.
Guardar y cargar formularios usando XML
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 2
Creación de formularios: formularios de usuario
El formulario de usuario es un formulario que se agrega a Business One
mediante la API de UI.
Hay varias formas de crear un formulario de usuario.
Codifícalo paso a paso
Utilice el complemento Screen Painter
Utilice SAP Business One Studio
Debe asignar un tipo, que debe tener como prefijo el espacio de nombres de su
empresa , por ejemplo, SAP_AsstMD representa el tipo de formulario de Datos
maestros de activos fijos en SAP Fixed Asset Add-On.
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 3
Creación de formularios: ejemplo: crear un formulario
Dim oForm como SAPbouiCOM.Form
Paquete de creación tenue como SAPbouiCOM.FormCreationParams
' Crea el objeto FormCreationParams
paquete de creación = SBO_Application.CreateObject(
SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams)
' Especifica los parámetros en el objeto.
CreationPackage.UniqueID = " MP_MyFormID" ' Auto UniqueID asignado
CreationPackage.FormType = " MP_MyFormType"
CreationPackage.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Fixed
' Agregamos el formulario a la aplicación SBO
oForm = SBO_Application.Forms.AddEx (paquete de creación)
' Establece el título del formulario y la visibilidad
' ¡Tenga en cuenta! Incluso si el formulario no es visible, puede que esté "allí " en la colección de Formularios...
' ...y la API de UI generará una excepción si intenta agregar un formulario con el mismo ID único.
oForm.Title = " Hola mundo "
oForm.Visible = Verdadero
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 4
Creación de formularios: elementos
Tipos de elementos
Editar texto
Texto estático
Carpeta
Caja combo
Matriz
Caja
Botón vinculado
Combinación de
botones
Botón
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 5
Crear formularios: elementos
Propiedades del elemento
Las propiedades comunes a todos los artículos están disponibles directamente en el
objeto Artículo.
■ Ejemplos:
■ Propiedades Superior, Izquierda, Ancho, Alto
■ Método de actualización
Otros miembros dependen del tipo de elemento (ComboBox, Matrix, etc.).
Estos están disponibles a través de la propiedad "Específica" del artículo.
■ Ejemplos:
■ Propiedad de cadena (elemento EditText)
■ Propiedad seleccionada (elemento ComboBox)
■ Propiedad ValidValues (elemento ComboBox)
■ Propiedad de columnas (elemento de matriz)
■ Propiedad de diseño (elemento de matriz)
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 6
Creación de formularios: elementos
Crear elementos en el formulario: muestra
Atenuar oItem como SAPbouiCOM.Item
Atenuar el botón como SAPbouiCOM.Button
'Agregar botón, los botones con UID 1 y 2 deben estar en Aceptar y Cancelar
oItem = oForm.Items.Add("1", it_BUTTON)
oButton = oItem.Específico
oButton.Caption = "&Aceptar"
'Establecer tamaño y ubicación:
oArtículo.Top = 200
oArtículo.Izquierda = 20
oArtículo.Ancho = 70
oItem.Altura = 19
oItem = oForm.Items.Add("2", it_BUTTON)
oButton = oItem.Específico
oButton.Caption = "&Cancelar"
'Establecer tamaño y ubicación:
oArtículo.Top = 200
oArtículo.Izquierda = 95
oArtículo.Ancho = 70
oItem.Altura = 19
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 7
Creación de formularios:
acceso a elementos de elementos: muestra
Atenuar oItem como SAPbouiCOM.Item
Atenuar oEditar como SAPbouiCOM.EditText
oArtículo = oForm.Items.Item( “ 54 ” )
'ahora puedes acceder a las propiedades genéricas del artículo
oArtículo.Ancho = 120
' …para acceder a la propiedad String y otras propiedades específicas de
' el tipo de elemento EditText utiliza el objeto “ sub ” específico EditText
' VB implícitamente convierte el valor específico del elemento
' al tipo de objeto del lado izquierdo .
' En C#, C++ es necesario realizar la conversión explícitamente .
oEditar = oItem.Específico
oEdit.String = " Hola mundo "
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 8
Creación de formularios:
propiedad PanelLevel de elementos
La propiedad Form.PaneLevel se usa con Item.FromPane y Item.ToPane para crear múltiples paneles o "
capas " en un formulario, en el que diferentes elementos son visibles en diferentes paneles.
Normalmente se utiliza con elementos de carpeta para mostrar diferentes elementos en diferentes " pestañas
".
Para cada elemento, establezca las propiedades FromPane y ToPane .
Si ambas propiedades se establecen en 0, el elemento será visible en todos los paneles
Ejemplo: si el elemento oEdit1.FromPane = 1 y oEdit1.ToPane = 3, el elemento será visible cuando
oForm.Panelevel = 1, 2 o 3 .
En el elemento Carpeta, establezca la propiedad Panel en el Nivel de panel asociado que será visible cuando
se seleccione la carpeta.
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 9
Creación de formularios:
propiedad TabOrder de elementos
El orden de tabulación es la capacidad de controlar el orden en que se mueve el foco de un
elemento a otro al presionar la tecla TAB.
Sólo los elementos que pueden recibir atención pueden "tener " TabOrder.
Sólo disponible para objetos de elementos específicos como EditText, ComboBox
Limitaciones:
Objetos de elementos específicos
El orden de tabulación no se aplica en celdas ni columnas.
Intentar establecer el orden de tabulación en esos tipos generará una excepción
El índice de orden de tabulación puede ser cualquier valor entero >= 0.
Dos elementos pueden tener el mismo valor de orden de tabulación, pero el orden entre ellos será
inconsistente.
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 10
Creación de formularios: foco de formulario/ActiveItem
Caso de uso:
Establecer el foco en un elemento particular del formulario
Es necesario comprobar si un elemento en particular tiene foco
Consultar el formulario qué elemento tiene foco
Limitaciones :
Solo los elementos EditText y ComboBox, PaneComboBox pueden tener foco.
Sólo el formulario activo tiene elementos de enfoque.
Para Matrix: ItemUID del elemento enfocado será MatrixUID, no UID de celda/columna.
Propiedades y métodos:
Form.ActiveItem: propiedad de solo lectura
Form.ActiveItem(string csItemID) : establece el foco en un elemento específico
EditText, ComboBox y PaneComboBox Active : propiedad de lectura y escritura.
EditText, ComboBox y PaneComboBox Active (Boolean fInFocus) : establece el foco
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 11
Crear formularios - SAP Business One Studio
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 12
Crear formularios: trabajar con XML
¿Por qué utilizar XML?
Una serie de operaciones se reemplaza por una única operación por lotes. ¡Esto significa menos código
y mejor rendimiento!
Guardar un diseño de formulario en un archivo XML
sXML = oForm.GetAsXML() ' obtiene una cadena XML
oXML.loadXML(sXML) 'cargar XML en el documento DOM obj.
oXML.save (App.Path y "\Form.xml") 'guardar el archivo
Actualizar CUALQUIER formulario (o cargar un formulario de usuario) desde un archivo XML
SBO_Application.LoadBatchActions (oXMLDoc.xml) 'cargar cadena a través de una llamada
Mecanismo de carga de formularios de usuario preferido
oFormCreationParams.XmlData = oXMLDoc.xml
Usar con parámetros de creación; preferido sobre LoadBatchActions debido a una mayor
flexibilidad/control
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 13
Creación de formularios: ejemplo: guardar, cargar o actualizar usando XML
Atenuar oXMLDoc como Nuevo Xml.XmlDocument ' ...cuando se utiliza .NET ' s System.Xml
Dim oForm As SAPbouiCOM.Form
Dim xmlData As Cadena
tenue m_sPathToFormXML como Cadena = " c:\xml\xml_UpdateSample.xml "
' 1) Guardar: obtener recurso XML del formulario de cotización
oForm = SBO_Application.Forms.GetForm( “ 149 ” , 1)
Si oForm es Nada Entonces Salida Sub
xmlData = oForm.GetAsXML()
' 2) Cargar o Actualizar: cargar el archivo xml en el objeto del documento XML
oXMLDoc.Load (m_sPathToFormXML)
' cargar el xml… (preferiblemente para actualizar un formulario…)
SBO_Application.LoadBatchActions (oXMLDoc.InnerXml)
' eventualmente busca errores y advertencias
SBO_Application.GetLastBatchResults()
oXMLDoc = Nada
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 14
Creación de formularios: ejemplo: carga de formularios utilizando XML
Forma tenue Como SAPbouiCOM.Form
Paquete de creación tenue Como SAPbouiCOM.FormCreationParams
Atenuar oXMLDoc como nuevo Xml.XmlDocument ' ...cuando se utiliza System.Xml de
.NET
' Crea el objeto FormCreationParams
paquete de creación = SBO_ Aplicación.CreateObject( _
SAPbouiCOM.BoC reatableObjectType.cot_FormCreationParams)
' Tenga en cuenta: estos parámetros anulan los datos correspondientes en el XML
CreationPackage.UniqueID = " MP_MyFormID"
CreationPackage.FormType = " MP_MyFormType"
CreationPackage.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Fixed
' Sólo un ejemplo de una cadena XML que describe un formulario... igual que se usa para LoadBatchActions
oXMLDoc.Load( “ C:\XML\Sample.srf ” )
CreationPackage.XmlData = oXMLDoc. InnerXml
' Agregamos el formulario a la aplicación SBO
oForm = SBO_ Aplicación.Forms.AddEx(paquetedecreación)
' ¡ Establezca el formulario visible ( también se puede configurar en XML )!
oForm.Visible = Verdadero
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 15
Creación de formularios: observaciones generales
■ Agregar elementos a formularios de usuario
■ Los ID únicos “ 1 ” y “ 2 ” heredarán el comportamiento de Business One
para los botones “ Aceptar ” y “ Cancelar ” .
■ Enlace a propiedad
■ El orden de tabulación predeterminado se basa en el orden en que se
agregan los elementos a un formulario, pero se puede cambiar con la
propiedad TabOrder .
■ Las fuentes de datos mejoran el rendimiento.
■ El diseño XML mejora la velocidad de carga del formulario.
■ Formulario.UDFFormUID
■ Propiedad que vincula a cada formulario del sistema con su formulario UDF
correspondiente.
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 16
Crear formularios: ejercicio
Ahora deberías practicar:
Crear un formulario a partir del código
Guarde el formulario como XML
Cargue el formulario en el complemento desde XML
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 17