如何在ALV中编辑选定的行

2020-09-06 22:57发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我是webdynp...

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

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


专家们,

我是webdynpro ABAP的新手。 如何在ALV中编辑整个选定行。 请提出建议?

谢谢。

4条回答
灬番茄
2020-09-06 23:16

*&---------------------------------- ----------------------------------- *

*&报告ZDEMO_PROG1
*&
*&--------------------------------- ------------------------------------ *
*&
*&
*&------------------------------------------------ --------------------- *
报告ZDEMO_PROG1。
表格: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,
meins TYPE ekpo-meins ,
netpr类型ekpo-netpr,
peinh类型,ekpo-peinh,
field_style TYPE lvc_t_styl," FOR DISABLE
t_ekko的结尾。

数据:it_ekko类型标准表t_ekko 初始大小0,
wa_ekko类型t_ekko。

* ALV数据声明
数据:fieldcatalog类型slis_t_fieldcat_alv WITH HEADER LINE。
数据:it_fieldcat TYPE lvc_t_fcat," slis_t_HEADcat > 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 LIKE sy-repid。



****** ****************************************************** ***************
*开始选择。
开始选择。

PERFORM data_retrieval。
P ERFORM set_specific_field_attributes。
PERFORM build_fieldcatalog。
PERFORM build_layout。
PERFORM display_alv_report。


*&------------------ -------------------------------------------------- -*
*&表格BUILD_FIELDCATALOG
*&------------------------------------ --------------------------------- *
*为ALV报告建立Fieldcatalog
* --- -------------------------------------------------- ----------------- *
FORM 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 ='PO项目'。
wa_fieldcat-col_pos =1。
将wa_fieldcat附加到it_fieldcat。
CLEAR wa_fieldcat。

wa_fieldcat-fieldname ='STATU'。
wa_fieldcat-scrtext_m ='Status'。
wa_f ieldcat-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 ='PO数量'。
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到它_fieldcat。
清除wa_fieldcat。< br> 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网格显示报告
* ---------------------- ------------------------------------------------ * < br> FORM display_alv_report。
gd_repid = sy-repid。

*调用函数'REUSE_ALV_GRID_DISPLAY'
调用功能'REUSE_ALV_GRID_DISPLAY_LVC'
导出
i_callback_program = gd_repid USER_COMMAND'
is_layout_lvc = gd_layout
it_fieldcat_lvc = it_fieldcat
i_save ='X'
表格
t_outtab = it_ekko
例外情况
program_error = 1
其他= 2. < br> IF sy-subrc <> 0.
*消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
*带SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
ENDIF。
ENDFORM。" DISPLAY_ALV_REPORT


*&-------------------------------- ------------------------------------- *
*& 表格DATA_RETRIEVAL
*&------------------------------------------- -------------------------- *
*从EKPO表中检索数据并填充itab it_ekko
* ------ -------------------------------------------------- -------------- *
FORM数据检索。
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 TYPE lvc_s_styl。
数据lt_styletab TYPE lvc_t_styl。

*填充具有样式属性的样式变量(FIELD_STYLE)
*
* NETPR字段/column已在字段目录中设置为可编辑...
*如果'NETPR'
*大于10,以下代码将其设置为禁用(仅显示)。
LOOP AT it_ekko INTO wa_ekko 。
IF wa_ekko-netpr GT10。


ls_stylerow-fieldname ='EBELN'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED。
将ls_stylerow插入表wa_ekko-field_style中。 。
从wa_ekko修改it_ekko。
ls_styler ow-fieldname ='EBELP'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED。
将ls_stylerow插入表wa_ekko-field_style。
从wa_ekko修改it_ekko。
ls_stylerow-field ='U'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED。
将ls_stylerow插入表wa_ekko-field_style。
从wa_ekko修改it_ekko。 => MC_STYLE_ENABLED。
将ls_stylerow插入表wa_ekko-field_style。
从wa_ekko修改it_ekko。
ls_stylerow-fieldname ='MATNR'。
ls_stylerow-style = cl_gui_alv_grid => ERT_MC_STYLE_ENABLED 将ls_stylerow插入表wa_ekko-field_style中。
从wa_ekko中修改it_ekko。
ls_stylerow-fieldname ='MENGE'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED。
将ls_style <插入到表中。 br>从wa_ekko修改it_ekko。
ls_stylerow-fieldname ='MEINS'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLE D.
将ls_stylerow插入表wa_ekko-field_style中。
从wa_ekko修改it_ekko。
ls_stylerow-fieldname ='NETPR'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED到
INSERT中。 表wa_ekko-field_style。
从wa_ekko修改it_ekko。
ls_stylerow-fieldname ='PEINH'。
ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED。
将ls_stylerow插入表wa_ekrow中。 从wa_ekko修改it_ekko。


* ls_stylerow-style = cl_gui_alv_grid => MC_STYLE_ENABLED。
"将字段设置为Disabled
* APPEND现在已被INSERT命令替换,因为它会出错< br> *如果未按正确的顺序添加条目
**将ls_stylerow插入wa_ekko-field_style。
*将ls_stylerow插入表wa_ekko-field_style。
*从wa_ekko中修改it_ekko。
ENDIF。< br> ENDLOOP。

最终形式。 " set_specific_field_attributes


* -------------------------------------- -------------------- *
* FORM USER_COMMAND *
* ------------------ ---------------------------------------- *
*-> R_UCOMM *
*-> RS_SELFIELD *
* ------------------------------------- --------------------- *
FORM用户命令使用r_ucomm像sy-ucomm
rs_selfield TYPE slis_selfield。

**任何更改 您在屏幕上输入的内容现在将存储在
** **构造ALV的原始内部表(it_ekko)

*检查功能代码
CASE r_ucomm。
当'&DATA_SAVE '。"甚至是您想要的事件
在it_ekko循环到wa_ekko。
*处理表的每一行,包括新值
ENDLOOP。
ENDCASE。
ENDFORM。

# p#

一周热门 更多>