SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第六篇:SAP 报表权限管控与性能测试:上线前收尾工作全指南

发布时间:2026/6/2 13:54:07

SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第六篇:SAP 报表权限管控与性能测试:上线前收尾工作全指南 SAP 简单报表输出开发系列共6篇第六篇SAP 报表权限管控与性能测试上线前收尾工作全指南报表开发完成、样式调优、导出功能齐全之后距离正式上线还差最后一步——权限管控与性能测试。没有权限控制报表可能被不该看到的人访问没有经过压力测试上线后一旦遇到大数据量或高并发系统可能直接卡死甚至宕机。本文系统介绍报表权限对象的配置与校验逻辑分享压力测试、内存占用排查的实用工具并梳理上线前的完整测试清单保障报表在生产环境稳定运行。一、报表权限管控谁可以看谁来执行1.1 SAP权限体系概述SAP权限基于角色Role和权限对象Authorization Object。每个权限对象包含多个授权字段如事务码、公司代码、活动类型等。用户通过角色被授予一组权限对象实例。对于报表通常需要控制事务码权限用户能否执行该报表事务码如ZMM_REPORT。数据权限用户能查看哪些公司代码、工厂、物料组等。1.2 为报表分配事务码报表开发完成后需要为其创建一个事务码T-code方便用户通过菜单或直接输入调用。步骤事务码SE93输入自定义事务码如ZMM_REPORT点击“创建”。选择“报表事务”类型输入报表程序名如ZMM_PURCHASE_REPORT。保存并分配一个开发包$TMP或正式包。用户必须拥有S_TCODE权限对象中该事务码的授权才能执行。1.3 在报表代码中增加权限校验即使有了事务码权限有时还需要根据用户授权限制可见数据例如销售部的用户只能看本部门订单。此时需要在START-OF-SELECTION中添加AUTHORITY-CHECK。示例校验用户是否有公司代码1000的显示权限。AUTHORITY-CHECK OBJECT F_BKPF_BUK FOR USER sy-uname ID BUKRS FIELD 1000 ID ACTVT FIELD 03. IF sy-subrc 0. MESSAGE 您没有公司代码1000的访问权限 TYPE E. ENDIF.常用权限对象F_BKPF_BUK公司代码权限M_MATE_WRK物料工厂权限S_CARRID航班权限示例动态校验如果用户选择的公司代码来自选择屏幕可以循环校验每个公司代码并只显示有权限的公司代码数据。LOOP AT s_bukrs INTO ls_bukrs. AUTHORITY-CHECK OBJECT F_BKPF_BUK FOR USER sy-uname ID BUKRS FIELD ls_bukrs-low ID ACTVT FIELD 03. IF sy-subrc 0. APPEND ls_bukrs TO s_bukrs_auth. ENDIF. ENDLOOP.1.4 权限缺失时的友好提示当用户执行报表但缺少必要权限时可以通过SU53事务码查看缺失的权限对象。建议在程序中捕获权限失败并提示AUTHORITY-CHECK OBJECT ZMM_REPORT_AUTH ID ACTVT FIELD 03. IF sy-subrc 0. MESSAGE 权限不足请联系系统管理员事务码SU53查看详情 TYPE E. ENDIF.二、性能测试模拟大数据量与高并发2.1 为什么需要性能测试开发环境数据量小生产环境可能上百万行。单用户运行正常多用户同时执行可能拖垮系统。2.2 压力测试工具SE30、SAT、ST05事务码用途操作要点SE30ABAP运行时分析记录程序各步骤耗时找出最慢的语句SAT高级性能轨迹替代SE30可多用户模拟支持条件触发ST05SQL跟踪查看实际生成的SQL语句、索引使用情况、耗时典型流程在测试系统准备大数据量如复制表数据达到百万级。运行报表执行SAT开启跟踪。分析跟踪结果优化耗时最长的SQL或循环。重复直至性能达标。2.3 使用SAT进行单用户性能分析 在程序开始和结束位置获取运行时间 GET RUN TIME FIELD lv_start. ... GET RUN TIME FIELD lv_end. lv_duration lv_end - lv_start. WRITE: / 执行时间(微秒):, lv_duration.但更推荐使用SAT图形化分析输入事务码SAT。输入报表程序名点击“执行”。运行报表后停止跟踪查看命中次数和耗时排序。2.4 多用户并发测试S_RRR可以使用事务码S_RRRRemote Recording Replay模拟多个用户并发执行但配置复杂。简单做法在测试环境手动开启多个SAP GUI会话同时运行报表观察系统响应和锁表情况。三、内存占用排查防止程序内存泄露3.1 ABAP内存限制每个ABAP程序会话可使用的内存上限由系统参数abap/heap_area_total决定默认约2GB。报表如果一次性加载数百万行到内表可能导致内存不足MEMORY_NO_MORE。3.2 查看内存使用情况事务码AL21显示当前程序的内存分配。在调试器中菜单“转到 → 内存管理”可看内表占用。3.3 优化内存占用的策略使用FOR ALL ENTRIES前先对驱动表去重并排序减少中间结果。分块读取分页查询避免一次加载全量数据。使用FREE语句释放不再使用的内表。FREE lt_large_table.3.4 模拟内存压力测试在测试系统使用ABAP_MEMORY_EMULATION类模拟低内存环境但较复杂。通常建议通过SAT观察内表行数和占用估算。四、上线前测试Checklist以下是一个完整的报表上线前测试清单建议逐项核对序号检查项预期结果实测结果1功能测试1.1正常查询有数据正确显示ALV数据与数据库一致□1.2查询无数据提示友好消息不显示空白ALV□1.3参数校验必输项为空中断并提示□1.4参数校验日期范围颠倒中断并提示□1.5参数校验不存在的主数据中断或显示空列表根据业务□1.6权限校验无权限用户提示权限不足不执行查询□1.7权限校验部分数据权限只显示有权限的公司代码/工厂数据□2样式与导出2.1列标题、宽度、排序正确符合业务期望□2.2合计、汇总功能正确数字字段求和正确□2.3热点点击跳转正常跳转到目标事务码□2.4导出Excel标准文件可打开格式基本正确□2.5导出PDF若实现文件可打开内容完整□3性能测试3.1单用户查询最大数据量如一年订单响应时间≤5秒□3.2并发3用户同时执行系统不锁死各用户结果正确□3.3SQL跟踪无全表扫描主要查询字段有索引□3.4内存占用不超过100MB查看AL21□4生产环境准备4.1程序已移动到生产客户端通过传输请求□4.2事务码已创建并分配权限角色用户可正常调用□4.3文档已更新用户手册、技术文档发布到团队知识库□5回滚方案5.1如有问题能否快速停用事务码通过SM01锁定事务码□五、生产环境监控与优化报表上线后仍需持续关注使用ST22查看短转储及时修复错误。使用AL12查看当前系统负载识别消耗资源大的程序。定期收集用户反馈优化查询条件和索引。六、总结阶段核心任务关键工具/方法权限管控配置事务码、增加AUTHORITY-CHECKSE93、SU53、权限对象性能测试模拟大数据量分析耗时点SAT、ST05、SE30内存排查监控内表占用避免内存溢出AL21、FREE、分页查询测试清单覆盖功能、样式、性能、安全见上表上线后监控、优化、文档ST22、AL12至此本系列六篇关于SAP简单报表输出开发的文章已全部完成。从基础框架搭建、筛选优化、样式定制、异常处理、多格式导出到最终的上线收尾希望这些内容能帮助你系统掌握报表开发的完整流程写出健壮、高效、易用的生产级报表。本系列回顾第一篇基础入门 → ALV核心框架搭建第二篇选择屏幕与查询效率优化第三篇样式定制字段布局、交互功能第四篇异常处理机制校验、消息、空数据第五篇多格式输出Excel、PDF第六篇权限管控与性能测试本文作者你的SAP学习伙伴版本记录2026年6月 你在报表上线前遇到过因权限遗漏或性能问题导致的“翻车”事故吗欢迎留言分享你的故事。

相关新闻