BAPI_ACC_DOCUMENT_POST的性能问题

2020-09-01 15:44发布

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

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


大家好,

有人知道BAPI_ACC_DOCUMENT_POST有性能问题吗?

我正在使用此bapi ABAP代码,但速度很慢,每个文档发布几乎要花费1.4分钟。

每个文档包含998个行项目(借项和贷项)。

该程序运行批处理作业。 我平均发布38个文档最多需要55分钟。

发布后,程序检查BAPI返回的处理消息。

在这种情况下是否需要做一些事情,还是有必要并行化这部分代码?

因此,如何实现多个BAPI调用(并行性)。 你有什么主意吗 可能是另一种方法?

预先感谢

通话功能'BAPI_ACC_DOCUMENT_POST'
       出口
         documentheader = wa_document-documentheader
       输入
         obj_key = lv_obj_key
       桌子
         accountgl = wa_document-accountgl_t
         currencyamount = wa_document-currencyamount_t
         条件= lt_criteria
         extension1 = lt_extension1
         return = lt_return。


     删除lt_return返回WHERE类型EQ c_msg_type_e
                        AND ID EQ c_id_rw
                        AND编号EQ c_msgnumb_609。


     读取表lt_return
       WITH KEY类型= c_msg_type_e
       INTO wa_return。
     如果sy-subrc EQ 0。


       执行f_store_message
         使用wa_document
               wa_return
               abap_true
               空间。
     其他。


       描述表lt_return lines lv_lines。
       读取表lt_return INTO wa_return INDEX lv_lines。
       如果sy-subrc EQ 0。


         如果wa_return-type EQ c_msg_type_s。


           清除wa_return_commit。
           通话功能'BAPI_TRANSACTION_COMMIT'
             出口
               等待= abap_true
             输入
               return = wa_return_commit。
           如果不是wa_return_commit为INITIAL。


             执行f_store_message
               使用wa_document
                     wa_return_commit
                     abap_true
                     空间。
           其他。


             执行f_store_message
               使用wa_document
                     wa_return
                     abap_true
                     空间。


             执行f_add_item_txt_long
               使用lv_obj_key
                     wa_document-itm_text_t。


           万一。


         其他。


           执行f_store_message
             使用wa_document
                   wa_return
                   abap_true
                   空间。
         万一。
       万一。
     万一。
 

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

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


大家好,

有人知道BAPI_ACC_DOCUMENT_POST有性能问题吗?

我正在使用此bapi ABAP代码,但速度很慢,每个文档发布几乎要花费1.4分钟。

每个文档包含998个行项目(借项和贷项)。

该程序运行批处理作业。 我平均发布38个文档最多需要55分钟。

发布后,程序检查BAPI返回的处理消息。

在这种情况下是否需要做一些事情,还是有必要并行化这部分代码?

因此,如何实现多个BAPI调用(并行性)。 你有什么主意吗 可能是另一种方法?

预先感谢

通话功能'BAPI_ACC_DOCUMENT_POST'
       出口
         documentheader = wa_document-documentheader
       输入
         obj_key = lv_obj_key
       桌子
         accountgl = wa_document-accountgl_t
         currencyamount = wa_document-currencyamount_t
         条件= lt_criteria
         extension1 = lt_extension1
         return = lt_return。


     删除lt_return返回WHERE类型EQ c_msg_type_e
                        AND ID EQ c_id_rw
                        AND编号EQ c_msgnumb_609。


     读取表lt_return
       WITH KEY类型= c_msg_type_e
       INTO wa_return。
     如果sy-subrc EQ 0。


       执行f_store_message
         使用wa_document
               wa_return
               abap_true
               空间。
     其他。


       描述表lt_return lines lv_lines。
       读取表lt_return INTO wa_return INDEX lv_lines。
       如果sy-subrc EQ 0。


         如果wa_return-type EQ c_msg_type_s。


           清除wa_return_commit。
           通话功能'BAPI_TRANSACTION_COMMIT'
             出口
               等待= abap_true
             输入
               return = wa_return_commit。
           如果不是wa_return_commit为INITIAL。


             执行f_store_message
               使用wa_document
                     wa_return_commit
                     abap_true
                     空间。
           其他。


             执行f_store_message
               使用wa_document
                     wa_return
                     abap_true
                     空间。


             执行f_add_item_txt_long
               使用lv_obj_key
                     wa_document-itm_text_t。


           万一。


         其他。


           执行f_store_message
             使用wa_document
                   wa_return
                   abap_true
                   空间。
         万一。
       万一。
     万一。
 
付费偷看设置
发送
4条回答
zhangjiyang1323
1楼-- · 2020-09-01 16:23

嗨Raphael,

正如我所看到的,您正在使用EXTENSION1。 请检查注释487722-使用EXTENSION1记帐BAPI中提到的增强功能,例如:增强功能ACBAPI01,BTE RWBAPI01。

希望对您有帮助

致谢

Eduardo

樱桃小丸子0093
2楼-- · 2020-09-01 16:17

嗨Raphael,

也许 需要填充界面中没有的字段,因此,您需要使用增强功能,检查是否有任何SELECT,读取哪个表,是否使用键或索引。 也许容易的是使用ST05运行跟踪并检查输出,通常此分析通常在SQL中报告瓶颈。

我希望它对您有帮助

注意事项

Eduardo

天桥码农
3楼-- · 2020-09-01 16:24

我运行了ST05,并注意到需要更长的时间是BAPI_ACC_DOCUMENT_POST。

是否有必要对代码的这一部分进行并行化?

因此,如何实现多个BAPI调用(并行性)。

你有什么主意吗?

谢谢

hongfeng1314
4楼-- · 2020-09-01 16:13

你好拉斐尔·多明格斯

BAPI花费的时间太长,我建议采取以下步骤以进一步进行操作:

1)您应该使用循环来处理所有文档,确保每次运行后都清除数据

2)尝试在SE37中独立运行BAPI,这可能是通过将测试Variant保存在调试器中进行的。 检查性能是否相同。

3)对SE37和程序运行跟踪,查看性能是否相同。

4)检查此BAPI的任何重要说明

5)。您的最终召唤将是向SAP提供清晰的数据,它们可以帮助您解决这些问题。 通过联系SAP,我提高了系统中少数BAPI的性能。 请确保您有足够的数据和分析来提供。

希望它会有所帮助!

一周热门 更多>