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

SAP ABAP SM30表维护视图:如何给自定义表加上业务审批和日期防重规则?

SAP ABAP SM30表维护视图业务审批与日期防重的实战设计在SAP系统中SM30表维护视图是配置数据管理的核心工具之一。当标准功能无法满足复杂的业务规则需求时ABAP开发人员需要深入理解如何通过编程方式增强其逻辑控制能力。本文将聚焦两个典型业务场景审批状态锁定和日期范围防重校验提供一套完整的实现方案。1. 业务场景分析与技术架构设计某制造企业需要维护一套价格协议主数据表ZPRICE_AGREEMENT包含以下关键字段审批状态PZZTX表示已批准生效日期DATAB截止日期DATBI物料编号MATNR等业务字段业务规则要求已批准记录禁止修改/删除新增或修改时检查日期范围不重叠不同工厂WERKS的相同物料允许存在重叠日期技术实现路径 伪代码结构 MODULE status_control OUTPUT. PBO逻辑 IF record_approved. LOCK fields. ENDIF. ENDMODULE. MODULE date_check INPUT. PAI逻辑 IF date_overlap. RAISE error. ENDIF. ENDMODULE.2. 动态屏幕控制实现PBO模块在PBOProcess Before Output阶段控制字段可编辑状态核心代码示例MODULE chang_edit OUTPUT. LOOP AT SCREEN. CASE screen-name. WHEN ZPRICE_AGREEMENT-PRICE OR ZPRICE_AGREEMENT-WAERS. IF zprice_agreement-pzzt X. 已批准 screen-input 0. 禁用输入 screen-output 1. 保持显示 MODIFY SCREEN. ENDIF. ENDCASE. ENDLOOP. ENDMODULE.关键控制参数对比屏幕属性值效果描述INPUT0字段不可编辑OUTPUT1字段可见INVISIBLE1字段隐藏ACTIVE0完全禁用包括导航3. 日期防重校验逻辑PAI模块在PAIProcess After Input阶段实现日期重叠检查需考虑多维度条件MODULE check_date_overlap INPUT. DATA: lt_existing TYPE TABLE OF zprice_agreement. 获取同物料同工厂的现有记录 SELECT * FROM zprice_agreement INTO TABLE lt_existing WHERE matnr zprice_agreement-matnr AND werks zprice_agreement-werks AND pzzt D. 排除已删除标记 LOOP AT lt_existing ASSIGNING FIELD-SYMBOL(fs_exist). 跳过当前正在处理的记录修改场景 IF fs_exist-mandt sy-mandt AND fs_exist-vbeln zprice_agreement-vbeln. CONTINUE. ENDIF. 日期重叠判断算法 IF NOT ( zprice_agreement-datbi fs_exist-datab OR zprice_agreement-datab fs_exist-datbi ). MESSAGE e398(00) WITH 与现有记录日期重叠 fs_exist-vbeln fs_exist-datab fs_exist-datbi. ENDIF. ENDLOOP. ENDMODULE.日期重叠校验的边界条件处理开始日期不能大于结束日期空结束日期视为永久有效相同日期的精确匹配处理跨年度的日期范围计算4. 审批状态与删除控制集成在标准删除逻辑前插入审批状态检查MODULE check_before_delete INPUT. IF function DELE. 删除操作 LOOP AT extract ASSIGNING FIELD-SYMBOL(fs_del) WHERE mark X. 已勾选记录 ASSIGN COMPONENT PZZT OF STRUCTURE fs_del TO FIELD-SYMBOL(lv_pzzt). IF lv_pzzt X. MESSAGE e899(mm) WITH 已批准记录禁止删除. ENDIF. ENDLOOP. ENDIF. ENDMODULE.审批流程状态机设计建议新建 → 待审 → 已批准 → 已过期 ↘ 已拒绝5. 高级增强技巧与性能优化对于大数据量表的性能优化策略建立辅助索引表DATA: gt_date_index TYPE SORTED TABLE OF zdates_index WITH UNIQUE KEY matnr werks datab datbi.使用内存缓存CLASS lcl_cache DEFINITION. PUBLIC SECTION. CLASS-METHODS get_instance RETURNING VALUE(ro_instance) TYPE REF TO lcl_cache. METHODS get_date_ranges IMPORTING iv_matnr TYPE matnr iv_werks TYPE werks_d EXPORTING et_ranges TYPE daterange_tab. ENDCLASS.批量处理优化 使用FOR ALL ENTRIES替代多次SELECT SELECT matnr werks datab datbi FROM zprice_agreement INTO TABLE lt_existing FOR ALL ENTRIES IN lt_input WHERE matnr lt_input-matnr AND werks lt_input-werks AND pzzt D.6. 调试与异常处理实战常见问题排查清单屏幕控制失效检查MODULE是否在PBO事件中注册验证SCREEN-NAME大小写匹配确认字段属于当前屏幕编号日期校验不触发 在PAI中添加调试语句 BREAK-POINT ID zsm30_debug.性能问题定位使用ST05跟踪SQL语句检查WHERE条件是否使用索引分析内表操作复杂度异常处理最佳实践MODULE date_check INPUT. TRY. 校验逻辑 CATCH cx_root INTO DATA(lx_error). MESSAGE lx_error-get_text( ) TYPE E. ENDTRY. ENDMODULE.7. 扩展应用条件式字段控制根据审批状态动态显示关联字段MODULE display_approver OUTPUT. IF zprice_agreement-pzzt X. LOOP AT SCREEN. CASE screen-name. WHEN ZPRICE_AGREEMENT-APPROVER OR ZPRICE_AGREEMENT-APPR_DATE. screen-active 1. MODIFY SCREEN. ENDCASE. ENDLOOP. ENDIF. ENDMODULE.字段显示逻辑矩阵字段组新建状态待审状态已批准状态价格字段可编辑可编辑只读审批人信息隐藏隐藏显示有效期字段可编辑可编辑可编辑在项目实践中发现将业务规则集中封装在独立的INCLUDE程序中如LZSM30_ENHANCEMENTF01能显著提高代码可维护性。同时建议为每个增强点添加详细的注释说明其业务背景这对后续系统升级和功能调整至关重要。

