场景:
查看程序修改日志,修改次数
源码
REPORT zcp.
- 事务代码: ZCP
- 程序名称: ZCP
- 程序目的: ZCP-程序修改日志
- 开发人员:
*(修改日志)-------------------------------------------------------- - 日志号 修改人 修改时间 修改说明 传输号码
-
- 001
======================================================================
- INCLUDE
======================================================================
INCLUDE zcp_top.
INCLUDE zcp_f01.
======================================================================
- AT SELECTION-SCREEN.
======================================================================
AT SELECTION-SCREEN OUTPUT.
======================================================================
- INITIALIZATION
======================================================================
INITIALIZATION.
"修改日期默认30天内
s_datum-sign = ‘I’. s_datum-option = ‘BT’.
s_datum-low = sy-datum - 30 .s_datum-high = sy-datum.APPEND s_datum.
======================================================================
- START-OF-SELECTION.
======================================================================
START-OF-SELECTION.
PERFORM frm_get_data."取数
======================================================================
- END-OF-SELECTION.
======================================================================
END-OF-SELECTION.
PERFORM frm_alv_fieldcat."修改设置字段属性
PERFORM frm_alv_layout."设置输出格式
PERFORM frm_alv_display."ALV显示
&---------------------------------------------------------------------
*& 包含 ZCP_TOP
&---------------------------------------------------------------------
TABLES:vrsd,tstc.
TYPES:BEGIN OF ty_alv_a,
tcode TYPE char100, "事务码
ttext TYPE char100, "事务码描述
trkorr TYPE korrnum, "请求号
pgmna TYPE vrsd-objname, "程序名
type TYPE char20, "程序名
uname TYPE uname, "账号
uname_text TYPE tr_as4user, "账号名称
as4user_text TYPE as4text, "请求或任务的所有者
as4date_dev TYPE as4date, "最后更改的日期
as4time_dev TYPE as4time, "上次更改时间
as4text TYPE as4text, "资源库对象的简短描述
rels TYPE versrels, "版本管理: 版本
END OF ty_alv_a.
DATA:gs_alv TYPE ty_alv_a,
gt_alv_a TYPE STANDARD TABLE OF ty_alv_a,
gt_alv_b TYPE STANDARD TABLE OF ty_alv_a.
TYPES:BEGIN OF ty_alv,
tcode TYPE char100, "事务码
ttext TYPE char100, "事务码描述
type TYPE char20, "程序名
xgcs TYPE i, "修改次数
uname TYPE uname, "账号
uname_text TYPE tr_as4user, "账号名称
as4user_text TYPE as4text, "请求或任务的所有者
as4date_dev TYPE as4date, "最后更改的日期
as4time_dev TYPE as4time, "上次更改时间
rels TYPE versrels, "版本管理: 版本
END OF ty_alv.
DATA:gt_alv TYPE STANDARD TABLE OF ty_alv.
DATA:gt_fieldcat TYPE lvc_t_fcat, "字段目录内表
gt_fieldcat2 TYPE lvc_t_fcat, "字段目录内表
gs_fieldcat TYPE lvc_s_fcat, "字段目录工作区
gs_layout TYPE lvc_s_layo. "用于定义ALV表单的相关格式、属性
DATA:go_docking TYPE REF TO cl_gui_docking_container, "全屏自适应
go_alvgrid_dt TYPE REF TO cl_gui_alv_grid. "全屏自适应
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_tcode FOR tstc-pgmna,
-
s_pgmna FOR tstc-pgmna, s_datum FOR vrsd-datum, s_author FOR vrsd-author,
-
s_zeit FOR vrsd-zeit, s_tr FOR vrsd-korrnum.
SELECTION-SCREEN END OF BLOCK b1.
&---------------------------------------------------------------------
*& 包含 ZCP_F01
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& Form FRM_GET_DATA
&---------------------------------------------------------------------
-
取数
----------------------------------------------------------------------
FORM frm_get_data .
DATA:lv_objname TYPE versobjnam.
DATA:lt_alv_a TYPE STANDARD TABLE OF ty_alv_a.
DATA:ls_alv TYPE ty_alv.
IF s_tcode[] IS NOT INITIAL.
"事务码
SELECT
tcode,
pgmna
FROM tstc
INTO TABLE @DATA(lt_tstc)
WHERE tcode IN @s_tcode.
LOOP AT lt_tstc INTO DATA(ls_tstc) .
lv_objname = '%' && ls_tstc-pgmna && '%'.
SELECT
objname AS pgmna "版本管理:对象名称
korrnum AS trkorr "版本管理: 版本请求号
author AS uname "版本管理: 版本创建者
datum AS as4date_dev "版本管理: 版本创建日期
zeit AS as4time_dev "版本管理: 版本创建时间
rels "版本管理: 版本
FROM vrsd
APPENDING CORRESPONDING FIELDS OF TABLE gt_alv_a
WHERE korrnum <> ''
AND objname LIKE lv_objname
AND author IN s_author
AND korrnum IN s_tr
AND datum IN s_datum.
ENDLOOP.
LOOP AT s_tcode.
IF s_tcode-low IS NOT INITIAL.
lv_objname = '%' && s_tcode-low && '%'.
SELECT
objname AS pgmna "版本管理:对象名称
korrnum AS trkorr "版本管理: 版本请求号
author AS uname "版本管理: 版本创建者
datum AS as4date_dev "版本管理: 版本创建日期
zeit AS as4time_dev "版本管理: 版本创建时间
rels "版本管理: 版本
FROM vrsd
APPENDING CORRESPONDING FIELDS OF TABLE gt_alv_a
WHERE korrnum <> ''
AND objname LIKE lv_objname
AND author IN s_author
AND korrnum IN s_tr
AND datum IN s_datum.
ELSEIF s_tcode-high IS NOT INITIAL.
lv_objname = '%' && s_tcode-high && '%'.
SELECT
objname AS pgmna "版本管理:对象名称
korrnum AS trkorr "版本管理: 版本请求号
author AS uname "版本管理: 版本创建者
datum AS as4date_dev "版本管理: 版本创建日期
zeit AS as4time_dev "版本管理: 版本创建时间
rels "版本管理: 版本
FROM vrsd
APPENDING CORRESPONDING FIELDS OF TABLE gt_alv_a
WHERE korrnum <> ''
AND objname LIKE lv_objname
AND author IN s_author
AND korrnum IN s_tr
AND datum IN s_datum.
ENDIF.
ENDLOOP.
ELSE.
SELECT
objname AS pgmna "版本管理:对象名称
korrnum AS trkorr "版本管理: 版本请求号
author AS uname "版本管理: 版本创建者
datum AS as4date_dev "版本管理: 版本创建日期
zeit AS as4time_dev "版本管理: 版本创建时间
rels "版本管理: 版本
FROM vrsd
APPENDING CORRESPONDING FIELDS OF TABLE gt_alv_a
WHERE author IN s_author
AND korrnum IN s_tr
AND datum IN s_datum.
ENDIF.
SORT gt_alv_a.
DELETE ADJACENT DUPLICATES FROM gt_alv_a COMPARING ALL FIELDS.
IF gt_alv_a[] IS INITIAL.
MESSAGE ‘没有符合条件的数据’ TYPE ‘S’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ELSE.
SELECT
trkorr,
as4text
FROM e07t
INTO TABLE @DATA(lt_e07t)
FOR ALL ENTRIES IN @gt_alv_a
WHERE langu = ‘1’
AND trkorr = @gt_alv_a-trkorr.
SORT lt_e07t BY trkorr.
SELECT
name_textc,
bname
FROM user_addr
INTO TABLE @DATA(lt_user_addr) "完整的人员名称
FOR ALL ENTRIES IN @gt_alv_a
WHERE bname = @gt_alv_a-uname.
SORT lt_user_addr BY bname.
SELECT
tcode,
ttext
FROM tstcv
INTO TABLE @DATA(lt_tstcv)
WHERE sprsl = '1'
AND tcode LIKE 'Z%'.
SORT lt_tstcv BY tcode.
SELECT
*
FROM trdirt
INTO TABLE @DATA(lt_trdirt)
WHERE sprsl = '1'
AND name LIKE 'Z%'.
SORT lt_trdirt BY name.
SELECT
*
FROM dd02t
INTO TABLE @DATA(lt_dd02t)
WHERE ddlanguage = '1'
AND tabname LIKE 'Z%'.
SORT lt_dd02t BY tabname.
ENDIF.
"类型判断
LOOP AT gt_alv_a INTO gs_alv.
READ TABLE lt_e07t INTO DATA(ls_e07t) WITH KEY trkorr = gs_alv-trkorr BINARY SEARCH.
IF sy-subrc = 0.
gs_alv-as4text = ls_e07t-as4text.
ENDIF.
READ TABLE lt_user_addr INTO DATA(ls_user_addr) WITH KEY bname = gs_alv-uname BINARY SEARCH.
IF sy-subrc = 0.
gs_alv-uname_text = ls_user_addr-name_textc.
ENDIF.
IF gs_alv-tcode IS INITIAL.
LOOP AT lt_tstcv INTO DATA(ls_tstcv) .
DATA(lv_len) = strlen( ls_tstcv-tcode ).
IF ls_tstcv-tcode = gs_alv-pgmna+0(lv_len).
gs_alv-tcode = ls_tstcv-tcode.
gs_alv-ttext = ls_tstcv-ttext.
gs_alv-type = '事务码'.
APPEND gs_alv TO lt_alv_a.
ENDIF.
ENDLOOP.
ENDIF.
IF gs_alv-tcode IS INITIAL.
SELECT SINGLE stext
INTO gs_alv-ttext
FROM tftit
WHERE spras = '1'
AND funcname = gs_alv-pgmna.
IF sy-subrc = 0.
IF gs_alv-ttext IS NOT INITIAL.
gs_alv-tcode = gs_alv-pgmna.
gs_alv-type = '接口'.
APPEND gs_alv TO lt_alv_a.
ENDIF.
ENDIF.
ENDIF.
IF gs_alv-tcode IS INITIAL.
READ TABLE lt_trdirt INTO DATA(ls_trdirt) WITH KEY name = gs_alv-pgmna BINARY SEARCH.
IF sy-subrc = 0.
gs_alv-tcode = ls_trdirt-name.
gs_alv-ttext = ls_trdirt-text.
gs_alv-type = '程序'.
APPEND gs_alv TO lt_alv_a.
ENDIF.
ENDIF.
IF gs_alv-tcode IS INITIAL.
READ TABLE lt_dd02t INTO DATA(ls_dd02t) WITH KEY tabname = gs_alv-pgmna BINARY SEARCH.
IF sy-subrc = 0.
gs_alv-tcode = ls_dd02t-tabname.
gs_alv-ttext = ls_dd02t-ddtext.
gs_alv-type = '自荐表'.
APPEND gs_alv TO lt_alv_a.
ENDIF.
ENDIF.
IF gs_alv-tcode IS INITIAL.
gs_alv-tcode = gs_alv-pgmna.
gs_alv-ttext = gs_alv-pgmna.
APPEND gs_alv TO lt_alv_a.
ENDIF.
MODIFY gt_alv_a FROM gs_alv.
ENDLOOP.
"保留最准确的一条数据
SORT lt_alv_a BY pgmna
uname
uname_text
trkorr
as4user_text
as4date_dev
as4time_dev
as4text
rels
tcode DESCENDING
-
ttext
.
DELETE ADJACENT DUPLICATES FROM lt_alv_a COMPARING pgmna
uname
uname_text
trkorr
as4user_text
as4date_dev
as4time_dev
as4text
rels .gt_alv_a[] = lt_alv_a[].
"去重
SORT gt_alv_a BY tcode trkorr.
DELETE ADJACENT DUPLICATES FROM gt_alv_a COMPARING tcode trkorr."汇总
CLEAR ls_alv.
REFRESH gt_alv.
DATA:lv_xgcs TYPE i.LOOP AT gt_alv_a INTO DATA(ls_alv_a).
MOVE-CORRESPONDING ls_alv_a TO ls_alv.
lv_xgcs = lv_xgcs + 1.
AT END OF tcode.
ls_alv-xgcs = lv_xgcs.
APPEND ls_alv TO gt_alv.
CLEAR ls_alv.
CLEAR lv_xgcs.
ENDAT.
ENDLOOP.SORT gt_alv BY xgcs DESCENDING tcode.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_fieldcat_alv
&---------------------------------------------------------------------
-
设置ALV字段属性
----------------------------------------------------------------------
FORM frm_alv_fieldcat .
REFRESH gt_fieldcat.
DEFINE init_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-datatype = &3.
gs_fieldcat-ref_table = &4.
gs_fieldcat-ref_field = &5.
gs_fieldcat-inttype = &6.
gs_fieldcat-ICON = &7.
gs_fieldcat-EDIT = &8.
gs_fieldcat-HOTSPOT = &9.
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
init_fieldcat ‘TCODE’ ‘事务码’ ‘’ ‘TSTCV’ ‘TCODE’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘TTEXT’ ‘事务码描述’ ‘’ ‘TSTCV’ ‘TTEXT’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘TYPE’ ‘类型’ ‘’ ‘TSTCV’ ‘TTEXT’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘XGCS’ ‘修改次数’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘UNAME’ ‘最后账号名称’ ‘’ ‘E070’ ‘AS4USER’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘UNAME_TEXT’ ‘最后账号名称’ ‘’ ‘USER_ADDR’ ‘NAME_TEXTC’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘AS4DATE_DEV’ ‘300-最后更改的日期’ ‘’ ‘E070’ ‘AS4DATE’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘AS4TIME_DEV’ ‘300-最后更改时间’ ‘’ ‘E070’ ‘AS4TIME’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘RELS’ ‘版本号’ ‘’ ‘VRSD’ ‘VERSRELS’ ‘’ ‘’ ‘’ ‘’ .
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_layout_alv
&---------------------------------------------------------------------
*& 设置ALV输出格式
&---------------------------------------------------------------------
FORM frm_alv_layout .
CLEAR gs_layout.
gs_layout-zebra = ‘X’ . " 使ALV界面呈现颜色交替
gs_layout-sel_mode = ‘D’ . " 选择模式,"A"在最左端有选择按钮
gs_layout-cwidth_opt = ‘X’ . " 自动优化列宽
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_alv_display
&---------------------------------------------------------------------
*& ALV显示
&---------------------------------------------------------------------
FORM frm_alv_display .
- DATA: i_grid_settings TYPE lvc_s_glay.
DATA ls_title TYPE lvc_title.
DESCRIBE TABLE gt_alv LINES DATA(li_lines).
ls_title = ‘条目数:’ && li_lines.
- i_grid_settings-edt_cll_cb = ‘X’."ALV 控制: 退出可编辑单元格时回调
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_save = ‘A’
i_callback_program = sy-repid "当前程序
is_layout_lvc = gs_layout “界面格式”
it_fieldcat_lvc = gt_fieldcat “字段属性”
-
i_callback_pf_status_set = 'FRM_SET_PF_STATUS' "状态 i_callback_user_command = 'FRM_USER_COMMAND_ALV' "控制指令
-
it_event_exit = gt_event_exit i_grid_title = ls_title
-
TABLESi_grid_settings = i_grid_settings
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE ‘S’ NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------
**& Form frm_set_pf_status
*&---------------------------------------------------------------------
** ALV状态
*----------------------------------------------------------------------
*FORM frm_set_pf_status USING extab TYPE slis_t_extab.
** SET PF-STATUS ‘XXXX_STATUS’. "EXCLUDING FCODE.
** SET TITLEBAR ‘XXXXX’.
*ENDFORM. "frm_set_pf_status
&---------------------------------------------------------------------
*& Form frm_user_command_alv
&---------------------------------------------------------------------
-
ALV按钮功能
----------------------------------------------------------------------
FORM frm_user_command_alv USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA ls_title TYPE lvc_title.
开始******** 这段代码加上之后,才能对数据进行实时更新
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
rs_selfield-refresh = ‘X’.
rs_selfield-col_stable = ‘X’.
rs_selfield-row_stable = ‘X’.
结束******** 这段代码加上之后,才能对数据进行实时更新
*'&IC1’单击双击命令, ‘1-ENMNG’ 双击栏位,默认1-字段名组合
IF r_ucomm = ‘&IC1’ ."AND rs_selfield-sel_tab_field = ‘1-ENMNG’.
REFRESH gt_alv_b.
READ TABLE gt_alv INTO DATA(ls_alv) INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
IF rs_selfield-fieldname = 'TYPE'.
"双击事务码
CASE ls_alv-type.
WHEN '程序'.
SET PARAMETER ID 'RID' FIELD ls_alv-tcode. "指参数ID
CALL TRANSACTION 'SE38'. "调用其它事务
WHEN '接口'.
SET PARAMETER ID 'LIB' FIELD ls_alv-tcode. "指参数ID
CALL TRANSACTION 'SE37'. "调用其它事务
WHEN '事务码'.
SET PARAMETER ID 'TCD' FIELD ls_alv-tcode. "指参数ID
CALL TRANSACTION 'SE93'. "调用其它事务
WHEN '自荐表'.
SET PARAMETER ID 'DTB' FIELD ls_alv-tcode. "指参数ID
CALL TRANSACTION 'SE11'. "调用其它事务
WHEN OTHERS.
SET PARAMETER ID 'RID' FIELD ls_alv-tcode. "指参数ID
CALL TRANSACTION 'SE38'. "调用其它事务
ENDCASE.
ELSE.
*处理新ALV显示的数据
gt_alv_b[] = gt_alv_a[].
DELETE gt_alv_b WHERE tcode <> ls_alv-tcode.
"分屏显示
IF gt_alv_b IS NOT INITIAL.
PERFORM frm_display_alv2.
ELSE.
MESSAGE '没有符合条件的数据' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_DISPLAY_ALV2
&---------------------------------------------------------------------
*& 分屏
&---------------------------------------------------------------------
FORM frm_display_alv2.
IF go_docking IS INITIAL. "分屏
*创建一个cl_gui_alv_grid类的实例
CREATE OBJECT go_alvgrid_dt
EXPORTING
i_parent = go_docking.
PERFORM frm_init_container.
PERFORM frm_fieldcat2.
PERFORM frm_output_dt.
ELSE.
PERFORM frm_refresh_alv.
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_INIT_CONTAINER
&---------------------------------------------------------------------
*& 子屏幕
&---------------------------------------------------------------------
FORM frm_init_container .
- 创建停靠容器
CREATE OBJECT go_docking
EXPORTING
repid = ‘SAPLSLVC_FULLSCREEN’ "g_repid_alv "新ALV显示的程序名称(屏幕)
dynnr = sy-dynnr "新ALV显示的程序名称(屏幕)编号
side = cl_gui_docking_container=>dock_at_bottom "“下方显示 -
side = cl_gui_docking_container=>dock_at_right "右方显示
-
side = cl_gui_docking_container=>property_floating "左方显示 extension = 100. "高度
*ALV界面存入容器
CREATE OBJECT go_alvgrid_dt
EXPORTING
i_parent = go_docking
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_FIELDCAT2
&---------------------------------------------------------------------
*& 明显ALV列描述
&---------------------------------------------------------------------
FORM frm_fieldcat2 .
REFRESH gt_fieldcat.
DEFINE init_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-datatype = &3.
gs_fieldcat-ref_table = &4.
gs_fieldcat-ref_field = &5.
gs_fieldcat-inttype = &6.
gs_fieldcat-ICON = &7.
gs_fieldcat-EDIT = &8.
gs_fieldcat-HOTSPOT = &9.
APPEND gs_fieldcat TO gt_fieldcat2.
END-OF-DEFINITION.
init_fieldcat ‘TCODE’ ‘事务码’ ‘’ ‘TSTCV’ ‘TCODE’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘TTEXT’ ‘事务码描述’ ‘’ ‘TSTCV’ ‘TTEXT’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘PGMNA’ ‘程序名’ ‘’ ‘VRSD’ ‘OBJNAME’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘TYPE’ ‘类型’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘UNAME’ ‘账号名称’ ‘’ ‘E070’ ‘AS4USER’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘UNAME_TEXT’ ‘账号名称’ ‘’ ‘USER_ADDR’ ‘NAME_TEXTC’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘TRKORR’ ‘请求号’ ‘’ ‘VRSD’ ‘KORRNUM’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘AS4TEXT’ ‘资源库对象的简短描述’ ‘’ ‘E07T’ ‘AS4TEXT’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘AS4DATE_DEV’ ‘300-更改的日期’ ‘’ ‘E070’ ‘AS4DATE’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘AS4TIME_DEV’ ‘300-更改时间’ ‘’ ‘E070’ ‘AS4TIME’ ‘’ ‘’ ‘’ ‘’ .
init_fieldcat ‘RELS’ ‘版本号’ ‘’ ‘VRSD’ ‘VERSRELS’ ‘’ ‘’ ‘’ ‘’ .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_OUTPUT_DT
&---------------------------------------------------------------------
*& 显示
&---------------------------------------------------------------------
FORM frm_output_dt.
DATA:lr_alvgrid TYPE REF TO cl_gui_alv_grid.
-
得到当前屏幕上的ALV的句柄
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_alvgrid. -
监听ALV数据的详细的改变信息
CALL METHOD lr_alvgrid->check_changed_data.
SORT gt_alv_b BY as4date_dev DESCENDING
as4time_dev DESCENDING.
*ALV显示
CALL METHOD go_alvgrid_dt->set_table_for_first_display
EXPORTING
i_save = ‘A’
-
CHANGINGi_default = 'X' is_layout = gs_layout
it_outtab = gt_alv_b
it_fieldcatalog = gt_fieldcat2
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_REFRESH_ALV
&---------------------------------------------------------------------
*& 刷新
&---------------------------------------------------------------------
FORM frm_refresh_alv .
DATA:lr_alvgrid TYPE REF TO cl_gui_alv_grid,
ls_stable TYPE lvc_s_stbl.
-
得到当前屏幕上的ALV的句柄
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_alvgrid. -
监听ALV数据的详细的改变信息
CALL METHOD lr_alvgrid->check_changed_data.
*刷新后保存ALVx显示位置不变
ls_stable-row = ‘X’.
ls_stable-col = ‘X’.
*刷新ALV内表
CALL METHOD go_alvgrid_dt->refresh_table_display
EXPORTING
is_stable = ls_stable
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.