天天看點

VOFM(例程)

問題描述:

SAP ERP 實施中,經常會用到例程開發(TCODE:VOFM)。建立例程需要ACCESS KEY,這個可以通過申請得到,建立後例程會被包含在一個REQUEST下,例程建立之後還不能馬上使用,需要激活,如圖所示。

VOFM(例程)

否則無法正常使用。

文章轉自  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的定價公式的資料(強力推薦,有時間我會進行翻譯)

VOFM(例程)
Enhancing Output Determination
VOFM(例程)
Implementing Subsequent Function Requirement Routines
VOFM(例程)
Material Number Ranges and Formatting
VOFM(例程)
SD Document Number Range Enhancements
VOFM(例程)
SD Billing Document Consolidation and Splitting
VOFM(例程)
Inside the VOFM Program

Other Guides:

VOFM(例程)
Sales and Distribution VOFM Routines Part 1: Copy Requirements
VOFM(例程)
Sales and Distribution VOFM Routines Part 2: Data Transfer
VOFM(例程)
Sales and Distribution VOFM Routines Part 3: Requirements
VOFM(例程)
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'.

在根據配置計算定價資料

繼續閱讀