SAP 小技巧怎么修改他人的 SQVI 创建的查询

作者:ABAP技巧与实战 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, PP, SD, 开发, 数据工程, 生产, 销售分销
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

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

前言

SQVI是SAP中创建查询报表的一种工具, 可以快速创建并生成简单的ALV输出的查询报表.项目中常常会有用户在生产系统中直接通过SQVI创建报表,

并创建事务代码调用该报表.

由此也产生了问题, 当该报表需要修改的时候, 因为当初的用户离职,其他人无法调整该报表

**本文介绍怎么识别SQVI创建的报表并且使用任意账号修改特定的SQVI报表**

初识

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

> 详见链接 故事与茶,公众号:ABAP开发技巧 [ 玩转SAP 基础|SQVI快速配置ALV报表

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484992&idx=1&sn=c1a3532913f0c2ec29e006297abcb8da&chksm=cf5ddb76f82a52601648e0193e58ee94c88b2e7afe15e3ee657f6eed6b68916ad9f72507e15a&token=1550017738&lang=zh_CN#rd)

> SQVI进阶

>

> 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 去掉SQVI中的连接限制(多层左连接)

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247488232&idx=1&sn=5ee3e0591408eaac2e2d14516c6fb615&chksm=cf5dcfdef82a46c87067422692cf0c81220ff473b187fcc5f883410c58a09630ae125823066b&token=1550017738&lang=zh_CN#rd)

追踪

特定的SQVI生成的报表, 只有创建查询的用户才能修改查询,重新生成报表.

那问题来了: 怎么获取SQVI生成报表程序的对应的用户名?

SQVI创建的查询生成的程序名

AQTGSYSTQV000020ZSDF09========

其中包含了查询分组和查询名信息

可以确定 ZSDF09是查询名

通过表 AQLTQ 可以找到查询分组,可惜 该表中并未记录用户和用户组的关系. 该用户组是系统生成的用户组, 无法通过SQ03查看.

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

可以通过跟踪的方法查询到

程序 LAQIEXBF01 121行左右设置断点

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

执行SQVI 中断到断点位置, 内表 DBBG中包含了查询组和用户的关系.

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

通过上述逻辑可以写一个简单程序查询到SQVI生成的程序是由哪个用户生成的.该程序从AQGDB(aq)中读取用户组和用户的关系,内表DBBG.

篡位

解决了上面的问题了, 又会产生新的问题,如果不知道该用户的密码, 或者该用户已经被删除,又怎么修改该用户创建的查询呢?

可以在程序 MS38A_STATE 175行左右设置断点, 修改 函数返回的用户组.

最好在函数RSAQ_QUICK_VIEW_USER_GROUP

结束位置通过隐射增强调整用户的用户组到指定的用户组(通过配置表指定),这样特定用户就可以通过简单配置修改任意其它用户创建的SQVI查询了.

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

把用户组修改成查询对应的用户组, 这样任何一个用户通过SQVI就可以查询到该用户组的查询了.

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

可以直接修改这个查询 . 修改后,可能会变成你的查询(该结论未验证,不过已经不太重要了).

正常查询的事务代码

项目一般建议通过SQ03/SQ02/SQ01创建查询. 并创建事务代码调用查询, 因为查询的事务代码创建有些需要注意的, 特意标记如下.

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

其中 REPORT 的内容 使用 用户组占用 12位 + G(表示全局)

SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图
SAP 小技巧怎么修改他人的 SQVI 创建的查询 - 封面图

总结

项目中不建议执直接在生产系统通过SQVI创建报表, 一般情况是在开发系统通过SQ03/SQ02/SQ01 创建用户组->分配用户->创建数据集->创建查询.

这个过程会产生传输请求, 最后再创建事务代码调用报表. 最后把用户组,数据集,查询,事务代码传递到生产系统使用.

** THE **

** END **

**约定**

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

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

ABAP技巧与实战

关于作者:ABAP技巧与实战

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

来源说明:本文内容由「SAP小技巧怎么修改他人的SQVI创建的查询.md」整理生成,仅用于内部技术分享与学习交流。