点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在研究可编辑的ALV网格控件。 我创建了一个按钮供用户上传Excel文件。 要触发data_changed事件,需编写以下代码:
DATA:lt_bad_cells TYPE lvc_t_modi, lt_msg类型lvc_t_msg1。 如果go_obj-> go_data_obj没有绑定。 CREATE OBJECT go_obj-> go_data_obj"对cl_alv_changed_data_protocol的错误处理程序对象引用 出口 i_calling_alv = go_grid。 " ALV网格 万一。 在处分配ASSIGNING FIELD-SYMBOL( )。 如果已分配 。 将 对应移动到gwa_park_jou_it。 插入gwa_park_jou_it INTO gt_park_jou_it INDEX lv_next。 ls_mod_cell-row_id = sy-tabix。 ls_mod_cell-tabix = sy-tabix。 在lt_fcat分配字段符号( )处循环播放。 ls_mod_cell-fieldname = -字段名。 将结构 的ASSIGN COMPONENT -fieldname分配到FIELD-SYMBOL( )。 如果sy-subrc = 0。 ls_mod_cell-value = <值>。 将ls_mod_cell插入表gt_mod_cells中。 万一。 结局。 lv_next = lv_next + 1。 万一。 结局。 调用方法go_grid-> refresh_table_display。 呼叫方法go_grid-> if_cached_prop〜set_prop 出口 propname ='GridModified' propvalue ='1'。 go_obj-> handle_data_changed(er_data_changed = go_obj-> go_data_obj sender = go_grid)。 go_obj-> go_data_obj-> display_protocol()。 在各种检查方法中,将消息添加如下 er_data_changed-> add_protocol_entry("如果出现问题,则发送错误消息 出口 i_msgid =文字038 i_msgno = lc_msgno i_msgty = gc_e i_msgv1 =文字-011 i_msgv2 = lo_exe-> get_text() i_fieldname = lv_good-fieldname i_row_id = lv_good-row_id)。 在处理数据更改的方法中,以下代码被编码。 如果gt_mod_cells不是INITIAL。 将gt_mod_cells的行插入表er_data_changed-> mt_good_cells中。 将gt_mod_cells的行插入表er_data_changed-> mt_mod_cells中。 DATA(lv_no_value)= abap_true。 刷新:gt_mod_cells。 万一。 如果er_data_changed为BOUND。 er_data_changed-> refresh_protocol()。 万一。
一切正常。 用于数据验证的错误消息也显示为POPUP。
我面临的问题是关闭协议框后系统会生成ABAP转储。
在协议框关闭时触发事件" on_close",该事件尝试将set_focus调用ALV。
在Cl_GUI_CONTROL的set_focus方法中,调用ALV的值为空白。
使用ALV网格引用调用方法go_obj-> go_data_obj-> display_protocol(i_calling_alv = go_grid)时,不会显示任何消息。
Go_data_obj被定义为类数据。
任何帮助将不胜感激。 我最近几天都没电解决此问题。
罗希特(Rohit Chowdhary),
建议您使用CODE 按钮粘贴代码,这将有助于我们更好地了解问题。
致谢!
如果不分析短期转储,将无法解决该问题。 或告诉我们您是否被卡住...
PS:请使用CODE按钮设置代码格式,以便以更加用户友好的格式(彩色)显示代码。
一周热门 更多>