相关文章:

SAP ABAP SM30表维护视图:如何给自定义表加上业务审批和日期防重规则?

SAP ABAP SM30表维护视图:业务审批与日期防重的实战设计 在SAP系统中,SM30表维护视图是配置数据管理的核心工具之一。当标准功能无法满足复杂的业务规则需求时,ABAP开发人员需要深入理解如何通过编程方式增强其逻辑控制能力。本文将聚焦两个…...

CANN Cosmos NPU多卡并行优化

Cosmos 昇腾 NPU 多卡并行优化说明 【免费下载链接】cann-recipes-embodied-intelligence 本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence 1. 优化概述 …...

CANN/cann-recipes-train基于verl-retool的agent样例

基于verl-retool的agent样例 【免费下载链接】cann-recipes-train 本项目针对LLM与多模态模型训练业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-train 概述 本样例参考verl/recipe中的retool项…...

G-Helper终极指南:如何用这款轻量级工具彻底释放你的华硕笔记本潜能

G-Helper终极指南:如何用这款轻量级工具彻底释放你的华硕笔记本潜能 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook…...

基于OpenClaw的微信个人号本地集成开发指南

1. 项目概述与核心价值如果你正在寻找一个能让你在本地开发环境中,像调用一个普通API一样,轻松、安全地集成微信个人号能力(比如收发消息、管理联系人、获取朋友圈信息)的方案,那么Wscats/wechat-claw这个项目绝对值得…...

Python uAgents框架实战:从零构建分布式AI智能体系统

1. 从零开始理解 uAgents:一个 Python 开发者的 AI 智能体框架实战如果你和我一样,对这两年火热的 AI 智能体(AI Agent)概念既兴奋又有点无从下手,觉得那些复杂的框架和理论离实际开发有点远,那么今天聊的这…...

终极Jable视频下载指南:3分钟掌握Chrome插件+一键保存全流程

终极Jable视频下载指南:3分钟掌握Chrome插件一键保存全流程 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 还在为无法离线保存Jable.tv上的精彩视频而烦恼吗?想要轻松将喜…...

2025届必备的五大AI辅助写作平台推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 进行学术写作之际,能否降低文本重复率属于至关重要的确保论文通过审查的环节。当…...

小红书数据采集实战指南:高效Python工具深度解析

小红书数据采集实战指南:高效Python工具深度解析 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在当今社交媒体数据分析领域,小红书作为国内领先的生…...

别再用官方镜像了!手把手教你给树莓派4B刷入Ubuntu Server 22.04 LTS,性能提升明显

树莓派4B性能飞跃指南:Ubuntu Server 22.04 LTS深度优化实战 当树莓派4B遇到官方系统时,总有种"小马拉大车"的遗憾——硬件潜力被保守的软件设计所限制。去年我在部署边缘计算节点时,意外发现Ubuntu Server在树莓派上的性能表现比官…...

选择Taotoken的TokenPlan套餐在长期项目中获得的成本节省体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 选择Taotoken的TokenPlan套餐在长期项目中获得的成本节省体验 1. 项目背景与成本挑战 我们团队在过去一年里,持续运营…...

Linux服务器磁盘突然被占满?小心是Docker在“吃”空间!手把手教你用ncdu排查和清理

Linux服务器磁盘突然被占满?小心是Docker在"吃"空间!手把手教你用ncdu排查和清理 那天早上,当我像往常一样登录开发服务器准备部署新版本时,终端里刺眼的红色警告让我瞬间清醒——/dev/sda6 100% used。作为一个常年与D…...

Winform项目老树开新花:用CefSharp+ECharts轻松搞定现代化数据大屏(含资源释放避坑指南)

Winform项目现代化改造:CefSharp与ECharts打造工业级数据大屏实战 在工业自动化与仓储管理领域,大量遗留系统仍基于Winform框架运行。这些系统往往面临界面陈旧、数据展示单一的问题,而全面重构为Web应用又面临成本高、周期长的挑战。本文将揭…...

Linux磁盘告急:巧用ncdu定位并清理/dev/sda高占用

1. 当Linux服务器突然报警:磁盘爆满的紧急处理 "服务器磁盘空间不足"这个红色警告突然跳出来时,相信很多运维同学都会心头一紧。我上周就遇到了这个情况:凌晨三点收到报警短信,/dev/sda6分区显示100%占用,导…...

2025年八大网盘直链下载助手:告别限速,轻松获取高速下载链接

2025年八大网盘直链下载助手:告别限速,轻松获取高速下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…...

QKeyMapper:5个技巧让你在Windows上实现零重启的按键映射

QKeyMapper:5个技巧让你在Windows上实现零重启的按键映射 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠&#xf…...

基于Neo4j与MCP协议,为AI智能体构建动态知识图谱大脑

1. 项目概述:为AI智能体构建一个动态知识大脑如果你正在使用Cursor、Claude Desktop这类AI编程助手,并且对它们能记住上下文、理解项目结构的能力感到惊喜,那么Graphiti MCP Server可能会让你对AI智能体的认知再上一个台阶。简单来说&#xf…...

易语言大漠模块实战:BindWindow后台绑定模式选择与避坑指南

1. 大漠模块后台绑定的核心价值 后台绑定技术对于自动化操作来说就像给机器人装上了眼睛和手指。想象一下,你正在玩一款需要重复刷副本的游戏,每次都要机械地点鼠标、按键盘,不仅累还容易出错。而大漠模块的BindWindow函数就是帮你解决这个痛…...

视频播放效率革命:如何用Video Speed Controller每天节省2小时

