点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
亲爱的
成为一个好公民之类的人,我知道应该朝着使用联接甚至代码下推而不是FAE的方向努力。
但是,后者似乎更适合进行更用户友好的错误处理。
假设我有以下联接(为简化起见,简化了)
选择q〜qmnum 从qmel AS q 内联ihpa AS i 开q〜objnr = i〜objnr q〜qmnum输入@it_qmnum_range AND i〜parvw ='Y4' 插入表@DATA(lt_notification)。
因此,我本质上想获取所有服务通知,其中已为特定的合作伙伴类型(技术人员= Y4)分配了任务。
使用上述连接执行此操作后,如果出现某些故障,我不知道是否由于通知号不在" it_qmnum_range"范围内而失败,或者在" ihpa"中找不到" Y4"条目,
如果我要去FAE,我可以解决,准确找出问题出在哪里,并向用户返还有意义的错误。
如何在仍然选择联接/下推代码的同时克服此类问题。
欢呼
Jens
空结果集不是失败的联接。
联接操作正确(并希望很快)可以确定记录的无组合是否符合提供的条件。
现在,您想获取有关为什么会这样的更多信息。
p>
您可以检查查询中的每个过滤条件是否(单独使用)是否会产生非空结果。 那有帮助吗? 不可以,因为筛选出特定记录的原因很可能是所有筛选器(或仅某些筛选器)的组合。
到那时,要提供关于为什么未在结果集中包含某些记录的简明反馈,您将必须通过所有过滤器组合进行工作,这对于"错误处理"而言可能会变得很复杂。
在"一般情况"中是如此。
对于您的示例,您要做的(这就是我的假设)是,一旦发现结果集是 如果为空,则您的代码将检查IPHA是否具有PARVW ='Y4'的任何条目,以及QMEL是否返回QMNUM_RANGE的任何记录。 您可以通过运行两个附加语句来使用SQL进行完全相同的操作。
除此以外,我必须承认,我之前和之前都没有看到过"为什么找不到"的要求 对于我来说,获取服务通知的示例并没有发生,最终用户希望/需要解释为什么没有通知。
除了"可能很好"这一点之外: 在什么情况下,您会为用户提供这种反馈?
您可以尝试SELECT ... ENDSELECT并在选择循环中处理检查。
使用右外连接吗?
代码应保持高效(通过联接),通常没有兴趣解释失败的确切原因是什么。 我认为对于开发人员(或具有技术知识的测试人员)分析SQL失败的原因更有用。 也许是一种工具。 数据库系统没有提供一个吗?
嗨,詹斯,
如果每个表中至少选择一个记录,则可以使用LEFT JOIN返回QMEL的所有现有记录,并且如果IHPA中没有相应的记录,则该表的字段将返回空(初始)值。 然后,您可以稍后检查是否根本没有记录,或者QMEL中是否有记录,而IHPA中没有匹配的记录。
可惜一个人不能发表评论并接受它。 总的来说,我认为您的方法是最明智的。 当然要感谢 Matthew Billingham 和 Rafael Figueiredo 为我将要前往的一般方向提供输入。
再次感谢您,将实现此目标,并查看测试完成后/我们的工作效率如何。 将尝试记住更新此线程
干杯
Jens
一周热门 更多>