Skip to Content

Hello All,

Greetings !!!

I have Created One Simple Form For SAP Business One SDK Freshers. Kindly Find the attached Screens Also For Your Reference. All SAP Business One Standard Functionalities are covered in this Simple Form Application.

1.UI/DI Connection i.e Single sign in SAP Business One
2.Created of Used Defined Table as Table Name = “GOD_ODIN” and Table Description = “GOD Simple Form” of Document Type
3.Created Fields in “GOD_ODIN” as Cardcode,CardName,VenCode,VenName and DocDate
3.Registered “GOD_ODIN” in SAP Business One with UDO Code as “GOD_ODIN” and Changed User Defined Form “Object Type” Property to “GOD_ODIN”.
4.Added User Defined Menus Using XML Operations in Modules Menu at 13th Position
5.Attched Simple Form To User Defined Menu Simple Form
6.User Defined ChooseFromLists are attached to Customer and Vendor
7.Default Document Date will be Todays Date
8.Add/Update/Find and Navigation Functionalities on User Defined Screen.
9.User Defined Choosefrom lists are added on Customer and Vendor Fields.

This Application is Developed in SAP Business One 9.2 PL8.

How To Use This Code ?
1. Creat New Visual Studio Project
2. Add One Module For Startup
3. Add 3 Classes For 1.1) Simple Form 1.2) Main Class 1.3) Utilities Class.
4. Utilities Class – All Common Functions are Defined in Utilities class
4. Add SAPBobosCOM and SAPBouiCOM references in Project
5. Copy and Paste the attached Codes in Corresponding Classes

 

Project Code will be as Follows – For Simple Form Class

Imports System.Threading
Imports System.IO
Imports System
Public Class clsSimpleForm

#Region "Declaration"
    'For UI
    Dim GOD_Form As SAPbouiCOM.Form
#End Region

#Region "Item Event"
    Public Sub ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean)
        If pVal.BeforeAction Then
        Else
            Select Case pVal.EventType
                Case SAPbouiCOM.BoEventTypes.et_FORM_LOAD
                    GOD_Form = GOD_Main.GOD_Application.Forms.GetForm("frmSimpleForm", pVal.FormTypeCount)
                    'To Enable Navigation Menus - MoveFirst/MoveNext/MovePreviouse and MoveLast
                    GOD_Form.EnableMenu("1288", True)
                    GOD_Form.EnableMenu("1289", True)
                    GOD_Form.EnableMenu("1290", True)
                    GOD_Form.EnableMenu("1291", True)
                    GOD_Form.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE
                Case SAPbouiCOM.BoEventTypes.et_KEY_DOWN
                    If pVal.CharPressed = "9" Then
                        GOD_Form = GOD_Main.GOD_Application.Forms.GetForm("frmSimpleForm", pVal.FormTypeCount)
                        If pVal.ItemUID = "edVendorNm" Then '
                            If GOD_Form.Items.Item("edVendorNm").Specific.value = "" Then
                                GOD_Main.GOD_SourceForm = GOD_Main.GOD_Application.Forms.GetForm("frmSimpleForm", pVal.FormTypeCount)
                                GOD_Main.strColSelectedinCFL = "Vendor Name"
                                GOD_Main.CLFHeader("edVendorNm", FormUID, "CFL_Vendor_SimpleForm", "CFLHeader")
                                'By Default Current Date Displayed on Document Date
                                GOD_Form.Items.Item("edDocDate").Specific.value = DateTime.Now.ToString("yyyyMMdd")
                            End If
                        ElseIf pVal.ItemUID = "edCustName" Then
                            If GOD_Form.Items.Item("edCustName").Specific.value = "" Then
                                GOD_Main.GOD_SourceForm = GOD_Main.GOD_Application.Forms.GetForm("frmSimpleForm", pVal.FormTypeCount)
                                GOD_Main.strColSelectedinCFL = "Vendor Name"
                                GOD_Main.CLFHeader("edCustName", FormUID, "CFL_Customer_SimpleForm", "CFLHeader")
                            End If
                        End If
                    End If
            End Select
        End If
    End Sub
#End Region

#Region "Menu Events"
    Public Sub MenuEvent(ByRef pVal As SAPbouiCOM.MenuEvent, ByRef BubbleEvent As Boolean)
        Try
            If pVal.BeforeAction Then
            Else
                If (pVal.MenuUID = "1281" Or pVal.MenuUID = "1282" Or pVal.MenuUID = "1289" Or pVal.MenuUID = "1290" Or pVal.MenuUID = "1291" Or pVal.MenuUID = "1288") Then
                    If GOD_Main.GOD_Application.Forms.ActiveForm.TypeEx = "frmSimpleForm" Then
                        GOD_Form = GOD_Main.GOD_Application.Forms.GetForm("frmSimpleForm", 1)
                        GOD_Form.EnableMenu("5890", True)
                        GOD_Form.DataBrowser.BrowseBy = "12"
                    End If
                End If
                If pVal.MenuUID = "mnuSimple" Then
                    GOD_Main.objUtilities.LoadForm("Simple Form.xml", "frmSimpleForm", "frmSimpleForm", ResourceType.Embeded)
                End If
            End If
        Catch ex As Exception
            GOD_Main.GOD_Application.MessageBox(ex.Message)
        End Try
    End Sub
#End Region

End Class

 

2. Main Class Code

 

Imports System.Reflection
Imports System.Diagnostics
Imports System.Net.Mail
Imports System.Net
Imports System.Text
Imports SAPbobsCOM
Public Class clsMain

#Region "Declaration"
    Public WithEvents GOD_Application As SAPbouiCOM.Application
    Public GOD_Company As SAPbobsCOM.Company

    'Creating Instances For Each Class
    Public objUtilities As clsUtilities
    Public objSimpleForm As clsSimpleForm
    Public objChooseFromList As clsChooseFromList
    Public objChoose As clsChooseFromList

    'For UI
    Public GOD_SourceForm As SAPbouiCOM.Form
    Public strColSelectedinCFL As String
    Public SourceRowNo1 As Integer
    'For DI
    Public oDBs_Head As SAPbouiCOM.DBDataSource
    Public oDBs_Detail As SAPbouiCOM.DBDataSource
    Public GOD_Rec As SAPbobsCOM.Recordset
#End Region

#Region "New"
    Public Sub New()
        objUtilities = New clsUtilities
        objSimpleForm = New clsSimpleForm
        objChooseFromList = New clsChooseFromList
        objChoose = New clsChooseFromList
    End Sub
