在REUSE_ALV_HIERSEQ_LIST_DISPLAY中基于行的编辑?

2020-08-18 13:50发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我想在REUSE_ALV_HIERSEQ_LIST_DISPLAY中使某些字段(标题和项目级别)可编辑

根据该行的某些条件。 将fieldcatalogs的" INPUT"属性设置为" X"即可

可在所有行中编辑的字段。 但是,我只想使字段仅在某些行中可编辑,其余的

必须保持禁用状态。 有人知道如何实现这一目标吗?

最诚挚的问候,谢谢。

奥兹坎。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我想在REUSE_ALV_HIERSEQ_LIST_DISPLAY中使某些字段(标题和项目级别)可编辑

根据该行的某些条件。 将fieldcatalogs的" INPUT"属性设置为" X"即可

可在所有行中编辑的字段。 但是,我只想使字段仅在某些行中可编辑,其余的

必须保持禁用状态。 有人知道如何实现这一目标吗?

最诚挚的问候,谢谢。

奥兹坎。

付费偷看设置
发送
7条回答
蓋茨
1楼-- · 2020-08-18 14:43

您可以在以下网址中看到此示例:

http://wiki。 sdn.sap.com/wiki/display/Snippets/ALV+with+edit+and+save+功能

在此示例中,使用" REUSE_ALV_GRID_DISPLAY",但对于REUSE_ALV_HIERSEQ_LIST_DISPLAY,该想法是构建一个字段猫,并将值X放入字段猫的"输入"字段中,以供您需要编辑的字段。

大简至美
2楼-- · 2020-08-18 14:23

你好 塔兹,

正如您在我以前的文章中所见,没有稳定的方法来实现这一目标。

作为替代方案,您可以尝试验证更改并丢弃可编辑字段内容中不需要的更改。 希望对您有帮助!

此致

Ozcan。

南山jay
3楼-- · 2020-08-18 14:42

嗨Qzcan,

请尝试以下示例,以使一些字段在ALV中可编辑。

数据:index_row类型lvc_t_row,
wa_index_row类型lvc_s_row,
row_no类型lvc_t_roid,
wa_row_no类型lvc_s_roid。
数据:t_celltab类型lvc_t_styl,
ls_tab br>数据lv_lines类型i。
数据:g_grid类型引用cl_gui_alv_grid,
row_no_save类型lvc_t_roid,
wa_row_no_save类型lvc_s_roid。
data:it_edit类型标准表ZHS_EDIT,
ZHS_EDIT的表格,
wa_edit类型为ZHS_EDIT。

***创建一个结构为ZHS_EDIT,该结构具有SEL(CHAR1)和CELLTAB(LVC_T_STYL)组件以及要以ALV格式显示的组件。

调用方法g_grid-> get_selected_rows
导入
et_index_rows = index_row
et_row_no = row_no。
描述表row_no LINEs lv_lines。
如果lv_lines是INITIAL。
消息'选择至少一条记录进行编辑'类型'E'。
退出。
ENDIF。

追加row_no到row_no_save的行。
将row_no放入LO_NO的行中。
读取表it_​​EDIT进入wa_EDIT INDEX wa_row_no-row_id。
APPEND wa_EDIT 到it_EDIT_chg。

***指定您要可编辑的字段。

ls_celltab-fieldname ='PERNR'。 " Emp ID
ls_celltab样式= cl_gui_alv_grid => mc_style_enabled。
插入ls_celltab插入表t_celltab。

ls_celltab-fieldname ='GBDAT'。"出生日期
ls_celltab样式= cl_gui_alv_ => mc_style_enabled。
插入ls_celltab插入表t_celltab。


wa_EDIT-celltab = t_celltab。
从wa_EDIT索引中修改it_EDIT wa_row_no-row_id。
ENDLOOP。

"使用调用方法g_grid-> set_table_for_first_display在ALV中显示数据

调用方法g_grid-> set_ready_for_input
导出
i_ready_for_input =1。
调用方法g_grid-> refresh_table_display。
ENDIF。

您还可以使用fieldcatlog的列位置使字段可编辑

数据:gt_fieldcat类型lvc_t_fcat,
wa_fieldcat类型lvc_s_fcat。

在gt_fieldcat INTO wa_fieldcat中循环。
IF
wa_fieldcat-col_pos ='5'。
wa_fieldcat-edit ='X'。
ELSE。
wa_fieldcat-edit =''。
ENDIF。
从wa_fieldcat修改gt_fieldcat。
ENDLOOP。

***然后使用以下方法根据您的要求跳过可选字段显示输出

调用方法o_grid-> set_table_for_first_display
导出
it_toolbar_clusion = t_fun
is_variant = w_variant
i_save ='A'
更改
it_outtab = it_guidelines_temp
it_fieldcatalog = gt_ br> EXCEPTIONS
invalid_parameter_combination = 1
程序错误= 2
too_many_lines = 3
其他=4。
如果sy-subrc <>0。
消息ID sy-msgid类型sy- msgty编号sy-msgno
与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

调用方法o_grid-> set_ready_for_input
导出
i_ready_for_input = 1。

-Bhavya Bhat

haha101010
4楼-- · 2020-08-18 14:33

再次问好,

感谢您的答复,但无济于事,因为REUSE_ALV_HIERSEQ_LIST_DISPLAY的参数与REUSE_ALV_GRID_DISPLAY的参数稍有不同

和CL_GUI_ALV_GRID。 我在REUSE_ALV_HIERSEQ_LIST_DISPLAY中寻找了LVC_T_STYL类型的参数或类似参数,但是找不到任何参数。 这就是为什么我开始讨论的原因。

有什么新建议吗?

最诚挚的问候,

Ozcan。

My梦
5楼-- · 2020-08-18 14:44

再次问好,

我的结论是,这种设计是不可能的。

所以我要结束讨论。

再次感谢您的答复。

最诚挚的问候,

Ozcan。

haha101010
6楼-- · 2020-08-18 14:31

嗨,

我有同样的问题!!! 您有任何解决方案吗????

最诚挚的问候。

Zacaria


一周热门 更多>