SAP-ABAP: 采购申请创建(PR)BAPI_PR_CREATE 技术指南-详解

BAPI_PR_CREATE 技术指南

用途:通过 RFC 接口创建 SAP 采购申请(PR),支持自动化集成与批量处理。


一、功能概览

类别说明
核心功能创建标准采购申请、预留转采购申请,支持多行项目及账户分配。
集成场景与 MRP 系统、外部采购平台、企业门户等集成,实现需求自动提报。
数据范围支持工厂、库存地点、采购组、审批策略、交货日期等关键业务字段的维护。

二、参数详解

1. 输入参数(Import Parameters)

关键结构说明
参数名结构类型必填说明
PRHEADERBAPIMEREQHEADER采购申请抬头信息,定义单据类型、采购组织等全局属性。
PRITEMBAPIMEREQITEM_T行项目明细表,包含物料、数量、工厂等核心数据。
PRACCOUNTBAPIMEREQACCOUNT_T账户分配表(如成本中心、WBS 元素),需与 ACCTASSCAT 字段匹配。
PRITEMXBAPIMEREQITEM_T字段更新标识表,标记需显式传入的字段(避免默认值覆盖问题)。
字段速查表

PRHEADER 关键字段

DOC_TYPE   TYPE BAPIMEREQHEADER-DOC_TYPE,   "单据类型(默认 'NB')
PUR_ORG    TYPE BAPIMEREQHEADER-PUR_ORG,    "采购组织(如 '0001')
PUR_GROUP  TYPE BAPIMEREQHEADER-PUR_GROUP,  "采购组(如 '001')
DELIV_DATE TYPE BAPIMEREQHEADER-DELIV_DATE, "需求日期(必填)

PRITEM 关键字段

PREQ_ITEM  TYPE BAPIMEREQITEM-PREQ_ITEM,    "行号(建议 '00010' 递增)
MATERIAL   TYPE BAPIMEREQITEM-MATERIAL,     "物料编号(需存在主数据)
PLANT      TYPE BAPIMEREQITEM-PLANT,        "工厂(与采购组织分配一致)
QUANTITY   TYPE BAPIMEREQITEM-QUANTITY,    "数量(>0)
ACCTASSCAT TYPE BAPIMEREQITEM-ACCTASSCAT,  "账户分配类型(如 'K'=成本中心)

2. 输出参数(Export Parameters)

参数名结构类型说明
PURCHASINGDOCUMENTBAPIMEREQHEADER-PREQ_NO生成的采购申请号(如 ‘4500000123’)
RETURNBAPIRET2_T执行结果消息(成功/错误明细)

三、调用示例与分步解析

1. ABAP 代码示例

DATA: ls_header    TYPE BAPIMEREQHEADER,lt_pritem    TYPE TABLE OF BAPIMEREQITEM,lt_praccount TYPE TABLE OF BAPIMEREQACCOUNT,lt_return    TYPE TABLE OF BAPIRET2,lv_preq_no   TYPE BAPIMEREQHEADER-PREQ_NO.* 1. 抬头信息配置
ls_header = VALUE #(DOC_TYPE   = 'NB'             "采购申请类型PUR_ORG    = '0001'           "采购组织PUR_GROUP  = '001'            "采购组DELIV_DATE = sy-datum + 30    "30天后交货
).* 2. 行项目配置
APPEND VALUE #(PREQ_ITEM  = '00010'          "行号MATERIAL   = 'MAT-1000'       "物料号(需在MM01中存在)PLANT      = '1000'           "工厂QUANTITY   = 5                "数量UNIT       = 'EA'             "单位ACCTASSCAT = 'K'              "成本中心分配
) TO lt_pritem.* 3. 账户分配配置(若 ACCTASSCAT=K)
APPEND VALUE #(PREQ_ITEM  = '00010'          "关联行号CO_AREA    = '1000'           "控制范围COSTCENTER = 'KOSTEN_001'     "成本中心(需在KS03激活)
) TO lt_praccount.* 4. 执行 BAPI
CALL FUNCTION 'BAPI_PR_CREATE'EXPORTINGPRHEADER           = ls_headerIMPORTINGPURCHASINGDOCUMENT = lv_preq_noTABLESPRITEM             = lt_pritemPRACCOUNT          = lt_praccountRETURN             = lt_return.* 5. 事务提交与错误处理
IF lt_return IS INITIAL.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.WRITE: / 'PR Created:', lv_preq_no.
ELSE.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.LOOP AT lt_return INTO DATA(ls_msg).WRITE: / ls_msg-type, ls_msg-message.ENDLOOP.
ENDIF.

