Tag Archives: SAP

Align vendor batch number with SAP batch number during Goods Receipt for pharma or food industry

Vendor batch number is an important attribute of a material batch. For purchased material, vendor batch number can be entered in the goods receipt screen using the batch details send by vendor in the delivery document.

Business Benefit:

Implementing this enhancement will allow to have an alignment between the vendor batch number with the SAP batch number. Because of this functionality a given material batch of a vendor (the same batch might be delivered multiple time as part of different deliveries) always has the same SAP batch – hence tracking will be much easier.

 

But as the vendor batch number is a textual field and the user nerds to enter the value manually at the time of goods receipt. Moreover the vendor batch number has no direct relation with the SAP batch number and it is possible to have the same vendor batch number in multiple SAP batch for the same material.

 

To overcome this miss-alignment between the SAP batch number and the corresponding vendor batch number, some system enhancement needs to be done. The enhancement will try to find out existing SAP batch number based on vendor batch number and make all the material posting with subsequent delivery to the same SAP batch so as there is only one SAP batch in the system corresponds to a given vendor batch.

Batch.png

Proposed Functionality:

 

At the time of goods receipt for a vendor supplied material, using the material, vendor and vendor batch number as key information, the enhancement will check in the system for any existing SAP batch based on material master setting and assign the existing SAP batch number in goods receipt transaction to the same receipt of material/ vendor/ vendor batch.

 

A new SAP batch is only created when there is no existing vendor batch in the system for the material-vendor-vendor batch.

 

Technical Design:

 

Technically this functionality can be achieved with either implementing a customer-exit or through implementing a BADI as described below. Any one of the approach can be used.

 

Customer Exit:

 

Enhancement Name: MBCFC010

Exit function module: EXIT_SAPMM07M_010

Include Name: ZXMBCU10

 

Main Program: SAPMM07M

Include MM07MFCL_CHARGE_VORSCHLAGEN

Subroutine charge_vorschlagen

 

BADI:

SAP has also provided BADI “MB_MIGO_BADI” with method LINE_MODIFY to implement the functionality.

 

Detail Design:

 

The enhancement can be implemented using the customer-exit EXIT_SAPMM07M_010 as mentioned before. The customer-exit is called at the time of goods receipt (Transaction MIGO_GR). The related main program is SAPMM07M and this customer-exit is called inside the subroutine CHARGE_VORSCHLAGEN.

 

EXIT_SAPMM07M_010:

This customer exit has been provided to assign some batch number without creating a new batch number by the system. In this case, this customer-exit can be used to check for any existing vendor batch and assign the corresponding SAP batch.

 

Step 1: Following are the important import variables available inside the exit.

 

I_MSEG-MATNR => Material No

I_MSEG-WERKS => Plant

I_MSEG-LGRT => Storage Location

I_MSEG-LIFNR => Vendor Number

I_VM07M-LICHA => Vendor batch number

 

 

 

Step 2:  Go to table MCH1 and search for the SAP batch number for the given material, vendor and vendor batch (MCH1-MATNR = I_MSEG-MATNR, MCH1-LIFNR = I_MSEG-LIFNR and MCH1-LICHA = I_VM07M-LICHA)

 

Step 3: There can be three cases

Case A: No matching SAP batch record found.

This means there is no existing vendor batch in the system.  No batch number assignment needs to be done. System should create a new batch and assign it.

 

Case B: There is a single matching batch record.

            System should use this SAP batch and should not create any new batch. Assign this batch number to the export parameter E_CHARG.

 

Case C: There is multiple matching batch record

            A pop-up screen can be displayed with the existing list of SAP batches. User can select the required entry from the list.

 

 

Find IDOC Number from Sales Order Document in SAP

In case sales orders are created automatically using IDOC documents via ABAP programs in your SAP system, you may want to get IDOC number from SAP sales order. Normally, using Relationships menu option on Services for Object icon on VA02 and VA03 sales document screen will let the SAP professionals to reach the related IDOC documents. But if you cannot display Services for Object on your sales document transaction screen, you can use one of the methods to find IDOC number using Sales Order number in your SAP system.

WE57 transaction can provide information about business object type, message types, etc in case you don’t know existing information about the IDOC structures in your company.

Although it is not so handy, if you can filter IDOC list to a limited number on WE02 transaction code screen, you can check each IDOC for their status 53 record and control if it has the IDOC containing the sales order number you are looking for. By using filtering criteria Created On and Created At date time selections, processing Direction, Current Status (status 53 includes the sales document number so use 53 for filtering), Basic Type and if possible Partner Number you can limit your search results for a manual check on IDOC status documents.

 

Services for Object

If you can see the Services for Object icon next to SAP VA02 or VA03 transaction title as seen in below screenshot, then you can easily display the IDOC which created the current sales order.

Services for Object function on SAP Sales Order document transaction

Click on the right-side of the icon, a dropdown menu will be displayed. Choose Relationships.

Sales Order Relationships to list IDocs for a given sales document

This option will lead you to the IDOC list related with this sales document. You can easily open Idoc by double click on the item and display its segments.

On the other hand, if you do not see the Services for Object icon on the VA02 and VA03 screen menu, if you can modify your User Profile Parameters add SD_SWU_ACTIVE parameter (Activate Workflow Box in VA02 & VA03) with “X” value to enable this function on Sales Order display and change screens.

 

On main screen, by menu options apply following selections:
System > User Profile > Own Data

Add parameter SD_SWU_ACTIVE with value X to Activate Workflow Box in VA02 & VA03

activate workflow box on sales order transactions

Now follow the above method to reach Sales Order related Idoc list.

BD87

To find the IDOC number used to create sales order, ABAP developer or SAP professional can use BD87 SAP transaction.
Launch BD87 tcode.

