SE38 SE10 程序/事务码修改日志报表/TR日志/请求号日志

场景:
查看程序修改日志,修改次数

在这里插入图片描述
在这里插入图片描述
源码
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
    
  • i_grid_settings         = i_grid_settings
    
    TABLES
    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’

  • i_default                     = 'X'
    is_layout                     = gs_layout
    
    CHANGING
    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.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值