视频播放效率革命:如何用Video Speed Controller每天节省2小时 【免费下载链接】videospeed HTML5 video speed controller (for Google Chrome) 项目地址: https://gitcode.com/gh_mirrors/vi/videospeed 你是否厌倦了在线视频的固定播放速度?在…...

别再手动调了!GraphPad Prism 高效批量处理Grouped数据的3个隐藏技巧

GraphPad Prism进阶:Grouped数据高效处理与可视化优化全攻略 在科研数据分析领域,GraphPad Prism因其直观的界面和强大的统计功能而广受欢迎。然而,许多用户仅停留在基础操作层面,面对复杂的Grouped数据时仍采用低效的手动处理方法…...

Unity实战:用Mesh和Color.Lerp手搓一个可交互的3D热力图(附完整C#源码)

Unity实战:从零构建可交互3D热力图的底层逻辑与工程化实现 在数据可视化领域,热力图一直是最直观的呈现方式之一。当我们需要在3D场景中展示地形温度分布、玩家活动热区或资源聚集程度时,传统的2D热力图往往难以满足空间感知需求。本文将带您…...

如何突破AMD Ryzen处理器性能瓶颈?深入解析SMU调试工具的技术革命

如何突破AMD Ryzen处理器性能瓶颈?深入解析SMU调试工具的技术革命 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址:…...

用DAIN算法修复老视频,实测4K补帧效果与常见问题避坑(附Python代码)

深度解析DAIN算法:4K老视频修复实战指南与调参避坑技巧 你是否曾翻出多年前的家庭录像,却发现画面卡顿模糊?或是想重温经典老电影,却被低帧率影响了观影体验?DAIN(Depth-Aware Video Frame Interpolation&a…...

AI Agent配置生成器:基于agentforge的自动化项目脚手架实践

1. 项目概述:AI Agent配置生成器最近在折腾AI Agent自动化流程的朋友,估计都绕不开一个核心痛点:配置。无论是想用Claude、GPT-4还是开源的Llama,要让一个Agent真正“动”起来,你得定义它的角色、设定它的目标、给它配…...

在【Excel】、【PowerPoint】、【Word】 和 【Outlook】中与 【Claude】 协同工作

在【Excel】、【PowerPoint】、【Word】 和 【Outlook】中与 【Claude】 协同工作 写在前面:2026 年 5 月 7 日,Anthropic 宣布 Claude for Excel、PowerPoint 和 Word 全面上市(Generally Available),Claude for Outl…...

高性能B站视频下载解决方案:哔哩下载姬技术架构与实战部署指南

高性能B站视频下载解决方案:哔哩下载姬技术架构与实战部署指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...

LibreDWG:打破CAD格式壁垒的跨平台开源解决方案

LibreDWG:打破CAD格式壁垒的跨平台开源解决方案 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 在CAD设计领域,AutoCAD的DWG格式长…...

BooruDatasetTagManager:AI训练数据标注的终极指南,10倍效率提升的秘密

BooruDatasetTagManager:AI训练数据标注的终极指南,10倍效率提升的秘密 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 你是否曾为AI模型训练准备数据集而感到头疼?面…...

永磁同步电机无速度传感器控制(二)——滑模观测器(五)【参数整定与鲁棒性验证】

1. 滑模观测器参数整定的核心逻辑 搞电机控制的朋友都知道,滑模观测器就像个脾气倔强的老工程师——参数调好了稳如泰山,调不好就给你疯狂抖振。我当年第一次调滑模增益时,电机发出的声音能把实验室隔壁的师兄吓到报警。参数整定本质上是在动…...

易语言多线程下如何安全调用大漠插件?免注册方案与资源管理避坑指南

易语言多线程环境下安全调用大漠插件的工程实践 在自动化工具开发领域,大漠插件因其强大的图像识别和模拟操作能力而广受欢迎。但当我们将这一利器应用于易语言多线程环境时,往往会遇到DLL加载冲突、对象生命周期管理混乱以及线程安全性等棘手问题。本文…...