#End Region

#Region "Initialise"
    Public Function Initialise() As Boolean
        GOD_Application = objUtilities.GetApplication()
        objUtilities.ShowSuccessMessage("Please wait for the Simple Form Add-on Icon to appear in menu. It may take few minutes based on Server and Network speed.")
        GOD_Company = objUtilities.GetCompany(GOD_Application)
        Call CreateTables()
        objUtilities.LoadFromXML("Menus.xml", ResourceType.Embeded)
        Call RegisterUDO()
        Call CreateObjects()
        objUtilities.ShowSuccessMessage("Simple Form Add-on Connected. You may now proceed to use add-on.")
        Return True
    End Function
#End Region

#Region "Create Objects"
    Private Sub CreateObjects()
        objChooseFromList = New clsChooseFromList
    End Sub
#End Region

#Region "Load Choosefrom List"
    Public Sub CLFHeader(ByVal ItemUID As String, ByVal FormUID As String, ByVal CFLName As String, ByVal FormTypeEx As String)
        Dim objChooseForm As SAPbouiCOM.Form
        clsChooseFromList.ItemUID = ItemUID
        clsChooseFromList.SourceFormUID = FormUID
        clsChooseFromList.CFLChoice = CFLName
        If objUtilities.FormExist(FormTypeEx) = False Then
            GOD_Main.objUtilities.LoadForm("CFLHeader.xml", "CFLHeader", "CFLHeader", ResourceType.Embeded)
            objChooseForm = GOD_Main.GOD_Application.Forms.ActiveForm
            objChoose.databound(objChooseForm, GOD_SourceForm, oDBs_Detail, oDBs_Detail, "", SourceRowNo1)
        End If
    End Sub

    Public Sub CFLDetail(ByVal ItemUID As String, ByVal colUID As String, ByVal FormUID As String, ByVal CFLName As String, SourceRow1 As Integer, ByVal FormTypeEx As String)
        Dim objChooseForm As SAPbouiCOM.Form
        SourceRowNo1 = SourceRow1
        clsChooseFromList.ItemUID = ItemUID
        clsChooseFromList.SourceFormUID = FormUID
        clsChooseFromList.CFLChoice = CFLName
        If objUtilities.FormExist(FormTypeEx) = False Then
            GOD_Main.objUtilities.LoadForm("CFLDetail.xml", "CFLDetail", "CFLDetail", ResourceType.Embeded)
            objChooseForm = GOD_Main.GOD_Application.Forms.ActiveForm
            objChoose.databound(objChooseForm, GOD_SourceForm, oDBs_Detail, oDBs_Detail, "", SourceRowNo1)
        End If
    End Sub
#End Region

#Region "Register UDO"
    Private Sub RegisterUDO()
        Dim findAliasNDescription = New String(,) {{"DocEntry", "DocEntry"}} 'For Find in Default Form - DocEntry Column
        If Not objUtilities.UDOExists("GOD_ODIN") = True Then
            objUtilities.registerUDO("GOD_ODIN", "GOD Simple Form", SAPbobsCOM.BoUDOObjType.boud_Document, findAliasNDescription, "GOD_ODIN", "", "", "", "", "", "", "", "", SAPbobsCOM.BoYesNoEnum.tNO)
        End If
    End Sub
#End Region

#Region "Create Table"
    Public Sub CreateTables()
        Try
            'Daily Inward Screen GOD_ODIN
            objUtilities.CreateTable("GOD_ODIN", "GOD Simple Form", SAPbobsCOM.BoUTBTableType.bott_Document)
            objUtilities.AddAlphaField("@GOD_ODIN", "CardCode", "Customer Code", 120)
            objUtilities.AddAlphaField("@GOD_ODIN", "CardName", "Client Name", 150)
            objUtilities.AddAlphaField("@GOD_ODIN", "VenCode", "Vendor Code", 120)
            objUtilities.AddAlphaField("@GOD_ODIN", "VenName", "Vendor Name", 150)
            objUtilities.AddDateField("@GOD_ODIN", "DocDate", "Document Date", BoFldSubTypes.st_None)
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        Finally
        End Try
    End Sub
#End Region

#Region "Item Event"
    Public Sub ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles GOD_Application.ItemEvent
        Try
            Select Case pVal.FormTypeEx
                Case "frmSimpleForm"
                    objSimpleForm.ItemEvent(FormUID, pVal, BubbleEvent)
                Case "CFLHeader"
                    objChooseFromList.ItemEvent(FormUID, pVal, BubbleEvent)
                Case "CFLDetail"
                    objChooseFromList.ItemEvent(FormUID, pVal, BubbleEvent)
            End Select
        Catch ex As Exception
            GOD_Application.MessageBox(ex.Message)
        End Try
    End Sub
#End Region

#Region "Menu Events"
    Public Sub MenuEvent(ByRef pVal As SAPbouiCOM.MenuEvent, ByRef BubbleEvent As Boolean) Handles GOD_Application.MenuEvent
        If pVal.BeforeAction = False Then
            If (pVal.MenuUID = "1293" Or pVal.MenuUID = "1292" Or pVal.MenuUID = "1281" Or pVal.MenuUID = "1282" Or pVal.MenuUID = "1289" Or pVal.MenuUID = "1290" Or pVal.MenuUID = "1291" Or pVal.MenuUID = "1288" Or pVal.MenuUID = "1292") Then
                If GOD_Application.Forms.ActiveForm.TypeEx = "frmSimpleForm" Then
                    objSimpleForm.MenuEvent(pVal, BubbleEvent)
                End If
            ElseIf pVal.MenuUID = "mnuSimple" Then
                objSimpleForm.MenuEvent(pVal, BubbleEvent)
            End If
        End If
    End Sub
#End Region

#Region "Application Event"
    Private Sub ApplicationEvent(ByVal EventType As SAPbouiCOM.BoAppEventTypes) Handles GOD_Application.AppEvent
        If (EventType = SAPbouiCOM.BoAppEventTypes.aet_CompanyChanged Or EventType = SAPbouiCOM.BoAppEventTypes.aet_ServerTerminition Or EventType = SAPbouiCOM.BoAppEventTypes.aet_ShutDown Or EventType = SAPbouiCOM.BoAppEventTypes.aet_FontChanged Or EventType = SAPbouiCOM.BoAppEventTypes.aet_LanguageChanged) Then
            CloseApp()
        End If
    End Sub
