-1
我有類型fieldsymbol的strucutre =數據 FIELD-SYMBOLS: <fs_it_orignal> TYPE data.
檢查fieldsymbol
然後我填動態填充字段符號<fs_it_orignal> = some_values.
此some_value
可以是結構A B或C中的。
我一直在尋找,檢查的最佳方式,其中<fs_it_orignal>
是結構AB或C.
我有類型fieldsymbol的strucutre =數據 FIELD-SYMBOLS: <fs_it_orignal> TYPE data.
檢查fieldsymbol
然後我填動態填充字段符號<fs_it_orignal> = some_values.
此some_value
可以是結構A B或C中的。
我一直在尋找,檢查的最佳方式,其中<fs_it_orignal>
是結構AB或C.
我有一個不是很複雜的提案由於缺少需求的...
DATA:
lro_struc_a TYPE REF TO cl_abap_structdescr,
lro_struc_b TYPE REF TO cl_abap_structdescr,
lro_struc_c TYPE REF TO cl_abap_structdescr,
lro_struc_o TYPE REF TO cl_abap_structdescr,
lt_data_comp_a TYPE cl_abap_structdescr=>component_table,
lt_data_comp_b TYPE cl_abap_structdescr=>component_table,
lt_data_comp_c TYPE cl_abap_structdescr=>component_table,
lt_data_comp_o TYPE cl_abap_structdescr=>component_table.
"analyze every structure
lro_struc_a ?= cl_abap_typedescr=>describe_by_data(ls_struc_a).
lro_struc_b ?= cl_abap_typedescr=>describe_by_data(ls_struc_b).
lro_struc_c ?= cl_abap_typedescr=>describe_by_data(ls_struc_c).
lro_struc_o ?= cl_abap_typedescr=>describe_by_data(<fs_it_orignal>).
"get list of fields per structure
lt_data_comp_a = lro_struc_a->get_components().
lt_data_comp_b = lro_struc_b->get_components().
lt_data_comp_c = lro_struc_c->get_components().
lt_data_comp_o = lro_struc_o->get_components().
*insert comparison depending on number of fields, names (respecting order) or types according to your requirement
如果您
field-symbols: <fs_it_orignal> type any.
"-- Code here to assign your FS to something
case replace(val = cl_abap_typedescr=>describe_by_data(<fs_it_orignal>)->absolute_name
regex = '\\TYPE=' with = '').
when 'Z_STRUCT_A'.
"-- Do what ever
when 'Z_STRUCT_B'.
"-- Do what ever
when 'Z_STRUCT_C'.
"-- Do what ever
endcase.
你有一組特定的類型或可能它是任何:剛剛知道,如果字段符號是某種類型後,可以通過比較結構的名稱,這樣做你字典中的東西? – 2017-10-12 14:03:23
「填充」不夠精確。用=表示值,但爲了使字段符號工作,需要首先分配一個目標變量,這就是決定底層結構的原因。所以,請不要只發布不完整的片段,而是一個完整的例子來說明實際問題。 – vwegert