天天看点

如何在Add-on插件中实现业务关联

熟悉Sbo操作的人都知道,在Sbo中,不管是Sbo系统程序,还是自定义的业务报表,只要业务对象的主键显示在屏幕上,往往这个字段只要存在当前值,在它的前面都有一个黄色的右向箭头,点击这个箭头,就可以关联到这个主键关联的业务对象主操作界面上。

Sbo称呼这个黄色的右向箭头为关联按钮(linkButton),在Sbo UI SDK API中,专门有一种控件类型就是linkButton,就是SAPbouiCOM.LinkedButton。那么在Sbo Add-on开发中,到底如何实现linkButton同实际的业务对象的关联呢--点击这个linkButton,就可以关联到这个主键关联的业务对象主操作界面上?

如前所述,linkButton需要同一个编辑或者显示控件对象的当前值关联,还要同相关的业务对象关联。而支持编辑或者显示的控件对象分为两类:单控件对象,如下拉列表控件SAPbouiCOM.ComboBox、文本编辑控件SAPbouiCOM.EditText等;表格控件对象,主要包括Matrix和Grid。在Sbo中,上述两种控件对象都可能同业务对象实现基于linkButton的关联,只不过,表格控件对象的业务关联往往需要Matrix或者Grid的一列关联到指定的业务对象。

在Sbo UI开发中,上述的两种控件只是在绑定数据源的时候有所区别,单控件对象或者表格控件的列对象同linkButton的绑定的过程都差不多。

1、单控件对象

声明单控件对象和linkButton对象

Dim oCombo As SAPbouiCOM.ComboBox

Dim oLinked As SAPbouiCOM.LinkedButton

新增一个下拉列表框

oItem = oForm.Items.Add("ItemLink",   SAPbouiCOM.BoFormItemTypes.it_COMBO_BOX)

oItem.Left = 100

oItem.Top = 110

oItem.AffectsFormMode = False

oItem.LinkTo = "Linked"

新增一个连接按钮,位于上述的下拉列表的前面位置

oItem = oForm.Items.Add("Linked",    SAPbouiCOM.BoFormItemTypes.it_LINKED_BUTTON)

oItem.Left = 80

oItem.LinkTo = "ItemLink"

绑定编辑/显示对象到业务对象:物料主数据,并将关联到物料主数据主操作界面

oLinked = oItem.Specific

oLinked.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Items

2、表格空间的列对象

声明一个Matrix控件和一个Matrix空间列对象,以及一个linkButton对象

Dim oMatrix As SAPbouiCOM.Matrix

Dim Column As SAPbouiCOM.Column

添加一个Matrix控件

oItem = oForm.Items.Add("PCMatrix", SAPbouiCOM.BoFormItemTypes.it_MATRIX)

oItem.Left = 30

oItem.Width = 360

oItem.Top = 150

oItem.Height = 400

oMatrix = oItem.Specific

为Matrix添加一个列对象

oColumns = oMatrix.Columns

oColumn = oColumns.Add("ItemCode", SAPbouiCOM.BoFormItemTypes.it_EDIT)

oColumn.TitleObject.Caption = "物料编码"

oColumn.Width = 30

oColumn.Editable = True

绑定列对象到业务对象:物料主数据,并将列链接到物料主数据系统界面

oLink = oColumn.ExtendedObject

oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Items

上述代码实现了控件对象当前值同相关业务的关联--关联到业务对象的Sbo主处理界面而无法实现从相关业务对象处理界面中回调数据,对于这些控件对象该如何同数据源进行绑定,以及在信息录入操作时如何实现对业务对象选择界面回取信息,不在本文中讨论。

本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/44054,如需转载请自行联系原作者