内置SAP B1 UI API的桌面应用程序

2020-08-21 00:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我刚刚开始为SAP Bu...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我刚刚开始为SAP Business One 9.0开发附加组件。

我需要一些高级组件(例如,复杂的树状网格)。 SAP UI API的组件非常差。 我知道我可以在UI API表单中插入第三方ActiveX控件,它可以工作,但是以这种方式,我的选择仅限于ActiveX控件,而且以这种方式开发插件的过程也很复杂...

所以我想知道是否可以做相反的事情:我可以创建经典的Windows应用程序,在需要时嵌入SAP UI API控件吗?我可以从B1菜单项启动它。

>

这是个主意,您怎么看? 每个人都可以使用SAP UI API吗? 还是有其他解决方案? 谢谢

3条回答

嗨,Simone Pastorin

第一个解决方案可能是将sap用于visual studio,像win form一样在设计人员中使用。

它可以连接到SAP系统表单以及您创建的表单。

第二个解决方案

可以将Windows.forms嵌入SAP UI中,

,但仅限于自定义创建的表单,而不是SAP系统表单。

还有一件重要的事情是,您将无法将Win Forms控件绑定到SAP数据源。

因此,使用Windows窗体时,您需要在设计器上添加system.windows.forms组件,但是您将需要手工处理所有数据,因此不会自动进行,我放弃了此方法,因为vs的树液是更好的选择 尽管它缺少可自定义的控件,但如今ActiveX难以掌握。

私有静态void SapApp_MenuEvent(引用MenuEvent数据,输出bool bubbleEvent)
         {
             bubbleEvent = true;
             如果(!data.BeforeAction)返回;

             尝试
             {
                //这是我自定义创建的表单
                 如果(data.MenuUID ==" MNU_Form1")
                 {
                     var par = SapApp.CreateObject(BoCreatableObjectType.cot_FormCreationParams)作为FormCreationParams;
                     par.UniqueID =" Form1";
                     par.FormType =" Form1";
                     par.BorderStyle = BoFormBorderStyle.fbs_Fixed;
                     par.Modality = BoFormModality.fm_None;

                     var sapForm = SapApp.Forms.AddEx(par);
                     sapForm.Title =" Form1";

                     var type = _formsAssembly.GetTypes()
                             在哪里(t => t.IsSubclassOf(typeof(WindowsForm))&&!t.IsAbstract)
                             .FirstOrDefault();

                     var t = new System.Threading.Thread((start)=>
                     {
                        //WindowsForm是Form的子类,具有其他方法void注册我在其中移动SAP.Form对象的位置
                         var winForm = Activator.CreateInstance(type)as WindowsForm;
                         winForm.Visible = true;
                         winForm.ShowInTaskbar = true;
                         winForm.TopMost = true;
                         winForm.ControlBox = true;
                         winForm.Register(sapForm);
                         winForm.Show();
                         winForm.Activate();
                         winForm.Focus();
                        
                        //这是我将胜利表格加载到SAP UI中的位置
                         System.Windows.Forms.Application.Run(winForm);
                     });
                     t.Start();
                    //sapForm.Visible = true;
                    //sapForm.Select();
                 }
             }
             抓住(前例外)
             {
                 HandleException(例如,"在MenuEvent处理期间发生异常。",是)
             }
         }

 

一周热门 更多>