点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我目前有一个Matrix网格,其钻取如下所示。 文档编号用于销售订单。
因为使用文档条目向下钻取文档,所以我有一种方法,当按下文档编号向下钻取时,它将从文档编号ID中找到文档条目ID并加载销售订单。
这是我面临的问题。 如果我是第一次打开该表单,然后单击doc num,它将加载一次销售订单。 如果我关闭"电子邮件回单"表单并重新打开,请单击"文档编号",它将打开两次销售订单。 表单关闭时,似乎触发了doc num的旧事件。 我为您提供了用于文档输入查找功能的代码示例。
Private Sub createDocEntryDrillDown(linkedObjectType As Integer) Dim oLink as SAPbouiCOM.LinkedButton Dim oItem作为SAPbouiCOM.Item Dim oStaticText作为SAPbouiCOM.StaticText 尝试 oItem = oForm.Items.Item(" LinkedText") 异常捕获 oItem = oForm.Items.Add(" LinkedText",SAPbouiCOM.BoFormItemTypes.it_STATIC) oItem.Left = -700 oItem.Width = 148 oItem.Top = -800 oItem.Height = 14 oStaticText = oItem.Specific oStaticText.Caption ="" oItem = oForm.Items.Add(" Lnk1",SAPbouiCOM.BoFormItemTypes.it_LINKED_BUTTON) oItem.Left = -700 oItem.Top = -800 oItem.LinkTo =" LinkedText" oLink = oItem.Specific oLink.LinkedObjectType =链接对象类型 结束尝试 结束子
当单击文档向下钻取时,我将使用以下代码覆盖click事件
如果pVal.EventType = SAPbouiCOM.BoEventTypes.et_MATRIX_LINK_PRESSED并且pVal.ColUID =" DocNum"并且pVal.BeforeAction = True,那么 BubbleEvent = False 尝试 昏暗DocEntry作为整数 昏暗的SQL作为字符串 如果(sqlType =" SQL")然后 sql ="从ORDR WHERE中选择DocEntry"" DocNum"" =" 其他'HANA sql =" SELECT"" DocEntry""从ORDR所在位置"" DocNum"" =" 万一 sql = sql + oForm.Items.Item(pVal.ItemUID).Specific.Columns(pVal.ColUID).Cells.Item(pVal.Row).Specific.Value.ToString oRs = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset) oRs.DoQuery(sql) 尽职尽责 DocEntry = CInt(oRs.Fields.Item(" DocEntry")。Value) oRs.MoveNext() 循环 setDocEntryDrillDown(DocEntry) 返回 异常捕获 MsgBox(例如消息) 结束尝试 万一
当上面的代码调用setDocEntryDrillDown(DocEntry)方法时,它将执行下面的代码。
私有子setDocEntryDrillDown(docEntry作为整数) Dim oItem作为SAPbouiCOM.Item Dim oStaticText作为SAPbouiCOM.StaticText Dim oLink as SAPbouiCOM.LinkedButton oItem = oForm.Items.Item(" LinkedText") oStaticText = oItem.Specific oStaticText.Caption = docEntry.ToString oItem = oForm.Items.Item(" Lnk1") oLink = oItem.Specific oLink.Item.Click() 结束子
基于提供的代码,您是否知道为什么我重新打开表单并单击doc num时,销售订单会出现两次? 单击卡号后,我不会遇到此问题。 提醒您,我没有修改卡代码明细的点击事件。
(9.1 kB)
嗨,约翰,
我从SAP那里得到了答复,并了解了发生了什么。 由于某种原因,当窗体关闭时,它不会删除项目单击事件。 SAP为我提供了一种解决方案,可在表单关闭后强制表单删除项目事件。 以下是他们为我提供的解决方案。
我想再次感谢您分享我所面临问题的SAP注释。
此致
威廉
嗨,约翰,
我刚刚提供的最佳答案是SAP提供的解决方案。 再次感谢您提供的帮助。
此致
威廉
嗨威廉,
请测试从setDocEntryDrillDown子对象中删除oLink.Item.Click()。
此致
Johan
P.S。 在错误捕获器中运行代码不是一个好主意。 如果该代码中发生错误,您的程序将崩溃,并且您将不知道为什么。 您最好将此类代码移动到带有自己的try catch块的自己的子代码中。 另外,我建议您在调用LinkedText项目之前检查其是否存在。 您可以在一个单独的子目录中进行检查,并在必要时创建该项目。 然后,您可以先调用此子项,然后再继续。
一周热门 更多>