When Select IDocs selection screen is displayed, for sales orders enter BUS2032 for Business Object and sales order number (VBELN) you are interested in Object Key field.
You can also limit the results by entering the Message Type as ORDERS.

 

An other selection parameter that you can use is the IDoc Status field with value 53 (Application document posted).
Also you can provide date range for created on or changed on fields.
Then execute the report.

SAP BD87 transaction for IDoc from Sales Order document

Drill down IDOCs in inbound processing node. Under ORDERS, you can see an information message that sales order document with given number is saved.

get Idoc number using Sales document in SAP

Double click on the leaf item.
This will display the IDOC number as seen in below screenshot.

IDoc document created specific sales order in SAP

Launch SAP transaction WE02 and using IDOC number you found from BD87 tcode, you can display the IDOC details which is used to create the referred sales order document.

SAP transaction WE02 for IDoc segments in detail

SREL_GET_NEXT_NEIGHBORS Function Module for IDoc Document

Executing ABAP function module SREL_GET_NEXT_NEIGHBORS with IDoc number and business object type developers can get a short list of IDoc documents.

The Object input structure values could be set as follows:
OBJKEY is the Sales Order document number with leading zeros if any.
OBJTYPE is BUS2032 for sales orders.
And you can provide or choose not to enter your SAP system id in LOGSYS field.

 

When you execute the ABAP function module SREL_GET_NEXT_NEIGHBORS with accurately provided OBJECT parameter, you will get the IDoc list in Result table.

ABAP function module SREL_GET_NEXT_NEIGHBORS

Query EDIDS IDoc Status Record Table for IDoc Number

For ABAP programmers, another option to find IDOC number using the Sales Order document number is filtering EDIDS (IDoc) Status Record ABAP table using SE11 or SE16 transactions.

First of all, again most important parameter is log date LOGDAT selection parameter. Keep it as limited as you can.
Then STATUS should be 53.
STAPA2 parameter 2 has the sales order number. So enter your sales document number here without preceeding zeros.
STATYP status type will be successful, so enter S for this parameter.

SAP EDIDS IDoc Status Record Table for IDoc Number from Sales Order

WE09 Transaction to Find IDoc Number from Sales Order Document

Using WE09 transaction is another method for searching IDOC number, if you have specific values about the order that take place in the IDOC segment fields.

IDoc search for business content

By entering especially create date and time, processing direction, IDoc status, basic type etc. you can limit the search results of your query.

With related to IDOC document, provide an additional criteria with a segment name and field name which can have a specific value related with the sales order.

Search in IDoc segments using WE09 transaction

ABAP developer or SAP user can also use this section to search IDOCs for a spesific value in a certain IDOC segment field.

Result will be as follows. Please note that the search can take long time especially for wide search criteria.

IDoc search using ABAP WE09 transaction screen

 
 

SAP CMOD – Customer modifications

SAP CMOD – Customer modifications

How are they implemented ?

User Exits are implemented in such a way that unlike changes to SAP standard code, they will survive across upgrades and hot pack applications. They are also User Objects and can therefore be implemented without the need of requesting an SSCR from SAP.

Within the standard SAP programs at key points are calls to function modules starting with ‘EXIT_’. These function modules generally accept as input parameters structures containing for example the entire Order Header (VBAK) of the sales order just entered, or perhaps a table of the Order Items. These function calls are placed at points such as just before the Order is saved or just before it is printed and so on.

These function modules contain a single include statement. The name of this include is in the User domain and starts with Z. This enables it to be edited without the need for an SSCR and also prevents it being overwritten during upgrades.

Once this include has been created and activated, and the user exit is activated the User exit becomes functional.

Implementing a User Exit.

User Exits are implemented using the transaction code ‘CMOD’. Enter this in the command line and press the Enter key. This will then show the CMOD parameter screen:

User Exits are assigned a project name which begins with Z. Having entered the relevant name in the ‘Project’ field, click the Create (or Change) button as applicable.

When you are creating a new project, the projects attribute screen will be displayed. This allows you to enter a title for the project and allows access to the Enhancements (User Exits) that you want to assign to the project and the components that you wish to use within those enhancements.

This screen allows you to enter a description of the project. Once you have done this, click the save button. You will be asked as usual to assign a development class and create a transport.

Once the transport has been created you can then go on to assign the enhancements that you wish to use to the project.

Locating The Enhancements For A Project.

Unfortunately I have access to a 4.6C system only so therefore this description is based around that.

To find enhancements for a particular program locate the Development Class for the relevant program. Run the transaction and on the first input screen click on the Status button. This provides the program name. Another method of finding the program name is to use transaction SE93 which is the Create/Modify Transaction transaction. Enter the transaction code and click display.

In either case, cut the program name and then enter it into transaction SE38 ? the ABAP program editor. Select the ?Attributes? radio button and click display. Note the Development Class.

In 46C, go back to the CMOD main screen, enter the project name and select the ?Enhancement Assignment? radio button.

Click the change button. This will display the enhancement assignment screen. Position the cursor in the first field and press the <F4> key. This will display the Input Help personal list window, a standard window that you should be familiar with. Click the ?Information System? button and enter the development class located above into the development class field. Click the green tick.

This will display a list of enhancements for that particular development category with a short description of what they do.

Select relevant description which will be transferred back to the Enhancement Assignment screen.

For versions other than 46C, use transaction SE37 which is the Function Module editor, in the function module name field press the <F4> key and select further options. One of these will be the development class.

Clicking the enhancement button provides information on the enhancement.

The information displayed in this report includes whether the enhancement has been implemented, and is active. (Green things scattered throughout the report). Clicking the Exit name (In this case ?EXIT_SAPLV60A_002? will display the relevant function module:
To create the enhancement, double click the Include name. This then takes you into SE38 where you can edit the include to your hearts content.

Note, however, that when you try and create this include you will get a warning message displayed that the namespace you are trying to use belongs to SAP. Just click on the green tick and sail straight through.

User Exits In SAP FI

User Exits In SAP FI

.

User Exits in SAP FI are implemented again in a different manner to both standard user exits and user exits in SD. The user exits are available for Substitutions, Validations and Rules which are specified either in transaction OB28 (for rules), or OBBH (for substitutions).

There are 3 steps involved in setting up user exits in FI.

These are:

      •  
      • Creating the Module Pool and programming the user exit.
      • Specifying the Module Pool that will hold the user exits.
      • “Activating” the user exit.

 

Creating The Module Pool
    1. .

 

    1. SAP provide two programs that should be used to implement these user exits. These are RGGBS000 and RGGBR000 (for substitutions and rules respectively). The relevant program should be copied to a Z version of the program, ZRGGBR000 for example. The code in this module pool is like so:

 

Code:

PROGRAM RGGBR000 .
*---------------------------------------------------------------------*
*                                                                     *
*   Regeln: EXIT-Formpool for Uxxx-Exits                              *
*                                                                     *
*   This formpool is used by SAP for demonstration purposes only.     *
*                                                                     *
*   Note: If you define a new user exit, you have to enter your       *
*         user exit in the form routine GET_EXIT_TITLES.              *
*                                                                     *
*---------------------------------------------------------------------*
INCLUDE FGBBGD00.               "Data types


*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
*    PLEASE INCLUDE THE FOLLOWING "TYPE-POOL"  AND "TABLES" COMMANDS  *
*        IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM         *
*TYPE-POOLS: GB002. " TO BE INCLUDED IN
*TABLES: BKPF,      " ANY SYSTEM THAT
*        BSEG,      " HAS 'FI' INSTALLED
*        COBL,
*        GLU1.
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*

*----------------------------------------------------------------------*
*       FORM GET_EXIT_TITLES                                           *
*----------------------------------------------------------------------*
*       returns name and title of all available standard-exits         *
*       every exit in this formpool has to be added to this form.      *
*       You have to specify a parameter type in order to enable the    *
*       code generation program to determine correctly how to          *
*       generate the user exit call, i.e. how many and what kind of    *
*       parameter(s) are used in the user exit.                        *
*       The following parameter types exist:                           *
*                                                                      *
*       TYPE                Description              Usage             *
*    ------------------------------------------------------------      *
*       C_EXIT_PARAM_NONE   Use no parameter         Subst. and Valid. *
*                           except B_RESULT                            *
*       C_EXIT_PARAM_CLASS  Use a type as parameter  Subst. and Valid  *
*----------------------------------------------------------------------*
*  -->  EXIT_TAB  table with exit-name and exit-titles                 *
*                 structure: NAME(5), PARAM(1), TITEL(60)
*----------------------------------------------------------------------*
FORM GET_EXIT_TITLES TABLES ETAB.

  DATA: BEGIN OF EXITS OCCURS 50,
          NAME(5)   TYPE C,
          PARAM     LIKE C_EXIT_PARAM_NONE,
          TITLE(60) TYPE C,
        END OF EXITS.
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
*        IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM:         *
   EXITS-NAME  = 'U101'.
   EXITS-PARAM = C_EXIT_PARAM_CLASS.
   EXITS-TITLE = TEXT-100.                 "Posting date check
   APPEND EXITS.

   EXITS-NAME  = 'U100'.
   EXITS-PARAM = C_EXIT_PARAM_NONE.        "Complete data used in exit.
   EXITS-TITLE = TEXT-101.                 "Posting date check
   APPEND EXITS.

* forms for SAP_EIS
   EXITS-NAME  = 'US001'.                  "single validation: only one
   EXITS-PARAM = C_EXIT_PARAM_NONE.        "data record used
   EXITS-TITLE = TEXT-102.                 "Example EIS
   APPEND EXITS.

   EXITS-NAME  = 'UM001'.                  "matrix validation:
   EXITS-PARAM = C_EXIT_PARAM_CLASS.       "complete data used in exit.
   EXITS-TITLE = TEXT-103.                 "Example EIS
   APPEND EXITS.

  REFRESH ETAB.
  LOOP AT EXITS.
    ETAB = EXITS.
    APPEND ETAB.
  ENDLOOP.

ENDFORM.

*eject
*----------------------------------------------------------------------*
*       FORM U100                                                      *
*----------------------------------------------------------------------*
*       Example of an exit for a boolean rule                          *
*       This exit can be used in FI for callup points 1,2 or 3.        *
*----------------------------------------------------------------------*
*  <--  B_RESULT    T = True  F = False                                *
*----------------------------------------------------------------------*
FORM U100  USING B_RESULT.
*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
*        IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM:         *
*
*   IF SY-DATUM = BKPF-BUDAT.
*     B_RESULT  = B_TRUE.
*  ELSE.
*    B_RESULT  = B_FALSE.
*  ENDIF.

ENDFORM.

*eject
*----------------------------------------------------------------------*
*       FORM U101                                                      *
*----------------------------------------------------------------------*
*       Example of an exit using the complete data from one            *
*       multi-line rule.                                               *
*       This exit is intended for use from callup point 3, in FI.      *
*                                                                      *
*       If account 400000 is used, then account 399999 must be posted  *
*       to in another posting line.                                    *
*----------------------------------------------------------------------*
*  -->  BOOL_DATA   The complete posting data.                         *
*  <--  B_RESULT    T = True  F = False                                *
*----------------------------------------------------------------------*

*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* PLEASE DELETE THE FIRST '*' FORM THE BEGINING OF THE FOLLOWING LINES *
*        IF THE ACCOUNTING MODULE IS INSTALLED IN YOUR SYSTEM:         *
*FORM u101 USING    bool_data TYPE gb002_015
*          CHANGING B_RESULT.
*  DATA: B_ACC_400000_USED LIKE D_BOOL VALUE 'F'.
*
*  B_RESULT = B_TRUE.
** Has account 400000 has been used?
*  LOOP AT BOOL_DATA-BSEG INTO BSEG
*                 WHERE HKONT  = '0000400000'.
*     B_ACC_400000_USED = B_TRUE.
*     EXIT.
*  ENDLOOP.
*
** Check that account 400000 has been used.
*  CHECK B_ACC_400000_USED = B_TRUE.
*
*  B_RESULT = B_FALSE.
*  LOOP AT BOOL_DATA-BSEG INTO BSEG
*                 WHERE HKONT  = '0000399999'.
*     B_RESULT = B_TRUE.
*     EXIT.
* ENDLOOP.
*
*ENDFORM.

*eject
*----------------------------------------------------------------------*
*       FORM US001
*----------------------------------------------------------------------*
*       Example of an exit for a boolean rule in SAP-EIS
*       for aspect 001 (single validation).
*       one data record is transfered in structure CF<asspect>
*----------------------------------------------------------------------
*       Attention: for any FORM one has to make an entry in the
*       form GET_EXIT_TITLES at the beginning of this include
*----------------------------------------------------------------------*
*  <--  B_RESULT    T = True  F = False                                *
*----------------------------------------------------------------------*
FORM US001 USING B_RESULT.

*TABLES CF001.                                 "table name aspect 001
*
*  IF ( CF001-SPART = '00000001' OR
*       CF001-GEBIE = '00000001' ) AND
*       CF001-ERLOS >= '1000000'.
*
**   further checks ...
*
*    B_RESULT  = B_TRUE.
*  ELSE.
*
**   further checks ...
*
*    B_RESULT  = B_FALSE.
*  ENDIF.

ENDFORM.                                   "US001

*eject
*----------------------------------------------------------------------*
*       FORM UM001
*----------------------------------------------------------------------*
*       Example of an exit for a boolean rule in SAP-EIS
*       for aspect 001 (matrix validation).
*       Data is transfered in BOOL_DATA:
*       BOOL_DATA-CF<aspect> is intern table of structure CF<asspect>
*----------------------------------------------------------------------
*       Attention: for any FORM one has to make an entry in the
*       form GET_EXIT_TITLES at the beginning of this include
*----------------------------------------------------------------------*
*  <--  B_RESULT    T = True  F = False                                *
*----------------------------------------------------------------------*
FORM UM001 USING BOOL_DATA    "TYPE GB002_<boolean class of aspect 001>
           CHANGING B_RESULT.

*DATA: LC_CF001 LIKE CF001.
*DATA: LC_COUNT TYPE I.

*  B_RESULT = B_TRUE.
*  CLEAR LC_COUNT.
*  process data records in BOOL_DATA
*  LOOP AT BOOL_DATA-CF001 INTO LC_CF001.
*    IF LC_CF001-SPART = '00000001'.
*      ADD 1 TO LC_COUNT.
*      IF LC_COUNT >= 2.
**       division '00000001' may only occur once !
*        B_RESULT = B_FALSE.
*        EXIT.
*      ENDIF.
*    ENDIF.
*
**   further checks ....
*
*  ENDLOOP.
ENDFORM.                                      "UM001

 

    1. The first thing to do is to insert code that notifies the calling programs of the availability of the user exits. This is achieved in the form GET_EXIT_TITLES.

 

    1. Decide on the name for your user exit, which should start with ‘U’ (for a user defined user exit) and then a 3 digit unique number. Above the line ‘REFRESH ETAB’, make the following entries:

 

Code:

   EXITS-NAME  = 'U100'.
   EXITS-PARAM = C_EXIT_PARAM_NONE.        "Complete data used in exit.
   EXITS-TITLE = TEXT-101.                 "Posting date check
   APPEND EXITS.

 

    1. The NAME field should contain the user exit name that you will be using.

 

    1. The field PARAM defines the parameter type.

 

    1. There are three values for this parameter, and are defined as constants:

C_EXIT_PARAM_NONE:

    1. This constant means that no parameters are defined for this user exit. In truth, there is one parameter defined and that is a boolean flag that is used to specify whether there is an error in the data or not. A value of false for this parameter means that the data is valid(!) and a value of true means that there is an error.

 

    1. This parameter is valid for rules, validations and substitutions.

C_EXIT_PARAM_FIELD:

    1. This constant is valid for substitutions only and means that one parameter can be defined for the user exit which is the field to be sustituted.

C_EXIT_PARAM_CLASS

    1. valid for Rules, Validations and Substitutions, this parameter signifies that all the data (BKPF and BSEG data) will be passed as one parameter to the user exit. You will be passed a table containing all the relevant information. Have a look at the routine U101 to see how to access this data.

 

    1. The last thing to include before the append is a text sting which is used to display the title of the user exit in an upcoming transaction.

Creating your user exit

    1. Once you’ve entered the above code into the right place in the form GET_EXIT_TITLES, it’s time to write the user exit code itself. Base the form delcaration on the examples above, remembering to return b_true or b_false dependant on the result of your user exit. If you wish to display any messages in the user exit, make them informational ones. Any other types can cause problems with the correcting of fields otherwise. Don’t forget to activate the changes.

 

Specifying the module pool that holds the user exits.

 

    1. Having written the user exit code, you must now activate that code. This is not the same as activating a program. What you are doing here is telling SAP that there is code available and this is where it lives.

 

    1. Start transaction GCX2. This will then display a screen similar to the one shown here:

    1. Change the screen into change mode by clicking this pencil as normal, and then enter the module pool name that you created in the steps above into the Ex. Prog Field.

 

    1. Save the changes and exit.

 

“Activating” the User Exit.

 

    1. The next thing to do is to incorporate your user exit code into a validation rule. Start transaction OB28.

    1. Select ‘New Entries’, and complete the input fields. (How to define the validation name is forth coming).

 

    1. Select the rule that you wish the user exit to be activated for (Note that these activations are company dependant).

    1. Your user exit will appear essentially as a boolean variable in the rule that you have selected (or created). In the relevant step enter the user exit name either as part of a condition statement or on it’s own. In the example below the user exit is called U102.

Types of Testing

Unit Testing : This is done in Development System, Unit testing should be taken care of by the developer at the developer side by executing the test scripts which are provided by functional peoples to trace the errors like if its not meeting the reqs or any bugs is there.

Integration Testing : This is done in QA System, Integration testing is being done by functional folks after deliverable by the developer to test whether its working up to the point and after integrating this module with any other module, what are the errors. generating.

Regression Testing : The term “regression testing” can be applied two ways. First, when a code problem has been fixed, a regression test runs tests to verify that the defect is in fact fixed; “Imagine finding an error, fixing it, and repeating the test that exposed the problem in the first place. This is a regression test” (Kaner in Testing Computer Software). Second, regression testing is the counterpart of integration testing: when new code is added to existing code, regression testing verifies that the existing code continues to work correctly, whereas integration testing verifies that the new code works as expected. regression testing can describes the process of testing new code to verify that this new code hasn’t broken any old code.

SAP SD Enhancements in sales order

User exit available

EXIT_SAPMV45A_910IS-OIL/TAS: Exit Change-Flag Output determination
EXIT_SAPMV45A_911TAS – Customer exit after creation of calloff
EXIT_SAPMV45A_920User Exit: TAS data Incompletion Log on Doc.-header-level
EXIT_SAPMV45A_930Userexit to allow overdelivery in Quantity schedule
EXIT_SAPMV45A_001User Exit for Determining the Billing Plan Type
EXIT_SAPMV45A_002Preassignment of Sold-to Party in Sales Documents
EXIT_SAPMV45A_003Rev.Rec.: Copy Requirements An Header Level
EXIT_SAPMV45A_004Rev.Rec.: Field Modification Sales
EXIT_SAPMV45A_005Copyy Packing Proposal Into Outobund Delivery Orders

Screen exit

43094.0: Subscreen: Header – Additional data A
43124.0: Subscreen: Header – Additional data B
8309Sales Document Header User Exit Header
8310Sales Document Header User Exit Header
8459Sales doc. Item User exit item (Additional data A)
8460Sales Document Item User Exit Item (Additional data B)

USEREXIT_AVAIL_CHECK_CREDIT
USEREXIT_CHECK_VBAK
USEREXIT_CHECK_VBAP
USEREXIT_CHECK_VBEP
USEREXIT_CHECK_VBKD
USEREXIT_CUST_MATERIAL_READ
USEREXIT_NEW_PRICING_VBAP
USEREXIT_NEW_PRICING_VBKD
USEREXIT_NUMBER_RANGE
USEREXIT_READ_DOCUMENT
USEREXIT_REFRESH_DOCUMENT
USEREXIT_SAVE_DOCUMENT
USEREXIT_SAVE_DOCUMENT_PREPARE

Tables related with sales order processing

VBAK Sales Document: Header Data
VBAP Sales Document: Item Data
VBEP Sales Document: Schedule Line Data
VBPA Sales Document: Partner
VBUK Sales Document: Header Status and Administrative Data
VBUP Sales Document: Header Status and Administrative Data
VBFA Sales Document Flow
VBKD Sales Document: Business Data
VBKFZ Cumulative Quantity Corrections
VBSN Change status relating to scheduling agreements

An Example Step by Step to Create Enhancement in User Exit SD

 

User exits in the program MV45AFZZ

The user exits which you can use for modifications in sales document processing are listed below.

  • USEREXIT_DELETE_DOCUMENT
This user exit can be used for deleting data which was stored in a separate table during sales document creation, for example, if the sales document is deleted.
For example, if an additional table is filled with the name of the person in charge (ERNAM) during order entry, this data can also be deleted after the sales order has been deleted.
The user exit is called up at the end of the FORM routine BELEG_LOESCHEN shortly before the routine BELEG_SICHERN.
  • USEREXIT_FIELD_MODIFICATION
This user exit can be used to modify the attributes of the screen fields.
To do this, the screen fields are allocated to so-called modification groups 1 – 4 and can be edited together during a modification in ABAP. If a field has no field name, it cannot be allocated to a group.
The usage of the field groups (modification group 1-4) is as follows:
  • Modification group 1: Automatic modification with transaction MFAW
  • Modification group 2: It contains ‘LOO’ for step loop fields
  • Modification group 3: For modifications which depend on check tables or on other fixed information
  • Modification group 4: is not used
The FORM routine is called up for every field of a screen. If you require changes to be made, you must make them in this user exit.
This FORM routine is called up by the module FELDAUSWAHL.
See the Screen Painter manual for further information on structuring the interface.
  • USEREXIT_MOVE_FIELD_TO_VBAK
Use this user exit to assign values to new fields at sales document header level. It is described in the section “Transfer of the customer master fields into the sales document”.
The user exit is called up at the end of the FORM routine VBAK_FUELLEN.
  • USEREXIT_MOVE_FIELD_TO_VBAP
Use this user exit to assign values to new fields at sales document item level. It is described in the section “Copy customer master fields into the sales document”.
The user exit is called up at the end of the FORM routine VBAP_FUELLEN.
  • USEREXIT_MOVE_FIELD_TO_VBEP
Use this user exit to assign values to new fields at the level of the sales document schedule lines.
The user exit is called up at the end of the FORM routine VBEP_FUELLEN.
  • USEREXIT_MOVE_FIELD_TO_VBKD
Use this user exit to assign values to new fields for business data of the sales document. It is described in the section “Copy customer master fields into sales document” .
The user exit is called up at the end of the FORM routine VBKD_FUELLEN.
  • USEREXIT_NUMBER_RANGE
Use this user exit to define the number ranges for internal document number assignment depending on the required fields. For example, if you want to define the number range depending on the sales organization (VKORG) or on the selling company (VKBUR), use this user exit.
The user exit is called up in the FORM routine BELEG_SICHERN.
  • USEREXIT_PRICING_PREPARE_TKOMK
Use this user exit if you want to include and assign a value to an additional header field in the communication structure KOMK taken as a basis for pricing.
  • USEREXIT_PRICING_PREPARE_TKOMP
Use this user exit if you want to include or assign a value to an additional item field in the communication structure KOMP taken as a basis for pricing.
  • USEREXIT_READ_DOCUMENT
You use this user exit if further additional tables are to be read when importing TA01 or TA02.
The user exit is called up at the end of the FORM routine BELEG_LESEN.
  • USEREXIT_SAVE_DOCUMENT
Use this user exit to fill user-specific statistics update tables.
The user exit is called up by the FORM routine BELEG-SICHERN before the COMMIT command.
Note
If a standard field is changed, the field r185d-dataloss is set to X. The system queries this indicator at the beginning of the safety routine. This is why this indicator must also be set during the maintenance of user-specific tables that are also to be saved.
  • USEREXIT_SAVE_DOCUMENT_PREPARE
Use this user exit to make certain changes or checks immediately before saving a document. It is the last possibility for changing or checking a document before posting.
The user exit is carried out at the beginning of the FORM routine BELEG_SICHERN.

User exits in the program MV45AFZA

  • USEREXIT_MOVE_FIELD_TO_KOMKD
Use this user exit to include or assign values to additional header fields in the communication structure KOMKD taken as a basis for the material determination. This is described in detail in the section “New fields for material determination” .
  • USEREXIT_MOVE_FIELD_TO_KOMPD
Use this user exit to include or assign values to additional item fields in the communication structure KOMPD taken as a basis for the material determination. This is described in detail in the section “New fields for material determination “.
  • USEREXIT_MOVE_FIELD_TO_KOMKG
Use this user exit to include or assign values to additional fields in the communication structure KOMKG taken as a basis for material determination and material listing. This is described in detail in the section “New fields for listing/exclusion”.
  • USEREXIT_MOVE_FIELD_TO_KOMPG
Use this user exit to include or assign values to additional fields in the communication structure KOMPG taken as a basis for material determination and material listung. This is described in detail in the section “New fields for listing/exclusion”.
  • USEREXIT_REFRESH_DOCUMENT
With this user exit, you can reset certain customer-specific fields as soon as processing of a sales document is finished and before the following document is edited.
For example, if the credit limit of the sold-to party is read during document processing, in each case it must be reset again before processing the next document so that the credit limit is not used for the sold-to party of the following document.
The user exit is executed when a document is saved if you leave the processing of a document with F3 or F15.
The user exit is called up at the end of the FORM routine BELEG_INITIALISIEREN.

User-Exits in program MV45AFZB

  • USEREXIT_CHECK_XVBAP_FOR_DELET
In this user exit, you can enter additional data for deletion of an item. If the criteria are met, the item is not deleted (unlike in the standard system).
  • USEREXIT_CHECK_XVBEP_FOR_DELET
In this user exit, you can enter additional data for deletion of a schedule line. If the criteria are met, the schedule line is not deleted (unlike in the standard system).
  • USEREXIT_CHECK_VBAK
This user exit can be used to carry out additional checks (e.g. for completion) in the document header. The system could, for example, check whether certain shipping conditions are allowed for a particular customer group.
  • USEREXIT_CHECK_VBAP
This user exit can be used to carry out additional checks (e.g. for completion) at item level.
  • USEREXIT_CHECK_VBKD
The user exit can be used to carry out additional checks (e.g. for completion) on the business data in the order.
  • USEREXIT_CHECK_VBEP
This user exit can be use to carry out additional checks (e.g. for completion) on the schedule line. During BOM explosion, for example, you may want certain fields to be copied from the main item to the sub-items (as for billing block in the standard system).
  • USEREXIT_CHECK_VBSN
You can use this user exit to carry out additional checks (e.g. for completion) on the serial number.
  • USEREXIT_CHECK_XVBSN_FOR_DELET In this user exit, you can enter additional criteria for deletion of the serial number. If the criteria are met, the serial number is not deleted (unlike in the standard system).
  • USEREXIT_FILL_VBAP_FROM_HVBAP
You can use this user exit to fill additional fields in the sub-item with data from the main item.
  • USEREXIT_MOVE_FIELD_TO_TVCOM_H
You can use this user exit to influence text determination for header texts. For example, you can include new fields for text determination or fill fields that already exist with a new value.
  • USEREXIT_MOVE_FIELD_TO_TVCOM_I
You can use this user exit to influence text determination for item texts. For example, you can include new fields for text determination or fill fields that already exist with a new value.
  • User-Exits for product allocation:
The following user exits all apply to structure COBL, in which the data for account determination is copied to item level.
  • USEREXIT_MOVE_FIELD_TO_COBL
Option to include new fields in structure COBL.
  • USEREXIT_COBL_RECEIVE_VBAK
Option to assign values from the document header to the new fields.
  • USEREXIT_COBL_RECEIVE_VBAP
Option to supply values from the item to the new fields.
  • USEREXIT_COBL_SEND_ITEM
A changed field can be copied from the structure into the item. You could use the user exit to display a certain field in the account assignment block (see also MV45AFZB).
  • USEREXIT_COBL_SEND_HEADER
A changed field can be copied from the structure to the header (see source text MV45AFZB)
  • USEREXIT_SOURCE_DETERMINATION
You can use this user exit to determine which plant will be used for the delivery. In the standard system, the delivering plant is copied from the customer master or the customer-material info record. If you want to use a different rule, then you must enter it in this user exit.
  • USEREXIT_MOVE_FIELD_TO_ME_REQ
With this user exit you can include additional fields for the following fields:
  • EBAN (purchase requisition)
  • EBKN (purchase requisition-account assignment)
  • USEREXIT_GET_FIELD_FROM_SDCOM
Option to include new fields for the variant configuration. Fields that are included in structure SDCOM can be processed and then returned to the order.
  • USEREXIT_MOVE_WORKAREA_TO_SDWA
You can use this user exit to format additional work areas for the variant configuration. You will find notes on the user exit in MV45AFZB.
  • User-Exits for first data transfer:
The following user exits can only be used for the first data transfer.
Note
Only use the user exits if the names/fields do NOT have the same name.
  • USEREXIT_MOVE_FIELD_TO_VBAKKOM
Option to include additional fields in structure VBAKKOM (communiction fields for maintaining the sales document header)
  • USEREXIT_MOVE_FIELD_TO_VBAPKOM
Option to include additional fields in structure VBAPKOM (communication fields for maintaining a sales item)
  • USEREXIT_MOVE_FIELD_TO_VBEPKOM
Option to include additional fields in structure VBEPKOM (communication fields for maintaining a sales document schedule line)
  • USEREXIT_MOVE_FIELD_TO_VBSN
You can use this user exit to include fields in structure VBSN (scheduling agreement-related change status).
  • USEREXIT_MOVE_FIELD_TO_KOMKH
You can use this user exit to include new fields for batch determination (document header).
  • USEREXIT_MOVE_FIELD_TO_KOMPH
You can use this user exit to include new fields for batch determination (document item).
  • USEREXIT_CUST_MATERIAL_READ
You can use this user exit to set another customer number in the customer material info record (e.g. with a customer hierarchy)
  • USEREXIT_NEW_PRICING_VBAP
Option for entry of preconditions for carrying out pricing again (e.g. changes made to a certain item field could be used as the precondition for pricing to be carried out again). Further information in MV45AFZB.
  • USEREXIT_NEW_PRICING_VBKD
Option for entry of preconditions for carrying out pricing again (e.g. changes to the customer group or price group could be set as the preconditions for the system to carry out pricing again). Further information in MV45AFZB.
  • User-Exits in Program MV45AFZD
  • USEREXIT_CONFIG_DATE_EXPLOSION
The BOM is exploded in the order with the entry date. You can use this user exit to determine which data should be used to explode the BOM (explosion with required delivery date, for example).

User exits in the program FV45EFZ1

  • USEREXIT_CHANGE_SALES_ORDER
In the standard SAP R/3 System, the quantity and confirmed date of the sales document schedule line is changed automatically if a purchase requisition is allocated, and it or the sales document is changed (for example, quantity, date).
If you want to change this configuration in the standard system, you can define certain requirements in order to protect your sales orders from being changed automatically. Use this user exit for this purpose. Decide at this point whether the schedule lines are to be changed.

User-Exits in Program RV45PFZA

  • USEREXIT_SET_STATUS_VBUK
In this user exit you can you can store a specification for the reserve fields in VBUK (header status). Reserve field UVK01 could, for example, be used for an additional order status (as for rejections status, etc.).
The following workareas are available for this user exit:
  • VBUK (header status)
  • FXVBUP (item status)
  • FXVBUV (Incompletion)
  • USEREXIT_SET_STATUS_VBUP
In this user exit you can you can store a specification for the reserve fields for VBUP (item status).
The following workareas are available for this user exit:
  • FXVBAP (Item data)
  • FXVBAPF (Dynamic part of order item flow)
  • FXVBUV (Incompletion)
  • USEREXIT_STATUS_VBUK_INVOICE
You can use this user exit to influence billing status at header level.

User exits in the screens

Additional header data is on screen SAPMV45A 0309, additional item data on screen SAPMV45A 0459. These screens contain the Include screens SAPMV45A 8309 or SAPMV45A 8459 as user exits.

Fields which are also to be included in the sales document for a specific installation should be included on the Include screens for maintaining. If an application-specific check module is needed for the fields, this can be included in the Include MV45AIZZ. The module is called up in the processing logic of the Include screens.

For field transports, you do not have to make changes or adjustments.

Example

A new field, VBAK-ZZKUN, should be included in table VBAK.

If the check is defined via the Dictionary (fixed values or check table) the field must be included with the fullscreen editor in the Include screen SAPMV45A 8309. In this case, no change has to be made to the processing logic.

User Exits in Program MV45AFZ4

  • USEREXIT_MOVE_FIELD_TO_KOMK
You can use this user exit to add or edit additional header fields in the communication structure – KOMK- for free goods determination. For more information, see the New Fields for Free Goods Determination IMG activity.
  • USEREXIT_MOVE_FIELD_TO_KOMP
You can use this user exit to add or edit additional item fields in the communication structure KOMP for free goods determination. For more information see the New Fields for Free Goods Determination IMG activity.

User Exits in the SAPFV45PF0E and SAPFV45PF0C Programs

  • EXIT_SAPFV45P_001
You can use this user exit to decide whether intercompany billing data is used in the profitability segment for cross-company code sales, or whether the data comes from external billing (external customer, sales data from the selling company code.

Five Strategies for Utilizing Next-Generation Sales & Operation Planning

Five Strategies for Utilizing Next-Generation Sales & Operation Planning

 
Retailers are being hard hit by an unprecedented confluence of economic conditions negatively impacting consumer spending. The economy is forcing companies to scrutinize their business strategies and better align their changing demand patterns with their capacities, resources, marketing programs, and budgets to ensure they are investing in those product lines and channels of sales that can deliver the highest profits during these volatile times.

Leading companies, recognizing the need to transition from disparate, decentralized business decisions, are rethinking the role that Sales & Operation Planning (S&OP) can play in managing their business. They are moving beyond simplistic and purely tactical approaches of using S&OP as a means of balancing supply and demand within their supply chain, and instead using it as a way of aligning product launches, marketing and sales programs, production plans, and resource allocations to ensure their investments are being made appropriately to achieve their strategic business objectives.

JDA offers the following five strategies – based on industry best practices – that can help companies develop, implement and maximize the benefits of next-generation approaches to S&OP.

1. Transition S&OP from Tactical to Strategic. The view of S&OP as a means to tactically balance supply and demand within the short-term horizon in the supply chain is restrictive. Leading companies view S&OP more strategically, shifting from a purely tactical implementation to utilizing S&OP as a critical element for more strategic integrated business planning. A strategic S&OP orientation aligns all supply chain plans with the corporate financial objectives and strategy, eliminating internal and external silos and taking a company to the next level of planning.

A solution that provides the information and workflows to support the proven S&OP best-practice processes will enable the synchronization of supply, demand, marketing programs, sales programs, financial goals and the achievement of a strategic business plan. Using S&OP to focus on the medium- to long-term horizon where decisions can have a strategic impact has delivered significant improvements to companies that have truly adopted S&OP as an integrated business process.

2. Cross-Functional People and Process Integration is Key. In an industry best-practices survey conducted by JDA in April 2008, 89 percent of respondents use S&OP or some other process for balancing demand with supply. For 38 percent of the respondents, the supply chain organization was taking the lead to deploy and facilitate the S&OP processes. A majority (60 percent) utilized their S&OP processes as a means of managing the supply side of their businesses.

Next-generation S&OP processes and solutions are bridging gaps between the demand and supply side of manufacturing operations, logistics, purchasing and upstream suppliers; while also integrating profitability analysis and securing senior leadership involvement to drive strategic business decisions. Synchronizing plans upstream and downstream provides the best possible decision making process for demand-side sales, marketing, financial and the supply-side operational plans – for a far faster return on investment.

3. Leverage the Power of an Integrated S&OP Solution. Companies have traditionally employed a range of software applications to support S&OP processes, often requiring time-consuming data extracts and manually transposing data into multiple spreadsheets and reports. However, independent, disconnected software applications can place a company at risk with outdated data lingering on desktops – fostering inconsistencies in terms of analysis assumptions.

It doesn’t take long for downstream users to start questioning data integrity, allowing the opportunity for problems to arise. An integrated solution with built-in, best-practice workflows provides significant benefits by reducing resources spent collecting and analyzing data, building spreadsheets, and transposing the data into presentable formats to support management review.

The right next-generation S&OP solution offers effective capabilities for providing forward-looking views of the business to support the appropriate product, demand, supply, financial and management reviews in a graphical orientation that quickly identifies business impacts, allowing for rapid, informed decision-making.

4. Incorporate Key Corporate Metrics and Long-View Forecasting and Planning. S&OP has the power to impact key corporate metrics, including improvements in customer service, inventory levels, as well as purchasing, production and expediting cost reductions. The process ideally provides continuous improvement in inventory turns, sales, cost metrics and manufacturing efficiencies – with relevant benchmarks linked directly to individuals involved in cross-functional processes and held accountable to a unified S&OP plan.

Industry best practices have evolved from short-term demand and production planning, to a more strategic time horizon that enables a more impactful effect on the attainment of corporate-wide goals and financial commitments. Companies that previously may have had only a cursory understanding of current fiscal year projections are now able to expand their horizon to two to three years or more. Leading S&OP solutions offer unconstrained and constrained views of demand and capacity needs for proactive long-term planning – facilitating optimal responses, as well as shaping future demand to meet business objectives.

5. Formalize Leadership Structure and Accountability for Optimal S&OP Benefits. In JDA’s survey, nearly 75 percent of respondents cited corporate culture issues as barriers to effective S&OP implementation. In particular, there was a lack of leadership and support from executive ranks, with only 16 percent of CEOs regularly involved in the S&OP process. Accountability was low across the board. Additionally, demand and manufacturing plans were most commonly cited as the sole outputs of S&OP.

S&OP offers strategic capabilities to ensure plans in all functions and geographies are aligned and support company strategies. Cross-functional integration optimizes transparency and facilitates better communication from upper management, with clear lines between leadership decisions and their impact on departments and results. The process should be formalized and spearheaded by senior management on a monthly basis, evaluating and making decisions based on accurate time-phased projections that ensure corporate objectives and strategies are attained.

Forward thinking companies are already implementing best-practice S&OP processes and technology to synchronize their supply, demand and execution to achieve the desired financial results. While an ambitious goal, the process can be approached incrementally as resources permit. S&OP integration is applicable to virtually all enterprises, regardless of their capabilities, size and industry. The right strategies can yield dramatic and brisk returns in terms of inventory reductions, improved fill rates to customers, reduced costs and enhanced revenues. Those companies that succeed in planning beyond near-term forecasts and short-term goals will find themselves well positioned to compete despite volatile market forces and future economic conditions.

 
Retrieved from https://risnews.com/five-strategies-utilizing-next-generation-sales-operation-planning