点击上方 蓝字 关注我们
Doubt is a killer. You just have to know who you are and what you stand for.
怀疑心是杀手。你需要做的仅是知道自己的立场和自己是为谁而战。
说 明
同一报表,不同用户希望展示不同的格式,这可以通过自定义布局设置 **特定用户** 并勾选 **缺省设置** 解决。
但是如果有多个布局,用户觉得进入ALV后在进行布局选择比较繁琐,毕竟只能有一个默认布局。本文在选择屏幕添加选择布局选项以满足用户需要:
1、添加选择布局界面元素,参照 disvariant \- variant;
2、设置字段F4,通过代码获取布局;
3、ALV加载选择的布局;
效 果
代 码
PARAMETERS p_vari TYPE disvariant \- variant .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari .
PERFORM f4_for_variant CHANGING p_vari .
INITIALIZATION .
%_p_vari_%_app_% \- text = ' 选择布局 ' .
*------------------------------------------------------------------------------*
START-OF-SELECTION .
SELECT * FROM spfli INTO TABLE @DATA ( lt_spfli ) UP TO 20 ROWS .TRY .
cl_salv_table => factory (IMPORTING
r_salv_table = DATA ( ro_salv )CHANGING
t_table = lt_spfli ).
CATCH cx_salv_msg INTO DATA ( lx_msg ).
ENDTRY .
DATA ( lo_layout ) = ro_salv -> get_layout ( ).
lo_layout -> set_key ( VALUE # ( report = sy \- repid ) ).
lo_layout -> set_save_restriction ( if_salv_c_layout => restrict_none ).lo_layout -> set_default ( abap_true ).
IF p_vari IS NOT INITIAL .lo_layout -> set_initial_layout ( p_vari ). "----- 》设置初始布局
ENDIF .ro_salv -> get_functions ( ) ->set_all ( abap_true ).
ro_salv -> display ( ).
*------------------------------------------------------------------------------*
• 方式 1
FORM f4_for_variant CHANGING cv_variant .DATA ls_layout_key TYPE salv_s_layout_key .
DATA ls_layout_info TYPE salv_s_layout_info .
ls_layout_key \- report = sy \- repid .
ls_layout_info = cl_salv_layout_service => f4_layouts ( ls_layout_key ).
cv_variant = ls_layout_info \- layout .
ENDFORM .• 方式 2
FORM f4_for_variant CHANGING cv_variant .DATA ls_variant TYPE disvariant .
DATA lv_f4_exit TYPE c .
CLEAR ls_variant .
ls_variant \- report = sy \- repid .
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'EXPORTING
is_variant = ls_varianti_save = 'A'
IMPORTING
e_exit = lv_f4_exit
es_variant = ls_variantEXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3 .
IF syst \- subrc EQ 0 AND lv_f4_exit IS INITIAL .
cv_variant = ls_variant \- variant .
ENDIF .
ENDFORM .**** **小贴士:** 本文通过SALV演示加载选择的布局, 其他ALV可通过 **IS_VARIANT** 参数设置。
• REUSE_ALV_GRID_DISPLAY_LVC
• CL_GUI_ALV_GRID -> SET_TABLE_FOR_FIRST_DISPLAY
以上是今日分享,希望对你有所帮助~~~
欢迎点赞、留言、分享
往期推荐
[ ABAP 选择屏幕-多步骤计算模版
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247492389&idx=1&sn=2a16fa62b74df6c9d614c9c01624e5c9&chksm=cf0a37cbf87dbedd1a985369ced82674831f5001a93a0ea7dd737899bc9770c0bc42163b2c49&scene=21#wechat_redirect)
[ ABAP 选择屏幕-显示/隐藏屏幕元素
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247492363&idx=1&sn=1fdcacd4933568758e3feaa76af05cce&chksm=cf0a37e5f87dbef35cfb9345e4f6211ed42118ca728f8b42f395853bb89b967d166274fa852b&scene=21#wechat_redirect)
[ ABAP 选择屏幕-展开/折叠屏幕元素
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247492011&idx=1&sn=dfbffbc946959c6339193a2323407f9f&chksm=cf0a3545f87dbc53268496f126c19668ae6ea23516c0bd2ae7200e682f8a79cc8333f90a953c&scene=21#wechat_redirect)
点个 在看 你最好看