2. 关键步骤说明

  1. 抬头配置:确保采购组织与工厂的分配关系(SPRO: Materials Management > Purchasing > Assign Purchasing Organization to Plant)。
  2. 行项目校验:物料主数据需存在且采购视图维护完整(MM03 检查)。
  3. 账户分配:若使用成本中心,需确保其有效性(KS03 检查状态和有效期)。

四、注意事项与常见问题

1. 必填字段校验

字段检查点事务码
MATERIAL物料采购视图是否维护MM03
PLANT工厂是否分配给采购组织SPRO
COSTCENTER成本中心是否在有效期内KS03

2. 事务控制

  • 显式提交:BAPI 不自动提交,需调用 BAPI_TRANSACTION_COMMIT
  • 错误回滚:若 RETURN 表包含错误(Type = ‘E’),必须调用 ROLLBACK

3. 增强与扩展

  • 自定义字段:通过 EXTENSIONIN 传递扩展结构(需提前通过 CMOD 增强 ME_REQ_HEAD 或 ME_REQ_ITEM)。
  • 审批流触发:调用 BAPI_REQUISITION_RELEASE 触发后续审批。

五、故障排查指南

错误现象可能原因解决方案
物料不存在或采购视图缺失物料未维护采购组织/工厂MM01 维护采购视图
采购组未分配采购组织采购主数据配置错误SPRO 检查采购组分配
成本中心无效未激活或控制范围不匹配KS03 检查成本中心主数据
行项目数量为0QUANTITY 字段未传值检查代码逻辑或输入参数

六、扩展工具与参考

