Simplify SAP R/3 development with Excel VBA/VB RFC  
Home> UserExit>MEREQ001



User Exits: Purchase Requisition

You can use this enhancement to:

  • Maintain/supply your own customer fields in purchase requisitions
  • Update your own customer-specific tables
  • Change standard fields to a limited extent

You add your customer fields, which should be saved in the database, to the include CI_EBANDB (in table EBAN). You can also add customer fields that you want to use during the program run to the include CI_EBANMEM (in structure MEREQ_ITEM) These fields are not stored in database table EBAN.

Screen areas

If you use the enhancement, you must create and generate screen 111 in function group XM02 (even if the screen is not to be used).

You must flag the screen as a subscreen, The screen does not have to contain fields but it must exist to prevent the program terminating.

Object references

The function exits described below communicate with the standard program using object references. These references point to objects of type if_purchase_requisition (for the purchase requisition header) or if_purchase_requisition_item (for the purchase requisition item) Using this interface, you can reach the purchase requisition data. You can find out via the Workbench or the Class Builder (transaction SE24) which methods are offered.

Function exits

The screen is linked to the standard program via function modules.

There are function modules that:

  • Provide your subscreen with data (export)
    • EXIT_SAPLMEREQ_001 Export Data to Customer Subscreen for Purchase Requisition(PBO)
    • EXIT_SAPLMEREQ_002 Prepare Customer Subscreen for Requisition (PAI Before Subscreen PAI)
  • Get data from your subscreens (import)
    • EXIT_SAPLMEREQ_003 Import Data from Customer Subscreen for Purchase Requisition

You can set or supply your own data fields in the PBO function modules.

You receive the current (possibly changed in comparison to the PBO call) standard program data in the PAI function module.

You can return your fields to the standard program in the import function modules. For this purpose, read the current status of the purchase requisition object using the method get_data in a local structure of type mereq_item. Now write the customer data in this structure and reset the data in the purchase requisition object using the method set_data.

You should note that function exits 001, 002, and 003 are determined for dialog purposes only and are not headed for when creating purchase requisitions using function modules or BAPIs. Do not issue any error messages in these function modules either.

There is a separate function exit for verifying the customer fields (EXIT_SAPLMEREQ_005 Checking Customer's Own Purchase Requisition Data (Without Dialog)). The object reference, the new data, the data from the last verification, and the database status of the purchase requisition items are available to you here. Parameter IM-FULL_CHECK is set if the user has chosen to update or check explicitly. Parameter IM_ITEM_HAS_ERRORS informs you whether the purchase requisition item has been classified by the standard program as containing errors.

The task of this function exit is to ensure the consistency of the customer-specific fields. You can also change standard fields using the public interface if_purchase_requisition_item. The fields listed in structure MEREQ_ITEM_S_CUST_ALLOWED are available for changing.

You fill the return table EX_MESSAGES to issue the errors and warnings to the standard program and the user. The fields TYPE, ID, NUMBER, and MESSAGE_V1 thru MESSAGE_V4 are analyzed and added to the standard error log.

You have to set the return parameter EX_RECHECK_ITEM if you have changed standard fields. The standard program checks the purchase requisition item after exiting the function exit again. You should note that the functions exits are chosen again when this is done. To avoid endless loops, you should not set this parameter every time.

The purchase requisition is updated in two steps. In the first step (PREPARE), the function exit EXIT_SAPLMEREQ_008 (Prepare for Update of Customer's Own Purchase Requisition Data) is called up. The system tells you the old (temporary) purchase requisition number and the new purchase requisition number. In addition, the changes are given to tables EBAN and EBKN. You can no longer change the fields here. You use this module to prepare for updating your own data and tables. Do not execute any database operations or call any function modules for the update (in update task). Make a note of which data you want to update in your function group. You should note that more than one purchase requisition can be processed at the same time (for example, source of supply assignment or collective release). This function exit is processed once for each header in the purchase requisition.

The second step in the update process performs the database operations or calls the update modules. Function exit EXIT_SAPLMEREQ_006 (Update of Customer's Own Purchase Requisition Data for all PReqs Prepared). This function exit is called up only once for all purchase requisitions that have been changed. You now update the data that you noted in the first step.

When all purchase requisitions have been successfully updated, function exit EXIT_SAPLMEREQ_004 (Reset Customer Data After Updating All Purchase Requisitions (Without Dialog)). You reset the data for your function group(s) here.

If you want to read your own tables for this, you should use the function module EXIT_SAPLMEREQ_007. This is called when the purchase requisition is read from the database.

You receive the transaction type via the purchase requisition header. The interface if_purchase_requsition_item provides a method, GET_REQUISITION, that returns the purchase requisition header. Using method GET_TRANSACTION_STATE for interface if_purchase_requisition, you can determine the transaction type from field ex_document.

  • A Display
  • V Change
  • H Create

  • Function/Program:
    • EXIT_SAPLMEREQ_001: Export Data to Customer Subscreen for Requisition (PBO)
    • EXIT_SAPLMEREQ_002: Prepare Customer Subscreen for Requisition (PAI Before Subscreen PAI)
    • EXIT_SAPLMEREQ_003: Import Data from Customer Subscreen for Requisition
    • EXIT_SAPLMEREQ_004: Reset Customer Data After Updating All Purchase Requisitions (W/o Dialog)
    • EXIT_SAPLMEREQ_005: Check Customer's Own Purchase Requisition Data (Without Dialog)
    • EXIT_SAPLMEREQ_006: Update Customer's Own Purchase Requisition Data for all PReqs Prepared
    • EXIT_SAPLMEREQ_007: Read Customer's Own Requisition Data when Reading Requisition
    • EXIT_SAPLMEREQ_008: Prepare for Update of Customer's Own Purchase Requisition Data
    • EXIT_SAPLMEREQ_009: Document Number Assignment - Purchase Requisition
    • EXIT_SAPLMEREQ_010: Check Customer's Own PReq Data (General)
    • SAPLMEGUI0014_SUB0_SAPLXM020111: View: Purchase Order Window