簡體   English   中英

ABAP類型池:類型代碼為TYPP但名稱超過五個字符的程序

[英]ABAP type pool: program with type code TYPP but with name longer than five characters

我們正在用Java編寫一個用於解析和轉換ABAP代碼的工具。 因此,我們無意編寫新的ABAP代碼,但我們的工具必須處理所有ABAP,甚至是過時的語句。 此外,我不是ABAP專家。

ABAP程序可以使用關鍵字TYPE-POOL引入的類型組。 類型組的名稱最大長度為五個(內部八個,如果您加上前綴“%C”,則其名稱代碼為TYPP)。 過去,依靠這些假設對我們來說效果很好。

最近,我們看到類型代碼為TYPP但名稱超過5的ABAP程序,例如'OIA ========================== P' 。 此外,對於每個對象,還有另一個空對象,其名稱相同,但類型碼為INCL。 僅在也有常規類型組的情況下,才引用這些新對象。

這些新對象可能是內部對象,對我們而言無關緊要-在ABAP關鍵字文檔中,我還沒有看到對它們的任何引用。 另一方面,它們使我們感到困惑,因為我們看到了它們。

有人可以向我解釋這些對象的含義並為我提供一些文檔嗎?

編輯:這里是EHP7 for SAP ERP 6.0系統的示例

一個示例對象。 D010INC中的條目看起來不錯: 不使用類型池mrm的示例對象

現在,同一對象使用類型為pool mrm的對象。 附加物品從何而來? 使用類型池mrm的示例對象

這些對象是通過包含,擴展和交換對象引入的。 閱讀:

  • 檢查類型池MRM ,類型mrm_idoc_data_ers該類型包含一個包含rmrm_idoc_data_ers_sbo的語句。 類似的include語句將rmrm_upd_arseg_nfm拉入mrm_upd_arseg 這就解釋了最后兩行。 您的解析器應該已經抓住了這一點。
  • RMRM_IDOC_DATA_ERS_SBO包含一個名為RMRM_IDOC_DATA_ERS_SBO_02的增強點,該增強點屬於增強點ES_RMRM_IDOC_DATA_ERS_SBO 類似地, RMRM_UPD_ARSEG_NFM包含屬於增強點RMRM_UPD_ARSEG_NFM_01的增強點ES_RMRM_UPD_ARSEG_NFM
  • 對於ES_RMRM_IDOC_DATA_ERS_SBO ,存在名為ISAUTO_MRM_RMRM_IDOC_DATA_ERS的增強實現。 對於ES_RMRM_UPD_ARSEG_NFM ,存在名為/NFM/MM_RMRM_UPD_ARSEG_NFM的實現。 這就解釋了以=E結尾的引用
  • 實現ISAUTO_MRM_RMRM_IDOC_DATA_ERS位於包ISAUTO_MRM 實現/NFM/MM_RMRM_UPD_ARSEG_NFM位於包/NFM/MM 這就解釋了以=P結尾的引用。 顯然,並不是每個包都生成這些引用:
  • ISAUTO_MRM由開關AM_ERS控制,包/NFM/MM由開關/NFM/MM 這就解釋了以=S結尾的引用。

最終,這些參考可以用於確定在更改開關狀態時需要重新生成哪些程序。

暫無
暫無

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

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