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

2020-08-21 00:13发布

         点击此处--->   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吗? 还是有其他解决方案? 谢谢

         点击此处--->   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条回答
槿木_熙
1楼-- · 2020-08-21 00:45

西蒙妮·帕斯托林,你好

首先,您必须安装一些东西:

1。 DI API安装:与SAP Business One的对象和数据库有关。 您可以创建Window Application来与SAP Business One进行通信。

2。 SAP Business One SDK:与SAP Business One的UI有关。 您可以像SAP Business One的标准UI一样在SAP Business One中创建UI表单。

希望对您有所帮助。

Violet凡
2楼-- · 2020-08-21 00:30

嗨西蒙妮,

我想这是不可能的! SAP有自己的绘图例程和控件。 我猜他们只是不使用标准的.Net控件或ActiveX控件。 这就是为什么您不能在自己的Windows应用程序中使用它的原因。

您可能会采用另一种方法。 尝试在.Net中将表单创建为独立控件,并强制SAP B1在SAP B1中以常规SAP表单显示控件。

嗨,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处理期间发生异常。",是)
             }
         }

 

一周热门 更多>