Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

VOFM - Requirements

Former Member
0 Kudos

Hi Folks,

I am working on requirements.

I am a bit new to this process.I wud like to have some detailed info on the same.Please clarify the below mentioned.

1.I've seen Requirements in VOFM only for some areas..like output control,pricing,material determination etc. <b>what is the working mechanism</b> of this? How is it different from USER EXITS?

2.The same piece of code appears twice in the same requirement under to differnet form definitions,namely form KOMBD and KOMBV ? <b>why this is required twice</b>?

3.why do we need to run <b>RV80HGEN</b> after creating a requirement?

4.From where the number series starts for newly defined routines apart from standard requirements?

5.If we want to modify the standard exist <b>what are the precaution to take?</b> what i heard is ..once we give the access key for it...there is some icons apper on tool bar like INSERT DELETE etc..

Your help is appreciated.

Thanks

Raja

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello Raja,

As indicated only for the following as indicated number range is allowed for rest it is 600-999.

Name Number

Subsequent functions 900 - 999

Group key routines 50 - 99

Data transfer routines f. texts 50 - 99

<b></b>all other group indicators 600 - 999

<b></b>

I am attaching another note which deals with VOFM problem. Keep this with u as it will prove useful.

<b></b> SAP Note 327220<b></b>

This note is an explanation of function "Maintain: Requirements and Formulas", which is also known as "VOFM".

By using descriptions and examples, this note explains how the VOFM function works in the R/3 Standard System, which objects are related to it and which restrictions exist.

Chapter 2.7 explains possible causes of errors and solutions for problems with the VOFM function.

To provide a good overview, this note is subdivided into the following subareas:

1. General information

1.1 Definition of terms

1.2 Application areas

1.3 A frank word on the "source code responsibility"

2. Technology

2.1 Introduction

2.2 Namespaces

2.2.1 SSCR object registration

2.3 Structure of a VOFM object

2.3.1 Include file with ABAP form routine

2.3.2 Table entries in TFRM and TFRMT

2.4 Calling VOFM objects

2.4.1 VOFM object carrier

2.5 Activation, generation and RV80HGEN

2.6 Transport

2.7 FAQs: Possible causes of errors and problems

Technical field names are displayed in angle brackets [].

Note that this note only explains the mode of operation of the VOFM in an R/3 Standard Core System. For R/3 industry solutions or Add-Ons the VOFM function displays a different behavior in subareas, however, this is not dealt with in this note.

Additional key words

VOFM, SAPMV80H, TFRM, TFRMT, RV80HGEN, XPRA, formulas, requirements, data transport routine, copy routine, data transfer.

Cause and prerequisites

1. General information

1.1 Definition of terms

Depending on the business processes used it may be necessary to influence the standard behavior of R/3 applications. For that purpose the VOFM function provides a corresponding environment in order to be able to develop and manage customer-specific logic simply.

The system stores the objects generated via the VOFM in the Customizing of the respective application area (Pricing, message determination and so on) and its programs call the objects correspondingly.

Also SAP delivers certain functions in the form of VOFM objects.

Consequently, the VOFM is an exit technology as explained in more detail in Note 381348.

1.2 Application areas

Typical VOFM objects are requirements, formulas and data transfer routines.

These are used in processes of the purchase order, the delivery, billing, price determination, material determination, message determination, the free goods, the pricing and of others.

In the entries of the R/3 core menu of Transaction VOFM you can find a precise overview of the supported application areas.

1.3 A frank word on the "source code responsibility"

As in user exits, in VOFM objects are many fields and tables available. Thus, the use of VOFM objects is very versatile and consequently also very critical under certain circumstances. For the use of "customer-specific" VOFM objects the statements in Note 381348 regarding the responsibility for customer enhancements (Maintenance responsibility, problems during the upgrade and so on) apply. Read this note carefully before you decide on the use of customer-specific VOFM objects. Errors and data inconsistencies that are caused by improper application or implementation of VOFM objects are not processed by the SAP Support but exclusively within the framework of the Consulting that has to be purchased separately.

2. Technology

2.1 Introduction

A VOFM object is uniquely defined via characteristics "group indicator" [GRPZE] and "group number" [GRPNO].

Here the group indicator, technically represented by a character field of length 4, is the logical connection to the calling environment.

Examples:

ABED copying requirement in the order

ADAT data transfer in the order

PBED requirements pricing

CASC Data transfer for sales activities

PBEK requirements account determination

CHRG requirements batches

REAK archiving for orders

VFCL Multi-dimensional scales

...

You can find all defined group indicators in the allowed values of the "GRPZE" domain in the ABAP Dictionary (Transaction SE11).

The group number can have a value from 1 to 999.

Exceptions are group indicators "PSTK" (= group key routine pricing) and "TDAT" (= data transfer for texts). For these the system can only assign group numbers from 1 to 99.

2.2 Namespaces

The VOFM has separate number ranges in order to distinguish VOFM objects delivered by SAP from customer-specific VOFM objects. These number ranges are often also called "VOFM namespaces".

However, note that this is not a "real namespace" that is protected by corresponding entries in system table "TRESC" (= reserved names for Customizing tables and Customizing objects). Instead, only the VOFM logic itself does the definition and check of the number ranges.

The following list displays the customer number ranges sorted according to group indicators:

Indicator Name Number range customer

FOFU Subsequent functions 900 - 999

PSTK Group key routines 50 - 99

TDAT Data transfer routines f. texts 50 - 99

all other group indicators 600 - 999

In Note 356737 you can find more information on the available VOFM number ranges.

2.2.1 SSCR object registration

VOFM objects are subject to SSCR registration (= SAP Software Change Registration).

The reason for that is the necessity that every VOFM object is physically assigned to that SAP development class, from whose programs a corresponding jump into the VOFM object later occurs.

If you use the VOFM interface the system makes the assignment automatically. An assignment of customer-specific development classes is not possible.

2.3 Structure of a VOFM object

A VOFM object consists of the following parts:

Include file with ABAP form routine

TFRM table entry

TFRMT table entry

2.3.1 Include file with ABAP form routine

In the ABAP form routine the desired function is programmed.

Example pricing value formula number 001:

Include name : FV64A001

Form routine : FRM_KONDI_WERT_001

Implementation: * * Profit margin considering rebate agreements

form frm_kondi_wert_001.

xkwert = komp-kzwi3 - komp-wavwr.

endform.

Dependending on the selected group indicator, the group number and the system type (SAP or customer system), the system assigns and generates the include name and form routine name automatically.

For this reason, standard routines delivered by SAP generally have a different structure of the include name than customer-specific routines.

Example:

SAP standard value formula for the pricing

=> prefix FV64A + object number with 3 places from 'SAP namespace'

=> for example FV64A001

Customer-specific value formula for the pricing

=> prefix RV64A + object number with 3 places from 'customer namespace'

=> for example RV64A905

2.3.2 Table entries in TFRM and TFRMT

The entries in tables TFRM and TFRMT belonging to a VOFM object are used for the status management and assignment. The system always analyzes them if the user calls Transaction VOFM or if a generation operation occurs (for details refer to section 2.5).

The system generates exactly one TFRM table entry per VOFM OBjekt. In this TFRM entry the following information is stored:

- Group indicator [GRPZE]

- Group number [GRPNO]

- Routine 'active' indicator [AKTIV_TFRM]

- Application [KAPPL]

- Date of the last generation [GNDAT]

- Time of the last generation [GNZEI]

