VOFM(例程)

 

问题描述

SAP ERP 实施中,经常会用到例程开发(TCODE:VOFM)。创建例程需要ACCESS KEY,这个可以通过申请得到,创建后例程会被包含在一个REQUEST下,例程创建之后还不能马上使用,需要激活,如图所示。

否则无法正常使用。

文章转自  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'.
在根据配置计算定价数据

 

 

你可能感兴趣的:(SAP,abap)