2020-09-05 22:43发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我不习惯CL_SALV_... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我不习惯CL_SALV_TABLE。 我将一个字段设为可编辑,当我单击"保存"按钮时,它告诉我已被修改以在ZTABLE中更新的记录。
由于我不太习惯Abap OO,因此将提供一个示例代码。
此致
大卫
创建189行屏幕添加容器并将其命名为容器
示例程序:
SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S32 {color:#3399FF; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }
**&-------------------------------------------- ------------------------- * **&报告ZTEST_GUNA **&---------- -------------------------------------------------- --------- * **& **&---------------------------- ----------------------------------------- ** 报告ZTEST_GUNA。表:MARA。数据:it_tab的开头出现0,像mara-matnr一样的matnr,像mara-erda一样的 erda,"创建日期像mara-ernam一样的ernam,"创建的人< br> pstat像mara-pstat," main stat lvorm像mara-lvorm," flg for delete mtart像mara-mtart," mat type meins像mara-meins," uom 数据:wa_it_tab像it_tab的一行。 "制作工作区数据:i_modified类型的mara标准表",用于获取修改后的行 w_modified类型mara。类别lcl_events_d0100定义为延迟。数据:event_receiver1类型参考为lcl_events_d0100, i_selrows TYPE lvc_t_row,"选定的行 w_selected_rows TYPE lvc_s_row。 * -------------------------------- ------------------------------------- * * CLASS lcl_events_d0100定义 *- -------------------------------------------------- ------------------ * 类别lcl_events_d0100的定义。公共部分。方法 handle_hotspot_click 事件cl_gui_alv_grid的hotspot_click 导入 e_row_id e_column_id es_row_no 发件人。 *-用于ALV按钮的代码添加 *-用于放置按钮方法handle_toolbar_set cl_gui_alv_grid 的工具栏导入 e_object e_interactive。 *-单击按钮的用户命令方法handle_user_command EVENT用户命令OF cl_gui_alv_grid 导入 e_ucomm。 ENDCLASS。 " lcl_events_d0100定义类型池cndp。数据ok_code类型sy-ucomm。 * ------------------------- --------------------------------------------- * * 对于变量 * -------------------------------------------- -------------------------- * DATA st_var TYPE变量。 DATA save TYPE c。 st_var-report = 'YKC_ALV_OOPS'。保存='A'。 * --------------------------------- ------------------------------------- * *用于布局 *- -------------------------------------------------- ------------------ * 数据loyo类型lvc_s_layo。 loyo-斑马='X'。 loyo-detailinit ='X'。< br> loyo-info_fname ='RED'。 * ------------------------------------ ---------------------------------- * *现场目录 * ---- -------------------------------------------------- ---------------- * 数据fcat类型lvc_t_fcat。数据wa_fcat类似于fcat的线。 *-工具栏按钮的声明 DATA: ty_toolbar TYPE stb_button。数据:e_object TYPE REF TO cl_ alv_event_toolbar_set, io_alv_toolbar类型参考至cl_alv_event_toolbar_set。 *-自定义容器数据容器类型参考至cl_gui_custom_container。数据参考_网格类型REF至cl_gui_alv_grid。 container_name ='CONTAINER'。创建对象ref_grid 导出 i_parent =容器。 * -------------------- ------------------------------------------------- * * CLASS lcl_events_d0100实施 * --------------------------------------- ------------------------------ * 类别lcl_events_d0100实施。方法handle_hotspot_click。 DATA:ls_col_id 类型lvc_s_col。读取表it_tab放入wa_it_tab 索引e_row_id-index。如果sy-subrc =0。检查(wa_it_tab-matnr不是INITIAL INITIAL)。案例e_column_id-fieldname。 何时'MATNR'。离开程序。何时其他人。结束语。呼叫方法ref_grid-> set_current_cell_via_id 导出 is_row_id = e_row_id is_column_id = ls_co l_id。 ENDIF。 ENDMETHOD。 " handle_hotspot_click ** ---处理工具栏的方法方法handle_toolbar_set。清除ty_toolbar。 ty_toolbar-function ='EDIT'。 ty_toolbar-butn_type =0。 ty_toolbar -text ='EDIT'。将ty_toolbar附加到e_object-> mt_toolbar。 ENDMETHOD。方法handle_user_command。数据:wr_data_changed类型引用到cl_alv_changed_data_protocol。数据:lt_rows类型lvc_t br> lt_index类型lvc_s_row-index。案例e_ucomm。进行"编辑"时。执行save_database。调用方法ref_GRID-> REFRESH_TABLE_DISPLAY。 ENDCASE。 ENDHOHOD。。 > ENDCLASS。开始选择。 PERFORM GET。 PERFORM field_catalog。 表单GET。将matnr ersda ernam pstat lvorm mtart meins 选择到表it_tab中 来自mara ,其中matnr NE ABAP_FALSE。最终形式。 形式field_catalog。刷新fcat。数据:lv_pos类型i。 lv_pos = lv_pos + 1 。 wa_fcat-colname ='MATNR'。 wa_fcat-coltext ='材料编号'。 wa_fcat-col_pos = lv_pos。 wa_fcat-hotspot ='X'。 wa_fcat-outputlen = 18. 追加wa_fcat到fcat。清除wa_fcat。 lv_pos = lv_pos + 1. wa_fcat- 字段名称='ERSDA'。 wa_fcat-coltext ='创建日期'。 wa_fcat-col_pos = lv_pos。 wa_fcat-edit ='X'。 wa_fcat-outputlen = 18. APPEND wa_fcat到fcat。清除wa_fcat。 lv_pos = lv_pos + 1. wa_fcat-fieldname ='LVORM'。 wa_fcat-coltext ='删除标记'。 wa_fcat-col_pos = lv_pos。 wa_fcat-outputlen = 18. 追加wa_fcat TO fcat。清除wa_fcat。 lv_pos = lv_pos + 1. wa_fcat字段名称='MTART'。 wa_fcat -coltext ='材料类型'。 wa_fcat-col_pos = lv_pos。 wa_fcat-outputlen =18。追加wa_fcat到fcat。清除wa_fcat。 lv_pos = lv_pos + 1. < br> wa_fcat-fieldname ='MEINS'。 wa_fcat-coltext ='UOM'。 wa_fcat-col_pos = lv_pos。 wa_fcat-outputlen =18。将wa_fcat附加到fcat。 CLEAR wa_fcat。创建对象event_receiver1。 SET HANDLER event_r eceiver1-> handle_toolbar_set FOR ref_grid。 SET HANDLER event_receiver1-> handle_user_command FOR ref_grid。 SET HANDLER event_receiver1-> handle_hotspot_click FOR ref_grid。 呼叫方法ref_grid-> PORT
最多设置5个标签!
创建189行屏幕添加容器并将其命名为容器
示例程序:
SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S32 {color:#3399FF; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }
**&-------------------------------------------- ------------------------- *
**&报告ZTEST_GUNA
**&---------- -------------------------------------------------- --------- *
**&
**&---------------------------- ----------------------------------------- **
报告ZTEST_GUNA。
表:MARA。
数据:it_tab的开头出现0,
像mara-matnr一样的matnr,像mara-erda一样的
erda,"创建日期
像mara-ernam一样的ernam,"创建的人< br> pstat像mara-pstat," main stat
lvorm像mara-lvorm," flg for delete
mtart像mara-mtart," mat type
meins像mara-meins," uom
数据:wa_it_tab像it_tab的一行。 "制作工作区
数据:i_modified类型的mara标准表",用于获取修改后的行
w_modified类型mara。
类别lcl_events_d0100定义为延迟。
数据:event_receiver1类型参考为lcl_events_d0100,
i_selrows TYPE lvc_t_row,"选定的行
w_selected_rows TYPE lvc_s_row。
* -------------------------------- ------------------------------------- *
* CLASS lcl_events_d0100定义
*- -------------------------------------------------- ------------------ *
类别lcl_events_d0100的定义。
公共部分。
方法
handle_hotspot_click
事件cl_gui_alv_grid的hotspot_click
导入
e_row_id
e_column_id
es_row_no
发件人。
*-用于ALV按钮的代码添加
*-用于放置按钮
方法handle_toolbar_set
cl_gui_alv_grid
的工具栏
导入
e_object
e_interactive。
*-单击按钮的用户命令
方法handle_user_command
EVENT用户命令OF cl_gui_alv_grid
导入
e_ucomm。
ENDCLASS。 " lcl_events_d0100定义
类型池cndp。
数据ok_code类型sy-ucomm。
* ------------------------- --------------------------------------------- *
* 对于变量
* -------------------------------------------- -------------------------- *
DATA st_var TYPE变量。
DATA save TYPE c。
st_var-report = 'YKC_ALV_OOPS'。
保存='A'。
* --------------------------------- ------------------------------------- *
*用于布局
*- -------------------------------------------------- ------------------ *
数据loyo类型lvc_s_layo。
loyo-斑马='X'。
loyo-detailinit ='X'。< br> loyo-info_fname ='RED'。
* ------------------------------------ ---------------------------------- *
*现场目录
* ---- -------------------------------------------------- ---------------- *
数据fcat类型lvc_t_fcat。
数据wa_fcat类似于fcat的线。
*-工具栏按钮的声明
DATA: ty_toolbar TYPE stb_button。
数据:e_object TYPE REF TO cl_ alv_event_toolbar_set,
io_alv_toolbar类型参考至cl_alv_event_toolbar_set。
*-自定义容器
数据容器类型参考至cl_gui_custom_container。
数据参考_网格类型REF至cl_gui_alv_grid。
container_name ='CONTAINER'。
创建对象ref_grid
导出
i_parent =容器。
* -------------------- ------------------------------------------------- *
* CLASS lcl_events_d0100实施
* --------------------------------------- ------------------------------ *
类别lcl_events_d0100实施。
方法handle_hotspot_click。
DATA:ls_col_id 类型lvc_s_col。
读取表it_tab放入wa_it_tab
索引e_row_id-index。
如果sy-subrc =0。
检查(wa_it_tab-matnr不是INITIAL INITIAL)。
案例e_column_id-fieldname。
何时'MATNR'。
离开程序。
何时其他人。
结束语。
呼叫方法ref_grid-> set_current_cell_via_id
导出
is_row_id = e_row_id
is_column_id = ls_co l_id。
ENDIF。
ENDMETHOD。 " handle_hotspot_click
** ---处理工具栏的方法
方法handle_toolbar_set。
清除ty_toolbar。
ty_toolbar-function ='EDIT'。
ty_toolbar-butn_type =0。
ty_toolbar -text ='EDIT'。
将ty_toolbar附加到e_object-> mt_toolbar。
ENDMETHOD。
方法handle_user_command。
数据:wr_data_changed类型引用到cl_alv_changed_data_protocol。
数据:lt_rows类型lvc_t br> lt_index类型lvc_s_row-index。
案例e_ucomm。
进行"编辑"时。
执行save_database。
调用方法ref_GRID-> REFRESH_TABLE_DISPLAY。
ENDCASE。
ENDHOHOD。
。 > ENDCLASS。
开始选择。
PERFORM GET。
PERFORM field_catalog。
表单GET。
将matnr ersda ernam pstat lvorm mtart meins
选择到表it_tab中
来自mara
,其中matnr NE ABAP_FALSE。
最终形式。
形式field_catalog。
刷新fcat。
数据:lv_pos类型i。
lv_pos = lv_pos + 1 。
wa_fcat-colname ='MATNR'。
wa_fcat-coltext ='材料编号'。
wa_fcat-col_pos = lv_pos。
wa_fcat-hotspot ='X'。
wa_fcat-outputlen = 18.
追加wa_fcat到fcat。
清除wa_fcat。
lv_pos = lv_pos + 1.
wa_fcat- 字段名称='ERSDA'。
wa_fcat-coltext ='创建日期'。
wa_fcat-col_pos = lv_pos。
wa_fcat-edit ='X'。
wa_fcat-outputlen = 18.
APPEND wa_fcat到fcat。
清除wa_fcat。
lv_pos = lv_pos + 1.
wa_fcat-fieldname ='LVORM'。
wa_fcat-coltext ='删除标记'。
wa_fcat-col_pos = lv_pos。
wa_fcat-outputlen = 18.
追加wa_fcat TO fcat。
清除wa_fcat。
lv_pos = lv_pos + 1.
wa_fcat字段名称='MTART'。
wa_fcat -coltext ='材料类型'。
wa_fcat-col_pos = lv_pos。
wa_fcat-outputlen =18。
追加wa_fcat到fcat。
清除wa_fcat。
lv_pos = lv_pos + 1. < br> wa_fcat-fieldname ='MEINS'。
wa_fcat-coltext ='UOM'。
wa_fcat-col_pos = lv_pos。
wa_fcat-outputlen =18。
将wa_fcat附加到fcat。
CLEAR wa_fcat。
创建对象event_receiver1。
SET HANDLER event_r eceiver1-> handle_toolbar_set FOR ref_grid。
SET HANDLER event_receiver1-> handle_user_command FOR ref_grid。
SET HANDLER event_receiver1-> handle_hotspot_click FOR ref_grid。
呼叫方法ref_grid-> PORT
is_layout = loyo
更改
it_outtab = it_tab []
it_fieldcatalog = fcat。
调用屏幕100。
终端格式。
< br>模块STATUS_0100输出。
调用方法ref_grid-> register_edit_event
导出i_event_id = cl_gui_alv_grid => mc_evt_modified。
SET PF-STATUS'GUI'。
SET TITLEBAR'TITLE'。
最终模块 。
模块退出输入。
案例ok_code。
何时'EXIT'。
何时'BACK'。
何时'CANCEL'。
清除ok_code。
离开程序。
ENDCASE。
endmodule。
FORM SAVE_DATABASE。
*-获取选定的行索引
调用方法ref_grid-> get_selected_rows
导入et_index_rows = i_selrows 。
*-通过索引捕获se的值 选择的行
将i_selrows循环到w_selected_rows。
读取表it_tab到wa_it_tab INDEX w_selected_rows-index。
如果sy-subrc EQ0。
移动wa_it_tab到w_modified。
APPEND i_modified。
ENDIF。
ENDLOOP。
从表i_modified。
ENDFORM修改mara。
一周热门 更多>
相关问答
相关文章
采纳回答
编辑标签
举报内容
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
付费偷看金额在0.1-10元之间