SAP工具箱 MR22自定义BAPI
点击蓝字 关注我们
一
前言
标准事务代码MR22 通过调整金额影响物料的成本价,前台界面中单个凭证中允许输入多行物料, 但是对应的BAPI函数仅支持输入单行物料
BAPI_MATVAL_DEBIT_CREDIT 正常库存
BAPI_SALESORDSTCK_DEBIT_CREDIT 销售订单库存
这种情况
婶可忍叔不可忍 (感谢用户的执着)(不排除SAP有允许输入多行的价格变更BAPI,但没有找到)
本文主要介绍自定义BAPI,允许生成多行物料的价格变更凭证
二
MR22的标准BAPI
BAPI_MATVAL_DEBIT_CREDIT 正常库存
BAPI_SALESORDSTCK_DEBIT_CREDIT 销售订单库存
项目中用到过这两个标准BAPI. 因为物料编码作为独立的传入参数, 因此这两个BAPI注定只能传入单行物料.

三
BAPI VS BDC
BDC使用方式详见连接
无峰,公众号:ABAP 技巧与实战ABAP基础知识 BDC记录创建单据
BDC是基于屏幕记录的处理过程, 如果因为配置或者数据的原因导致实际处理的屏幕过程不同于记录的屏幕过程,就会出现异常报错. 因此不推荐使用BDC记录生成的函数创建事务数据.
BDC录屏过程中,对于多行处理会有一个较复杂逻辑调整: 记录时需要形成一个重复处理过程, 该重复处理过程最好使用标准的定位按钮把要处理的行放到第一行. 翻页键或方向键不是一个精确的定位方式,可能会导致异常. 最后生成的代码基于传入的多行,调整重复处理的逻辑. 有些事务没有提供定位按钮,基本上很难实现多行(不定行)录入
BDC 没有一个准确的成功判定方式, 通过SY-SUBRC 和指定一个成功消息号来判断成功, 但特殊业务系统可能会触发另外一个成功消息号 . 这样会导致程序逻辑的不确定性.
综上所述,除非没有找到事务对应BAPI函数. 否则不要用BDC记录生成函数创建事务.
但凡事都有例外, 系统某些标准BAPI(财务居多),内核就是BDC录屏.这些BDC的标准BAPI考虑了所有屏幕呈现的逻辑,基本上不会有自己录制BDC的问题.
四
标准BAPI的分析
标准BAPI的调用过程比较简单, 程序中也有相应的注释提示
转换物料编码(18位编码->40位编码)
调用FORM matval_debit_credit生成凭证

FORM matval_debit_credit中 调用本地类方法产生凭证

类方法lcl_matval_debit_credit中
处理了下述逻辑
检查授权
读取物料的物料分类账信息
读取物料成本
获取原因信息
填写核心调用方法的参数
最后调用核心方法 execute_price_change 生成凭证

五
BAPI分析的结论
最终传递给方法 execute_price_change 的参数中. 传递的物料信息通过内表LT_MATPR传递. 该内表允许多行物料.
比较困惑为何SAP在底层类方法中允许多行物料, 但是封装的上层BAPI函数仅支持单行物料.
不管怎样. 上述的分析结果形成了一个想法: 创建一个新的, 允许多行物料的BAPI函数

六
改造结果
函数
ZBAPI_MULTI_SALESORDSTCK_DEBIT
允许传入多行物料. 产生多行物料的凭证
改造的过程比较简单, 把标准BAPI准备核心方法execute_price_change的参数准备部分,从单行调整成多行物料. 最终调用即可.
如下截图的红线部分是改变的部分




七
测试验证
最终生成的凭证和前台界面MR22创建的凭证一致.

