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.pswp.cn/news/898371.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898371.shtml
英文地址,請注明出處:http://en.pswp.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 程序異常退出 總結 前言 進程終止是操作系統中,進程的一個重要階段,他標志著進程生命周期的結束…