SAP B1中的绝对初学者代码。 SAPbouiCOM错误

2020-09-14 02:59发布

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

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


专家们,

我绝对是Sap B1编程的初学者,我试图做一个附加程序,以业务伙伴主数据的形式创建一个按钮,并与一个查询相连,该查询为我带来了该BP的所有未清发票, 但我在创建任何项目时发现了此错误。 我已经将构建版本放在x86中。

System.InvalidCastException:无法将类型为" SAPbouiCOM.ItemClass"的Com对象转换为接口类型为" SAPbouiCOM.Button"。 此操作失败是因为由于以下错误而导致IID为'{AC835EFD-8213-4A07-9107-03EF82ED7F9}'的接口的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE)) 。 在BottoneQueryBP.Program.SBO_Application_ItemEvent(String FormUID,IteamEvent&pVal,Boolean&BubbleEvent)中位于C:\''directory''\ Program.cs:line 88

有人可以帮我吗?

这是我的Program.cs代码:

使用系统;
 使用System.Collections.Generic;
 使用SAPbouiCOM.Framework;
 使用System.Data;
 使用System.Text;
 使用System.Data.SqlClient;
 使用System.Text.RegularExpressions;
 使用prova_query2;




 命名空间BottoneQueryBP
 {
     班级计划
     {
         公共静态SAPbobsCOM.Company SBO_Company;
 


         [STAThread]
         静态void Main(string [] args)
         {
             尝试
             {
                 应用oApp = null;
                 如果(args.Length <1)
                 {
                     oApp = new Application();
                 }
                 其他
                 {
                     oApp =新应用程序(args [0]);
                 }
                 菜单MyMenu = new Menu();
                 MyMenu.AddMenuItems();
                 oApp.RegisterMenuEventHandler(MyMenu.SBO_Application_MenuEvent);
                 Application.SBO_Application.AppEvent + =新的SAPbouiCOM._IApplicationEvents_AppEventEventHandler(SBO_Application_AppEvent);
                 Application.SBO_Application.ItemEvent + =新的SAPbouiCOM._IApplicationEvents_ItemEventEventHandler(SBO_Application_ItemEvent);




                 SBO_Company =新的SAPbobsCOM.Company();
                 SBO_Company =(SAPbobsCOM.Company)Application.SBO_Application.Company.GetDICompany();
                 SBO_Company.Connect();


                 VerificheIniziali Verifiche = new VerificheIniziali();
                 Verifiche.VerificaLicenza();
                //Verifiche.VerificaCampi();


                 Application.SBO_Application.StatusBar.SetText("附加对象",SAPbouiCOM.BoMessageTime.bmt_Short,SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                 oApp.Run();


             }
             抓住(前例外)
             {
                 System.Windows.Forms.MessageBox.Show(ex.Message);
             }
         }


         静态无效SBO_Application_AppEvent(SAPbouiCOM.BoAppEventTypes EventType)
         {
             开关(事件类型)
             {
                 案例SAPbouiCOM.BoAppEventTypes.aet_ShutDown:
                    //退出附加组件
                     System.Windows.Forms.Application.Exit();
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_CompanyChanged:
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_FontChanged:
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_LanguageChanged:
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_ServerTerminition:
                     打破;
                 默认:
                     打破;
             }
         }


         静态无效SBO_Application_ItemEvent(字符串FormUID,参考SAPbouiCOM.ItemEvent pVal,输出bool BubbleEvent)
         {
             BubbleEvent = true;


             如果((pVal.FormType == 139 || pVal.FormType == 134)&& pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_LOAD &&!pVal.Before_Action)
             {
                 尝试
                 {
                     Application.SBO_Application.MessageBox(" entrato",1,"确定");
                     SAPbouiCOM.Form Form139 = Application.SBO_Application.Forms.Item(pVal.FormUID);
                     SAPbouiCOM.Button BTN =(SAPbouiCOM.Button)Form139.Items.Add(" btncast",SAPbouiCOM.BoFormItemTypes.it_BUTTON);


                     SAPbouiCOM.Button BTN1 =(SAPbouiCOM.Button)Form139.Items.Item(" 1")。Specific;
                     BTN1.Item.Top = BTN.Item.Top;
                     BTN1.Item.Left = BTN.Item.Left-100;
                     BTN1.Item.Width = BTN.Item.Width;
                     BTN1.Item.Height = BTN.Item.Height;
                     BTN.Caption =" PROVA";
                 }
                 抓住(前例外)
                 {
                     Application.SBO_Application.MessageBox(ex.ToString());
                 }
             }


         }






     }
 }
 

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

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


专家们,

我绝对是Sap B1编程的初学者,我试图做一个附加程序,以业务伙伴主数据的形式创建一个按钮,并与一个查询相连,该查询为我带来了该BP的所有未清发票, 但我在创建任何项目时发现了此错误。 我已经将构建版本放在x86中。

System.InvalidCastException:无法将类型为" SAPbouiCOM.ItemClass"的Com对象转换为接口类型为" SAPbouiCOM.Button"。 此操作失败是因为由于以下错误而导致IID为'{AC835EFD-8213-4A07-9107-03EF82ED7F9}'的接口的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE)) 。 在BottoneQueryBP.Program.SBO_Application_ItemEvent(String FormUID,IteamEvent&pVal,Boolean&BubbleEvent)中位于C:\''directory''\ Program.cs:line 88