Examples: GRPZE GRPNE AKTIV_TFRM KAPPL GNDAT GNZEI

PBED 001 X V 06/13/2001 09:06:39

TDAT 001 X 06/13/2001 09:06:39

CHRG 003 X 06/13/2001 09:06:39

... ... ... ... ... ...

The meaning of group indicators and group numbers has already been dealt with.

The 'active indicator' controls whether a VOFM object is 'active' or 'inactive'. Active VOFM objects have characteristic value AKTIV_TFRM = 'X', inactive objects have characteristic value AKTIV_TFRM = initial.

VOFM objects flagged as 'active' are 'known' to the calling program logic, that means they were included in the main program of the 'calling program' and can thus be addressed and processed during the runtime.

You cannot delete VOFM objects that are still 'active'. In this case you have to reset the active indicator manually before.

The content of the 'Application' field serves to filter the relevant VOFM objects in various display functions and Customizing functions.

Example: Condition value formula 010 'Relevant Price'. This formula has characteristic value 'MS' for the 'Application' field (= External Services Management purchasing). Therefore the object is not open for selection in the input help during the maintenance of pricing procedure SD (Transaction V/08), because this is a Customizing transaction assigned to application 'V' (= Sales and Distribution). Storing an application key is optional.

The generation date and the generation time record the time of the last registration of the VOFM object (the object carrier, refer to section 2.4.1).

In addition to the respective TFRM entry a VOFM object can have 'n' entries in table TFRMT. The entries are used for the storage of language-dependent object descriptions, which are structured as follows:

- Language key [SPRAS]

- Group indicator [GRPZE]

- Group number [GRPNO]

- Description [BEZEI]

Examples: SPRAS GRPZE GRPNO BEZEI

D PBED 001 Regulierer abweich.

E PBED 001 Different payer

... ... ... ...

The system supplies the language key automatically with the logon language of the user during the creation of a new VOFM object.

The length of the object description is limited to 20 characters.

Important! A VOFM object is only consistent if both the Include file with ABAP form routine and a corresponding TFRM table entry exist. Entries in table TFRMT are optional.

2.4 Calling VOFM objects

As mentioned above, VOFM objects are called directly by the application logic of R/3 standard programs. Technically this is implemented by ABAP statement 'PERFORM ... IN PROGRAM'. With the aid of this statement you can specify both the name of the subroutine and the main program dynamically (during the runtime).

Example: Call of a condition value formula from the pricing

...

if xkomv-kofrm ne 0. <<< formula reference existing?

xkwert = xkomv-kwert. <<< act. value in work variable

frm_kondi_wert-nr = xkomv-kofrm. <<< set up object names

perform (frm_kondi_wert) in program saplv61a if found. <<<call

xkomv-kwert = xkwert. <<<result value assignment

endif.

...

In the example above the subroutine is determined by the contents of variable 'FRM_KONDI_WERT'; the main program, which is to be searched for the form routine, is SAPLV61A.

If the called routine is not known in the main program, a program termination with the title 'PERFORM_NOT_FOUND' occurs. Therefore some users of the VOFM technology call ABAP statement 'PERFORM ... IN PROGRAM' together with the addition 'IF FOUND', which has the effect that a jump into the form routine is only executed if this in fact exists in the main program. This does indeed prevent a program termination, however, the result of the overall process may deviate from the result expected by the user, because in this case the system does not execute the source code implemented in the VOFM object.

2.4.1 VOFM 'object carrier'

Object carriers are required to make a VOFM object 'known' in the main program of the calling program (refer to section 2.4). The object carrier is integrated in the main program of the calling program as an independent include (for example SAPLV61A, SAPMV45A and so on).

Example: Inclusion of object carriers for word processing in SD

documents; Program 'SAPLV45T'

...

*******************************************************************

  • System-defined Include-files. *

*******************************************************************

INCLUDE LV45TTOP. "Global Data

INCLUDE LV45TDEF.

INCLUDE LV45TUXX. "Function Modules

INCLUDE LV45TNNN. <<< 'carrier' copy requirements for texts

INCLUDE LV45TENN. <<< 'carrier' copy routines for texts

...

Every active VOFM object (for an explanation on the active indicator refer to section 2.3.2) must be registered in the 'carrier'. The system writes standard VOFM objects delivered by SAP directly into the 'carrier', VOFM objects from the number range reserved for customers (refer to section 2.2 'Namespaces') are sorted into a 'sub-include' included in the carrier.

Exactly one carrier exists per group indicator. The names of all defined object carriers are hard-coded in program MV80HF0A, form routine 'AKTIVIEREN_TRAEGER_SETZEN'. Here the names of the sub-include for customer-specific VOFM objects belonging to the main carrier are also defined.

Example: Carrier object 'FV63ANNN' for the registration of condition basis formulas in the pricing (Program SAPLV61A)

FV63ANNN

<<< main

carrier-include

|-INCLUDE RV63ANNN. "User-Routinen <<< sub-include customer objects

| |- INCLUDE RV63A910. "Customer specific

| |- INCLUDE RV63A911. "Customer specific

| |- INCLUDE RV63A912. "Customer specific

| |- ...

|- INCLUDE FV63A001. "Volume

|- INCLUDE FV63A002. "Net value

|- INCLUDE FV63A003. "Net Price

|- INCLUDE FV63A004. "Net Value Plus Tax

|- INCLUDE FV63A005. "KZWI1

|- ...

Because the content of the VOFM object carriers is automatically created source code, you should avoid manual changes to them.

SAP notes, which suggest manual changes to the object carriers, are therefore also incorrect. However, if you nevertheless receive such a note to solve a problem, contact the SAP Support with a reference to this note.

2.5 Activation, generation and RV80HGEN

The 'activation' is the inclusion of an VOFM object in an object carrier. A 'deactivation' results in the removal of the VOFM object from the object carrier. The overall process for the creation of a current object carrier is often called 'generation'.

Generally the activation or generation fall into three types.

- Individual activation

- Collective activation

- Generation of object carriers via report RV80HGEN

The 'individual activation' causes the registration of an individual VOFM object in the corresponding object carrier. Which object carrier is relevant is determined with the aid of the group indicator and the group number. In addition to the entry of the VOFM object in the object carrier the system writes the date and time of the generation into table TFRM (refer also to section 2.3.2).

You can start the individual activation only manually. It is always always executed when a user selects a line within the VOFM editing interfaces and afterwards selects activity 'Activate' from the 'Edit' menu.

The 'collective activation' causes the registration of all VOFM objects that belong to a certain group indicator. Analog to the individual activation the system determines the relevant object carrier automatically and writes date and time into table TFRM. The 'collective activation' is a process which you can start also only manually. For this purpose, choose activity 'Activate all' from the 'Edit' menu.

During the generation via report RV80HGEN the system sets up the object carriers of all defined group indicators again. However, the system includes only those VOFM objects that have set the 'active' indicator in the corresponding TFRM table entry. Nonactive VOFM objects are not included in object carriers during the generation via report RV80HGEN. Due to the quantity of the data to be processed, the generation via RV80HGEN can take between 0,5 and >5 minutes (depending on the system and the constellation).

Because the RV80HGEN is defined as 'XPRA', it is executed automatically during a system upgrade.

You can also use this XPRA feature for the transport of VOFM objects in order to implement an automatic update of the object carriers after the import of VOFM objects into the target system (section 2.6 provides more details on the transport).

