簡體   English   中英

ABAP創建對象

[英]ABAP create object

下面是創建對象的代碼片段。

Form userexit_save_document_prepare.
  data: /bks/exitmanager type ref to /bks/exit_manager.
  create object /bks/exitmanager
         exporting main_prog = 'SAPMV45A'
                   exit_form = 'USEREXIT_SAVE_DOCUMENT_PREPARE'.
  include /bks/exitman.
ENDFORM.

我從文檔中得到了這個

出於性能原因,在用戶退出的情況下,應填寫參數“ main_prog”和“ exit_form”,就像在“ SAPMV45A”中的“ user_field_modification”(通常針對每個單個屏幕字段調用)一樣執行。

1)調用創建對象/ bks / exitmanager時到底發生了什么? 為對象等分配的內存?

2)為什么出於性能原因需要填充創建對象的導出參數?

我不確定100%,但這是我的最佳猜測:

  1. 構造了一個稱為/ bks / exitmanager的對象(它是類/ bks / exit_manager的對象,或更具體地講,是對該類對象的引用/“指針”)。.分配的所需內存等,但也包括“構造函數”代碼被調用(可能將一些實例變量設置為傳遞給調用)。

  2. 如果要顯式傳遞這些參數,則不必在運行時“計算”它們(例如,通過查看調用堆棧)。 這應該節省一些時間,尤其是在必須經常進行的情況下(如文檔中所述)。

有助於了解/ bks / exit_manager的實際含義,並簡要說明您要完成的工作。

擴展IronGoofy的內容:

數據:/ bks / exitmanager類型對/ bks / exit_manager的引用這將在程序的ABAP內存中創建一個引用指針,就像字段符號一樣。 此外,它必須已經被刪除。 如果包含在包含中,則需要移動包含。

創建對象/ bks / exitmanager導出main_prog ='SAPMV45A'exit_form ='USEREXIT_SAVE_DOCUMENT_PREPARE'。 這將基於聲明的類創建一個對象實例,並將其分配給引用指針。 它是通過首先調用構造方法來實現的。 僅通過檢查/ bks / exit_manager,您才能確切找到需要導出的內容。

如果不看/ BKS / EXIT_MANAGER的構造函數,就不可能說出正在發生什么以及為什么應該傳遞參數。 這是保留設置緩沖區的一種常見模式(想想一個靜態哈希表,其鍵為參數,而值則存儲任何復雜且獲取時間很長的數據)。 在這種情況下,我期望有一個不能直接訪問的受保護的構造函數,而只能使用使用哈希表保留出口處理程序本身引用的靜態工廠方法-最佳地使用弱引用...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM