SAP小技巧之 改造SE16N(七 优化日志显示)

点击蓝字 关注我们

前言

SE16N中创建,修改,删除的数据会写入表

  • SE16N_CD_KEY 表显示:更改凭证- 抬头

  • SE16N_CD_DATA 表显示: 更改凭证 - 数据

同时SAP提供了一个查看程序显示变化的记录

RKSE16N_CD_DISPLAY

标准更改凭证

看到这个程序的界面,你是不是已经晕了?

我晕了一小会, 然后分析了一下.

SE16N 记录日志时,不是按标准更改凭证(change document)的方式记录的.

标准更改凭证记录格式如下图所示. 记录的是变更的表/关键字/字段,旧值/新值.

这种记录的好处是可以非常直观的看出数据改变的内容.

SE16N日志方式

SE16N采用了写入变更前的数据的所有内容的方式.

(这种方式相对比较简单,有兴趣的话,你可以翻看一下标准代码

程序LSE16NF30  define makro_write_cd 中给出了数据转换的方式). 

这种方式为了解决数据类型的问题,把所有的数据转换成XSTRING写入一个字段 SE16N_CD_DATA-VALUE. 写入逻辑简单通用. 但是读取逻辑就比较麻烦了. 并且不支持基于数据内容的查询. 只能按 表名/日期/用户名 查询 .

查询的结果也只能把当时记录的内容呈现出来.

标准程序的插入,修改,删除分屏呈现, 界面显得非常凌乱. 看惯了标准更改凭证的是无法容忍这种变更信息的呈现方式.

并且这个变更程序没有和SE16N界面整合. 导致很多人都不知道这个变更日志的存在.

改造后的效果

本文的目的就是改造SE16N让修改日志信息更人性化的呈现.

先看效果

01

简单日志信息

自定义表添加增强字段记录简单日志信息. 实现方式详见 

日志内容填充部分内容

无峰,公众号:ABAP 技巧与实战SAP小技巧之 改造SE16N(五)

02

界面添加按钮

SE16N界面添加按钮,点击按钮跳转到日志显示

03

日志信息呈现

如果不选中行,显示表的所有变更日志.按标准更改凭证的模式显示 关键字,字段,旧值,新值(需要注意的是,新值是记录的当前值,而不是当时修改后的值).

如果选中了行, 则只显示选中行的变更日志.

04

单独执行日志程序

显示日志调用了程序 ZSE16N_GET_CHANGE_LOG

程序支持两种日志显示模式

模式1:显示记录的所有内容(类似于标准程序,只是把内容整合到了一个ALV中,便于查看)

模式2 :只显示与当前记录比较的差异(SE16N调用时使用该模式)

实现方式

添加按钮 程序 LSE16NLCL  

METHOD handle_toolbar.末尾隐式增强

添加按钮的功能逻辑

程序 LSE16NLCL   

METHOD handle_user_command. 末尾隐式增强

关于源代码部分

具体的源代码,详见文末

源代码中包含了:

  • 一个自开发的类, 可以动态定义哈希内表.

  • 一个程序ZSE16N_GET_CHANGE_LOG, 用于把SE16N的日志内容转换成标准更改凭证)

  • 一个按钮逻辑:针对选中行,调用日志程序的逻辑

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

源代码部分(付费文章的源代码无法复制, 如果需要,请联系微信392077 索取文本文件)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值