#End Region

End Class



 

3. Startup Class Code

 

Module modStartUp

#Region "Declaration"
    Public GOD_Main As clsMain
#End Region

#Region "Main"
    Public Sub Main()
        GOD_Main = New clsMain
        If (GOD_Main.Initialise()) Then
            System.Windows.Forms.Application.Run()
        Else
            GOD_Main.GOD_Application.StatusBar.SetText("Error in Connection", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
        End If
    End Sub
#End Region

#Region "Close Application"
    '*****************************************************************
    'Type               : CloseAPP
    'Parameter          : 
    'Return Value       : 
    'Author             : Mahendrakumar Phadtare
    'Created Date       : 
    'Purpose            : To Stop Addon exe and Close All Open SAP Screens on Addon Addon Disconnection
    'Addon              : GOD Close Application
    '*****************************************************************
    Public Sub CloseApp()
        GOD_Main.GOD_Application.StatusBar.SetText("Simple Application Add-on Being Disconnected [message 10000-03].", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
        GOD_Main.objUtilities.LoadFromXML("RemoveMenus.xml", ResourceType.Embeded)
        System.Windows.Forms.Application.Exit()
    End Sub
#End Region

End Module

 

4. Utilities Class code

 

Imports System.Reflection
Public Class clsUtilities
    Public strLastErrorCode As String
    Public strLastError As String

#Region "Field Creations"
    'To Add Alphnumeric Field in Table
    Public Sub AddAlphaField(ByVal TableName As String, ByVal ColumnName As String, ByVal ColDescription As String, ByVal Size As Integer, Optional ByVal DefaultValue As String = "")
        Try
            addField(TableName, ColumnName, ColDescription, SAPbobsCOM.BoFieldTypes.db_Alpha, Size, SAPbobsCOM.BoFldSubTypes.st_None, "", "", DefaultValue)
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message & " Field Name is " & ColDescription, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        End Try
    End Sub
#End Region

#Region "Add UDO in SAP Business One Application "
    Private Sub AddUDO(ByVal strUDO As String, ByVal strDesc As String, ByVal strTable As String, _
                                Optional ByVal sFinCHRG As String = "", Optional ByVal sFind2 As String = "", _
                                Optional ByVal strChildTbl As String = "", Optional ByVal nObjectType As SAPbobsCOM.BoUDOObjType = SAPbobsCOM.BoUDOObjType.boud_Document)
        Dim oUserObjectMD As SAPbobsCOM.UserObjectsMD = Nothing
        Try
            oUserObjectMD = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserObjectsMD)
            If oUserObjectMD.GetByKey(strUDO) = 0 Then
                oUserObjectMD.CanCancel = SAPbobsCOM.BoYesNoEnum.tYES
                oUserObjectMD.CanClose = SAPbobsCOM.BoYesNoEnum.tYES
                oUserObjectMD.CanCreateDefaultForm = SAPbobsCOM.BoYesNoEnum.tNO
                oUserObjectMD.CanDelete = SAPbobsCOM.BoYesNoEnum.tNO
                oUserObjectMD.CanFind = SAPbobsCOM.BoYesNoEnum.tYES
                If sFinCHRG <> "" And sFind2 <> "" Then
                    oUserObjectMD.FindColumns.ColumnAlias = sFinCHRG
                    oUserObjectMD.FindColumns.Add()
                    oUserObjectMD.FindColumns.SetCurrentLine(1)
                    oUserObjectMD.FindColumns.ColumnAlias = sFind2
                    oUserObjectMD.FindColumns.Add()
                End If
                oUserObjectMD.CanLog = SAPbobsCOM.BoYesNoEnum.tNO
                oUserObjectMD.LogTableName = ""
                oUserObjectMD.CanYearTransfer = SAPbobsCOM.BoYesNoEnum.tNO
                oUserObjectMD.ExtensionName = ""
                If strChildTbl <> "" Then
                    oUserObjectMD.ChildTables.TableName = strChildTbl
                End If
                oUserObjectMD.ManageSeries = SAPbobsCOM.BoYesNoEnum.tNO
                oUserObjectMD.Code = strUDO
                oUserObjectMD.Name = strDesc
                oUserObjectMD.ObjectType = SAPbobsCOM.BoUDOObjType.boud_Document
                oUserObjectMD.TableName = strTable
                If oUserObjectMD.Add() <> 0 Then
                    Throw New Exception(GOD_Main.GOD_Company.GetLastErrorDescription)
                End If
            End If
        Catch ex As Exception
            Throw ex
        Finally
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserObjectMD)
            oUserObjectMD = Nothing
            GC.WaitForPendingFinalizers()
            GC.Collect()
        End Try
    End Sub
#End Region

#Region "GetApplication"
    Public Function GetApplication() As SAPbouiCOM.Application
        Dim objApp As SAPbouiCOM.Application
        Dim objSboGuiApi As New SAPbouiCOM.SboGuiApi
        Dim strConnectionString As String = Environment.GetCommandLineArgs.GetValue(1)
        objSboGuiApi = New SAPbouiCOM.SboGuiApi
        objSboGuiApi.Connect(strConnectionString)
        objApp = objSboGuiApi.GetApplication()
        Return objApp
    End Function
#End Region

    Public Function ShowSuccessMessage(ByVal Message As String)
        GOD_Main.GOD_Application.StatusBar.SetText(Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success)
        Return Nothing
    End Function