有人可以帮我吗?

这是我的Program.cs代码:

使用系统;
 使用System.Collections.Generic;
 使用SAPbouiCOM.Framework;
 使用System.Data;
 使用System.Text;
 使用System.Data.SqlClient;
 使用System.Text.RegularExpressions;
 使用prova_query2;




 命名空间BottoneQueryBP
 {
     班级计划
     {
         公共静态SAPbobsCOM.Company SBO_Company;
 


         [STAThread]
         静态void Main(string [] args)
         {
             尝试
             {
                 应用oApp = null;
                 如果(args.Length <1)
                 {
                     oApp = new Application();
                 }
                 其他
                 {
                     oApp =新应用程序(args [0]);
                 }
                 菜单MyMenu = new Menu();
                 MyMenu.AddMenuItems();
                 oApp.RegisterMenuEventHandler(MyMenu.SBO_Application_MenuEvent);
                 Application.SBO_Application.AppEvent + =新的SAPbouiCOM._IApplicationEvents_AppEventEventHandler(SBO_Application_AppEvent);
                 Application.SBO_Application.ItemEvent + =新的SAPbouiCOM._IApplicationEvents_ItemEventEventHandler(SBO_Application_ItemEvent);




                 SBO_Company =新的SAPbobsCOM.Company();
                 SBO_Company =(SAPbobsCOM.Company)Application.SBO_Application.Company.GetDICompany();
                 SBO_Company.Connect();


                 VerificheIniziali Verifiche = new VerificheIniziali();
                 Verifiche.VerificaLicenza();
                //Verifiche.VerificaCampi();


                 Application.SBO_Application.StatusBar.SetText("附加对象",SAPbouiCOM.BoMessageTime.bmt_Short,SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                 oApp.Run();


             }
             抓住(前例外)
             {
                 System.Windows.Forms.MessageBox.Show(ex.Message);
             }
         }


         静态无效SBO_Application_AppEvent(SAPbouiCOM.BoAppEventTypes EventType)
         {
             开关(事件类型)
             {
                 案例SAPbouiCOM.BoAppEventTypes.aet_ShutDown:
                    //退出附加组件
                     System.Windows.Forms.Application.Exit();
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_CompanyChanged:
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_FontChanged:
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_LanguageChanged:
                     打破;
                 案例SAPbouiCOM.BoAppEventTypes.aet_ServerTerminition:
                     打破;
                 默认:
                     打破;
             }
         }


         静态无效SBO_Application_ItemEvent(字符串FormUID,参考SAPbouiCOM.ItemEvent pVal,输出bool BubbleEvent)
         {
             BubbleEvent = true;


             如果((pVal.FormType == 139 || pVal.FormType == 134)&& pVal.EventType == SAPbouiCOM.BoEventTypes.et_FORM_LOAD &&!pVal.Before_Action)
             {
                 尝试
                 {
                     Application.SBO_Application.MessageBox(" entrato",1,"确定");
                     SAPbouiCOM.Form Form139 = Application.SBO_Application.Forms.Item(pVal.FormUID);
                     SAPbouiCOM.Button BTN =(SAPbouiCOM.Button)Form139.Items.Add(" btncast",SAPbouiCOM.BoFormItemTypes.it_BUTTON);


                     SAPbouiCOM.Button BTN1 =(SAPbouiCOM.Button)Form139.Items.Item(" 1")。Specific;
                     BTN1.Item.Top = BTN.Item.Top;
                     BTN1.Item.Left = BTN.Item.Left-100;
                     BTN1.Item.Width = BTN.Item.Width;
                     BTN1.Item.Height = BTN.Item.Height;
                     BTN.Caption =" PROVA";
                 }
                 抓住(前例外)
                 {
                     Application.SBO_Application.MessageBox(ex.ToString());
                 }
             }


         }






     }
 }
 
付费偷看设置
发送
2条回答
Cikesha
1楼 · 2020-09-14 03:18.采纳回答

毛罗,你好

您无法将项目转换为按钮,请尝试使用

 SAPbouiCOM.Button BTN =(SAPbouiCOM.Button)Form139.Items.Add(" btncast",SAPbouiCOM.BoFormItemTypes.it_BUTTON).Specific; 

代替

 SAPbouiCOM.Button BTN =(SAPbouiCOM.Button)Form139.Items.Add(" btncast",SAPbouiCOM.BoFormItemTypes.it_BUTTON); 
野沐沐
2楼-- · 2020-09-14 03:02

嗨,先生。 谢尔盖·特拉夫金(Sergei Travkin),

感谢您的回答。 现在可以了。 :)

一周热门 更多>