八
总结
SAP的标准程序的模块划分比较清晰, 让改造标准BAPI函数成为可能. 这次改造行为仔细分析了MR22标准BAPI的处理逻辑. 因此对改造后的函数比较有信心. 实测也验证了该函数可行.
同时也希望SAP后续能给出MR22的多行创建的BAPI函数
改造后, 标准成本及销售订单成本的修改整合到了一起. 基于传输数据是否有销售订单来判断.
改造的关键点都标识出来了. 感兴趣的可以自行尝试.
相关文章:
SAP工具箱 MR22自定义BAPI
点击蓝字 关注我们 一 前言 标准事务代码MR22 通过调整金额影响物料的成本价,前台界面中单个凭证中允许输入多行物料, 但是对应的BAPI函数仅支持输入单行物料 BAPI_MATVAL_DEBIT_CREDIT 正常库存BAPI_SALESORDSTCK_DEBIT_CREDIT 销售订单库存 这种情况 婶可忍叔不可忍 (感谢用户…...
ASP.NET 网上选课系统的设计与实现(源代码+论文)
随着教育改革的不断深化,建立一套能够适应这些改变的行政管理方案也就显得尤为重要。在高等院校的日常工作中,每个学期都要面临学生的选课工作。以往在选课工作的各个阶段都是手工操作,不但效率低下、工作繁琐,而且容易出错,于是开发一套适合校情的网上选课系统便成为了教…...
SpringMVC学习总结(路由映射、参数传递、转发和重定向...)
目录 1. MVC简介 2. SpringMVC简介 3. 路由映射注解 3.1 RequestMapping 3.2 GetMapping与PostMapping 4. 接收前端传递参数 4.1 接收单/多个参数 4.2 接收对象 4.3 接收JSON对象 4.4 后端参数重命名/映射 4.5 设置参数必传/非必传 4.6 获取URL中的参数 4.7 获取文…...
基于MAC地址的ACL配置
基于MAC地址的ACL配置 【实验目的】 掌握基于MAC地址的标准ACL的配置。验证配置。 【实验拓扑】 实验拓扑如图1所示。 图1 实验拓扑 设备参数如表所示。 表1 设备参数表 设备 接口 IP地址 子网掩码 默认网关 S1 e0/0 N/A N/A N/A e0/1 N/A N/A N/A PC1 N/…...
软件设计师 计算机网络
名字带IP AP的都是网络层 所有带T的除了TFTP其他都是TCP,所有不带T的除了POP3其他都是UDP **物理层的互联设备有中继器和集线器,集线器是一种特殊的多路多端口中继器 网络层:路由器 物理层:中继器 数据链路层:网桥…...
Gradle ——Gradle安装与配置
目录 一、简介 二、功能和特点 三、安装 参考: Gradle_百度百科 Gradle 学习 ----Gradle 入门_你若不离不弃,我必生死相依的博客-CSDN博客 还有硬石科技的开源wifiAPP程序,没找到他们的码仓 一、简介 Gradle是一个基于Apache Ant和Apache Maven概念…...
网络安全这条路到底该怎么走?
我之前就写过一篇文章专门解答了这个问题。但是还是有很多小伙伴并不清楚这条路该怎么走下去! 不同于Java、C/C等后端开发岗位有非常明晰的学习路线,网路安全更多是靠自己摸索,要学的东西又杂又多,难成体系。 网络安全虽然是计算…...
【C++】位图(海量数据处理)
文章目录 抛出问题:引入位图位图解决 位图的概念位图的实现结构构造函数设置位清空位判断这个数是否存在反转位size与count打印函数 位图的应用 抛出问题:引入位图 问题:给40亿个不重复的无符号整数,没排序,给一个无符号整数,如何…...
外包干了五年,废了...
先说一下自己的情况。大专生,17年通过校招进入湖南某软件公司,干了接近5年的测试点点点,今年年上旬,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的点工…...
请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨)为什么很多人说崖山海战以后无中国
目录 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 为什么很多人说崖山海战以后无中国 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 以下是我对《unravel - TK from 凛冽时雨》这首歌词的理解࿱…...
从8连挂到面面offer,我只用了一个月,面试25K测试岗血泪经验分享给你
直到如今,我才敢把这段经历分享出来,毕竟一个多月前,我是经历了面试八连挂的人。作为一只骄傲的软件测试工程师,恨不得找一块豆腐撞死。但是在闭关修炼了一个多月之后,重新出来面试,面试了五家公司…...
计算机操作系统(慕课版)第二章课后题答案
一、简答题 (1)什么是前趋图?试画出下面四条语句的前趋图. S1:axy; S2:bz1; S3:ca-b; S4:wc1; 答:前趋图(Precedence Graph)是一个有向无循环图,…...
【离散数学】置换群和伯恩赛德定理编程题
1:置换的轮换表示 给出一个置换,写出该置换的轮换表示。比如 (1 2 3 4 5 6 7 8 9) (3 1 6 2 9 7 8 4 5) 表示为(1 3 6 7 8 4 2)(5 9) 输入: 置换后的序列 输出: 不相杂的轮换乘积,每行表示一个轮换(轮换的起…...
【自然语言处理】 - 作业2: seq2seq模型机器翻译
课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…...
随身WIFI折腾日记(四)---拓展USB接口读取U盘内容
五、USB行为控制 随身WIFI对外交互的接口只有WIFI和USB接口。如果要想接入其他硬件设备,拓展USB接口至关重要,对于USB接口的控制,参考如下链接: openstick项目官方教程:控制usb行为 HandsomeMod/gc: A Simple Tool To Control Usb Gadget …...
【C++初阶】类与对象(中)之取地址及const取地址操作符重载(了解即可)
👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞…...
代驾公司如何管理司机
在这个几乎人人都能学车,人人都能开车的时代,代驾职业也越来越专业化和正规化。因此,想要成为一名优秀的代驾司机,一定得有过人之处,对于代驾公司来说,如何管理司机也是尤为的重要。 对于代驾公司来说&…...
面了一个5年经验的测试工程师,自动化都不会也敢喊了16k,我也是醉了····
在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程…...
ChatGPT:你真的了解网络安全吗?浅谈攻击防御进行时之网络安全新定义
ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 网络安全新定义总结 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序,是人工智能技术驱动…...
LeetCode_DFS_困难_1377.T 秒后青蛙的位置
目录 1.题目2.思路3.代码实现(Java) 1.题目 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个未访问过的顶点(如果它…...
AI辅助开发新思路:让快马AI理解自然语言,自动生成分区数据智能查询系统
今天想和大家分享一个最近用AI辅助开发的实用工具——中科院分区智能查询系统。这个项目的核心思路是让AI理解科研人员的自然语言查询需求,自动转换成数据库操作,大大简化了科研数据检索的流程。 项目背景与需求分析 作为一名经常需要查阅期刊信息的科…...
别再假努力!应届生面试高效准备路线图
文章目录前言一、为什么你总在"假努力"?1. 简历上的"垃圾回收站"2. 八股文死记硬背3. 项目介绍像流水账二、真高效准备路线图阶段一:简历极简主义(3天)阶段二:项目深挖与"埋雷"…...
C++常量表达式constexpr在编译期计算与模板元编程中的结合
C常量表达式constexpr与模板元编程的结合为现代C带来了前所未有的编译期计算能力,这种技术组合不仅提升了程序性能,还增强了代码的表达能力。在C11引入constexpr后,开发者能够在编译期完成复杂的计算,而模板元编程则提供了类型操作…...
告别虚拟机!在Win11的WSL2里用Rust给STM32点灯,保姆级避坑指南(含CMSIS-DAP配置)
在Win11的WSL2中用Rust点亮STM32:全流程避坑指南 当传统虚拟机因性能损耗和资源占用成为开发瓶颈时,WSL2的出现为嵌入式开发者提供了全新选择。本文将带你体验如何在Windows 11环境下,通过WSL2构建完整的Rust嵌入式开发工具链,并解…...
Qwen3.5-9B Visio图表智能生成:根据文本描述自动创建流程图与架构图
Qwen3.5-9B Visio图表智能生成:根据文本描述自动创建流程图与架构图 1. 引言:告别手动绘图的烦恼 你有没有遇到过这样的情况?开会讨论完一个业务流程,需要把它画成流程图;或者设计了一个系统架构,得在Vis…...
SYNBO 已上线 BitMart 交易所,Synbo Camp 同步开启
2026年3月31日,Synbo.io 原生代币 SYNBO 将上线 BitMart 交易所,这也成为 Synbo 发展进程中的又一里程碑,并同步开启 Synbo Camp 招募活动。这不仅是一次产品上线与活动发布,更标志着 Synbo 正式向行业递交一套关于未来融资协作方…...
低配显卡也能玩转Flux.1!实测schnell版文生图效果与性能优化技巧
低配显卡也能玩转Flux.1!实测schnell版文生图效果与性能优化技巧 在AI图像生成领域,硬件门槛一直是许多创意工作者的痛点。当主流模型动辄要求RTX 3090级别的显卡时,那些使用GTX 1660甚至更低配置的用户往往只能望而却步。但Flux.1 schnell版…...
OmenSuperHub终极指南:掌控惠普游戏本性能与散热的完整解决方案
OmenSuperHub终极指南:掌控惠普游戏本性能与散热的完整解决方案 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否曾因惠普游戏本过热降频…...
Windows下OpenClaw安装指南:快速对接千问3.5-9B镜像
Windows下OpenClaw安装指南:快速对接千问3.5-9B镜像 1. 为什么选择OpenClaw千问3.5-9B组合 去年我在处理日常办公自动化时,发现很多重复性工作既耗时又容易出错。尝试过各种RPA工具后,最终被OpenClaw的"AI智能体本地化"特性吸引。…...
AI开发AI:基于快马平台多模型能力深度打造旗博士口播智能体
AI开发AI:基于快马平台多模型能力深度打造旗博士口播智能体 最近在做一个挺有意思的项目——旗博士口播智能体。这个项目本身是个AI应用,但更有趣的是,整个开发过程都借助了AI来辅助完成。这种"用AI开发AI"的体验,让我…...
