2020-09-07 03:59发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我的要求是:
必须*使用alv网格*编辑一个单元格,例如:如果 Netpr> 100 (值)。 应该处于可编辑模式,其余单元格处于不可编辑模式。 请让我知道怎么做,
获得最佳答案
重获
Fareedas。
您好Fareedas,
以下程序演示了如何使ALV网格的各个字段可编辑(NetPR大于10)。 基本ALV网格所需的更改包括向ALV网格数据表(it_ekko)添加新字段,使用样式属性填充此字段以及向布局控制表添加条目。 同样,从本网站上的先前示例中,您还需要更改字段目录的数据类型,布局并使用其他功能模块来显示报告
*&------------------------------------------------ --------------------- * *&报告ZDEMO_ALVGRID_EDIT * *&* *&------------------------------------------------ --------------------- * *&* *&简单的ALV网格报表示例* *&................................... * *&* *&基本的ALV网格,已增强,可将特定字段显示为* *&可根据字段值进行编辑* *&------------------------------------------------ --------------------- * 报告ZDEMO_ALVGRID_EDIT。 桌子:ekko。 TYPE-POOLS:slis。 " ALV声明 *数据声明 * ---------------- 类型:t_ekko的开始, ebeln TYPE ekpo-ebeln, ebelp TYPE ekpo-ebelp, statu TYPE ekpo-statu, aedat TYPE ekpo-aedat, matnr TYPE ekpo-matnr, menge TYPE ekpo-menge, 类型ekpo-meins, netpr TYPE ekpo-netpr, peinh TYPE ekpo-peinh, field_style TYPE lvc_t_styl,"禁用" t_ekko的结尾。 数据:t_ekko初始大小为0的it_ekko类型标准表, wa_ekko TYPE t_ekko。 * ALV数据声明 数据:带标题行的fieldcatalog类型slis_t_fieldcat_alv。 数据:it_fieldcat TYPE lvc_t_fcat," slis_t_fieldcat_alv WITH HEADER LINE" wa_fieldcat TYPE lvc_s_fcat, gd_tab_group TYPE slis_t_sp_group_alv, gd_layout TYPE lvc_s_layo," slis_layout_alv, gd_repid就像sy-repid。 ****************************************************** ********************** *选择开始。 选择开始。 执行data_retrieval。 PERFORM set_specific_field_attributes。 执行build_fieldcatalog。 执行build_layout。 执行display_alv_report。 *&------------------------------------------------ --------------------- * *&表格BUILD_FIELDCATALOG *&------------------------------------------------ --------------------- * *为ALV报告建立Fieldcatalog * ------------------------------------------------- --------------------- * 表格build_fieldcatalog。 wa_fieldcat-fieldname ='EBELN'。 wa_fieldcat-scrtext_m ='采购订单'。 wa_fieldcat-col_pos = 0。 wa_fieldcat-outputlen = 10。 wa_fieldcat-emphasize ='X'。 wa_fieldcat-key ='X'。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='EBELP'。 wa_fieldcat-scrtext_m ='采购订单'。 wa_fieldcat-col_pos = 1。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='STATU'。 wa_fieldcat-scrtext_m ='状态'。 wa_fieldcat-col_pos = 2。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='AEDAT'。 wa_fieldcat-scrtext_m ='商品更改日期'。 wa_fieldcat-col_pos = 3。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='MATNR'。 wa_fieldcat-scrtext_m ='物料号'。 wa_fieldcat-col_pos = 4。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='MENGE'。 wa_fieldcat-scrtext_m ='采购量'。 wa_fieldcat-col_pos = 5。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='MEINS'。 wa_fieldcat-scrtext_m ="订单单位"。 wa_fieldcat-col_pos = 6。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='NETPR'。 wa_fieldcat-scrtext_m ='净价'。 wa_fieldcat-edit ='X'。 "将整个列设置为可编辑 wa_fieldcat-col_pos = 7。 wa_fieldcat-outputlen = 15。 wa_fieldcat-datatype ='CURR'。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 wa_fieldcat-fieldname ='PEINH'。 wa_fieldcat-scrtext_m ='价格单位'。 wa_fieldcat-col_pos = 8。 将wa_fieldcat附加到it_fieldcat。 清除wa_fieldcat。 ENDFORM。 " BUILD_FIELDCATALOG *&------------------------------------------------ --------------------- * *&表格BUILD_LAYOUT *&------------------------------------------------ --------------------- * *为ALV网格报表构建布局 * ------------------------------------------------- --------------------- * FORM build_layout。 *设置字段属性的布局字段(即输入/输出) gd_layout-stylefname ='FIELD_STYLE'。 gd_layout-zebra ='X'。 ENDFORM。 " BUILD_LAYOUT *&------------------------------------------------ --------------------- * *&表格DISPLAY_ALV_REPORT *&------------------------------------------------ --------------------- * *使用ALV网格显示报告 * ------------------------------------------------- --------------------- * FORM display_alv_report。 gd_repid = sy-repid。 *调用函数" REUSE_ALV_GRID_DISPLAY" 通话功能'REUSE_ALV_GRID_DISPLAY_LVC' 出口 i_callback_program = gd_repid * i_callback_user_command ='USER_COMMAND' is_layout_lvc = gd_layout it_fieldcat_lvc = it_fieldcat i_save ='X' 桌子 t_outtab = it_ekko 例外情况 程序错误= 1 其他= 2。 如果sy-subrc <> 0。 *消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO *与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 万一。 ENDFORM。 " DISPLAY_ALV_REPORT *&------------------------------------------------ --------------------- * *&表格DATA_RETRIEVAL *&------------------------------------------------ --------------------- * *从EKPO表中检索数据并填充itab it_ekko * ------------------------------------------------- --------------------- * FORM data_retrieval。 SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh 最多10行 从ekpo 表it_ekko的相应字段。 ENDFORM。 " DATA_RETRIEVAL *&------------------------------------------------ --------------------- * *&形式set_specific_field_attributes *&------------------------------------------------ --------------------- * *使用特定的字段属性填充FIELD_STYLE表 * ------------------------------------------------- --------------------- * 形式为set_specific_field_attributes。 数据ls_stylerow类型lvc_s_styl。 数据lt_styletab类型lv_t_styl。 *使用样式属性填充样式变量(FIELD_STYLE) * * NETPR字段/列已在字段目录中设置为可编辑... *如果" NETPR",以下代码将其设置为禁用(仅显示) *大于10。 环聊it_ekko INTO wa_ekko。 如果wa_ekko-netpr GT 10。 ls_stylerow-fieldname ='NETPR'。 ls_stylerow-style = cl_gui_alv_grid => mc_style_disabled。 "将字段设置为禁用 附加ls_stylerow到wa_ekko-field_style。 从wa_ekko修改it_ekko。 万一。 结局。 最终形式。 " set_specific_field_attributes
检查上面的代码。
有关使用ABAP OO的示例代码,请检查程序BCALV_EDIT_02。
希望这会有所帮助。
Rwd点(如果有帮助)。
谢谢
巴拉吉
感谢巴拉吉,您在这篇文章中的回复对我来说:=)效果很好!
你好法里达
您需要了解的所有信息都可以在示例报告BCALV_EDIT_02中找到。 该报告的文档如下所示:
程序BCALV_EDIT_02。 * &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&的& *目的: * ~~~~~~~~~ *此报告说明了如何设置 * ALV网格控件可编辑。 (有关概述,请参见BCALV_EDIT_01 *可能的状态)。 *备注:您可以使用字段设置所选列的状态 *编辑字段目录,请参阅BCALV_EDIT_03。 * ------------------------------------------------- ---------------- *检查程序行为 * ~~~~~~~~~~~~~~~~~~~~~~~~~ *切换到可编辑状态并准备输入。 *然后您可以更改 *飞机容量大于或等于的航班价格 *超过300个席位。 * ------------------------------------------------- ---------------- *基本步骤(搜索"§") * ~~~~~~~~~~~~~~~ * 1.在输出表中扩展一个字段,例如CELLTAB *有关每个单元格的编辑状态的信息 *对应的行(表类型为SORTED!)。 * 2.选择数据后,为循环中的每一行设置编辑状态 *根据SEATSMAX字段。 * 2a。使用属性CL_GUI_ALV_GRID => MC_STYLE_ENABLED设置单元格 *状态为"可编辑"。 * 2b。使用属性CL_GUI_ALV_GRID => MC_STYLE_DISABLED设置单元格 *状态为"不可编辑"。 * 2c。将您的单元格标签复制到gt_outtab的当前行的单元格标签中。 * 3.通过使用栏位来提供celltab栏位的栏位名称 * STYLEFNAME的布局结构。 * &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&的&
致谢
乌威
嗨,专家
我的问题已解决,谢谢大家。 正在关闭紧张的事情...
Fareedas
编辑:Fareeda Tabassum S在2008年3月28日下午12:06
最多设置5个标签!
您好Fareedas,
以下程序演示了如何使ALV网格的各个字段可编辑(NetPR大于10)。 基本ALV网格所需的更改包括向ALV网格数据表(it_ekko)添加新字段,使用样式属性填充此字段以及向布局控制表添加条目。 同样,从本网站上的先前示例中,您还需要更改字段目录的数据类型,布局并使用其他功能模块来显示报告
检查上面的代码。
有关使用ABAP OO的示例代码,请检查程序BCALV_EDIT_02。
希望这会有所帮助。
Rwd点(如果有帮助)。
谢谢
巴拉吉
感谢巴拉吉,您在这篇文章中的回复对我来说:=)效果很好!
你好法里达
您需要了解的所有信息都可以在示例报告BCALV_EDIT_02中找到。 该报告的文档如下所示:
致谢
乌威
嗨,专家
我的问题已解决,谢谢大家。 正在关闭紧张的事情...
致谢
Fareedas
编辑:Fareeda Tabassum S在2008年3月28日下午12:06
一周热门 更多>