#Region "GET COMPANY"
    Public Function GetCompany(ByVal SBOApplication As SAPbouiCOM.Application) As SAPbobsCOM.Company
        Dim GOD_Company As SAPbobsCOM.Company
        Dim strCookie As String
        Dim strCookieContext As String
        Try
            GOD_Company = New SAPbobsCOM.Company
            strCookie = GOD_Company.GetContextCookie
            strCookieContext = SBOApplication.Company.GetConnectionContext(strCookie)
            GOD_Company.SetSboLoginContext(strCookieContext)
            If GOD_Company.Connect <> 0 Then
                strLastError = "Connection Error"
                SBOApplication.StatusBar.SetText("GOD Simple Form Addon Connection Error. Error is " & GOD_Main.GOD_Company.GetLastErrorDescription, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                Return Nothing
            End If
            Return GOD_Company
        Catch ex As Exception
            SBOApplication.MessageBox(ex.Message)
            Return Nothing
        End Try
    End Function
#End Region

#Region "Register UDO In SAP Business One "
    'To Register Use Defined Object in SAP Business One
    Function registerUDO(ByVal UDOCode As String, ByVal UDOName As String, ByVal UDOType As SAPbobsCOM.BoUDOObjType, ByVal findAliasNDescription As String(,), ByVal parentTableName As String, Optional ByVal childTable1 As String = "", Optional ByVal childTable2 As String = "", Optional ByVal childTable3 As String = "", Optional ByVal childTable4 As String = "", Optional ByVal childTable5 As String = "", Optional ByVal childTable6 As String = "", Optional ByVal childTable7 As String = "", Optional ByVal childTable8 As String = "", Optional ByVal LogOption As SAPbobsCOM.BoYesNoEnum = SAPbobsCOM.BoYesNoEnum.tNO, Optional ByVal DefFormOption As SAPbobsCOM.BoYesNoEnum = SAPbobsCOM.BoYesNoEnum.tNO, Optional ByVal MenuItem As SAPbobsCOM.BoYesNoEnum = SAPbobsCOM.BoYesNoEnum.tNO, Optional ByVal MenuCaption As String = "", Optional ByVal FatherMenuId As String = "", Optional ByVal Position As Integer = 0) As Boolean
        Dim actionSuccess As Boolean = False
        Try
            registerUDO = False
            Dim v_udoMD As SAPbobsCOM.UserObjectsMD
            v_udoMD = GOD_Main.objUtilities.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserObjectsMD)
            v_udoMD.CanCancel = SAPbobsCOM.BoYesNoEnum.tNO
            v_udoMD.CanClose = SAPbobsCOM.BoYesNoEnum.tNO
            v_udoMD.CanCreateDefaultForm = SAPbobsCOM.BoYesNoEnum.tNO
            v_udoMD.CanDelete = SAPbobsCOM.BoYesNoEnum.tYES
            v_udoMD.CanFind = SAPbobsCOM.BoYesNoEnum.tYES
            v_udoMD.CanLog = LogOption
            v_udoMD.CanYearTransfer = SAPbobsCOM.BoYesNoEnum.tYES
            v_udoMD.ManageSeries = SAPbobsCOM.BoYesNoEnum.tYES
            v_udoMD.Code = UDOCode
            v_udoMD.Name = UDOName
            v_udoMD.TableName = parentTableName
            If LogOption = SAPbobsCOM.BoYesNoEnum.tYES Then
                v_udoMD.LogTableName = "A" & parentTableName
            End If
            If DefFormOption = SAPbobsCOM.BoYesNoEnum.tYES Then
                v_udoMD.CanCreateDefaultForm = SAPbobsCOM.BoYesNoEnum.tYES
                v_udoMD.MenuItem = SAPbobsCOM.BoYesNoEnum.tYES
                v_udoMD.MenuCaption = MenuCaption
                v_udoMD.FatherMenuID = FatherMenuId
                v_udoMD.Position = Position
            End If
            v_udoMD.ObjectType = UDOType
            For i As Int16 = 0 To findAliasNDescription.GetLength(0) - 1
                If i > 0 Then v_udoMD.FindColumns.Add()
                v_udoMD.FindColumns.ColumnAlias = findAliasNDescription(i, 0)
                v_udoMD.FindColumns.ColumnDescription = findAliasNDescription(i, 1)
            Next
            If childTable1 <> "" Then
                v_udoMD.ChildTables.TableName = childTable1
                v_udoMD.ChildTables.Add()
            End If
            If childTable2 <> "" Then
                v_udoMD.ChildTables.TableName = childTable2
                v_udoMD.ChildTables.Add()
            End If
            If childTable3 <> "" Then
                v_udoMD.ChildTables.TableName = childTable3
                v_udoMD.ChildTables.Add()
            End If
            If childTable4 <> "" Then
                v_udoMD.ChildTables.TableName = childTable4
                v_udoMD.ChildTables.Add()
            End If
            If v_udoMD.Add() = 0 Then
                registerUDO = True
                GOD_Main.GOD_Application.StatusBar.SetText("Successfully Registered UDO >" & UDOCode & ">" & UDOName & ".", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success)
            Else
                GOD_Main.GOD_Application.StatusBar.SetText("Failed to Register UDO >" & UDOCode & ">" & UDOName & " >" & GOD_Main.GOD_Company.GetLastErrorDescription, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                registerUDO = False
            End If
            System.Runtime.InteropServices.Marshal.ReleaseComObject(v_udoMD)
            v_udoMD = Nothing
            GC.Collect()
        Catch ex As Exception
            GOD_Main.GOD_Application.MessageBox(ex.Message)
        End Try
    End Function
#End Region

#Region "Check for UDO Exists"
    'To Check If User Defined Object already exists or not
    Public Function UDOExists(ByVal code As String) As Boolean
        GC.Collect()
        Dim v_UDOMD As SAPbobsCOM.UserObjectsMD
        Dim v_ReturnCode As Boolean
        v_UDOMD = GOD_Main.objUtilities.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserObjectsMD)
        v_ReturnCode = v_UDOMD.GetByKey(code)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(v_UDOMD)
        v_UDOMD = Nothing
        Return v_ReturnCode
    End Function
#End Region

    Public Function GetBusinessObject(ByVal ObjectType As SAPbobsCOM.BoObjectTypes) As Object
        Return GOD_Main.GOD_Company.GetBusinessObject(ObjectType)
    End Function

#Region "Load Form"
    'To Load Form in SAP Business One
    Sub LoadForm(ByVal XMLFile As String, ByVal FormType As String, ByVal FormUID As String, Optional ByVal FileType As ResourceType = ResourceType.Content)
        Try
            Dim xmldoc As New Xml.XmlDocument
            Dim Streaming As System.IO.Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Simple_Form." + XMLFile)
            Dim StreamRead As New System.IO.StreamReader(Streaming, True)
            xmldoc.LoadXml(StreamRead.ReadToEnd)
            StreamRead.Close()
            Dim r As New Random
            r.Next(1000)
            If Not xmldoc.SelectSingleNode("//form") Is Nothing Then
                xmldoc.SelectSingleNode("//form").Attributes.GetNamedItem("uid").Value = xmldoc.SelectSingleNode("//form").Attributes.GetNamedItem("uid").Value & "_" & r.Next
                GOD_Main.GOD_Application.LoadBatchActions(xmldoc.InnerXml)
            End If
        Catch ex As Exception
            GOD_Main.GOD_Application.MessageBox(ex.Message)
        End Try
    End Sub
