ABAP 选择屏幕选择布局

作者:ABAP猿 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图

点击上方 蓝字 关注我们

ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图

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加载选择的布局;

效 果

ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图

代 码

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_variant

i_save = 'A'

IMPORTING

e_exit = lv_f4_exit es_variant = ls_variant

EXCEPTIONS

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 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图

以上是今日分享,希望对你有所帮助~~~

欢迎点赞、留言、分享

ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图

往期推荐

[ 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)

ABAP 选择屏幕选择布局 - 封面图
ABAP 选择屏幕选择布局 - 封面图

点个 在看 你最好看

ABAP猿

关于作者:ABAP猿

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP选择屏幕选择布局.md」整理生成,仅用于内部技术分享与学习交流。