如何通过ABAP获取SAP生产订单的目标成本

news2025/5/13 18:08:54

SAP存储生产订单成本的主要底表包括:

  • COBK: CO凭证表头
  • COEP: CO凭证行项目
  • COSS: 来自CO内部的汇总数据
  • COSP: 来自CO外部部的汇总数据

先说结论:SAP 对生产订单的目标成本是没有保存到底表的。那么如何通过代码的方式获取呢?

K_KKB_KKBCS_ORDER_REPORT 函数

这个函数类似调用事务码 KKBC_ORD,对这个函数调用,只需要提供 order number,但函数自动通过 ALV 来展示数据,这就带来了调用函数的不便。

对函数的源码进行分析,可以看出,函数的主要过程为

  • 调用 K_KKB_KKBCS_CO_OBJECT_READ 函数,获取生产订单的成本数据。
  • 调用 K_KKB_2XHEADER_GET 获取表头的数据,如订单号、订单类型、工厂、物料。
  • 调用 K_KKB_CO_OBJECT_DISPLAY 函数显示生产订单数据

主体的逻辑在 K_KKB_KKBCS_CO_OBJECT_READ 函数中。函数调用后返回 4 个表参数:

G_T_COSLA 表参数:能够获取期间产出数量。我们和 KKBC_ORD 事务码界面进行对比:

G_T_COSPA 表参数,对应 COSP 表的存储数据:

G_T_COSSA 表参数,对应 COSS 表的存储数据。

既然函数的主体是调用 K_KKB_KKBCS_CO_OBJECT_READ 函数,那么我们直接调用这个函数不就可以了吗?我们来测试一下。调用这个函数,需要填写 OBART 和 AUFNR 两个参数。

运行函数之后,可以看到,函数能获取到数据。如下图所示:

但我们对数据进行查看,可以发现缺少目标成本的数据 (WRTYP = 5)。也就是说,如果我们调用 K_KKB_KKBCS_ORDER_REPORT 函数,能获取到目标成本的数据,但系统会自动以 ALV 显示出来,这个不是我们想要的。如果调用 K_KKB_KKBCS_CO_OBJECT_READ 函数,表参数只有实际成本和计划成本,但没有目标成本。

什么原因呢?怎么解决呢?解决方案还需要从源码入手。我们用 SE37 进入 K_KKB_KKBCS_ORDER_REPORT 的源码一看究竟。这个函数的代码不是那么简单,我们略过不相关的部分。先找到与计算目标成本相关的部分:

进入子例程 get_target:

这才是真正用于计算目标成本的函数。基于调试方式很容易得到这个函数的参数的用法。在这里设置断点,然后通过 K_KKB_KKBCS_ORDER_REPORT 函数进入:

这个函数提供了获取目标成本的第一种方法,调用 K_TARGETCOSTS_OBJECT_RECALC 函数,函数调用需要通过前面的函数抓取到产出数量、产出物料的计量单位等信息。以下是使用 SE37 事务码对该函数的测试:

数据已经能够正确获取:

第二个问题,为什么调用 K_KKB_KKBCS_ORDER_REPORT 函数能获取到目标成本,调用 K_KKB_KKBCS_CO_OBJECT_READ 函数不能获取目标成本?基于分析,SAP 在函数组中,有一个 g_object 参数,在调用函数之前,需要对该函数赋值 ,然后检查 g_object 是否等于 obj-auf。对代码细节有兴趣的小伙伴可以自行调试来验证。关键点贴图如下:

知道了原因,也就有了第二种解决方案:拷贝 K_KKB_KKBCS_CO_OBJECT_READ 函数为 ZK_KKB_KKBCS_CO_OBJECT_READ,并对拷贝出的 Z 函数代码进行微调。我们知道,函数必须位于函数组中,所以拷贝函数需要拷贝函数组。实际操作的步骤如下:

