2020-08-18 13:50发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我想在REUSE_ALV_HIERSEQ_LIST_DISPLAY中使某些字段(标题和项目级别)可编辑
根据该行的某些条件。 将fieldcatalogs的" INPUT"属性设置为" X"即可
可在所有行中编辑的字段。 但是,我只想使字段仅在某些行中可编辑,其余的
必须保持禁用状态。 有人知道如何实现这一目标吗?
最诚挚的问候,谢谢。
奥兹坎。
您可以在以下网址中看到此示例:
http://wiki。 sdn.sap.com/wiki/display/Snippets/ALV+with+edit+and+save+功能
在此示例中,使用" REUSE_ALV_GRID_DISPLAY",但对于REUSE_ALV_HIERSEQ_LIST_DISPLAY,该想法是构建一个字段猫,并将值X放入字段猫的"输入"字段中,以供您需要编辑的字段。
你好 塔兹,
正如您在我以前的文章中所见,没有稳定的方法来实现这一目标。
作为替代方案,您可以尝试验证更改并丢弃可编辑字段内容中不需要的更改。 希望对您有帮助!
此致
Ozcan。
嗨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
再次问好,
感谢您的答复,但无济于事,因为REUSE_ALV_HIERSEQ_LIST_DISPLAY的参数与REUSE_ALV_GRID_DISPLAY的参数稍有不同
和CL_GUI_ALV_GRID。 我在REUSE_ALV_HIERSEQ_LIST_DISPLAY中寻找了LVC_T_STYL类型的参数或类似参数,但是找不到任何参数。 这就是为什么我开始讨论的原因。
有什么新建议吗?
最诚挚的问候,
我的结论是,这种设计是不可能的。
所以我要结束讨论。
再次感谢您的答复。
嗨,
我有同样的问题!!! 您有任何解决方案吗????
最诚挚的问候。
Zacaria
最多设置5个标签!
您可以在以下网址中看到此示例:
http://wiki。 sdn.sap.com/wiki/display/Snippets/ALV+with+edit+and+save+功能
在此示例中,使用" REUSE_ALV_GRID_DISPLAY",但对于REUSE_ALV_HIERSEQ_LIST_DISPLAY,该想法是构建一个字段猫,并将值X放入字段猫的"输入"字段中,以供您需要编辑的字段。
你好 塔兹,
正如您在我以前的文章中所见,没有稳定的方法来实现这一目标。
作为替代方案,您可以尝试验证更改并丢弃可编辑字段内容中不需要的更改。 希望对您有帮助!
此致
Ozcan。
嗨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
再次问好,
感谢您的答复,但无济于事,因为REUSE_ALV_HIERSEQ_LIST_DISPLAY的参数与REUSE_ALV_GRID_DISPLAY的参数稍有不同
和CL_GUI_ALV_GRID。 我在REUSE_ALV_HIERSEQ_LIST_DISPLAY中寻找了LVC_T_STYL类型的参数或类似参数,但是找不到任何参数。 这就是为什么我开始讨论的原因。
有什么新建议吗?
最诚挚的问候,
Ozcan。
再次问好,
我的结论是,这种设计是不可能的。
所以我要结束讨论。
再次感谢您的答复。
最诚挚的问候,
Ozcan。
嗨,
我有同样的问题!!! 您有任何解决方案吗????
最诚挚的问候。
Zacaria
一周热门 更多>