Both the collective activation and the activation via report RV80HGEN technically revert to the program components of the individual activation. For the separate control of the individual activation types form routine AKTIVIEREN_EINZELN (Include MV80HF0A) has a 'USING' parameter, which can have the following characteristic values:

'E' Activate individually

'A' Activate all (= collective activation)

' ' Deactivate individually

During the generation via RV80HGEN the system executes a collective activation for every group indicator sequentially, that means a call of form routine AKTIVIEREN_EINZELN with characteristic value 'A'.

2.6 Transport

If you want to transfer VOFM objects from one system (= source) into another system (= target), this is generally made with an object transport. As of Release 4.0, the VOFM function has a connection to the SAP 'Change and Transport System' (CTS) in order to simplify the transfer process for the user. By the transport connection the system automatically adds newly created or changed VOFM objects to the object list of a transport request which was selected by the user before.

All steps necessary for the execution of a VOFM transport are described in detail in Note 22808 'Transferring formulas'. Note that steps 1-4 are only needed if the VOFM maintenance environment providesno automatic connection to the transport system or if you want to combine a transport request manually. In any case you must execute step 5, regardless of how the transport request was created.

In addition to Note 22808, Note 385067 contains an overview for releases >= 4.6C regarding which sorts of tasks and object entries are required in a transport request (depending on the activity carried out (create/change/activate/deactivate/delete)) in order to transport a VOFM object successfully.

2.7 FAQs: Possible causes of errors and problems

This chapter deals with the most frequent errors and problems that occur when using the VOFM function and its objects. If problems arise for which this note provides no explanation or solution, create an OSS message on component CA-GTF-BS-VOFM and send it to the SAP Support.

(01) Question/problem:

During the order processing, in the shipping, LIS, billing and so on a program termination with error message: PERFORM_NOT_FOUND occurs when you call a VOFM object. This symptom can occur for all users of VOFM objects.

(01) Answer:

The used VOFMobject is not known in the main program of the calling program and thus cannot be addressed. Details on the call method of VOFMobjects are described in section 2.4 of this note. Note 28683 describes how to correct this error.

(02) Question/problem:

Even though report RV80HGEN was executed, the VOFMobject is not registered in the object carrier. Why?

(02) Answer:

During the setup of the object carriers via RV80HGEN the system includes only VOFMobjects which have set the 'active indicator' (refer to section 2.3.2). If the active indicator for the corresponding object is not set, the RV80HGEN does not process the VOFMobject. Solution: Set the active indicator for the respective object and start the RV80HGEN again.

(03) Question/problem:

The syntax check in the ABAP form routine of an VOFM object displays syntax errors.

(03) Answer:

Note the explanations on the work method of the syntax check in Note 393012. In addition, the restrictions of the SAP maintenance responsibility to customer-specific VOFM objects (described in section 1.3) apply.

(04) Question/problem:

When you create/change VOFM objects the system requires an SSCRregistration key, even though the VOFM is within the 'customer namespace'.

(04) Answer:

Refer to the explanations given in section 2.2. 1 'Registration'.

(05) Question/problem:

In which namespace can I create customer-specific VOFM objects? Or: Which routine numbers are reserved for customers?

(05) Answer:

Refer to Note 356737, in addition refer to the explanations in section 2.2 'Namespaces'.

(06) Question/problem:

Is it possible to assign VOFM objects to own development classes?

(06) Answer:

No. Refer also to section 2.2.1

(07) Question/problem:

When you create a VOFM object the system displays information message TR 015 'Object can only be created in SAP development class'.

(07) Answer:

This is no error. Refer to section 2.2.1. and the answer to question number 5.

(08) Question/problem:

How can I transport VOFM objects via the Change and Transport System ?

(08) Answer:

The steps necessary for a successful transport are described in detail in Note 22808.

(09) Question/problem:

The used transport request does not contain an entry for the VOFM object carrier in the object list (for example RV61ANNN, FV45ANNN ...)

(09) Answer:

The object carriers must not be transported. Instead, a setup of a current object carrier suitable for this system is required in the target system. For details refer to Note 22808, step 5 as well as section 2.4.1 and 2.5 of this note.

(10) Question/problem:

How are VOFM objects deleted? And can deletions of VOFM objects also be transported?

(10) Answer:

You should delete VOFM objects only via the editing interface of the VOFM function. Only this way it is ensured that all subobjects (ABAP form routine, TFRM and TFRMT table entries) are completely removed.

You can also transport the deletion youmade into an additional system. For that purpose, the setup of an object list in a transport request analog to the creation (refer to Note 22808) is required.

During the deletion of objects the system deletes the object in the source system. At the time of the export the export program (R3trans) notes that the object does not exist any more. In this case the system enters a "D" into the 'Object function' field in the corresponding entry in the object list of the transport request.

The deletion of table entries is made analog to the deletion of objects. First delete the keys in the source system. Then specify the deleted keys in the request. At the time of the export the transport program notes that the specified keys do not exist any more and deletes them in the target system. If you combine the object list of the transport request manually, you must set the object function of the individual entries correspondingly. To do that, proceed as described in the F1 help of the 'Object function' field.

(11) Question/problem:

During the creation of VOFMobjects the system requires a transport request which contains a task of the 'Repair' category. The system displays message TK 181 'Repair &1 may only contain repaired objects'.

(11) Answer

This problem is caused by a program error. Implement the corrections of Note 326560 or Note 385067 depending on your release.

(12) Question/problem:

During the creation the system displays message TK 112 'Edit objects separately since they belong to different original systems'.

(12) Answer:

This problem is caused by a program error. Implement the corrections of Note 326560 or Note 385067 depending on your release.

(13) Question/problem:

When you create or activate VOFM objects the system displays message: 'Report/PROGRAM statement is missing or program type is INCLUDE?'.

(13) Answer:

This problem is caused by a program error. Implement the corrections of Note 326560 or Note 385067 depending on your release.

(14) Question/problem:

Why does the system generate VOFM objects with source system 'SAP'?

(14) Answer:

Design. The entire VOFM logic depends extremely on basis functions like transport, object directory entries, generation and so on. Because VOFM objects are inserted in SAP standard development classes, these receive ID 'SAP' for source system during the generation process. This cannot be avoided and does not affect the VOFM function.

(15) Question/problem

The system does not insert report RV80HGEN automatically as XPRA into the object list of a transport request.

(15) Answer

Whether the system inserts report RV80HGEN automatically into the object list of the transport request depends on the release you use. For Releases 4.0A to 4.6B the system generates a corresponding entry, provided that all corrections for the VOFM function exist in the system. As of Release 4.6C the basis function of the 'Change & Transport System' (CTS) does not support the automatic insertion of objects of the 'XPRA' category into an object list any more. If you want an automatic registration of the transported routines in the target system, proceed as described in Note 22808, step 5.

(16) Question/problem:

During the activation of VOFM objectsa termination occurs or the system requires a registration key for additional VOFM objects, even if they were not changed.

(16) Answer:

There are inconsistent VOFM objects in the system (refer also to section 2.3.), that means table TFRMcontains entries for which no include with corresponding ABAP form routine exist.

If the termination occurs for VOFM objectsfrom the SAP namespace, this is normally due to a delivery error as described, for example, in Notes 395600 and 0403705. Check whether already a corresponding note exists for the affected VOFMobject. If not, contact the SAP Support.