1、拷贝函数组 KKBC 到 ZKKBC
2、拷贝函数 K_KKB_KKBCS_CO_OBJECT_READ 到 ZK_KKB_KKBCS_CO_OBJECT_READ
3、将 ZK_KKB_KKBCS_CO_OBJECT_READ 的属性改为远程启用的模块,从而支持 RFC 外部调用
4、将函数的参数变更为值传递,这是远程调用模块的要求:

在代码中加上两行:

g_object = obj-auf.  
move-corresponding i_hcstruktur to g_global_object.

本文结论

1、SAP对生产订单的目标成本目标在底表中存储,而是基于计算获得。
2、如果需要通过代码获取生产订单的目标成本,有两种解决方案,第一种方案是调用 K_TARGETCOSTS_OBJECT_RECALC 函数,但需要提供如生产数量、计量单位等信息,也需要先调用其他函数;第二种方案是基于 K_KKB_KKBCS_CO_OBJECT_READ 函数拷贝一个新的函数,并对代码进行微调。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2373671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【leetcode100】最长重复子数组

1、题目描述 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1: 输入:nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出:3 解释:长度最长的公共子数组是 [3,2,1] 。示例 2&…

基于Django框架的股票分红数据爬虫和展示系统

项目截图 一、项目简介 本项目是一个基于 Django 框架的股票分红数据爬虫和展示系统。它可以从东方财富网站爬取股票分红数据,并将数据存储到 Django 数据库中,同时提供数据查询、导出和图表展示功能。该系统为用户提供了一个方便的平台,用于…

QT高级(1)QTableView自定义委托集合,一个类实现若干委托

自定义委托集合 1同系列文章2 功能3 源码 1同系列文章 QT中级(1)QTableView自定义委托(一)实现QSpinBox、QDoubleSpinBox委托 QT中级(2)QTableView自定义委托(二)实现QProgressBar委…

小芯片大战略:Chiplet技术如何重构全球半导体竞争格局?

在科技飞速发展的今天,半导体行业作为信息技术的核心领域之一,其发展速度和创新水平对全球经济的发展具有举足轻重的影响。然而,随着芯片制造工艺的不断进步,传统的单片集成方式逐渐遇到了技术瓶颈,如摩尔定律逐渐逼近…

普通IT的股票交易成长史--股价起伏的真相-缺口(2)

声明:本文章的内容只是自己学习的总结,不构成投资建议。价格行为理论学习可参考简介中的几位,感谢他们的无私奉献。 送给自己的话: 仓位就是生命,绝对不能满仓!!!!&…

MindSpore框架学习项目-ResNet药物分类-模型优化

目录 5.模型优化 5.1模型优化 6.结语 参考内容: 昇思MindSpore | 全场景AI框架 | 昇思MindSpore社区官网 华为自研的国产AI框架,训推一体,支持动态图、静态图,全场景适用,有着不错的生态 本项目可以在华为云modelar…

Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装

1执行下面的命令修改上一篇中yaml文件来实现定制化安装devops kubectl edit cm -n kubesphere-system ks-installer 主要是将devops几个配置由False改为True 然后使用下面的命令查看安装日志 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l …

养生:为健康生活筑牢根基

养生并非遥不可及的目标,而是贯穿于日常生活的点滴之中。从饮食、运动到心态调节,每一个环节都对我们的健康有着重要意义。以下为你详细介绍养生的实用策略,助力你开启健康生活模式。 饮食养生:科学搭配,滋养生命 合…

Linux510 ssh服务 ssh连接

arning: Permanently added ‘11.1.1.100’ (ECDSA) to the list of known hosts. rooot11.1.1.100’s password: Permission denied, please try again. rooot11.1.1.100’s password: Permission denied, please try again 还没生效 登不上了 失效了 sshcaozx26成功登录 …

关键点检测--使用YOLOv8对Leeds Sports Pose(LSP)关键点检测