#End Region

#Region "LOAD FROM XML"
    'To Load Sap Bbusiness One Form in SAP Business One Using XML Operations
    Public Sub LoadFromXML(ByVal FileName As String, Optional ByVal FileType As ResourceType = ResourceType.Content)
        Dim oXmlDoc As Xml.XmlDocument
        Dim oXmlStream As System.IO.Stream
        oXmlDoc = New Xml.XmlDocument
        Try
            If FileType = ResourceType.Content Then
                oXmlDoc.Load(FileName)
            Else
                oXmlStream = System.Reflection.Assembly.LoadFrom(System.Windows.Forms.Application.ExecutablePath).GetManifestResourceStream(GetType(modStartUp).Namespace & "." & FileName)
                oXmlDoc.Load(oXmlStream)
            End If
            GOD_Main.GOD_Application.LoadBatchActions(oXmlDoc.InnerXml)
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        End Try
    End Sub
#End Region

    Public Function FormExist(ByVal FormTypeEx As String) As Boolean
        Dim intLoop As Integer
        For intLoop = GOD_Main.GOD_Application.Forms.Count - 1 To 0 Step -1
            If Trim(FormTypeEx) = Trim(GOD_Main.GOD_Application.Forms.Item(intLoop).TypeEx) Then
                GOD_Main.GOD_Application.Forms.Item(intLoop).Select()
                Return True
            End If
        Next
        Return False
    End Function
    Public Function GetForm(ByVal FormUID As String) As SAPbouiCOM.Form
        Return GOD_Main.GOD_Application.Forms.Item(FormUID)
    End Function

#Region "Get Error Details"
    'To Get Error Description in SAP B1
    Private Sub updateLastErrorDetails(ByVal ErrorCode As Integer)
        strLastErrorCode = ErrorCode
        strLastError = GOD_Main.GOD_Company.GetLastErrorCode() & ":" & GOD_Main.GOD_Company.GetLastErrorDescription()
    End Sub
#End Region

#Region "Add Column"
    'Add User Defined Field to Table
    Private Sub addCol(ByVal strTab As String, ByVal strCol As String, ByVal strDesc As String, ByVal nType As Integer, Optional ByVal nEditSize As Integer = 10, Optional ByVal nSubType As Integer = 0)
        Dim oUFields As SAPbobsCOM.UserFieldsMD
        Dim nError As Integer
        oUFields = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)
        oUFields.TableName = strTab
        oUFields.Name = strCol
        oUFields.Type = nType
        oUFields.SubType = nSubType
        oUFields.Description = strDesc
        oUFields.EditSize = nEditSize
        nError = oUFields.Add()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oUFields)
        GC.Collect()
        GC.WaitForPendingFinalizers()
    End Sub
#End Region

#Region "Create Table"
    'Create New User Defined Table
    Public Function CreateTable(ByVal TableName As String, ByVal TableDescription As String, ByVal TableType As SAPbobsCOM.BoUTBTableType) As Boolean
        Dim intRetCode As Integer
        Dim objUserTableMD As SAPbobsCOM.UserTablesMD
        objUserTableMD = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserTables)
        Try
            If (Not objUserTableMD.GetByKey(TableName)) Then
                objUserTableMD.TableName = TableName
                objUserTableMD.TableDescription = TableDescription
                objUserTableMD.TableType = TableType
                intRetCode = objUserTableMD.Add()
                If (intRetCode = 0) Then
                    GOD_Main.GOD_Application.StatusBar.SetText(TableName & " Table is Created Successfully.", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_None)
                    Return True
                End If
            Else
                Return False
            End If
        Catch ex As Exception
            GOD_Main.GOD_Application.MessageBox(ex.Message)
        Finally
            System.Runtime.InteropServices.Marshal.ReleaseComObject(objUserTableMD)
            GC.Collect()
        End Try
    End Function
#End Region

#Region "Field Creations"
    'Add Alphabet Field to Table
    Public Sub AddAlphaField(ByVal TableName As String, ByVal ColumnName As String, ByVal ColDescription As String, ByVal Size As Integer, ByVal SubType As SAPbobsCOM.BoFldSubTypes, Optional ByVal DefaultValue As String = "")
        Try
            addField(TableName, ColumnName, ColDescription, SAPbobsCOM.BoFieldTypes.db_Alpha, Size, SAPbobsCOM.BoFldSubTypes.st_None, "", "", DefaultValue)
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        End Try
    End Sub
    
    'Add Alpha Field to Table and add Validvalues and set Default Values
    Public Sub AddAlphaField(ByVal TableName As String, ByVal ColumnName As String, ByVal ColDescription As String, ByVal Size As Integer, ByVal ValidValues As String, ByVal ValidDescriptions As String, ByVal SetValidValue As String)
        Try
            addField(TableName, ColumnName, ColDescription, SAPbobsCOM.BoFieldTypes.db_Alpha, Size, SAPbobsCOM.BoFldSubTypes.st_None, ValidValues, ValidDescriptions, SetValidValue)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
    'To Add Field In Table 
    Public Sub addField(ByVal TableName As String, ByVal ColumnName As String, ByVal ColDescription As String, ByVal FieldType As SAPbobsCOM.BoFieldTypes, ByVal Size As Integer, ByVal SubType As SAPbobsCOM.BoFldSubTypes, ByVal ValidValues As String, ByVal ValidDescriptions As String, ByVal SetValidValue As String)
        Dim intLoop As Integer
        Dim strValue, strDesc As Array
        Dim objUserFieldMD As SAPbobsCOM.UserFieldsMD
        objUserFieldMD = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)
        Try
            strValue = ValidValues.Split(Convert.ToChar(","))
            strDesc = ValidDescriptions.Split(Convert.ToChar(","))
            If (strValue.GetLength(0) <> strDesc.GetLength(0)) Then
                Throw New Exception("Invalid Valid Values")
            End If
            If (Not isColumnExist(TableName, ColumnName)) Then
                objUserFieldMD.TableName = TableName
                objUserFieldMD.Name = ColumnName
                objUserFieldMD.Description = ColDescription
                objUserFieldMD.Type = FieldType
                If (FieldType <> SAPbobsCOM.BoFieldTypes.db_Numeric) Then
                    objUserFieldMD.Size = Size
                Else
                    objUserFieldMD.EditSize = Size
                End If
                objUserFieldMD.SubType = SubType
                If strValue.Length > 1 Then
                    For intLoop = 0 To strValue.GetLength(0) - 1
                        objUserFieldMD.ValidValues.Value = strValue(intLoop)
                        objUserFieldMD.ValidValues.Description = strDesc(intLoop)
                        objUserFieldMD.ValidValues.Add()
                    Next
                    objUserFieldMD.DefaultValue = SetValidValue
                Else
                    If SetValidValue.Length > 0 Then
                        objUserFieldMD.DefaultValue = SetValidValue
                    End If
                End If
                If (objUserFieldMD.Add() <> 0) Then
                    GOD_Main.GOD_Application.StatusBar.SetText(GOD_Main.GOD_Company.GetLastErrorDescription & " For UDF " & ColumnName & " in Table " & TableName)
                Else
                    GOD_Main.GOD_Application.StatusBar.SetText(ColumnName + "Field Created Successfully in Table ." & TableName, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_None)
                End If
            End If
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message & " For UDF " & ColumnName & " in Table " & TableName, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        Finally
            System.Runtime.InteropServices.Marshal.ReleaseComObject(objUserFieldMD)
            GC.Collect()
        End Try
    End Sub
    
    'To Add Date Field
    Public Sub AddDateField(ByVal TableName As String, ByVal ColumnName As String, ByVal ColDescription As String, ByVal SubType As SAPbobsCOM.BoFldSubTypes)
        Try
            addField(TableName, ColumnName, ColDescription, SAPbobsCOM.BoFieldTypes.db_Date, 0, SubType, "", "", "")
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        End Try
    End Sub
