ABAP 添加长文本日志增强
迪丽瓦拉
2024-05-30 03:27:09
0

1.问题:用户对长文本每一次的操作怎么查看呢,要做个长文本修改记录增强

从STXH中只能获取创建人和时间,最后更改人和时间。

我这篇文章选择做个增强:在存储长文本(SAVE_TEXT函数)的时候把具体信息存储到自建表。

2.首先,先做两个自建表
一个用来配置,哪些长文本需要做记录。
在这里插入图片描述

一个是用来记录长文本每一次更改。每一次更改版本增加1.
在这里插入图片描述

3.给SAVE_TEXT做增强
按照我的操作来
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
创建隐式增强
在这里插入图片描述
选择代码/声明都可以了。
填好自定义名称就可以。

4.增强代码
在这里插入图片描述

 "查验哪些长文本需要存储修改记录DATA:LS_49 TYPE ZTSD0049.SELECT SINGLE *FROM ZTSD0049INTO LS_49WHERE TDOBJECT = HEADER-TDOBJECT "比如VBBKAND TDID = HEADER-TDID        "Z00AND TDSPRAS = HEADER-TDSPRAS. "语言IF SY-subrc = 0."查询此个文本在记录表的最大版本,版本+1 ,查不到就是1DATA:LV_ZVERSION TYPE  ZTSD0050-ZVERSION.SELECT MAX( ZVERSION )FROM ZTSD0050INTO LV_ZVERSIONWHERE TDOBJECT = HEADER-TDOBJECTAND TDNAME = HEADER-TDNAME "单号号码AND TDID = HEADER-TDIDAND TDSPRAS = HEADER-TDSPRAS. "语言IF SY-subrc = 0.LV_ZVERSION = LV_ZVERSION + 1.ELSE.LV_ZVERSION = 1.ENDIF."把文本拼接起来存到自建表DATA:LS_50 TYPE ZTSD0050.LOOP AT LINES INTO DATA(LS_LINE).LS_50-ztext = LS_50-ztext && LS_LINE-tdline.CLEAR:LS_LINE.ENDLOOP.LS_50-TDOBJECT = HEADER-TDOBJECT. "比如VBBKLS_50-TDNAME   = HEADER-TDNAME. "单号号码LS_50-TDID     =  HEADER-TDID.   "Z00LS_50-TDSPRAS  =  HEADER-TDSPRAS. "LS_50-ZVERSION = LV_ZVERSION.LS_50-ZTCODE  = SY-TCODE. "使用什么事务代码LS_50-ZUSER   =  SY-UNAME. "用户名LS_50-ZDATE   =    SY-DATUM. "日期LS_50-ZTIME   =   SY-UZEIT. "时间MODIFY ZTSD0050 FROM LS_50."存储到自建表。ENDIF.CLEAR:LS_49,LV_ZVERSION,LS_50.

测试
在这里插入图片描述

在这里插入图片描述
看结果成功储存到自建表-完成长文本日志增强开发
在这里插入图片描述

注意点
如果长文本超过了255,那么在SE16N中查看记录,也显示不出来,但是文本是储存完全了。
在这里插入图片描述
在这里插入图片描述
我要查看完全的信息
那么把长文本转成一个表,然后输出表就可以查看所有的信息了。

SELECT SINGLE * FROM ZTSD0050 WHERE ZVERSION = 2 INTO @DATA(ls_text).DATA : STR TYPE STRING.
DATA : LENGTH TYPE I.
STR = ls_text-ztext.
DATA: ITAB TYPE TABLE OF CHAR_50."长文本转化为每行为50字的内表,然后输出内表。
CALL FUNCTION 'SCMS_STRING_TO_FTEXT'EXPORTINGTEXT      = STRIMPORTINGLENGTH    = LENGTHTABLESFTEXT_TAB = ITAB.cl_demo_output=>display( ITAB ).

代码结果
在这里插入图片描述

另外
在这个地方也可以做个最新存储表,在报表中取值长文本的时候,就直接取值长文本了,不用循环用函数取值了。

长文本的日志可以通过配置来实现:https://blogs.sap.com/2020/04/28/long-text-change-log-audit-trail/
不过我没有研究过实现过,如果给你些有用的信息也不错了。

参考链接
增强中的声明与代码的区别

上一篇:vue3常用的API

下一篇:category排序专辑

相关内容