ALV网格显示协议错误

2020-08-30 21:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在研究可编辑的ALV网格控件...

         点击此处--->   EasySAP.com群内免费提供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被定义为类数据。

任何帮助将不胜感激。 我最近几天都没电解决此问题。