2010-04-02 13 views
1

Nous développons des applications pour SAP en utilisant leur SDK. SAP fournit un SDK pour modifier et gérer les événements se produisant dans l'interface utilisateur. Par exemple, avec ce SDK, nous pouvons attraper un clic sur un bouton et faire quelque chose sur le clic. Cette programmation peut être faite soit VB ou C#.Programmation dynamique en VB

Ceci peut également être utilisé pour créer de nouveaux champs sur le formulaire préexistant. Nous avons développé une application spécifique qui permet aux utilisateurs de stocker la définition requise pour un nouveau champ dans une table de base de données et les champs sont créés au moment de l'exécution.

Jusqu'ici, c'est bon. Ce que nous demandons maintenant, c'est que l'utilisateur devrait être capable de stocker le code de validation pour le champ dans la base de données et le même devrait être exécuté sur le temps d'exécution.

Voici un exemple d'un tel événement:

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 

Alors, ce que nous avons besoin dans ce cas est de stocker le code donné dans la ItemPressEvent dans une base de données et exécuter ce dans l'exécution.

Je sais que ce n'est pas simple. Mais je présume qu'il doit y avoir des moyens de faire ce genre de choses.

Le SDK est constitué de composants COM.

Merci & Cordialement, Rahul Jain

+0

personne ne connaît la réponse ou il n'y a pas de solution ??? –

Répondre

0

Je ne l'ai pas fait moi-même, mais je pense que vous allez avoir à utiliser effectivement les fonctions Systems.Runtime.CompilerServices pour compiler dynamiquement un ensemble puis le lier dans. Un autre solution si vous utilisez SQL Server pourrait être de tirer parti du fait que vous pouvez écrire du code C# ou VB.NET dans les procédures stockées. Cela pourrait être un moyen.

-1

Vous pouvez créer le code dynamique et compiler ..

Avoir des interfaces simples pour appeler le code de validation et dans tout votre code dynamique, implémenter l'interface (s). De cette façon, vous pouvez charger l'assemblage dynamiquement et obtenir la classe comme une interface et utiliser cette interface directement ..

0
Dim sqlstring1 As String = "Blah Blah Blah SQL here" 
Dim Rs SAPbobsCOM.Recordset 
Rs = GetDIConnection.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset) 
rs.doquery(SqlString1) 
+1

Pourriez-vous s'il vous plaît [modifier] dans une explication de la raison pour laquelle ce code répond à la question? Les réponses au code seulement sont [découragées] (http://meta.stackexchange.com/questions/148272), car elles n'expliquent pas pourquoi une solution fonctionne, ce qui est crucial pour l'apprentissage. –