我有我自己的程序的問題。在這個程序中,用戶必須在選擇屏幕上輸入數據。在那裏,他還可以選擇一個保存的ALV變體。 在下一步中,ALV列表將與選定的數據一起顯示。另外,ALV中的數據應該具有選擇的佈局。在此ALV中,用戶可以使用正常的ALV功能更改,保存,選擇和管理ALV變體。然而,這有一個問題。如果用戶想要使用過濾器切換到現有的ALV變體,它有時(所有情況的90%)不會應用過濾器和所選ALV的分類。 如果他在選擇屏幕中輸入此變體,則正確應用具有所有過濾器,排序等的正確ALV佈局。 我對F4-幫助選擇屏幕代碼:ALV改變變體不適用過濾器
DATA: lwa_variant LIKE disvariant,
lw_exit_flag TYPE cmpflag.
lwa_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = lwa_variant
i_save = 'A'
IMPORTING
e_exit = lw_exit_flag
es_variant = wa_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE s899(mm) WITH text-088.
ELSEIF NOT lw_exit_flag IS INITIAL.
MESSAGE s899(mm) WITH text-089.
CLEAR wa_variant.
ENDIF.
p_layou = wa_variant-variant.
我在屏幕與ALV的PBO代碼:
DATA: i_fieldcat TYPE lvc_t_fcat,
wa_layout TYPE lvc_s_layo,
wa_stable TYPE lvc_s_stbl,
wa_r_variant TYPE DISVARIANT.
IF o_alv_container IS INITIAL.
CREATE OBJECT o_alv_container
EXPORTING
container_name = 'O_ALV_CONTAINER'.
CREATE OBJECT o_alv
EXPORTING
i_parent = o_alv_container
EXCEPTIONS
others = 1.
IF sy-subrc <> 0.
MESSAGE e002.
ENDIF.
IF wa_variant IS INITIAL AND p_layou IS INITIAL.
wa_r_variant-report = sy-repid.
ELSEIF wa_variant IS NOT INITIAL.
wa_r_variant = wa_variant.
wa_r_variant-handle = SPACE.
wa_r_variant-log_group = SPACE.
wa_r_variant-username = SPACE.
wa_r_variant-text = SPACE.
wa_r_variant-dependvars = SPACE.
ELSE.
wa_r_variant-report = sy-repid.
wa_r_variant-variant = p_layou.
ENDIF.
wa_layout-zebra = ''.
wa_layout-stylefname = 'IMPUT_STYLE'.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
CALL METHOD o_alv->set_table_for_first_display
EXPORTING
is_variant = wa_r_variant
is_layout = wa_layout
i_save = 'A'
i_default = 'A'
CHANGING
it_outtab = i_alv_data
it_fieldcatalog = i_fieldcat
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE e002.
ENDIF.
ELSE.
wa_stable-COL = 'X'.
wa_stable-row = 'X'.
CALL METHOD o_alv->refresh_table_display
EXPORTING
is_stable = wa_stable
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE e003.
ENDIF.
ENDIF.
我從未有過這樣的問題與任何其他程序和我從來沒有聽說過這個。不幸的是,表中有許多字段(> 20),所以用戶必須按照他們想要的方式進行配置(使用過濾器,排序等)。經過數小時的測試,我無法弄清楚我的代碼有什麼問題。我也調試了SAP ALV方法。我發現在某些情況下,系統無法加載過濾器。但我不知道爲什麼。任何提示或信息可能對我有用。 在此先感謝!
您是否能夠創建MWE來重現此問題?通過上面的代碼片段,很難檢查系統行爲。 – vwegert
你能告訴我什麼是MWE嗎?比我可以檢查是否有可能 –
MWE = http://en.wikipedia.org/wiki/Minimal_Working_Example – vwegert