点击蓝字 关注我们
一
前言
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 索取文本文件)