#End Region

#Region " Column Exist or Not "
    'To Verify the Given Field already Exists or not
    Private Function isColumnExist(ByVal TableName As String, ByVal ColumnName As String) As Boolean
        Dim objRecordSet As SAPbobsCOM.Recordset
        Dim strTemp As String = ""
        objRecordSet = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
        Try
            strTemp = "SELECT COUNT(*) FROM CUFD WHERE TableID = '" & TableName & "' AND AliasID = '" & ColumnName & "'"
            objRecordSet.DoQuery(strTemp)
            If (Convert.ToInt16(objRecordSet.Fields.Item(0).Value) = 0) Then
                Return False
            Else
                Return True
            End If
        Catch ex As Exception
            Throw ex
        Finally
            System.Runtime.InteropServices.Marshal.ReleaseComObject(objRecordSet)
            GC.Collect()
        End Try
    End Function
#End Region

#Region "LOAD MENU"
    'To Load Menu Item in SAP Business One Using XML
    Public Sub LoadMenu(ByVal XMLFile As String)
        Dim oXML As System.Xml.XmlDocument
        Dim strXML As String
        Try
            oXML = New System.Xml.XmlDocument
            oXML.Load(XMLFile)
            strXML = oXML.InnerXml()
            GOD_Main.GOD_Application.LoadBatchActions(strXML)
        Catch ex As Exception
            GOD_Main.GOD_Application.StatusBar.SetText(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Warning)
        End Try
    End Sub
#End Region

    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub
End Class

Public Enum ResourceType
    Embeded
    Content
End Enum


 

5. ChooseFromList Class Code

 

Imports System.Reflection

Public Class clsChooseFromList
#Region "Declarations"
    Public Shared ItemUID As String
    Public Shared SourceFormUID As String
    Public Shared CFLChoice As String
    Private Ouserdatasource As SAPbouiCOM.UserDataSource
    Private oedit As SAPbouiCOM.EditText
    Private oForm As SAPbouiCOM.Form
    Private GOD_Matrix As SAPbouiCOM.Grid
    Private oItem As SAPbouiCOM.Item
    Private objGrid As SAPbouiCOM.Grid
    Private dtTemp As SAPbouiCOM.DataTable
    Private strSelectedItem1 As String = String.Empty
    Private strSelectedItem2 As String = String.Empty
    Public Shared oDBs_DetailCont As SAPbouiCOM.DBDataSource
    Public Shared oDBs_DetailChrg As SAPbouiCOM.DBDataSource
    Public SourceMatrixRow As String
    Private referencedFormUID As String
    Public oUDS As SAPbouiCOM.UserDataSource
    Dim oformidTxt As SAPbouiCOM.EditText
    Public intColSel As Integer = 0
#End Region

#Region "New"
    Public Sub New()
    End Sub
#End Region

#Region "Bind Data"
    Public Sub databound(ByVal GOD_Form As SAPbouiCOM.Form, ByVal SourceForm As SAPbouiCOM.Form, ByVal oDBs_Detail1 As SAPbouiCOM.DBDataSource, ByVal oDBs_Detail2 As SAPbouiCOM.DBDataSource, ByVal Row As String, SourceRowNo1 As Integer)
        Try
            Dim GOD_OMQL_RecMenu As SAPbobsCOM.Recordset
            GOD_OMQL_RecMenu = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
            Dim strSQL As String = ""
            oDBs_DetailCont = oDBs_Detail1
            oDBs_DetailChrg = oDBs_Detail2
            SourceMatrixRow = Row

            oUDS = GOD_Form.DataSources.UserDataSources.Add("UDS1", SAPbouiCOM.BoDataType.dt_LONG_TEXT, 20)
            oformidTxt = GOD_Form.Items.Item("6").Specific
            oformidTxt.DataBind.SetBound(True, "", "UDS1")
            oformidTxt.Value = SourceForm.UniqueID
            referencedFormUID = SourceForm.UniqueID

            GOD_Form.Freeze(True)
            GOD_Form.DataSources.DataTables.Add("dtLevel3")
            Ouserdatasource = GOD_Form.DataSources.UserDataSources.Add("dbFind", SAPbouiCOM.BoDataType.dt_LONG_TEXT, 250)
            oedit = GOD_Form.Items.Item("etFind").Specific
            oedit.DataBind.SetBound(True, "", "dbFind")
            objGrid = GOD_Form.Items.Item("mtchoose").Specific
            dtTemp = GOD_Form.DataSources.DataTables.Item("dtLevel3")
            If (CFLChoice = "CFL_Vendor_SimpleForm" Or CFLChoice = "CFL_Customer_SimpleForm") Then
                If (CFLChoice = "CFL_Customer_SimpleForm") Then
                    strSQL = "Select CardCode as 'SAP Code',CardName 'Vendor Name',CardCode 'Vendor Code',Balance 'Vendor Balance' From OCRD Where CardType = 'C' Order By CardCode"
                Else
                    strSQL = "Select CardCode as 'SAP Code',CardName 'Vendor Name',CardCode 'Vendor Code',Balance 'Vendor Balance' From OCRD Where CardType = 'S' Order By CardCode"
                End If
                GOD_Form.Title = "List Of Business Partners"
                dtTemp.ExecuteQuery(strSQL)
                If dtTemp.IsEmpty = True Then
                    GOD_Main.GOD_Application.SetStatusBarMessage("No Matching Business Partners Records Found.", SAPbouiCOM.BoMessageTime.bmt_Short, True)
                    GOD_Form.Close()
                    Exit Sub
                End If
                objGrid.DataTable = dtTemp
                objGrid.Columns.Item(0).TitleObject.Caption = "SAP Code"
                objGrid.Columns.Item(1).TitleObject.Caption = "BP Code"
                objGrid.Columns.Item(2).TitleObject.Caption = "BP Name"
                objGrid.Columns.Item(3).TitleObject.Caption = "BP Balance"
            End If
            objGrid.Columns.Item(0).Visible = False
            objGrid.AutoResizeColumns()
            objGrid.SelectionMode = SAPbouiCOM.BoMatrixSelect.ms_Single
            If objGrid.Rows.Count > 0 Then
                objGrid.Rows.SelectedRows.Add(0)
            End If
            GOD_Matrix = GOD_Form.Items.Item("mtchoose").Specific
            GOD_Form.Freeze(False)
            GOD_Form.Update()
        Catch ex As Exception
            GOD_Main.GOD_Application.MessageBox(ex.Message)
        Finally
        End Try
    End Sub
