[英]Is it possible to programatically interrogate the fields of a screen (selection screen) of a given program in order to get their types?
我有一個程序列表,它們的選擇屏幕變體我想檢查BUKRS
類型參數的硬編碼值。
功能模塊RS_VARIANT_CONTENTS
完成幾乎所有的工作,因為對於給定的變體和程序,它返回在該變體中填充的值的列表。
不幸的是,它不返回這些參數的類型,只返回它們的值。 因此我想我需要額外的檢查,即屏幕中定義的參數的類型。
現在我意識到關鍵字PARAMETERS
定義了當前程序中的屏幕字段和數據對象,其中任何一個的類型都會有很大幫助(顯然是相同的)。 這當然是在我什至定義了PARAMETERS
數據對象而不是SELECT-OPTIONS
的快樂情況下。
我還遇到了功能模塊DYNPRO_FIELD_GET
,它為我提供了在選擇屏幕中定義的屏幕字段,但同樣,對類型沒有幫助......所以,是的,任何幫助將不勝感激。
我什至找到了一個名為GET_DICTIONARY_FIELDS
,它承諾給我我想要的東西:程序中所有變量的列表,然后我可以用RS_VARIANT_CONTENTS
給出的列表來證實我想要的信息 - 不幸的是在版本中在我的系統中,它處於非活動狀態。
[編輯]
需要注意的是, RS_SELSCREEN_INFO
返回程序中定義的數據對象的類型及其各自的語句。 例如對於:
DATA gv_asdfg TYPE mara-matnr.
它返回MARA-MATNR
。 當然,表字段的名稱並不表示數據元素的名稱,因此:
為了獲得這些類型的域,可以使用CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME( )
並提供RS_SELSCREEN_INFO
給出的類型。 對於生成的對象,應該尋找的屬性是->ABSOLUTE_NAME
。 就我而言,條件是...->ABSOLUTE_NAME = '\\TYPE=BUKRS'.
您可以嘗試使用功能模塊RS_SELSCREEN_INFO
。 給定報告名稱,它將返回參數列表,並選擇選項以及 DDIC 參考信息(如果已設置)。
Althouth vwegert 的回答實際上完成了完整的技巧,我還發現了 2 個很有幫助的功能模塊。
這些是GET_GLOBAL_SYMBOLS - 這將返回程序的全局變量。 它適用於由DATA
和PARAMETERS
定義的變量,但不適用於SELECT-OPTIONS
。
另一個是GET_COMPONENT_LIST - 這可用於獲取使用SELECT-OPTIONS
聲明的變量的基本數據類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.