SAP小技巧 触发单据重定价

2024-03-05 08:08
文章标签 技巧 触发 sap 定价 单据

本文主要是介绍SAP小技巧 触发单据重定价,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击蓝字 关注我们

前言

采购订单或销售订单等存在定价的单据,在抬头或行项目重要字段修改后.

比如商品/地点/数量等修改后. 会触发重新获取定价.以确保获取准确的定价.

但是也有例外. 

本文介绍了怎么让字段的修改触发重新定价

需求描述

并非所有的抬头或行项目字段的修改都会触发重新获取定价.

比如批次字段. 如果定价中启用了批次定价. 标准逻辑在批次修改后无法触发重新获取定价. 这样就会导致单据定价与实际定价不一致.

再比如, 行项目使用了增强字段档期, 不同档期的商品定价不一样. 标准逻辑在增强的档期字段修改后,  也无法触发重新获取定价.

解决方式一

对采购订单的重定价可以使用BADI 增强.

ME_DEFINE_CALCTYPE 

在增强中判断特定字段的变化,修改ch_x_lf_calctype 的内容为'B'或'C' ,强制系统重新获取定价.

解决方式二

销售订单没有找到类似的增强点. 只能在 函数 PRICING 开头添加隐式增强实现

PRICING 中添加增强对所有定价都有效.

所以可以把所有单据的刷新定价的逻辑都放在这里.

如下图,实现了通过配置单据类型及重定价方式来实现该单据的任意字段修改是否触发重定价及重定价方式

方式二的补充

但是因为在函数PRICING 中没有单据的信息. 只有KOMK/KOMP的字段可以使用.

所以如果要执行特定字段内容变化的判断. 还需要通过其它增强把单据增强字段内容传递到KOMK/KOMP的增强字段中. 再读取单据的旧值与传入的值比较.

此类增强在不同的单据中实现方式不同.

采购订单 

通过 BADI ME_PO_PRICING_CUST 实现 

或SMOD 增强 LMEKO002实现

销售订单 

通过 MV45AFZZ 中的FORM 实现.

FORM USEREXIT_PRICING_PREPARE_TKOMK

FORM USEREXIT_PRICING_PREPARE_TKOMP

发票 

通过RV60AFZZ 中的FORM 实现

FORM USEREXIT_PRICING_PREPARE_TKOMK

FORM USEREXIT_PRICING_PREPARE_TKOMP

其它涉及定价的单据也有类似的增强点. 可以传递内容到KOMK/KOMP的增强字段中.

关于批量重新定价

有了上述增强, 批量重新定价可以用两种方式实现

1. 事务代码 MASS 批量修改单据的特定增强字段,可以实现批量重定价.

2. 通过开发程序调用BAPI函数修改单据的特定增强字段,可以实现批量重定价.

总结

标准定价都是通过函数PRICING 实现的.

重定价只需控制这个函数的传入参数 CALCULATION_TYPE 即可.

标准PO的重定价增强就是在调用函数PRICING 之前允许用户修改这个传入值实现的. 

一般情况下, 使用 B 或 C 执行定价刷新.

THE

END

约定

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

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

这篇关于SAP小技巧 触发单据重定价的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775834

相关文章

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误