工具/事务码用途
ME53N查看生成的采购申请
BAPI_PR_GETDETAIL获取采购申请详细信息
BAPI_PR_CHANGE修改已有采购申请
SU22检查用户权限(对象 B_PURCHREQ

通过此优化结构,读者可快速定位参数定义、代码示例及常见问题,同时遵循 SAP 最佳实践确保集成稳定性。

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

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

相关文章

Android7 Input(一)Android Input服务初始化

本系列博客主要描述Android 7.1系统中输入管理服务InputManagerService的源码分析。 概述 本文主要描述了InputManagerService服务的初始化和启动,在Android7系统上InputManagerService服务的框架如下所示: 注:箭头的方向,并不能真实代表数…

用于 RGB-D 显著目标检测的点感知交互和 CNN 诱导的细化网络(问题)

摘要 问题一:但在对自模态和跨模态的全局长距离依赖关系进行建模方面仍显不足。什么意思? 自模态(Intra-modal)全局依赖:在同一模态内,长距离像素之间的信息交互对于理解全局背景很重要,但 CN…

html5基于Canvas的经典打砖块游戏开发实践

基于Canvas的经典打砖块游戏开发实践 这里写目录标题 基于Canvas的经典打砖块游戏开发实践项目介绍技术栈核心功能实现1. 游戏初始化2. 游戏对象设计3. 碰撞检测系统4. 动画系统5. 用户界面设计 性能优化1. 渲染优化2. 内存管理 项目亮点技术难点突破项目总结 项目介绍 在这个…

MySQL外键约束下的索引删除难题:从报错到完美解决的实战指南

🚨 MySQL外键约束下的索引删除难题:从报错到完美解决的实战指南 🔥 问题背景:一个看似简单的删除操作引发的连环坑 场景复现:某日接到需求,需删除 invite_codes 表中的冗余索引 FKnqn27fyjlgio5y60eieohi0…

使用 request 的 axios 状态码分析

request.interceptors.response.use(function(response){},function(error){})后端返回结果code400不经过response,直接跳到error。 当后端返回状态码为 400 时直接进入 error 回调而不经过 response 回调,这是因为 axios 默认会将状态码不在 200 - 299 范围内的响…

Rust嵌入式开发环境搭建指南(基于Stm32+Vscode)

Rust嵌入式开发环境搭建指南(基于Stm32+Vscode) 部分目录如下所示: 目录 简介Rust开发环境安装STM32开发工具链安装VSCode环境配置VSCode插件安装调试器配置项目创建与配置常见问题与解决方案简介 本文档旨在指导开发者如何搭建基于Rust语言的STM32嵌入式开发环境。相比传…

动态规划合集——动态规划基本原理

动态规划合集——动态规划基本原理 动态规划原理1258:【例9.2】数字金字塔 动态规划原理深度优先搜索记忆化搜索动态规划(顺推)动态规划原理题解分析 滚动数组优化动态规划(逆推) 动态规划原理 从数塔问题出发理解动态…

如何让节卡机器人精准对点?

如何让节卡机器人精准对点? JAKA Zu 软件主界面主要由功能栏、开关栏、菜单栏构成。 菜单栏:控制柜管理,机器人管理与软件管理组成。主要功能为对控制柜关机、APP 设置、机器人本体设 置、控制柜设置、连接机器人和机器人显示等功能。 开关…

自动化测试工具-Playwright介绍和快速实例

Playwright 是什么 Playwright 是由 Microsoft 开发的开源自动化测试工具,专为现代 Web 应用设计。它支持 Chromium、Firefox 和 WebKit 内核的浏览器,能够跨平台(Windows、macOS、Linux)运行,提供强大的浏览器自动化能力,适用于测试、爬虫和监控等场景。 Playwright的…

软考程序员考试知识点汇总

软考程序员考试(初级资格)主要考察计算机基础理论、编程能力及软件开发相关知识。以下是核心知识点总结及备考建议: 一、计算机基础 数制与编码 二进制、八进制、十进制、十六进制转换原码、反码、补码表示(整数与浮点数&#xf…

实时视频分析的破局之道:蓝耘 MaaS 如何与海螺 AI 视频实现高效协同

一、蓝耘 MaaS 平台:AI 模型全生命周期管理的智能引擎 蓝耘 MaaS(Model-as-a-Service)平台是由蓝耘科技推出的 AI 模型全生命周期管理平台,专注于为企业和开发者提供从模型训练、推理到部署的一站式解决方案。依托云原生架构、高…

设计模式(行为型)-策略模式

目录 定义 类图 角色 角色详解 Strategy(抽象策略类)​ Context(环境类 / 上下文类)​ ConcreteStrategy(具体策略类)​ 优缺点 优点​ 缺点​ 使用场景 类行为差异场景​ 动态算法选…

【算法day14】三数之和

三数之和 https://leetcode.cn/problems/3sum/description/ 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。…

优化器/模型参数/超参数

参数(Parameters) vs. 超参数(Hyperparameters) 1.1 参数(Parameters) 定义:模型中需要学习的变量,例如神经网络中的权重(Weight)和偏置(Bias&a…

10、STL中的unordered_map使用方法

一、了解 1、unordered_map(哈希) unordered_map是借用哈希表实现的关联容器。 访问键值对O(1),最坏情况O(n),例如哈希冲突严重时。【n是一个哈希桶的元素数量】 unordered_map特性 键值对存储&#xff…

C++ 头文件说明

如果一个程序足够大,代码功能很多,可以想象,不可能把代码写在一个cpp文件里。我们需要模块化,这样的好处很多,方便分工合作,可读性提高,调用也方便。 这个要怎么做呢? 很简单直接当…

Lambda 表达式的语法:

在 Java 中,Lambda 表达式(也称为匿名方法)是一种简洁的表示方法接口(Functional Interface)实现的方式。它是 Java 8 引入的特性,目的是提高代码的简洁性和可读性。 Lambda 表达式的语法: La…

C#零基础入门篇(18. 文件操作指南)

## 一、文件操作基础 在C#中,文件操作主要通过System.IO命名空间中的类来实现,例如File、FileStream、FileInfo等。 ## 二、常用文件操作方法 ### (一)文件读取 1. **使用File.ReadAllText方法读取文件内容为字符串** …

每日一题--内存池

内存池(Memory Pool)是一种高效的内存管理技术,通过预先分配并自主管理内存块,减少频繁申请/释放内存的系统开销,提升程序性能。它是高性能编程(如游戏引擎、数据库、网络服务器)中的核心优化手…

【Linux系统】Linux进程终止的N种方式

Linux系列 文章目录 Linux系列前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕结果异常3.4 程序异常退出 总结 前言 进程终止是操作系统中,进程的一个重要阶段,他标志着进程生命周期的结束…