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

作者:ABAP技巧与实战 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, CO, Data Engineering, FI, 开发, 数据工程, 财务

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

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

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

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

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

RKSE16N_CD_DISPLAY

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

标准更改凭证

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

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

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

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

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

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

SE16N日志方式

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

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

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

这种方式为了解决数据类型的问题,把所有的数据转换成XSTRING写入一个字段 SE16N_CD_DATA-VALUE. 写入逻辑简单通用.

但是读取逻辑就比较麻烦了. 并且不支持基于数据内容的查询. 只能按 表名/日期/用户名 查询 .

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

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

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

改造后的效果

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

先看效果

_**01** _

**简单日志信息**

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

> 日志内容填充部分内容

>

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

> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485340&idx=1&sn=76031e8ad8841af477b785d2dc6ab7c6&chksm=cf5ddaaaf82a53bc032358b180b079fc6fcea060be2d6374cd6583b6b9c0fb08d296571510d6#rd)

_**02** _

**界面添加按钮**

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

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

_**03** _

**日志信息呈现**

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

的当前值,而不是当时修改后的值).

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

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

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

_**04** _

**单独执行日志程序**

显示日志调用了程序 ZSE16N_GET_CHANGE_LOG

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

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

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

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

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

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

实现方式

添加按钮 程序 LSE16NLCL

METHOD handle_toolbar.末尾隐式增强

添加按钮的功能逻辑

程序 LSE16NLCL

METHOD handle_user_command. 末尾隐式增强
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

关于源代码部分

具体的源代码,详见文末

源代码中包含了

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

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

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

**约定**

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

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

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

SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图
SAP 小技巧之改造 SE16N 七优化日志显示 - 封面图

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

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP小技巧之改造SE16N七优化日志显示.md」整理生成,仅用于内部技术分享与学习交流。