在我的第一个SAP B1项目中,我为
SAPbobsCom.dll
。这是一个“DI API”加载项项目,即不需要从SAP B1内部运行加载项。我创建的代码编译得很好,我想我还可以。
然而,出现了一个新的要求,即它必须在SAP B1内部运行。长话短说,我意识到为了打包SAP b1工具的附加组件,我需要将嵌入互操作类型设置为False。
然后,我在SAP论坛上找到一些文章,指出建议将互操作类型设置为false,否则会“导致问题”。但没有解释为什么会这样,或者会出现什么问题。我想知道这是否是SAP类、COM或其他特定的问题。为什么这种设置会改变类的行为方式?
当我尝试将嵌入互操作类型设置为False来重新编译加载项时,许多使用SAPbobsCOM类的语句都失败了。错误的形式为:无法将类型“xyz”隐式转换为“abc”。存在显式转换(是否缺少转换?)
例如,为了获取语句:
objRecSetDN = SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)
要编译,我必须将其更改为:
objRecSetDN = (SAPbobsCOM.Recordset)SapObjects.oCompany.GetBusinessObject(BoObjectTypes.BoRecordset)
我不得不改变:
string CheckSend = RS.Fields.Item("U_Send").Value;
收件人:
string CheckSend = (string)RS.Fields.Item("U_Send").Value;