目录 1. Leeds Sports Pose数据集下载2. 数据集处理2.1 获取标签2.2 将图像文件和标签文件处理成YOLO能使用的格式 3. 用YOLOv8进行训练3.1 训练3.2 预测 1. Leeds Sports Pose数据集下载 从kaggle官网下载这个数据集,地址为link,下载好的数据集文件如下…

独立按键控制LED

目录 1.独立按键介绍 2.原理图 3.C51数据运输 解释&#xff1a;<< >> ​编辑 解释&#xff1a;& | 解释&#xff1a;^ ~ ​编辑 4.C51基本语句 5.按键的跳动 6.独立按键控制LED亮灭代码 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1…

计算机科技笔记: 容错计算机设计03 系统可信性的度量 偶发故障期 浴盆曲线 韦布尔分布

可靠性 简化表达式 偶发故障期&#xff0c;系统发生故障概率趋近于一个常数 浴盆曲线 MTTF和计算 韦布尔分布 马尔可夫链 可靠度

爬虫准备前工作

1.Pycham的下载 网址&#xff1a;PyCharm: The only Python IDE you need 2.Python的下载 网址&#xff1a;python.org&#xff08;python3.9版本之后都可以&#xff09; 3.node.js的下载 网址&#xff1a;Node.js — 在任何地方运行 JavaScript&#xff08;版本使用18就可…

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.1 主流可视化工具对比(Tableau/Matplotlib/Python库)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 第七章 可视化工具集成&#xff1a;Tableau、Matplotlib与Python库深度对比7.1 主流可视化工具对比&#xff1a;技术选型的决策框架7.1.1 工具定位与核心能力矩阵7.1.2 数据…

操作系统实验习题解析 上篇

孤村落日残霞&#xff0c;轻烟老树寒鸦&#xff0c;一点飞鸿影下。 青山绿水&#xff0c;白草红叶黄花。 ————《天净沙秋》 白朴 【元】 目录 实验一&#xff1a; 代码&#xff1a; 解析&#xff1a; 运行结果&#xff1a; 实验二&#xff1a; 代码解析 1. 类设计 …

基于Arduino Nano的DIY示波器

基于Arduino Nano的DIY示波器&#xff1a;打造属于你的口袋实验室 前言 在电子爱好者的世界里&#xff0c;示波器是不可或缺的工具之一。它能够帮助我们观察和分析各种电子信号的波形&#xff0c;从而更好地理解和调试电路。然而&#xff0c;市面上的示波器价格往往较高&…

渠道销售简历模板范文

模板信息 简历范文名称&#xff1a;渠道销售简历模板范文&#xff0c;所属行业&#xff1a;其他 | 职位&#xff0c;模板编号&#xff1a;KRZ3J3 专业的个人简历模板&#xff0c;逻辑清晰&#xff0c;排版简洁美观&#xff0c;让你的个人简历显得更专业&#xff0c;找到好工作…

JAVA练习题(1) 卖飞机票

import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scnew Scanner(System.in);System.out.println("请输入飞机的票价&#xff1a;");int pricesc.nextInt();System.out.println("请输入月份&#xff1a;");…

杆件的拉伸与压缩变形

杆件的拉伸与压缩 第一题 Q u e s t i o n \mathcal{Question} Question 图示拉杆沿斜截面 m − m m-m m−m由两部分胶合而成。设在胶合面上许用拉应力 [ σ ] 100 MPa [\sigma]100\text{MPa} [σ]100MPa&#xff0c;许用切应力 [ τ ] 50 MPa [\tau]50\text{MPa} [τ]50MP…

企业开发平台大变革:AI 代理 + 平台工程重构数字化转型路径

在企业数字化转型的浪潮中&#xff0c;开发平台正经历着前所未有的技术革命。从 AST&#xff08;抽象语法树&#xff09;到 AI 驱动的智能开发&#xff0c;从微服务架构到信创适配&#xff0c;这场变革不仅重塑了软件开发的底层逻辑&#xff0c;更催生了全新的生产力范式。本文…