注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

原来为了你

我的人生就是要一次次的超越

 
 
 

日志

 
 
 
 

OO ALV on the screen  

2011-10-21 17:53:53|  分类: ALV |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

include <icon>.

datawa_spfli type spfli,
      it_spfli 
type table of spfli,
      it_del_spfli 
type table of spfli.

* alv 定义
datawa_container type scrfname value 'TAB1',  "定制控件,作为alv容器
      alv_grid 
type ref to cl_gui_alv_grid,
      wa_custom_container 
type ref to cl_gui_custom_container"容器

datawa_layout type lvc_s_layo.
wa_layout
-edit 'X'.
wa_layout
-grid_title 'GRID_TITLE'.
* screen okcode
dataok_code type sy-ucomm,
      save_ok 
type sy-ucomm.

class lcl_event_receiver definition deferred.
dataevent_receiver type ref to lcl_event_receiver.  " ALV 事件
*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
class lcl_event_receiver definition.
  
public section.
    
typesdel_rows type standard table of spfli.
    
dataddel_rows type standard table of spfli.

    
methodshandle_data_changed for event data_changed of cl_gui_alv_grid importing er_data_changed,
             update_delta_tables 
importing pr_data_changed type ref to cl_alv_changed_data_protocol,
             get_deleted_rows 
exporting deleted_rows type del_rows,
             handle_toolbar 
for event toolbar of cl_gui_alv_grid importing e_object e_interactive,
             handle_user_command 
for event user_command of cl_gui_alv_grid importing e_ucomm,
             handle_double_click 
for event double_click of cl_gui_alv_grid importing e_row e_column.
*    methods: handle_data_changed_finished for event data_changed_finished of cl_gui_alv_grid importing er_data_changed_finished.
endclass.                    "lcl_event_receiver DEFINITION

start
-of-selection.
  
select into table it_spfli from spfli.
*---create_alv
  
if wa_custom_container is initial.
    
create object wa_custom_container
      
exporting
        container_name 
wa_container."wa_container放到wa_custom_container
    
create object alv_grid
      
exporting
        i_parent 
wa_custom_container.
  
endif.

*---initial alv_grid.
  
call method alv_grid->set_table_for_first_display
    
exporting
      i_structure_name 
'SPFLI'
      is_layout        
wa_layout
    
changing
      it_outtab        
it_spfli.

*---注册事件
  
create object event_receiver.
  
set handler event_receiver->handle_user_command for alv_grid.
  
set handler event_receiver->handle_toolbar for alv_grid.
  
set handler event_receiver->handle_double_click for alv_grid.
  
set handler event_receiver->handle_data_changed for alv_grid.
*  set handler event_receiver->handle_data_changed_finished for alv_grid.
  
call method alv_grid->set_toolbar_interactive.

*---display_data
  
call screen 100.

  
perform write_data.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
module user_command_0100 input.
  save_ok 
ok_code.
  
clear ok_code.
  
case save_ok.
    
when 'BACK'.
      
datal_ret value 'X'.
      
call method alv_grid->check_changed_data
        
importing
          e_valid 
l_ret.
      
leave to screen 0.
  
endcase.
endmodule.                 " USER_COMMAND_0100  INPUT

*----------------------------------------------------------------------*
*       CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
class lcl_event_receiver implementation.
  
method handle_data_changed.
    
call method update_delta_tableser_data_changed ).
  
endmethod.                    "handle_data_changed

  
method update_delta_tables.
    
datal_del_row type lvc_s_moce.
    
loop at pr_data_changed->mt_deleted_rows into l_del_row."删除的列数据会引起mt_deleted_rows的改变。
      
read table it_spfli into wa_spfli index l_del_row-row_id.
      
if sy-subrc <> 0.
        
message e208(00with '错误!'.
      
else.
        
append wa_spfli to ddel_rows.   "保存被修改的行数据。
      
endif.
    
endloop.
*    call method pr_data_changed->modify_cell.
  
endmethod.                    "update_delta_tables

  
method get_deleted_rows.
    deleted_rows 
me->ddel_rows.
  
endmethod.                    "get_deleted_rows

  
method handle_toolbar.
    
datals_toolbar type stb_button.
    
clear ls_toolbar-butn_type.
    
append ls_toolbar to e_object->mt_toolbar.
    
clear ls_toolbar.

    
move'SHOW_DETA' to ls_toolbar-function.
    
move icon_ppe_vnode to ls_toolbar-icon.
    
move '航班明细显示to ls_toolbar-quickinfo.
    
move '航班明细显示'(112to ls_toolbar-text.
    
move '' to ls_toolbar-disabled.
    
append ls_toolbar to e_object->mt_toolbar.
  
endmethod.                    "handle_toolbar

  
method handle_user_command.
    
datalt_rows type lvc_t_row.
    
case e_ucomm.
      
when 'SHOW_DETA'.
        
call method alv_grid->get_selected_rows
          
importing
            et_index_rows 
lt_rows.
        
call method cl_gui_cfw=>flush.
        
if sy-subrc 0.
          
message s005(ymesswith '已选择行!'.
          
perform messdeta tables lt_rows.
        
endif.
    
endcase.
  
endmethod.                    "HANDLE_USER_command

  
method handle_double_click.
    
datali_spfli like line of it_spfli.
    
read table it_spfli index e_row-index into li_spfli.
    
datas1(100type c.
    
concatenate '行:e_row-index '列名:e_column-fieldname into s1.
    
concatenate s1 'connid:' li_spfli-connid into s1.
    
concatenate s1 'carrid:' li_spfli-carrid into s1.
    
message s208(00with s1.
  
endmethod.                    "handle_double_click
endclass.                    "lcl_event_receiver IMPLEMENTATION
*&---------------------------------------------------------------------*
*&      Form  MESSDETA
*&---------------------------------------------------------------------*
form messdeta  tables   p_et_rows structure lvc_s_row.
  
"插入正确名称 <...>.
  
datals_selected_line like lvc_s_row,
        lf_row_index 
type lvc_index.
  
datas1(200type c,
        s2
(3type c.
  s2 
'-'.

  
loop at p_et_rows into ls_selected_line.
    lf_row_index 
ls_selected_line-index.
    
read table it_spfli index lf_row_index into wa_spfli.
    s1 
'选择行内容'.
    
concatenate s1 wa_spfli-connid wa_spfli-carrid wa_spfli-cityfrom
    
into s1 separated by s2.
    
message i005(ymesswith s1.
  
endloop.
endform.                    " MESSDETA
*&---------------------------------------------------------------------*
*&      Form  WRITE_DATA
*&---------------------------------------------------------------------*
form write_data .
  
write '删除的内表记录:'.
  
write /'__________________'.
  
call method event_receiver->get_deleted_rows
    
importing
      deleted_rows 
it_del_spfli.

  
loop at it_del_spfli into wa_spfli.
    
write/ wa_spfli-carridwa_spfli-connidwa_spfli-cityfrom.
  
endloop.

  
write '更新后的记录:'.
  
write /'____________________'.
  
loop at it_spfli into wa_spfli.
    
write:/ wa_spfli-connid,wa_spfli-carrid,wa_spfli-cityfrom.
  
endloop.
endform.                    " WRITE_DATA

OO ALV on the screen. - 2006057145 - 原来为了你

 

  评论这张
 
阅读(947)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017