問題描述:
SAP ERP 實施中,經常會用到例程開發(TCODE:VOFM)。建立例程需要ACCESS KEY,這個可以通過申請得到,建立後例程會被包含在一個REQUEST下,例程建立之後還不能馬上使用,需要激活,如圖所示。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLNZ0TW91bvwVN5MTM2MzLc5WahJHe3p3LcRXZu9lbkN3Yfd2bsJ2Xw9CXzV2Zh1WavwFdl5mLuR2cj5yZvxmYtA3Lc9CX6MHc0RHaiojIsJye.jpg)
否則無法正常使用。
文章轉自 http://blog.csdn.net/zeewjj/article/details/8656660
REQUEST釋放後可以傳輸到目标系統,但是問題就出現在傳輸。如果隻是傳輸,是無法正常使用的。這是SAP的一個BUG。要了解這個BUG,先要了解SAP例程的工作原理。
例程工作原理:
例程,即Fomula,是使用在銷售、采購、發票、交貨等單據中定價過程的一小段程式。之是以有Fomula存在,是因為在不同的業務場景下,定價過程可能千差萬别,但是卻可以拆分為一些關鍵的組成部分,如複制請求、資料傳輸、要求、公式,每個例程就是一小段專用程式,這些例程程式會被标準程式動态調用:如:PERFORM XXX IN XXXX IF FOUND. 我們可以在例程中編寫代碼片段,修改運作環境中的資料。具體的每種例程都有不同的環境變量和接口資料,在此就不詳細說明了。
建立例程的過程,實際上是做了以下幾件事,我們以要求–定價–998例程為例說明:
1 建立了程式:RV61A998,改程式可通過SE38檢視
2 在表TFRM、TFRMT中添加資料,記錄建立的例程編号等資訊
3 激活例程時,RV61A998被INCLUDE 在RV61ANNN,即在RV61ANNN中添加一行:INCLUDE RV61A998.
下面解釋下傳輸後無法正常使用。
CHANGE REQUEST釋放後傳輸,1、2兩步可以正常完成,但是第三步,雖然在目标系統中激活了,但是未能INCLUDE在RV61ANNN程式中,是以定價過程配置好之後,會出現ABAP DUMP.
解決方法:在目标系統中運作程式:RV80HGEN即可修複BUG,而不需要在目标系統中通過VOFM激活例程。該程式的作用是根據表TFRM,TFRMT在RV61ANNN等程式中增加INCLUDE RV61A998這樣的代碼,如此才能正常運作。具體見Notes:28683
文章轉自 http://silverw0396.iteye.com/blog/90673
關于SAP的SD的定價公式的資料(強力推薦,有時間我會進行翻譯)
| Enhancing Output Determination |
| Implementing Subsequent Function Requirement Routines |
| Material Number Ranges and Formatting |
| SD Document Number Range Enhancements |
| SD Billing Document Consolidation and Splitting |
| Inside the VOFM Program |
Other Guides:
| Sales and Distribution VOFM Routines Part 1: Copy Requirements |
| Sales and Distribution VOFM Routines Part 2: Data Transfer |
| Sales and Distribution VOFM Routines Part 3: Requirements |
| Sales and Distribution VOFM Routines Part 4: Formulas |
如何提取單據的實際定價資料
VBAK,vbrk等表都有字段“KNUMV” 紀錄了"單據條件數"
KONV 紀錄單據的單價計算步驟(條件(事務資料))
示例:
select vbrk~fkart vbrp~posnr vbrk~sfakn vbrk~knumv vbrp~matnr vbrp~fkimg
into corresponding fields of wa_vbrk
from vbrk
inner join vbrp on vbrk~vbeln = vbrp~vbeln
where vbrk~vbeln = wa_bkpf-awkey+0(10).
if sy-subrc = 0.
select single kwert into (wa_vbrk-kwert)
from konv
where knumv = wa_vbrk-knumv
and kposn = wa_vbrk-posnr and kschl = 'ZPRS'."'VPRS'.
*..................................
endif.
endselect.
如何提取單價定價資料
首先從定價表(AXXX)中取出“KNUMH”條件記錄号
select single knumh
into (l_knumh)
from a118
where matnr = wa_report-matnr and kschl = 'Z101'
and datab <= wa_report-fkdat and datbi >= wa_report-fkdat .
再根據條件記錄号從KONP提取資料
select single kbetr kpein into (l_kbetr,l_kpein)
from konp where knumh = l_knumh and kschl = 'Z101'.
在根據配置計算定價資料