2020-09-01 12:32发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在对程序进行性能优化,并且它对BSAS进行了查询。 根据此查询,开发人员正在从BSAS中选择带有公司代码和文件编号(BSAS-AUGBL)的文件,以检查输入文件是否为清算文件。
此查询非常慢。 我可以将HKONT添加到查询中以略微改善查询。查询的命中率仍为1%(意味着100个文档,一个文档是一个清算文档)。 我想知道是否有更简单的方法来识别输入文档是否正在清除文档。
实际上您的查询是不同的...您不是要检查BSAS-AUGBL是否为清算凭证(显而易见,无需任何检查),而是要检查要清算的FI文件(从总帐和供应商一方)。
此外,我不确定您为什么使用BKPF进行INNER JOIN,因为您似乎没有使用此表中的数据。
所以,请确保您毕竟要检查什么...
是的,您是正确的。 它正在查找清除的文件。 后续逻辑使用AWKEY值确定相关凭证(物料凭证/PO编号等)。
我的问题是此查询仅在1%的时间内返回值。 现在,如果我有办法事先确定它将找到什么,那么我可以只对那1%的文档执行此查询。
请注意,我对此查询的输入不是BSAS-AUGBL(正如您所指出的),而是BSAS-BELNR。 抱歉,刚刚注意到我的原始帖子具有误导性:-(
您好,
从功能的角度来看您的情况还不清楚,BSAS-AUGBL仅包含清算凭证编号。 您能指定为什么需要额外的检查(哪一个?)来验证这一点吗?
关于此,
Eli
确定要使用的所有文档 此FI凭证编号作为清算凭证 选择bsas〜bukrs bsas〜augbl bsas〜gjahr bsas〜belnr bsas〜buzei bsas〜shkzg bsas〜dmbtr bsas〜hkont bkpf〜awkey 进入表it_clear 来自bsas INNER JOIN bkpf 在bsas〜bukrs = bkpf〜bukrs和 bsas〜belnr = bkpf〜belnr与 bsas〜gjahr = bkpf〜gjahr 其中bsas〜bukrs = v_bukrs和bsas〜augbl = v_belnr。 如果sy-subrc <> 0。 选择bsad〜bukrs bsad〜augbl bsad〜gjahr bsad〜belnr bsad〜buzei bsad〜shkzg bsad〜dmbtr bsad〜hkont bkpf〜awkey 进入表it_clear 从bsad内部联接bkpf 在bsad〜bukrs = bkpf〜bukrs和 bsad〜belnr = bkpf〜belnr与 bsad〜gjahr = bkpf〜gjahr 其中bsad〜bukrs = v_bukrs和bsad〜augbl = v_belnr。 万一。
Eli,谢谢您的回复。 该程序相当老,上面的查询占用了90%以上的执行时间。
程序具有以下步骤
1)从BSIS/BSAS和BSID/BSAD中提取数据
2)对于所选的每个记录(来自上表的提示),执行以上查询。 BSAS查询需要将近2秒钟
如果我将HKONT添加到查询中,则性能确实可以提高到0.1秒(相比之下为2秒)。 我只是想知道是否还有其他方法可以根据文档类型或其他因素确定文档是否为"正在清除"文档。
您应该 然后从BKPF开始查询。 通常,应授予特殊文件类型(BLART)的清算文件。 您从此处开始查询,然后转到BSAS/BSAD/BSAK(以相关者为准),从BKPF查找AUGBL等于BELNR的所有条目(也具有BUKRS和GJAHR限制)。
关于
不,没有特定标志。 您可以(但仅是假设)假定T041A表中放置的文档类型是用于清除的文档类型。 但是,您必须牢记,清除文档可能是通过执行清除操作而引入的任何文档。 这完全取决于您的客户端在FI中的工作方式。
最多设置5个标签!
实际上您的查询是不同的...您不是要检查BSAS-AUGBL是否为清算凭证(显而易见,无需任何检查),而是要检查要清算的FI文件(从总帐和供应商一方)。
此外,我不确定您为什么使用BKPF进行INNER JOIN,因为您似乎没有使用此表中的数据。
所以,请确保您毕竟要检查什么...
是的,您是正确的。 它正在查找清除的文件。 后续逻辑使用AWKEY值确定相关凭证(物料凭证/PO编号等)。
我的问题是此查询仅在1%的时间内返回值。 现在,如果我有办法事先确定它将找到什么,那么我可以只对那1%的文档执行此查询。
请注意,我对此查询的输入不是BSAS-AUGBL(正如您所指出的),而是BSAS-BELNR。 抱歉,刚刚注意到我的原始帖子具有误导性:-(
您好,
从功能的角度来看您的情况还不清楚,BSAS-AUGBL仅包含清算凭证编号。 您能指定为什么需要额外的检查(哪一个?)来验证这一点吗?
关于此,
Eli
Eli,谢谢您的回复。 该程序相当老,上面的查询占用了90%以上的执行时间。
程序具有以下步骤
1)从BSIS/BSAS和BSID/BSAD中提取数据
2)对于所选的每个记录(来自上表的提示),执行以上查询。 BSAS查询需要将近2秒钟
如果我将HKONT添加到查询中,则性能确实可以提高到0.1秒(相比之下为2秒)。 我只是想知道是否还有其他方法可以根据文档类型或其他因素确定文档是否为"正在清除"文档。
您好,
您应该 然后从BKPF开始查询。 通常,应授予特殊文件类型(BLART)的清算文件。 您从此处开始查询,然后转到BSAS/BSAD/BSAK(以相关者为准),从BKPF查找AUGBL等于BELNR的所有条目(也具有BUKRS和GJAHR限制)。
关于
Eli
不,没有特定标志。 您可以(但仅是假设)假定T041A表中放置的文档类型是用于清除的文档类型。 但是,您必须牢记,清除文档可能是通过执行清除操作而引入的任何文档。 这完全取决于您的客户端在FI中的工作方式。
一周热门 更多>