当前位置: 首页 > news >正文

abap 可配置通用报表字段级日志监控

文章目录

    • 1.功能需求描述
      • 1.1 功能
      • 1.2 效果展示
    • 2.数据库表解释
      • 2.1 表介绍
    • 3.数据库表及字段
      • 3.1.应用日志数据库抬头表:ZLOG_TAB_H
      • 3.2.应用日志数据库明细表:ZLOG_TAB_P
      • 3.3.应用日志维护字段配置表:ZLOG_TAB_F
    • 4.日志封装类
    • 5.代码
    • 6.调用方式代码
    • 7.调用案例程序demo

1.功能需求描述

1.1 功能

尽可能的的满足各种报表开发,几乎可以在任何报表中使用该应用日志.
可配置化的应用日志管理,根据用户需求来自定义记录.
使用类封装的方式实现日志收集.
通过事务码或者程序名对报表的某个字段进行日志监控.
通过配置某个报表中的某个字段就可以实现该字段的日志监控
优点:灵活性高,实用性强,
缺点:必须插入代码,无法做到配置好之后就可监控.

1.2 效果展示

举个例子:事务码 ZLOG01 配置了3 个字段分别是 采购凭证H,采购项目P ,金额U. 这个时候在记录日志的时候明细表中就会存在一条某采购凭证下的采购项目中的金额做了修改 ,修改前金额88 修改后金额99.
在这里插入图片描述

2.数据库表解释

2.1 表介绍

创建三张表,分别是抬头,明细,配置表.然后用类进行封装,使用函数模块也可以.
这个类需要把报表中的旧内表和修改后的内表传进去,还要把修改的是那一行的下标穿进去,需要注意的是修改前后的内表数据顺序要保持一致,不然会出现记录的日志数据出错的.
抬头:主要存储事务码,用户信息和日期时间
明细:组要存储以上信息之外还要存储用户日志的记录,要记录用户的字段,字段描述,修改前后的数据以及修改的那个凭证的那个项目的记录.这里的主键以UUID为主.
配置表:该表的主键是事务码和字段,相关描述以及记录表示:D不记录 P项目 H单号 U记录.
整体的思路以上.

3.数据库表及字段

3.1.应用日志数据库抬头表:ZLOG_TAB_H

在这里插入图片描述

3.2.应用日志数据库明细表:ZLOG_TAB_P

在这里插入图片描述

3.3.应用日志维护字段配置表:ZLOG_TAB_F

在这里插入图片描述

4.日志封装类

在这里插入图片描述
参数 注意 IT_TABIX 这个参数 他的结构要用指定的ZLOG_S这个结构.
在这里插入图片描述
应用日志导入结构:ZLOG_S
其他只可以不用传,但这个参数必须传ZINDEX
在这里插入图片描述

5.代码

METHOD create_appl_log.DATA: lv_zdnzj  TYPE zclient VALUE IS INITIAL,ls_header TYPE zlog_tab_h VALUE IS INITIAL,ls_item   TYPE zlog_tab_p VALUE IS INITIAL,lt_item   TYPE TABLE OF zlog_tab_p,lt_field  TYPE TABLE OF zlog_tab_f,ls_field  TYPE zlog_tab_f,ls_tabix  TYPE zlog_s,le_msg    TYPE REF TO cx_sy_assign_error .DATA:lv_new_name TYPE c LENGTH 18,lv_old_name TYPE c LENGTH 18,lv_p TYPE c LENGTH 18,lv_h TYPE c LENGTH 18 .FIELD-SYMBOLS:<fs_old>   TYPE ANY,<fs_new> TYPE ANY,<fs_new_vlue> TYPE ANY,<fs_old_vlue> TYPE ANY,<fs_p> TYPE ANY

相关文章:

abap 可配置通用报表字段级日志监控

文章目录 1.功能需求描述1.1 功能1.2 效果展示2.数据库表解释2.1 表介绍3.数据库表及字段3.1.应用日志数据库抬头表:ZLOG_TAB_H3.2.应用日志数据库明细表:ZLOG_TAB_P3.3.应用日志维护字段配置表:ZLOG_TAB_F4.日志封装类5.代码6.调用方式代码7.调用案例程序demo1.功能需求描述 …...

OpenCV视觉分析之目标跟踪(11)计算两个图像之间的最佳变换矩阵函数findTransformECC的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据 ECC 标准 78找到两幅图像之间的几何变换&#xff08;warp&#xff09;。 该函数根据 ECC 标准 ([78]) 估计最优变换&#xff08;warpMatri…...

PGMP-串串0203 项目集管理绩效域战略一致性

1.项目集管理绩效域 2.战略一致性 战略一致性包含内容商业论证BC项目集章程项目集路线图环境评估项目集风险管理策略 前期formulation sub-phaseplanning sub-phase组织的战略计划项目集风险管理策略项目集管理计划商业论证BC项目集章程项目集路线图环境评估...

HiveMetastore 的架构简析

HiveMetastore 的架构简析 Hive Metastore 是 Hive 元数据管理的服务。可以把元数据存储在数据库中。对外通过 api 访问。 hive_metastore.thrift 对外提供的 Thrift 接口定义在文件 standalone-metastore/src/main/thrift/hive_metastore.thrift 中。 内容包括用到的结构体…...

【WRF模拟】全过程总结:WPS预处理及WRF运行