If the problem occurs for customer-specific routines, the inconsistency is mostly due to a handling or transport error. For example the deletion of VOFMincludes via Transaction SE38has the effect that the system does delete the form routine and the corresponding include, however the system does not delete the entries in tables TFRM and TFRMT. Inconsistencies can also occur due to incomplete or incorrect object lists in transport requests. You can make a correction by newly creating the same object via the VOFM interface or be deletion analog to the method described in Note 395600.

(17) Question/problem:

During the import of Support Packages or during the system upgrade, customer-specific VOFM objects were overwritten or are missing completely.

(17) Answer:

First, check whether the missing VOFMobjects are really missing and if yes, whether all or only certain subobjects do not exist anymore (refer to section 2.3). if the VOFMobject is completely there, generally only a new setup of the object carriers is required. Read section 2.5 'Activation, generation and RV80HGEN' to learn which options exist for this purpose.

If there is indeed a VOFM object but ifthe source code of the ABAP form routine does not correspond to the customer-specific, this is a delivery error. However, you can reconstruct the customer-specific source code with the version management. Proceed as follows: call the ABAP Editor for the affected objects by using Transaction SE38. Afterwards branch into menu 'UTILITIES' -> 'VERSIONS' -> 'VERSION MANAGEMENT'. Deselect the version delivered by SAP and select your original, customer-specific version instead. Choose 'RETRIEVE' to restore this version.

Delivery errors of this type are documented by notes. If there is no corresponding note for the overwritten object in the OSS, contact the SAP Support.

(18) Question/problem:

In the display of the Object Navigator (Transaction SE80) the system does not display newly created VOFM objects. On the other hand, it can also occur that deleted VOFM objects are still contained in the Object Navigator.

(18) Answer:

The Object Navigator displays an obsolete status (refer also to Note 15447). Choose button 'Refresh object list' above the tree structure in order to correct this inconsistency.

(19) Question/problem:

Is it possible to delete VOFM objects delivered by SAP in the standard?

(19) Answer:

Yes. However, because of separate number ranges for VOFM objects SAP does not recommend a deletion of SAP standard objects.

(20) Question/problem:

Which maintenance responsibility has SAP for customer-specific VOFM objects?

(20) Answer:

None. Refer to the explanations in section '1. 3 A frank word on the "source code responsibility"'. According to Note 381348 this includes also VOFMobjects whose creation wasbased on notes of the 'Consulting' or 'Workaround for missing function' category.

(21) Question/problem:

Where can I get help, if my customer-specific VOFM object does not work as expected?

(21) Answer:

If you need support during the implementation of customer-specific VOFM objects you can contact the SAP Remote Consulting. Please understand that SAP cannot check VOFM objectswithin the framework of the normal support.

13 REPLIES 13

Former Member
0 Kudos

http://www.saptechsolutions.com/pdf/VOFMCopyRequirementRoutines.pdf

http://sap.ittoolbox.com/groups/technical-functional/sap-r3-dev/38996#

http://www.sap-img.com/sap-sd/quantity-based-discounts-in-bulk-quantities.htm

http://help.sap.com/saphelp_erp2005/helpdata/en/a1/78268609e811d2956400a0c9306667/frameset.htm

prosedure....

1) deletion

(2) Re-creation

(3) code adjustments

-- already done --

4) Activate the include (CTRL-F3 in editor)

5) Check if routine is logical active (TFRM-AKTIV), activate if necessary

6) run RV80HGEN

This should be enough.

If not, check if RV60CNNN contains include RV60C901.

(Include RV60CNNN is in include FV60CNNN)

Have a look at program SAPFV60C. Try rebuilding object list (SE80, right mouse-click on SAPFV60C -> other functions->rebuild object list)

Former Member
0 Kudos

Negi,

I Know the procedure well.

<b>I wud b greatful if any body provides exact answers to my queries.</b>

Thanks in advance.

Regards,

Raja.

vinod_gunaware2
Active Contributor
0 Kudos

Hi

1. I have worked on VOFM for condition value. So as per my understanding suppose I have developed one routine for pricing then I will have to attach to particular pricing condition. Then my code will work only when any one add that pricing condition. It will not affect other SAP functionality. It is same like USE EXIT. And in routine u can change <b>sy-subrc (whether that pricing process should apply or not) or XWERT</b> such kind variables to modify the content not all variables.

2. So depending upon requirement it may be possible that same coding will appear in more than one routine.

3. I don’t about routine RV80HGEN but u have to activate routine (<b>Edit-> activate</b>) attached that routine in <b>SPRO</b>.

4. <b>900-999</b> is series to define user-defined routine apart form standard.

5. U avoid to change standard code because if u change standard code then SAP will give support for that code. And INSERT DELETE which same like <b>VERSION management.</b>U can view <b>EDIT->Modification operations -> Modification overview.</b>

Hope this will be useful.

regards

vinod

Former Member
0 Kudos

Hello Raja,

Please refer to note 156230. It will explain u most of the VOFM related to queries specially ur Q2. If u don't have access let me know I will paste the page.

<a href="http://SAP Service Marketplace - Requirements What is permitted, what is not">Req.</a>

Former Member
0 Kudos

Abhijit,

Please paste the info since i dont have access to the same.

Thanks in advance.

Regards,

Raja.

Former Member
0 Kudos

Hello Raja,

Here we go..

1. Implementation in the source code

With the maintenance of Requirements & Formulas (Transaction VOFM), menu option 'Requirement -> Pricing', button 'Source text', you get tothe ABAP editor. Every requirement is represented by a three-digit number xxx (001 to 999). Note that for formulas and requirements, the customer name range starts with 600.

Every requirement xxx in pricing consists of two FORM routines:

The precondition (FORM name KOBEV_xxx)

This is checked on header level and therefore is only a necessary requirement that the condition type or the access is taken intoaccount at all.

And the actual requirement (FORM name KOBED_xxx)

This is checked during processing on item level and it finally determines whether condition type or access is taken into account.

The (pre)conditions are contained in Include LV61Axxx (SAP name range) or in Include RV61Axxx (customer name range). Since these Includes are contained in program SAPLV61A, here you can basically (that is, from the technical point of view) access all fields and tables which the pricing can also access. For restrictions see further down below.

In a (pre)condition, set system field SY-SUBRC to zero if the testresult is correct. The system interprets an SY-SUBRC unequal to zero asif the requirement does not apply.

1. Storing in the pricing procedure or in the access sequence

At two different positions you can use the requirements:

In the Customizing of the pricing procedure, for every condition typeyou can store a requirement which determines whether or not this condition type should be used in the document.

You can also store a requirement in the Customizing of the access sequence for every access (that is, for every condition table or key combination).

1. Program flow and restrictions

The (pre)conditions are checked when you set up the internal tables from the Customizing tables of the pricing procedure (table T683S, Transaction V/08) and the accesses (table T682I, Transaction V/07). There are four different callup points.

a) Header: Precondition from pricing procedure

During the line by line processing of the pricing procedure, the systemchecks the precondition first (T683S-KOBED). This is a preselection whether or not this condition type may generally occur for the document items. If SY-SUBRC equals zero here, this condition type is included in internal table KOMT1. Here only header fields (structure KOMK) may be checked. Note that the headers of tables T685 and T685A are not yet filled here, thus no checks for the Customizing of the condition type may be carried out.

Also note that the check of the precondition at this time is carried out to improve the performance. However, this 'buffer mechanism' is only available in certain constellations and depends on the calling application as well as on the pricing type. For this reason it is not sufficient to implement a certain check logic only in the precondition. The identical checks must also be a part of the main requirement. Example: see SAP R/3standard requirements 001, 008, etc.

