我们使用SDK开发SAP应用程序。 SAP提供了一个SDK,用于更改和处理用户界面中发生的事件。
例如,使用此SDK,我们可以点击按钮并在点击上执行某些操作。这种编程可以用VB或C#完成。
这也可用于在预先存在的表单上创建新字段。我们开发了一个特定的应用程序,允许用户将新字段所需的定义存储在数据库表中,并在运行时创建字段。
到目前为止,这很好。我们现在需要的是用户应该能够在数据库中存储该字段的验证代码,并且应该在运行时执行相同的代码。
以下是此类事件的示例:
Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
Dim oForm As SAPbouiCOM.Form
If pVal.FormTypeEx = "ACC_QPLAN" Then
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_LOST_FOCUS And pVal.BeforeAction = False Then
oProdRec.ItemPressEvent(pVal)
End If
End If
End Sub
Public Sub ItemPressEvent(ByRef pVal As SAPbouiCOM.ItemEvent)
Dim oForm As SAPbouiCOM.Form
oForm = oSuyash.SBO_Application.Forms.GetForm(pVal.FormTypeEx, pVal.FormTypeCount)
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_LOST_FOCUS And pVal.BeforeAction = False Then
If pVal.ItemUID = "AC_TXT5" Then
Dim CardCode, ItemCode As String
ItemCode = oForm.Items.Item("AC_TXT2").Specific.Value
CardCode = oForm.Items.Item("AC_TXT0").Specific.Value
UpdateQty(oForm, CardCode, ItemCode)
End If
End If
End Sub
因此,在这种情况下我们需要将ItemPressEvent中给出的代码存储在数据库中,并在运行时执行它。
我知道这不是直截了当的事情。但我认为必须有一些方法来完成这些事情。
SDK由COM组件组成。
谢谢&问候, Rahul Jain
答案 0 :(得分:0)
我自己没有这样做,但我认为你将不得不实际使用Systems.Runtime.CompilerServices
函数来动态编译程序集然后将其链接进来。如果你使用SQL Server,可能会有另一种解决方案要利用您可以在存储过程中编写C#或VB.NET代码的事实。这可能是一种方式。
答案 1 :(得分:0)
Dim sqlstring1 As String = "Blah Blah Blah SQL here"
Dim Rs SAPbobsCOM.Recordset
Rs = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
rs.doquery(SqlString1)
答案 2 :(得分:-1)
您可以动态创建代码并进行编译..
有一些简单的接口来调用验证代码,在所有动态代码中,实现接口。这样,您可以动态加载程序集并将类作为接口获取并直接使用该接口。