#End Region


#Region "LOAD CFL"
    Public Sub LoadCFLvalues(ByRef pVal As SAPbouiCOM.ItemEvent)
        oForm = GetForm(pVal.FormUID)
        oItem = oForm.Items.Item("mtchoose")
        GOD_Matrix = CType(oItem.Specific, SAPbouiCOM.Grid)
        Dim inti As Integer
        inti = 0
        Dim sandy As SAPbouiCOM.SelectedRows = GOD_Matrix.Rows.SelectedRows()
        Dim intRowId As Integer = sandy.Item(0, SAPbouiCOM.BoOrderType.ot_SelectionOrder)
        If (CFLChoice = "CFL_Vendor_SimpleForm" Or CFLChoice = "CFL_Customer_SimpleForm") Then
            strSelectedItem1 = Convert.ToString(GOD_Matrix.DataTable.GetValue(2, intRowId))
            strSelectedItem2 = Convert.ToString(GOD_Matrix.DataTable.GetValue(1, intRowId))
        End If

        oForm.Close()
        oForm = GetForm(SourceFormUID)
        oForm = GOD_Main.objUtilities.GetForm(referencedFormUID)
         If (CFLChoice = "CFL_Vendor_SimpleForm" Or CFLChoice = "CFL_Customer_SimpleForm") Then
            oForm.Items.Item("edVendorNm").Specific.value = strSelectedItem1
            oForm.Items.Item("edVendorCd").Specific.value = strSelectedItem2
            oForm.Items.Item("edVendorNm").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
        End If
        strSelectedItem1 = ""
        strSelectedItem2 = ""
    End Sub
#End Region

#Region "Check for UDO Exists"
    Public Function UDOExists(ByVal code As String) As Boolean
        GC.Collect()
        Dim v_UDOMD As SAPbobsCOM.UserObjectsMD
        Dim v_ReturnCode As Boolean
        v_UDOMD = GOD_Main.objUtilities.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserObjectsMD)
        v_ReturnCode = v_UDOMD.GetByKey(code)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(v_UDOMD)
        v_UDOMD = Nothing
        Return v_ReturnCode
    End Function
#End Region

#Region "CFL Form"
    Public Sub CFLForm(ByVal strSQL As String, ByVal dtTemp As SAPbouiCOM.DataTable, ByVal objGrid As SAPbouiCOM.Grid, ByVal strTitle As String, ByVal GOD_Form As SAPbouiCOM.Form)
        GOD_Form.Title = strTitle
        dtTemp.ExecuteQuery(strSQL)
        objGrid.DataTable = dtTemp
        objGrid.Columns.Item(0).TitleObject.Caption = "SAP No."
        objGrid.Columns.Item(1).TitleObject.Caption = "Code"
        objGrid.Columns.Item(2).TitleObject.Caption = "Name"
        objGrid.Columns.Item(3).TitleObject.Caption = "Test Name"
    End Sub
#End Region

#Region "Get Form"
    Public Function GetForm(ByVal FormUID As String) As SAPbouiCOM.Form
        Return GOD_Main.GOD_Application.Forms.Item(FormUID)
    End Function
#End Region