b) Header: Precondition from access sequence

Next, the precondition from the access is checked(T682I-KOBED). If SY-SUBRC equals zero here, this access is included in internal table KOMT2. Otherwise, when the condition records are accessed later, the corresponding condition table is not taken into account at all. Here also only header fields (structure KOMK) can be checked.

The precondition from the access sequence is always checked if the field assignment for the access sequence only contains header fields (structure KOMK). However, if the field assignment contains at least one item field, the precondition is only carried outif in Customizing the access was optimized (in the IMG with the suboption 'Define access sequences' -> 'Optimize accesses', TransactionOVU0), that is, if a corresponding entry exists in table T682V.

c) Item: Requirement from pricing procedure

The requirement from the pricing procedure (T683S-KOBED) is checked for every document item. Thus, in addition to header fields (structure KOMK), item fields can also be checked here (structure KOMP).

d) Item: Requirement from access sequence

The requirement from the access (T682I-KOBED) is also checked for everydocument item. Here you can also use KOMP fields in addition to KOMK fields.

Only if all four (pre)conditions are fulfilled (SY-SUBRC = zero), forthis condition type the system searches for condition records. This makes clear that in the requirements you cannot use fields from the found condition records (for example, STFKZ, KZNEP).

Only after the search for condition records has been carried outfor all conditions, the pricing with the valuation starts. Here also fields KOMP-KZWI1, XWORKA, and so on are filled. This in particular means thatin the (pre)conditions there may also be no check for these fields. In addition, only at this time important data from the document or the document item are available in the pricing fields, for example the quantity. Thesemay also not be called in the (pre)conditions.

1. Programming details

When you call up pricing (for example, with function module PRICING),the requirements are called as follows:

CONDITION PRELIMINARY STEP

Loop over the pricing procedure (T683S)

Call KOBEV_{T683S-KOBED} and check SY-SUBRC EQ 0

Derivation of KOMT1 with fields from T685 and T685A

KOMT2_AUFBAUEN

Loop over the accesses (T682I)

Check table T682V (if item fields in access)

Call KOBEV_{T682V-KOBED} and check SY-SUBRC EQ 0

APPEND KOMT2

APPEND KOMT1

XKOMV_AUFBAUEN_AUS_KOMT1

Loop over KOMT1

Call KOBED_{KOMT1-KOBED} and check SY-SUBRC EQ 0

KONDITIONEN_LESEN

Call KOBED_{KOMT2-KOBED} and check SY-SUBRC EQ 0

Former Member
0 Kudos

Thanks Abhijit very helpful answer.

<b>Still i need to have clarification on 3,4 & 5 Questions.</b>

<b>the custom number series starts from 600 or 900-999?</b>.

Regards,

Raja.

Message was edited by: raja gurrala

Message was edited by: raja gurrala

vinod_gunaware2
Active Contributor
0 Kudos

Hi

User define Number Series Start from <b> 900-999</b> .

But u need <b>access key</b> for that purpose.

U have to give access and <b>aaplication(eg. sales is V)</b> and active<b> (Edit-> activate)</b>

And INSERT DELETE which same like VERSION management.U can view <b>EDIT->Modification operations -> Modification overview.</b> Without tranport u can check how many user already modified same code.

U can switch off that assisent (i.e. Insert delete)

<b>EDIT->Modification operations->Switch off assistant</b>

Actually that provision give by SAP to do modification in SAP standard functionality.

As far as requiement u have just set sy-subrc 4 for particular condition for which u dont want excute that pricing process.

regards

vinod

Former Member
0 Kudos

Hi vinod,

i am confused.see the below paragraph which is extracted from OSS notes.

"With the maintenance of Requirements & Formulas (Transaction VOFM), menu option 'Requirement -> Pricing', button 'Source text', you get tothe ABAP editor. Every requirement is represented by a three-digit number xxx (001 to 999). <b>Note that for formulas and requirements, the customer name range starts with 600."</b>.

So i wud like to know dif between terms like custom number series or user defined number series...if any thing exists..

Regards,

Raja.

Former Member
0 Kudos

Hello Raja,

3. U need to run this program for activating the routine. WIthout activation u will not be able to use them in the procedures. When u transport the routines to ur other system and if the routines remain inactive u can use this program to activate them.

4 as per the SAP note.

<b></b>With Transaction VOFM, you can maintain different formula types which are distinguished internally by the group indicator. However, the customer name range stored in the TRESC table only refers to the subsequent functions of the requirements (GRPZE = 'FOFU').

The following list shows the customers namespace for the different formula types:

GRPZE = 'FOFU':: 900-999 (Subsequent functions)

GRPZE = 'PSTK':: 50-99 (Group key routines)

GRPZE = 'TDAT':: 50-99 (Data transfer routines for texts)

All others: 600-999

<b></b>

5. Why modify u can copy it into cutome and use it.

Abhijit

Former Member
0 Kudos

Hi Abhijit,

Thanks again,ur clarification helped me a lot.

Number series name space which u've given is a bit tough to understand and implement the same, as novice like me.

can u clarify that in simple manner..by mentioning clearly for formulas ---XXX-XXX

Data transfer routine -- XXX- XXX

copy routines -- XXX - XXX

requirements -- XXX - XXX

i am asking all these for customer name space, which we can use for creating new stuff.This is enough for me to close the thread.

Regards,

Raja.

Former Member
0 Kudos

Hello Raja,

As indicated only for the following as indicated number range is allowed for rest it is 600-999.

Name Number

Subsequent functions 900 - 999

Group key routines 50 - 99

Data transfer routines f. texts 50 - 99

<b></b>all other group indicators 600 - 999

<b></b>

I am attaching another note which deals with VOFM problem. Keep this with u as it will prove useful.

<b></b> SAP Note 327220<b></b>

This note is an explanation of function "Maintain: Requirements and Formulas", which is also known as "VOFM".

By using descriptions and examples, this note explains how the VOFM function works in the R/3 Standard System, which objects are related to it and which restrictions exist.

Chapter 2.7 explains possible causes of errors and solutions for problems with the VOFM function.

To provide a good overview, this note is subdivided into the following subareas:

1. General information

1.1 Definition of terms

1.2 Application areas

1.3 A frank word on the "source code responsibility"

2. Technology

2.1 Introduction

2.2 Namespaces

2.2.1 SSCR object registration

2.3 Structure of a VOFM object

2.3.1 Include file with ABAP form routine

2.3.2 Table entries in TFRM and TFRMT

2.4 Calling VOFM objects

2.4.1 VOFM object carrier

2.5 Activation, generation and RV80HGEN

2.6 Transport

2.7 FAQs: Possible causes of errors and problems

Technical field names are displayed in angle brackets [].

Note that this note only explains the mode of operation of the VOFM in an R/3 Standard Core System. For R/3 industry solutions or Add-Ons the VOFM function displays a different behavior in subareas, however, this is not dealt with in this note.

Additional key words

VOFM, SAPMV80H, TFRM, TFRMT, RV80HGEN, XPRA, formulas, requirements, data transport routine, copy routine, data transfer.

Cause and prerequisites

1. General information

1.1 Definition of terms

Depending on the business processes used it may be necessary to influence the standard behavior of R/3 applications. For that purpose the VOFM function provides a corresponding environment in order to be able to develop and manage customer-specific logic simply.

The system stores the objects generated via the VOFM in the Customizing of the respective application area (Pricing, message determination and so on) and its programs call the objects correspondingly.

Also SAP delivers certain functions in the form of VOFM objects.

Consequently, the VOFM is an exit technology as explained in more detail in Note 381348.

1.2 Application areas

Typical VOFM objects are requirements, formulas and data transfer routines.

These are used in processes of the purchase order, the delivery, billing, price determination, material determination, message determination, the free goods, the pricing and of others.

In the entries of the R/3 core menu of Transaction VOFM you can find a precise overview of the supported application areas.

1.3 A frank word on the "source code responsibility"

As in user exits, in VOFM objects are many fields and tables available. Thus, the use of VOFM objects is very versatile and consequently also very critical under certain circumstances. For the use of "customer-specific" VOFM objects the statements in Note 381348 regarding the responsibility for customer enhancements (Maintenance responsibility, problems during the upgrade and so on) apply. Read this note carefully before you decide on the use of customer-specific VOFM objects. Errors and data inconsistencies that are caused by improper application or implementation of VOFM objects are not processed by the SAP Support but exclusively within the framework of the Consulting that has to be purchased separately.

2. Technology

2.1 Introduction

A VOFM object is uniquely defined via characteristics "group indicator" [GRPZE] and "group number" [GRPNO].

Here the group indicator, technically represented by a character field of length 4, is the logical connection to the calling environment.

Examples:

ABED copying requirement in the order

ADAT data transfer in the order

PBED requirements pricing

CASC Data transfer for sales activities

PBEK requirements account determination

CHRG requirements batches

REAK archiving for orders

VFCL Multi-dimensional scales

...

You can find all defined group indicators in the allowed values of the "GRPZE" domain in the ABAP Dictionary (Transaction SE11).

The group number can have a value from 1 to 999.

Exceptions are group indicators "PSTK" (= group key routine pricing) and "TDAT" (= data transfer for texts). For these the system can only assign group numbers from 1 to 99.

2.2 Namespaces

The VOFM has separate number ranges in order to distinguish VOFM objects delivered by SAP from customer-specific VOFM objects. These number ranges are often also called "VOFM namespaces".

However, note that this is not a "real namespace" that is protected by corresponding entries in system table "TRESC" (= reserved names for Customizing tables and Customizing objects). Instead, only the VOFM logic itself does the definition and check of the number ranges.

The following list displays the customer number ranges sorted according to group indicators:

Indicator Name Number range customer

FOFU Subsequent functions 900 - 999

PSTK Group key routines 50 - 99

TDAT Data transfer routines f. texts 50 - 99

all other group indicators 600 - 999

In Note 356737 you can find more information on the available VOFM number ranges.

2.2.1 SSCR object registration

VOFM objects are subject to SSCR registration (= SAP Software Change Registration).

The reason for that is the necessity that every VOFM object is physically assigned to that SAP development class, from whose programs a corresponding jump into the VOFM object later occurs.

If you use the VOFM interface the system makes the assignment automatically. An assignment of customer-specific development classes is not possible.

2.3 Structure of a VOFM object

A VOFM object consists of the following parts:

Include file with ABAP form routine

TFRM table entry

TFRMT table entry

2.3.1 Include file with ABAP form routine

In the ABAP form routine the desired function is programmed.

Example pricing value formula number 001:

Include name : FV64A001

Form routine : FRM_KONDI_WERT_001

Implementation: * * Profit margin considering rebate agreements

form frm_kondi_wert_001.

xkwert = komp-kzwi3 - komp-wavwr.

endform.

Dependending on the selected group indicator, the group number and the system type (SAP or customer system), the system assigns and generates the include name and form routine name automatically.

For this reason, standard routines delivered by SAP generally have a different structure of the include name than customer-specific routines.

Example:

SAP standard value formula for the pricing

=> prefix FV64A + object number with 3 places from 'SAP namespace'

=> for example FV64A001

Customer-specific value formula for the pricing

=> prefix RV64A + object number with 3 places from 'customer namespace'

=> for example RV64A905

2.3.2 Table entries in TFRM and TFRMT

The entries in tables TFRM and TFRMT belonging to a VOFM object are used for the status management and assignment. The system always analyzes them if the user calls Transaction VOFM or if a generation operation occurs (for details refer to section 2.5).

The system generates exactly one TFRM table entry per VOFM OBjekt. In this TFRM entry the following information is stored:

- Group indicator [GRPZE]

- Group number [GRPNO]

- Routine 'active' indicator [AKTIV_TFRM]

- Application [KAPPL]

- Date of the last generation [GNDAT]

- Time of the last generation [GNZEI]

Examples: GRPZE GRPNE AKTIV_TFRM KAPPL GNDAT GNZEI

PBED 001 X V 06/13/2001 09:06:39

TDAT 001 X 06/13/2001 09:06:39

CHRG 003 X 06/13/2001 09:06:39

... ... ... ... ... ...

The meaning of group indicators and group numbers has already been dealt with.

The 'active indicator' controls whether a VOFM object is 'active' or 'inactive'. Active VOFM objects have characteristic value AKTIV_TFRM = 'X', inactive objects have characteristic value AKTIV_TFRM = initial.

VOFM objects flagged as 'active' are 'known' to the calling program logic, that means they were included in the main program of the 'calling program' and can thus be addressed and processed during the runtime.

You cannot delete VOFM objects that are still 'active'. In this case you have to reset the active indicator manually before.

The content of the 'Application' field serves to filter the relevant VOFM objects in various display functions and Customizing functions.

Example: Condition value formula 010 'Relevant Price'. This formula has characteristic value 'MS' for the 'Application' field (= External Services Management purchasing). Therefore the object is not open for selection in the input help during the maintenance of pricing procedure SD (Transaction V/08), because this is a Customizing transaction assigned to application 'V' (= Sales and Distribution). Storing an application key is optional.

The generation date and the generation time record the time of the last registration of the VOFM object (the object carrier, refer to section 2.4.1).

In addition to the respective TFRM entry a VOFM object can have 'n' entries in table TFRMT. The entries are used for the storage of language-dependent object descriptions, which are structured as follows:

- Language key [SPRAS]

- Group indicator [GRPZE]

- Group number [GRPNO]

- Description [BEZEI]

Examples: SPRAS GRPZE GRPNO BEZEI

D PBED 001 Regulierer abweich.

E PBED 001 Different payer

... ... ... ...

The system supplies the language key automatically with the logon language of the user during the creation of a new VOFM object.

The length of the object description is limited to 20 characters.

Important! A VOFM object is only consistent if both the Include file with ABAP form routine and a corresponding TFRM table entry exist. Entries in table TFRMT are optional.

2.4 Calling VOFM objects

As mentioned above, VOFM objects are called directly by the application logic of R/3 standard programs. Technically this is implemented by ABAP statement 'PERFORM ... IN PROGRAM'. With the aid of this statement you can specify both the name of the subroutine and the main program dynamically (during the runtime).

Example: Call of a condition value formula from the pricing

...

if xkomv-kofrm ne 0. <<< formula reference existing?

xkwert = xkomv-kwert. <<< act. value in work variable

frm_kondi_wert-nr = xkomv-kofrm. <<< set up object names

perform (frm_kondi_wert) in program saplv61a if found. <<<call

xkomv-kwert = xkwert. <<<result value assignment

endif.

...

In the example above the subroutine is determined by the contents of variable 'FRM_KONDI_WERT'; the main program, which is to be searched for the form routine, is SAPLV61A.

If the called routine is not known in the main program, a program termination with the title 'PERFORM_NOT_FOUND' occurs. Therefore some users of the VOFM technology call ABAP statement 'PERFORM ... IN PROGRAM' together with the addition 'IF FOUND', which has the effect that a jump into the form routine is only executed if this in fact exists in the main program. This does indeed prevent a program termination, however, the result of the overall process may deviate from the result expected by the user, because in this case the system does not execute the source code implemented in the VOFM object.

2.4.1 VOFM 'object carrier'

Object carriers are required to make a VOFM object 'known' in the main program of the calling program (refer to section 2.4). The object carrier is integrated in the main program of the calling program as an independent include (for example SAPLV61A, SAPMV45A and so on).

Example: Inclusion of object carriers for word processing in SD

documents; Program 'SAPLV45T'

...

*******************************************************************

  • System-defined Include-files. *

*******************************************************************

INCLUDE LV45TTOP. "Global Data

INCLUDE LV45TDEF.

INCLUDE LV45TUXX. "Function Modules

INCLUDE LV45TNNN. <<< 'carrier' copy requirements for texts

INCLUDE LV45TENN. <<< 'carrier' copy routines for texts

...

Every active VOFM object (for an explanation on the active indicator refer to section 2.3.2) must be registered in the 'carrier'. The system writes standard VOFM objects delivered by SAP directly into the 'carrier', VOFM objects from the number range reserved for customers (refer to section 2.2 'Namespaces') are sorted into a 'sub-include' included in the carrier.

Exactly one carrier exists per group indicator. The names of all defined object carriers are hard-coded in program MV80HF0A, form routine 'AKTIVIEREN_TRAEGER_SETZEN'. Here the names of the sub-include for customer-specific VOFM objects belonging to the main carrier are also defined.

Example: Carrier object 'FV63ANNN' for the registration of condition basis formulas in the pricing (Program SAPLV61A)

FV63ANNN

<<< main

carrier-include

|-INCLUDE RV63ANNN. "User-Routinen <<< sub-include customer objects

| |- INCLUDE RV63A910. "Customer specific

| |- INCLUDE RV63A911. "Customer specific

| |- INCLUDE RV63A912. "Customer specific

| |- ...

|- INCLUDE FV63A001. "Volume

|- INCLUDE FV63A002. "Net value

|- INCLUDE FV63A003. "Net Price

|- INCLUDE FV63A004. "Net Value Plus Tax

|- INCLUDE FV63A005. "KZWI1

|- ...

Because the content of the VOFM object carriers is automatically created source code, you should avoid manual changes to them.

SAP notes, which suggest manual changes to the object carriers, are therefore also incorrect. However, if you nevertheless receive such a note to solve a problem, contact the SAP Support with a reference to this note.

2.5 Activation, generation and RV80HGEN

The 'activation' is the inclusion of an VOFM object in an object carrier. A 'deactivation' results in the removal of the VOFM object from the object carrier. The overall process for the creation of a current object carrier is often called 'generation'.

Generally the activation or generation fall into three types.

- Individual activation

- Collective activation

- Generation of object carriers via report RV80HGEN

The 'individual activation' causes the registration of an individual VOFM object in the corresponding object carrier. Which object carrier is relevant is determined with the aid of the group indicator and the group number. In addition to the entry of the VOFM object in the object carrier the system writes the date and time of the generation into table TFRM (refer also to section 2.3.2).

You can start the individual activation only manually. It is always always executed when a user selects a line within the VOFM editing interfaces and afterwards selects activity 'Activate' from the 'Edit' menu.

The 'collective activation' causes the registration of all VOFM objects that belong to a certain group indicator. Analog to the individual activation the system determines the relevant object carrier automatically and writes date and time into table TFRM. The 'collective activation' is a process which you can start also only manually. For this purpose, choose activity 'Activate all' from the 'Edit' menu.

During the generation via report RV80HGEN the system sets up the object carriers of all defined group indicators again. However, the system includes only those VOFM objects that have set the 'active' indicator in the corresponding TFRM table entry. Nonactive VOFM objects are not included in object carriers during the generation via report RV80HGEN. Due to the quantity of the data to be processed, the generation via RV80HGEN can take between 0,5 and >5 minutes (depending on the system and the constellation).

Because the RV80HGEN is defined as 'XPRA', it is executed automatically during a system upgrade.

You can also use this XPRA feature for the transport of VOFM objects in order to implement an automatic update of the object carriers after the import of VOFM objects into the target system (section 2.6 provides more details on the transport).

Both the collective activation and the activation via report RV80HGEN technically revert to the program components of the individual activation. For the separate control of the individual activation types form routine AKTIVIEREN_EINZELN (Include MV80HF0A) has a 'USING' parameter, which can have the following characteristic values:

'E' Activate individually

'A' Activate all (= collective activation)

' ' Deactivate individually

During the generation via RV80HGEN the system executes a collective activation for every group indicator sequentially, that means a call of form routine AKTIVIEREN_EINZELN with characteristic value 'A'.

2.6 Transport

If you want to transfer VOFM objects from one system (= source) into another system (= target), this is generally made with an object transport. As of Release 4.0, the VOFM function has a connection to the SAP 'Change and Transport System' (CTS) in order to simplify the transfer process for the user. By the transport connection the system automatically adds newly created or changed VOFM objects to the object list of a transport request which was selected by the user before.

All steps necessary for the execution of a VOFM transport are described in detail in Note 22808 'Transferring formulas'. Note that steps 1-4 are only needed if the VOFM maintenance environment providesno automatic connection to the transport system or if you want to combine a transport request manually. In any case you must execute step 5, regardless of how the transport request was created.

In addition to Note 22808, Note 385067 contains an overview for releases >= 4.6C regarding which sorts of tasks and object entries are required in a transport request (depending on the activity carried out (create/change/activate/deactivate/delete)) in order to transport a VOFM object successfully.

2.7 FAQs: Possible causes of errors and problems

This chapter deals with the most frequent errors and problems that occur when using the VOFM function and its objects. If problems arise for which this note provides no explanation or solution, create an OSS message on component CA-GTF-BS-VOFM and send it to the SAP Support.

(01) Question/problem:

During the order processing, in the shipping, LIS, billing and so on a program termination with error message: PERFORM_NOT_FOUND occurs when you call a VOFM object. This symptom can occur for all users of VOFM objects.

(01) Answer:

The used VOFMobject is not known in the main program of the calling program and thus cannot be addressed. Details on the call method of VOFMobjects are described in section 2.4 of this note. Note 28683 describes how to correct this error.

(02) Question/problem:

Even though report RV80HGEN was executed, the VOFMobject is not registered in the object carrier. Why?

(02) Answer:

During the setup of the object carriers via RV80HGEN the system includes only VOFMobjects which have set the 'active indicator' (refer to section 2.3.2). If the active indicator for the corresponding object is not set, the RV80HGEN does not process the VOFMobject. Solution: Set the active indicator for the respective object and start the RV80HGEN again.

(03) Question/problem:

The syntax check in the ABAP form routine of an VOFM object displays syntax errors.

(03) Answer:

Note the explanations on the work method of the syntax check in Note 393012. In addition, the restrictions of the SAP maintenance responsibility to customer-specific VOFM objects (described in section 1.3) apply.

(04) Question/problem:

When you create/change VOFM objects the system requires an SSCRregistration key, even though the VOFM is within the 'customer namespace'.

(04) Answer:

Refer to the explanations given in section 2.2. 1 'Registration'.

(05) Question/problem:

In which namespace can I create customer-specific VOFM objects? Or: Which routine numbers are reserved for customers?

(05) Answer:

Refer to Note 356737, in addition refer to the explanations in section 2.2 'Namespaces'.

(06) Question/problem:

Is it possible to assign VOFM objects to own development classes?

(06) Answer:

No. Refer also to section 2.2.1

(07) Question/problem:

When you create a VOFM object the system displays information message TR 015 'Object can only be created in SAP development class'.

(07) Answer:

This is no error. Refer to section 2.2.1. and the answer to question number 5.

(08) Question/problem:

How can I transport VOFM objects via the Change and Transport System ?

(08) Answer:

The steps necessary for a successful transport are described in detail in Note 22808.

(09) Question/problem:

The used transport request does not contain an entry for the VOFM object carrier in the object list (for example RV61ANNN, FV45ANNN ...)

(09) Answer:

The object carriers must not be transported. Instead, a setup of a current object carrier suitable for this system is required in the target system. For details refer to Note 22808, step 5 as well as section 2.4.1 and 2.5 of this note.

(10) Question/problem:

How are VOFM objects deleted? And can deletions of VOFM objects also be transported?

(10) Answer:

You should delete VOFM objects only via the editing interface of the VOFM function. Only this way it is ensured that all subobjects (ABAP form routine, TFRM and TFRMT table entries) are completely removed.

You can also transport the deletion youmade into an additional system. For that purpose, the setup of an object list in a transport request analog to the creation (refer to Note 22808) is required.

During the deletion of objects the system deletes the object in the source system. At the time of the export the export program (R3trans) notes that the object does not exist any more. In this case the system enters a "D" into the 'Object function' field in the corresponding entry in the object list of the transport request.

The deletion of table entries is made analog to the deletion of objects. First delete the keys in the source system. Then specify the deleted keys in the request. At the time of the export the transport program notes that the specified keys do not exist any more and deletes them in the target system. If you combine the object list of the transport request manually, you must set the object function of the individual entries correspondingly. To do that, proceed as described in the F1 help of the 'Object function' field.

(11) Question/problem:

During the creation of VOFMobjects the system requires a transport request which contains a task of the 'Repair' category. The system displays message TK 181 'Repair &1 may only contain repaired objects'.

(11) Answer

This problem is caused by a program error. Implement the corrections of Note 326560 or Note 385067 depending on your release.

(12) Question/problem:

During the creation the system displays message TK 112 'Edit objects separately since they belong to different original systems'.

(12) Answer:

This problem is caused by a program error. Implement the corrections of Note 326560 or Note 385067 depending on your release.

(13) Question/problem:

When you create or activate VOFM objects the system displays message: 'Report/PROGRAM statement is missing or program type is INCLUDE?'.

(13) Answer:

This problem is caused by a program error. Implement the corrections of Note 326560 or Note 385067 depending on your release.

(14) Question/problem:

Why does the system generate VOFM objects with source system 'SAP'?

(14) Answer:

Design. The entire VOFM logic depends extremely on basis functions like transport, object directory entries, generation and so on. Because VOFM objects are inserted in SAP standard development classes, these receive ID 'SAP' for source system during the generation process. This cannot be avoided and does not affect the VOFM function.

(15) Question/problem

The system does not insert report RV80HGEN automatically as XPRA into the object list of a transport request.

(15) Answer

Whether the system inserts report RV80HGEN automatically into the object list of the transport request depends on the release you use. For Releases 4.0A to 4.6B the system generates a corresponding entry, provided that all corrections for the VOFM function exist in the system. As of Release 4.6C the basis function of the 'Change & Transport System' (CTS) does not support the automatic insertion of objects of the 'XPRA' category into an object list any more. If you want an automatic registration of the transported routines in the target system, proceed as described in Note 22808, step 5.

(16) Question/problem:

During the activation of VOFM objectsa termination occurs or the system requires a registration key for additional VOFM objects, even if they were not changed.

(16) Answer:

There are inconsistent VOFM objects in the system (refer also to section 2.3.), that means table TFRMcontains entries for which no include with corresponding ABAP form routine exist.

If the termination occurs for VOFM objectsfrom the SAP namespace, this is normally due to a delivery error as described, for example, in Notes 395600 and 0403705. Check whether already a corresponding note exists for the affected VOFMobject. If not, contact the SAP Support.

If the problem occurs for customer-specific routines, the inconsistency is mostly due to a handling or transport error. For example the deletion of VOFMincludes via Transaction SE38has the effect that the system does delete the form routine and the corresponding include, however the system does not delete the entries in tables TFRM and TFRMT. Inconsistencies can also occur due to incomplete or incorrect object lists in transport requests. You can make a correction by newly creating the same object via the VOFM interface or be deletion analog to the method described in Note 395600.

(17) Question/problem:

During the import of Support Packages or during the system upgrade, customer-specific VOFM objects were overwritten or are missing completely.

(17) Answer:

First, check whether the missing VOFMobjects are really missing and if yes, whether all or only certain subobjects do not exist anymore (refer to section 2.3). if the VOFMobject is completely there, generally only a new setup of the object carriers is required. Read section 2.5 'Activation, generation and RV80HGEN' to learn which options exist for this purpose.

If there is indeed a VOFM object but ifthe source code of the ABAP form routine does not correspond to the customer-specific, this is a delivery error. However, you can reconstruct the customer-specific source code with the version management. Proceed as follows: call the ABAP Editor for the affected objects by using Transaction SE38. Afterwards branch into menu 'UTILITIES' -> 'VERSIONS' -> 'VERSION MANAGEMENT'. Deselect the version delivered by SAP and select your original, customer-specific version instead. Choose 'RETRIEVE' to restore this version.

Delivery errors of this type are documented by notes. If there is no corresponding note for the overwritten object in the OSS, contact the SAP Support.

(18) Question/problem:

In the display of the Object Navigator (Transaction SE80) the system does not display newly created VOFM objects. On the other hand, it can also occur that deleted VOFM objects are still contained in the Object Navigator.

(18) Answer:

The Object Navigator displays an obsolete status (refer also to Note 15447). Choose button 'Refresh object list' above the tree structure in order to correct this inconsistency.

(19) Question/problem:

Is it possible to delete VOFM objects delivered by SAP in the standard?

(19) Answer:

Yes. However, because of separate number ranges for VOFM objects SAP does not recommend a deletion of SAP standard objects.

(20) Question/problem:

Which maintenance responsibility has SAP for customer-specific VOFM objects?

(20) Answer:

None. Refer to the explanations in section '1. 3 A frank word on the "source code responsibility"'. According to Note 381348 this includes also VOFMobjects whose creation wasbased on notes of the 'Consulting' or 'Workaround for missing function' category.

(21) Question/problem:

Where can I get help, if my customer-specific VOFM object does not work as expected?

(21) Answer:

If you need support during the implementation of customer-specific VOFM objects you can contact the SAP Remote Consulting. Please understand that SAP cannot check VOFM objectswithin the framework of the normal support.

h_senden2
Active Contributor
0 Kudos

Hi,

i have implemented a VOFM pricing requirement, to check a condition for a sales order. In VA01/02 we are adding certain conditions with a price, that must be checked. But i did assumed that the filled-in price was in field KOMV-KBETR (also in the source code of the requirement) but the actual value is not there ! Where can i find the price of the condition in VA02 ?

regards,

Hans