function module COM_PRODUCT_GETDETAIL_INTERNAL的内存分配问题
生活随笔
收集整理的這篇文章主要介紹了
function module COM_PRODUCT_GETDETAIL_INTERNAL的内存分配问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Created by Jerry Wang, last modified on Jul 25, 2014
使用如下的report讀取指定product的distribution chain信息:
DATA:ls_product TYPE comt_product,lt_read_settype_id TYPE comt_frgtype_id_tab,ls_product_old_data TYPE comt_product_maintain_api,lt_set_old_data TYPE comt_product_maintain_api_sett,lt_org_type TYPE comt_pr_org_type_list_tab. ls_product-product_guid = '00163EA720001EE28EA88D619832B285'. ls_product-product_type = '01'. APPEND 'CRMM_PR_SALESH' TO lt_read_settype_id. APPEND 'CRMM_PR_SALESH' TO lt_read_settype_id. APPEND '01' TO lt_org_type. CALL FUNCTION 'COM_PRODUCT_GETDETAIL_INTERNAL'EXPORTINGis_product = ls_productiv_read_db_values = 'X'it_req_settypes = lt_read_settype_idit_org_types = lt_org_typeIMPORTINGes_product = ls_product_old_dataet_set = lt_set_old_data. READ TABLE lt_set_old_data ASSIGNING FIELD-SYMBOL(<result1>) INDEX 1. READ TABLE lt_set_old_data ASSIGNING FIELD-SYMBOL(<result2>) INDEX 2.執行report,會觀察到由于輸入參數IT_REQ_SETTYPES里我們傳入了兩條相同的setype ID,因此最后function module返回兩個resultset,格式如下:
每條result set的DATA column包含的數據格式如下:
兩個resultset里具有完全相同的distribution chain信息:
通過debug function module內部代碼可以發現,用于存儲resultset的internal table都是通過CREATE_DATA語句在heap里動態創建的:
line 92執行完之后,
IT_REQ_SETTYPES里面的一個settype id對應的resultset就已經append在輸出參數ET_SET里了:
如果客戶的organization model非常龐大,則IT_REQ_SETTYPES里出現duplicate request的settype id可能會導致巨大的內存消耗,例如incident 2014 627848。 因此在call該function module之前務必將所有duplicate key刪除。
總結
以上是生活随笔為你收集整理的function module COM_PRODUCT_GETDETAIL_INTERNAL的内存分配问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于javascript中defineP
- 下一篇: Tomcat介绍和jbk安装