#Region "Item Event"
    Public Sub ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean)
        BubbleEvent = True
        If (pVal.FormTypeEx = "CFLHeader" Or pVal.FormTypeEx = "CFLDetail") Then 'Or pVal.FormTypeEx = "CFL_FLD_FTYPE_HDR" Or pVal.FormTypeEx = "CFL_FLD_CODE_HDR") Then
            If pVal.Before_Action = True Then
                If pVal.ItemUID = "mtchoose" Then
                    If pVal.EventType = SAPbouiCOM.BoEventTypes.et_CLICK Then
                        oForm = GetForm(pVal.FormUID)
                        oItem = CType(oForm.Items.Item(pVal.ItemUID), SAPbouiCOM.Item)
                        GOD_Matrix = CType(oItem.Specific, SAPbouiCOM.Grid)
                        For i As Integer = 1 To GOD_Matrix.Rows.Count - 1
                            If GOD_Matrix.Rows.IsSelected(i) = True Then
                                If pVal.Row > 0 Then
                                    GOD_Matrix.Rows.SelectedRows.Add(pVal.Row)
                                End If
                            End If
                        Next
                    End If
                    If pVal.EventType = SAPbouiCOM.BoEventTypes.et_DOUBLE_CLICK Then
                        oForm = GetForm(pVal.FormUID)
                        referencedFormUID = oForm.Items.Item("6").Specific.value
                        oItem = CType(oForm.Items.Item(pVal.ItemUID), SAPbouiCOM.Item)
                        GOD_Matrix = CType(oItem.Specific, SAPbouiCOM.Grid)
                        GOD_Main.strColSelectedinCFL = pVal.ColUID
                        If pVal.Row > 0 Then
                            GOD_Matrix.Rows.SelectedRows.Add(pVal.Row)
                            LoadCFLvalues(pVal)
                        End If
                    End If
                End If
            End If
        End If
        If pVal.FormTypeEx = "CFLHeader" And pVal.BeforeAction = False And pVal.ItemUID = "btnNew" And pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED Then
            oForm = GetForm(pVal.FormUID)
            If oForm.Title = "List Of Clients" Then
                GOD_Main.GOD_Application.ActivateMenuItem("2561")
                oForm.Close()
                Dim GOD_OMQL_ItemForm As SAPbouiCOM.Form
                GOD_OMQL_ItemForm = GOD_Main.GOD_Application.Forms.GetFormByTypeAndCount("134", pVal.FormTypeCount)
                GOD_OMQL_ItemForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE
            ElseIf oForm.Title = "List Of Matching Numbers." Then
                Dim GOD_OMQL_RecMenu As SAPbobsCOM.Recordset
                GOD_OMQL_RecMenu = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                GOD_OMQL_RecMenu.DoQuery("SELECT MenuUid FROM (SELECT (RANK() OVER (ORDER BY TableName)) + 51200 AS MenuUid, TableName, Descr FROM OUTB WHERE ObjectType = 0) T0  WHERE TableName = 'GOD_OMAT'")
                GOD_Main.GOD_Application.ActivateMenuItem(GOD_OMQL_RecMenu.Fields.Item("MenuUid").Value)
                oForm.Close()
            End If
        End If

        If pVal.FormTypeEx = "CFLDetail" And pVal.BeforeAction = False And pVal.ItemUID = "btnNew" And pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED Then
            oForm = GetForm(pVal.FormUID)
            If oForm.Title = "List Of Items" Then
                GOD_Main.GOD_Application.ActivateMenuItem("3073")
                oForm.Close()
                Dim GOD_OMQL_ItemForm As SAPbouiCOM.Form
                GOD_OMQL_ItemForm = GOD_Main.GOD_Application.Forms.GetFormByTypeAndCount("150", pVal.FormTypeCount)
                GOD_OMQL_ItemForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE
            ElseIf oForm.Title = "List Of Matching Numbers." Then
                Dim GOD_OMQL_RecMenu As SAPbobsCOM.Recordset
                GOD_OMQL_RecMenu = GOD_Main.GOD_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                GOD_OMQL_RecMenu.DoQuery("SELECT MenuUid FROM (SELECT (RANK() OVER (ORDER BY TableName)) + 51200 AS MenuUid, TableName, Descr FROM OUTB WHERE ObjectType = 0) T0  WHERE TableName = 'GOD_OMAT'")
                GOD_Main.GOD_Application.ActivateMenuItem(GOD_OMQL_RecMenu.Fields.Item("MenuUid").Value)
                oForm.Close()
            End If
        End If
        If pVal.ItemUID = "btnChoose" And pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED Then
            oForm = GetForm(pVal.FormUID)
            referencedFormUID = oForm.Items.Item("6").Specific.value
            LoadCFLvalues(pVal)
        End If
        If pVal.BeforeAction = False Then
            If pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN Then
                'For selecting the specific row according to search
                Try
                    oForm = GetForm(pVal.FormUID)
                    Dim objGrid As SAPbouiCOM.Grid
                    Dim oedit As SAPbouiCOM.EditText
                    If pVal.ItemUID = "etFind" Then
                        If Not (pVal.CharPressed = "13" Or pVal.CharPressed = "40" Or pVal.CharPressed = "38") Then
                            Dim i, j As Integer
                            Dim strItem As String
                            objGrid = oForm.Items.Item("mtchoose").Specific
                            oedit = oForm.Items.Item("etFind").Specific
                            For intColSel = 0 To objGrid.Columns.Count - 1
                                If objGrid.Columns.Item(intColSel).TitleObject.Caption = GOD_Main.strColSelectedinCFL Then
                                    Exit For
                                End If
                            Next
                            For i = 0 To objGrid.DataTable.Rows.Count - 1
                                strItem = ""
                                If intColSel = 0 Then
                                    strItem = objGrid.DataTable.GetValue(1, i)
                                Else
                                    strItem = objGrid.DataTable.GetValue(intColSel, i)
                                End If
                                If (oedit.String.Length = 0) Then
                                    Exit For
                                End If
                                For j = 1 To oedit.String.Length
                                    If oedit.String.Length <= strItem.Length Then
                                        If strItem.Substring(0, j).ToUpper = oedit.String.ToUpper Then
                                            objGrid.Rows.SelectedRows.Add(i)
                                            Exit Try
                                        End If
                                    End If
                                Next
                            Next
                            intColSel = 0
                        End If
                    End If
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
                Try
                    oForm = GetForm(pVal.FormUID)
                    oItem = oForm.Items.Item("mtchoose")
                    GOD_Matrix = oForm.Items.Item("mtchoose").Specific
                    If (pVal.CharPressed = 40) Then
                        Dim currentRow As Integer
                        For intLoop As Integer = 0 To GOD_Matrix.DataTable.Rows.Count - 1
                            If (GOD_Matrix.Rows.IsSelected(intLoop) = True) Then
                                currentRow = intLoop
                                Exit For
                            End If
                        Next
                        Dim iRowcount As Integer = GOD_Matrix.Rows.Count
                        If currentRow < iRowcount - 1 Then
                            GOD_Matrix.Columns.Item("RowsHeader").Click(currentRow + 1, False)
                        End If
                    End If

                    If (pVal.CharPressed = 38) Then
                        Dim currentRow As Integer
                        For intLoop As Integer = 0 To GOD_Matrix.DataTable.Rows.Count - 1
                            If (GOD_Matrix.Rows.IsSelected(intLoop) = True) Then
                                currentRow = intLoop
                                Exit For
                            End If
                        Next
                        Dim iRowcount As Integer = GOD_Matrix.Rows.Count
                        If currentRow > 0 Then
                            GOD_Matrix.Columns.Item("RowsHeader").Click(currentRow - 1, False)
                        End If
                    End If
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            End If
        End If
    End Sub
#End Region

End Class

Kindly Find attached “Solution Explorer” Structure for you reference.

I will Upgrade this Blog with Complex Form Application Also.

Revert For Any Clarification.

Thanks and Regards,
Mahendrakumar

 

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply