熟悉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.Top = 110
    • 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
    • Dim oLinked As SAPbouiCOM.LinkedButton
  • 添加一个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主处理界面而无法实现从相关业务对象处理界面中回调数据,对于这些控件对象该如何同数据源进行绑定,以及在信息录入操作时如何实现对业务对象选择界面回取信息,不在本文中讨论。