【WRF模拟】全过程总结:WPS预处理及WRF运行 1 数据准备1.1 嵌套域设置(Customize domain)-基于QGis中gis4wrf插件1.2 静态地理数据1.2.1 叶面积指数LAI和植被覆盖度Fpar(月尺度)1.2.2 地面反照率(月尺度)1.2.3 土地利用类型+不透水面积1.2.4 数据处理:geotiff→tiff(W…...

linux基础理解和使用 iptables 防火墙

本文档旨在编写一份详尽的 iptables基础 使用指南&#xff0c;涵盖其核心概念、使用方法以及高级技巧。将结合图表和示例&#xff0c;更好地理解和应用 iptables。 1. 什么是 iptables&#xff1f; iptables 是 Linux 系统自带的包过滤防火墙&#xff0c;它与内核空间的 netf…...

【系统架构设计师】2024年下半年真题论文: 论软件维护及其应用(包括参考素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2024年下半年 试题2)论文素材参考软件维护的类型软件维护的方法软件维护应用案例分析软件维护面临的挑战与应对策略真题题目(2024年下半年 试题2) 请围绕 “论软件维护及其应用” 论题,依次从以下三…...

【数学二】线性代数-矩阵-初等变换、初等矩阵

考试要求 1、理解矩阵的概念,了解单位矩阵、数量矩阵、对角矩阵、三角矩阵、对称矩阵、反对称矩阵和正交矩阵以及它们的性质. 2、掌握矩阵的线性运算、乘法、转置以及它们的运算规律,了解方阵的幂与方阵乘积的行列式的性质. 3、理解逆矩阵的概念,掌握逆矩阵的性质以及矩阵可…...

MinerU容器构建教程

一、介绍 MinerU作为一款智能数据提取工具&#xff0c;其核心功能之一是处理PDF文档和网页内容&#xff0c;将其中的文本、图像、表格、公式等信息提取出来&#xff0c;并转换为易于阅读和编辑的格式&#xff08;如Markdown&#xff09;。在这个过程中&#xff0c;MinerU需要利…...

BFS 解决拓扑排序

BFS 解决拓扑排序 1.课程表1.1. 题⽬链接&#xff1a;1.2 题⽬描述&#xff1a;1.3. 解法&#xff1a;1.4 代码 2. 课程表2.1题⽬链接&#xff1a;2.2 题⽬描述&#xff1a;2.3解法&#xff1a;2.4代码 3. ⽕星词典&#xff08;hard&#xff09;3.1题⽬链接&#xff1a;3.2 题⽬…...

MySQL 程序设计课程复习大纲

作为一门基础的 MySQL 程序设计课程&#xff0c;期末复习的重点应放在常见的数据库操作、基本查询、数据建模、关系型数据库的规范化设计等方面。以下是针对基础课程的 MySQL 期末复习知识点。 1. MySQL 基础概念与数据库操作 数据库基础 数据库与表的概念数据库管理系统&…...

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口&#xff08;一&#xff09;stack 接口说明&#xff08;二&#xff09;queue 接口说明 二、stack、queue的模拟实现&#xff08;一&#xff09;stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…...

nuxt3安装pinia报错500[vite-node] [ERR_LOAD_URL]问题解决

按照pinia官网步骤安装运送服务会报一个500[vite-node] [ERR_LOAD_URL]问题,查阅各个网站资料没有找到有用信息. 最后解决:在package.json中把pinia的版本给降回0.5.5版本之后就正常了 "dependencies": {"element-plus/icons-vue": "^2.3.1",&q…...

青少年编程能力等级测评CPA试卷(2)Python编程(一级)

青少年编程能力等级测评CPA试卷&#xff08;2&#xff09; Python编程(一级) &#xff08;考试时间90分钟&#xff0c;满分100分&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; 下列语句的输出结果是&#xff08; &am…...

wordpress判断page页与非page页

在WordPress中&#xff0c;你可以使用is_page()函数来判断当前页面是否为page类型。以下是如何使用这个函数的示例&#xff1a; <?php if (is_page()) {// 当前页面是page类型echo 这是一个Page页面; } else {// 当前页面不是page类型echo 这不是一个Page页面; } ?> …...

JavaScript 库-qs的使用

meta.query qs.parse(query)语句解析&#xff1a;qs.parse(query) qs 是一个常用的 JavaScript 库&#xff08;全称为 query-string 或 qs&#xff09;&#xff0c;它用于处理 URL 查询字符串。qs.parse(query) 会将查询字符串解析成一个对象。举个例子&#xff1a; 假设有一…...

Leetcode 两数之和 Ⅱ - 输入有序数组

这段代码实现了在一个非递减排序的数组中找到两个数&#xff0c;使它们的和等于目标值的算法。算法使用了双指针技术&#xff0c;具体思想如下&#xff1a; 算法思想&#xff1a; 初始化指针&#xff1a;定义两个指针 left 和 right&#xff0c;分别指向数组的起始位置和末尾位…...

多处理器一致协议(MSI)协议详细介绍

多处理器一致协议 MSI 协议详细介绍 #mermaid-svg-2lc6AxM2mRiND4C0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2lc6AxM2mRiND4C0 .error-icon{fill:#552222;}#mermaid-svg-2lc6AxM2mRiND4C0 .error-text{fill:…...

SSH实验5密钥登录Linuxroot用户(免密登录)

当用户尝试通过SSH连接到远程服务器时&#xff0c;客户端会生成一对密钥&#xff1a;公钥和私钥。公钥被发送到远程服务器&#xff0c;并存储在服务器的~/.ssh/authorized_keys文件中。而私钥则由客户端保管&#xff0c;不会传输给服务器。 在连接过程中&#xff0c;客户端使用…...

2024 网鼎杯 - 青龙组 Web WP

2024 网鼎杯 - 青龙组 WEB - 02 打开容器一个登录界面&#xff0c;随便输入账号密码可以进到漏洞界面 这里有一个发送给boss的功能&#xff0c;一眼xss 有三个接口&#xff1a;/flag 、/update 、/submit /flag &#xff1a;要求boss才能访问&#xff0c;/update &#xf…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...