Cargar xml para diseño de Form existente de sap

Buenas @andresramirez , señores.

Estoy tratando de montar un diseño por xml que afecta el form=‘139’
Pero a la hora de realizarlo me carga solo un par de opciones.

uso este codigo, es como si solo en el seguimiento del codigo me tomara una parte del xml.
Gracias por la atencion prestada.

   Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent

            BubbleEvent = True
            Dim oOrderForm As SAPbouiCOM.Form
            If (pVal.FormType = 139 And pVal.EventType <> SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD And pVal.Before_Action = True) Then

                oOrderForm = SBO_Application.Forms.GetFormByTypeAndCount(pVal.FormType, pVal.FormTypeCount)

              
                If (pVal.EventType = SAPbouiCOM.BoEventTypes.et_FORM_LOAD And pVal.Before_Action = True) Then
                    '                {
                    '                    UpdateFormByXML("NewCheckbox.xml", pVal.FormUID);

                    'FunctionSDK.LoadFromXML(SBO_Application, "139.XML")
                    UpdateFormByXML("139.xml", pVal.FormUID)

                    '                }  
                End If
                '	} 
                '} 


                '& pVal.EventType <> SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD
                'MsgBox("Ojo")
            End If
        End Sub

        Private Sub UpdateFormByXML(sFileName As String, sFormUID As String)

            Try
                Dim sxPath As String = Nothing
                Dim sPath As String = Nothing

                sxPath = "Application//forms//action//form//@uid"
                sPath = System.Environment.CurrentDirectory + "\"

                Dim xDoc As Xml.XmlDocument
                xDoc = New Xml.XmlDocument

                Dim xNode As Xml.XmlNode

                Dim sXML As String = Nothing



                xDoc.Load(sPath + sFileName)

                xNode = xDoc.SelectSingleNode(sxPath)



                xNode.InnerText = sFormUID

                sXML = xDoc.InnerXml.ToString()



                SBO_Application.LoadBatchActions(sXML)


            Catch ex As System.Exception

                SBO_Application.SetStatusBarMessage(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Short, True)

            End Try

        End Sub

Hola @Fredy_SAP
Prueba de la siguiente manera:

        SAPbouiCOM.Form oForm;
        System.Xml.XmlDocument oXML = new System.Xml.XmlDocument();
        string strXML;
        SAPbouiCOM.FormCreationParams oCreationParams = ( SAPbouiCOM.FormCreationParams )( SBO_Application.CreateObject( SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams ) ) ;

        oXML.Load(System.IO.Directory.GetCurrentDirectory() + "\\Formulario.xml");
        strXML = oXML.InnerXml;
        oCreationParams.XmlData = strXML;        
        oForm = SBO_Application.Forms.AddEx( oCreationParams );

Saludos,
Andres Ramirez Jaramillo :colombia:

1 me gusta

@Fredy_SAP te voy a dar un TIP. Cuando necesites modificar o cambiar algún form nativo es mas fácil hacerlo con Bussiness Studio y VS. Esto para que lo tengas como una opción mas rápida y sin estarte complicando con código.

saludos

@andresramirez de esta manera me arroja un error en interopServices

{“Form - Reserved or illegal form unique ID [66000-32]”}

Voy a validar esta opción. Y te comento @juliancab

@juliancab , por diseño com o tu dices es facil. Pero a la hora de trabajar con tabcontrol, para las pestañas, y agregar contendio , quedo como flojo, porque no me deja navegar visualmente por las pestañas. Si tienes algo de documentación sobre esto, te agradeceria, o un ejemplo basico.

Gracias

@Fredy_SAP, cambia el UniqueID del XML. No puedes sobre escribir el formulario estándar, lo que debes hacer es al abrir el menú no llamar el formulario nativo sino el tuyo, que se importa desde el XML.

Saludos,
Andres Ramirez Jaramillo :colombia:

@andresramirez Te comento, que me cargo ya el diseño del XML, era cuestion de un cambio en la configuracion porque el xml cargaba folder, del tab. Cargo Perfecto.

Solo que no se si es que me falta algo en el xml, o deba poner otro debate. Pero cuando en la caja escogo de la lista , no me lo pone en la caja de texto. Que podria ser.

Asi lo tengo en el Xml.

Estoy usando este codigo

  Dim oCFLEvento As SAPbouiCOM.IChooseFromListEvent
                oCFLEvento = pVal
                Dim sCFL_ID As String
                sCFL_ID = oCFLEvento.ChooseFromListUID
                oOrderForm = SBO_Application.Forms.Item(FormUID)
                Dim oCFL As SAPbouiCOM.ChooseFromList
                oCFL = oOrderForm.ChooseFromLists.Item(sCFL_ID)

                Try


                    Dim oDataTable As SAPbouiCOM.DataTable
                    oDataTable = oCFLEvento.SelectedObjects
                    Dim val As String
                    Dim val1 As String

                    If Not oDataTable Is Nothing And pVal.BeforeAction = False Then

                        oOrderForm.Items.Item("054").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                        oDataTable = oCFLEvento.SelectedObjects

                        val = oDataTable.GetValue("CardCode", 0).ToString
                        'val1 = oDataTable.GetValue("CardName", 0).ToString
                        'oOrderForm.DataSources.DBDataSources.Item("ORDR").SetValue("U_BKSC_Dest", 0, val)
                        'oOrderForm.DataSources.DataTables.Item("OCRD").SetValue("U_BKSC_Dest", 0, val)
                      
                        oOrderForm.Items.Item("04").Specific.value = val
                        oOrderForm.Items.Item("054").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
                                                                  







                    End If
                Catch ex As Exception
                    SBO_Application.SetStatusBarMessage(ex.Message)


                End Try

                Try

                Catch ex As Exception
                    SBO_Application.SetStatusBarMessage(ex.Message)
                End Try

                'If (pVal.ItemUID = "04") Then

                '    ' oForm.DataSources.DBDataSources.Item("ORDR").SetValue("U_BKSC_Dest", 0, "CLI-041")
                '    oForm.DataSources.DBDataSources.Item("OCRD").SetValue("04", 0, "CLI-041")
                '    'DataSources.DBDataSources.Item()
                '    'oForm.DataSources.UserDataSources.Item("04").SetValue("CLI-041")

                '    oForm.Items.Item("04").Specific.value = oDataTable.GetValue(0, 0)
                '    'oOrderForm.DataSources.UserDataSources.Item("OCRD").ValueEx = "CLI-041"
                'End If


            End If

Me arroja un error de focus,

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.