01 功能说明
本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。
在本篇中,我们将延续前文内容,解决用户最新提出的需求。今天我们的主题是SALV模型中的另外两个功能:如何 刷新ALV以及如何添加按钮并 弹框展示数据。相信通过亲自操作,你能够快速的理解和掌握这些知识点。
让我们一起动手尝试一下,看看如何实现这些功能吧!
02 功能效果
第20天 用户说:刷新ALV
上次添加的复选框点击不起作用,需要修复一下。
CASE column.
WHEN 'CBOX'.
CHECK p_day20 = 'X'.
FIELD-SYMBOLS <spfli> LIKE gs_spfli.
READ TABLE gt_spfli ASSIGNING <spfli> INDEX row.
IF <spfli>-cbox = 'X' .
<spfli>-cbox = ''.
ELSE.
<spfli>-cbox = 'X'.
ENDIF.
"刷新ALV
DATA ls_stable TYPE lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
go_salv->refresh(
EXPORTING
s_stable = ls_stable
refresh_mode = if_salv_c_refresh=>soft
).
WHEN OTHERS.
ENDCASE.
第21天 用户说:添加按钮弹出ALV
工具栏新增航班信息按钮,点击展示所选航线对应的航班信息。
IF p_day21 = 'X'.
lo_functions->add_function(
EXPORTING
name = 'DISP'
icon = '@7T@'
text = '航班信息'
tooltip = '所选航线的航班信息'
position = if_salv_c_function_position=>right_of_salv_functions
).
ENDIF.
CASE e_salv_function.
WHEN 'DISP'.
CHECK p_day21 = 'X'.
DATA lt_sflight TYPE TABLE OF sflight.
LOOP AT gt_spfli INTO gs_spfli WHERE cbox = 'X'.
SELECT * FROM sflight
APPENDING TABLE lt_sflight
WHERE carrid = gs_spfli-carrid
AND connid = gs_spfli-connid.
ENDLOOP.
DATA lo_salv TYPE REF TO cl_salv_table.
DATA lo_functions_list TYPE REF TO cl_salv_functions_list.
DATA lo_columns_table TYPE REF TO cl_salv_columns_table.
TRY .
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_salv
CHANGING
t_table = lt_sflight
).
CATCH cx_salv_msg.
ENDTRY.
lo_salv->set_screen_popup(
EXPORTING
start_column = 5
end_column = 100
start_line = 5
end_line = 25
).
lo_functions_list