Você está na página 1de 55

SAP EHP 5 New Procurement Functionalities - business function LOG_MM_CI_3

Posted by Devi S Mar 13, 2012

In this blog, we will discuss only about most commonly used enhancement package 5 for Procurement business function LOG_MM_CI_3 which offers customers greater long-term value and an easier methodology. Activation of business function using SFW5 transaction

After activation, we will be able to see a) Park Button b) Templates button d) blocking reason PO. c) Document Flow Indicator e) Retail (required only for IS-Retail) in PR &

Park Button:

Use : We can park and hold purchase orders and purchase requisitions for materials and services: Holding of Purchasing Documents : Creating a purchasing document with missing information at that point in time, or may be interrupted when creating the document. In this case, we can still put, for example, an incomplete purchase order on hold, and finish it at a later point in time before saving. Parking of Purchasing Documents : If we want to create a purchasing document, the document may be complete from the materials management point of view, but some financial information may still be missing at that point in time (FI view). In such cases, we can then provisionally save (park) the purchasing document and continue processing it at a later point in time before saving. This function is available in the following transactions:

Create Purchase Order (ME21N) and Change Purchase Order (ME22N) Create Purchase Requisition (ME51N) and Change Purchase Requisition (ME52N) Pushbuttons for park and hold have been added to the user interface. The visibility of these pushbuttons depends on the processing stage of the purchasing document. If we want to exit the creation process before it is finished, we can choose the relevant pushbutton, and the system saves accordingly. Configuration Path to activate Park & Hold button :

Public Templates in Purchase Orders and Requisitions (New) Use : We can create purchase requisitions and purchase orders more efficiently by using templates. We can use the following functions: Create, use, and delete user-specific templates Create, use, and delete public templates, which are available to all users We can use entered data as a template without having to save the document first. From the templates we create, we can copy either header and item data or only item data to a purchasing document. This function is available in the following transactions:

Create Purchase Order (ME21N) and Change Purchase Order (ME22N) Create Purchase Requisition (ME51N) and Change Purchase Requisition (ME52N) In these transactions, there are two additional pushbuttons: Save as Template and Load from Template. To create templates that are available to all users, we need the appropriate authorizations (authorization object Create/Change/Delete Public Templates M_TEMPLATE). Note : When we copy a user, the user-specific templates of the user we are copying are also copied to the new user master record.

Entering of Blocking Reasons in Purchase Orders (New) Use We can save the reasons for blocking a purchase order item in purchase orders. In Customizing for Materials Management, we can create various blocking reasons with language-dependent texts, which are available in a dropdown box when we block purchase orders. When we block a purchase order item, we can select a suitable blocking reason in the item details. We also define in Customizing whether the text for a blocking reason ID can only be copied unchanged, or whether we can overwrite the text with our own reason. If we overwrite the text for a blocking reason ID in the purchase order, we lose the language dependency. Effects on Existing Data: In the transactions ME21N (Create Purchase Order), ME22N (Change Purchase Order), ME23N (Display Purchase Order), and ME29N (Release Purchase Order), there are new fields for selecting and displaying a blocking reason when blocking purchase order items. The system displays the following fields for blocked purchase order items in the item details on the Purchase Order History tab page: Blocking reason ID (BLK_REASON_ID) Blocking reason text (BLK_REASON_TXT) Blocking Reason Config Path:

PO Item Level Screen:

Extended Document Flow in MM and SD Documents (New)

Use : We can display all the related purchasing and sales documents in purchase requisitions, purchase orders, inbound deliveries, and outbound deliveries with the business function Materials Management - Enhancements in Procurement (LOG_MM_CI_3),

In the item overview, we can use the new pushbutton Extended Document Flow. This pushbutton enables us to display purchasing and sales documents that are related to the selected purchasing or sales item. For example, we can display the sales documents related to a purchase requisition or purchase order item, or the purchasing documents related to delivery items. We can only call the extended document flow for deliveries that reference a purchase order.

Effects on Existing Data

In the item overview of the following transactions, we can use the new pushbutton Extended Document Flow: ME52N and ME53N for changing and displaying purchase requisitions ME22N and ME23N for changing and displaying purchase orders VL02N and VL03N for changing and displaying outbound deliveries VL32N and VL33N for changing and displaying inbound deliveries Document flow example:

Important Side-effects note: 1653977 - ME22N - AM 250 Address errors when creating new items 1625040 Template Selection for Purch. not possible 1602965 - MAA2: Commitment, VL09 VL622, and serial numbers (Side effect note : Note 1667310 - MAA2: Short dump when releasing GR blocked stock w/ MIGO 105)

1563462 - ME21n: Activating allocation table fields in retail tab to remove retail tab:

For more info: http://service.sap.com/erp-ehp 970 Views 1 Comments Permalink

Impact of MR11 Execution


Posted by Ranjit John Mar 8, 2012 I started researching on GR/IR & MR11 after we came across a business scenario. Let me explain the business scenario that we came across. Against a Purchase Order created in 2010 Goods receipt was made in 2011 and Invoice received in 2012. As a best practice we have cleared all GR/IR balance for the year 2011 during year end through MR11. By March 2012 the vendor has sent the invoice. Since the entry was cleared from GR/IR, we were not sure on how to make the payment to the vendor. After detailed study research I could get more understanding on GR/IR and MR11 which I thought I will share . Whenever a goods receipt is done GR/IR account is hit, and if the process runs smoothly i.e. Goods receipt = Invoice Receipt, GR/IR gets cleared automatically. But entries will be left out in GR/IR if (Practical Scenarios we came across); 1) Invoice received is Greater than Goods Received (More number of Goods Invoiced). 2) Invoice received is Greater than Goods Received (GR =I R goods receipt, Invoice contains Freight Charges, transportation charges and any other charges) 3) Goods Received is Greater than Invoice Received. 4) Invoice Received and Goods not received 5) Goods Received, Invoice Received but invoice cleared not against the PO 6) Goods Received, Invoice Not Received

Now let us try to analyze the impact of MR11 in all the scenarios; Scenario 1: Goods Received is Less than Invoice Received (More number of Goods Invoiced) Purchase Order Quantity = 15 Nos GL Entries during Goods Receipt = 10 Nos Debit Credit Stock of Material 10 GR / IR 10 After Invoice receipt Quantity = 15 Nos Debit Credit GR / IR 15 Vendor Account 15 Assuming if the remaining 5 Nos will be received latter Debit Credit Stock of Material 5 GR / IR 5 In our example we imagine that extra Quantity 5 Nos is not delivered. So in order to clear GR/IR we have to run MR11. After executing MR11 Debit Credit Stock of Material 5 GR / IR 5 In this case the MAP of the material will be; Inventory details Before Goods Receipt Material Quantity Amount MAP material X 10 100 10 After Goods receipt Material Quantity Amount MAP material X 20 (10 + 10) 200 (100 + 100) 10

After Executing MR11 Material Quantity Amount MAP material X 25 (10 + 10 + 5) 300 (100 + 100 + 50) 10 Note: No Change in MAP of the material Scenario 2: Invoice received is Greater than Goods Received (GR =I R goods receipt, Invoice contains Freight Charges, transportation charges and any other charges) Purchase Order Quantity = 15 Nos +Freight Charge + Air Charge GL Entries during Goods Receipt = 15 Nos +Freight Charge + Air Charge Debit Credit Stock of Material 25 Material GR / IR 15 Freight GR / IR 7 Air Faire GR / IR 3 After Invoice receipt Quantity 15 Nos Debit Credit Material GR / IR 15 Vendor Account 15 After MR11 Execution Debit Credit Freight GR / IR 7 Stock of Material 7 Air Faire GR / IR 3 Stock of Material 3 In this case the MAP of the material will be; Inventory details Before Goods Receipt Material Quantity Amount MAP material X 10 100 10 After Goods Receipt Material Quantity Amount MAP material X 25 (10 + 15) 350 (100 + 150 + 70 + 30) 14

After Executing MR11 Material Quantity Amount MAP material X 25 (10 + 15) 150 (100 + 150 - 70 - 30) 6 Scenario 3: Goods Received is Greater than Invoice Received Purchase Order Quantity = 15 Nos GL Entries during Goods Receipt = 15 Nos Debit Credit Stock of Material 15 GR / IR 15 After Invoice receipt Quantity = 10 Nos Debit Credit GR / IR 10 Vendor Account 10 Assuming if the remaining 5 Nos Invoice will be received latter Debit Credit GR / IR 5 Vendor Account 5 In our example we imagine that extra Quantity 5 Nos Invoice is not received. So in order to clear GR/IR we have to run MR11. After executing MR11 Debit Credit GR / IR 5 Stock of Material 5 In this case the MAP of the material will be; Inventory details Before Goods Receipt Material Quantity Amount MAP material X 10 100 10 After Goods receipt

Material Quantity Amount MAP material X 25 (10 + 15) 250 (100 + 150) 10 After Executing MR11 (Only Value of the material will be hit, quantity remains same) Material Quantity Amount MAP material X 25 (10 + 10 + 5) 200 (100 + 150 - 50) 8 Scenario 4: Goods Received, Invoice Received but invoice cleared not against the Scenario 5: PO Goods Received, Invoice not Received Purchase Order Quantity = 15 Nos GL Entries during Goods Receipt = 15 Nos Debit Credit Stock of Material 15 GR / IR 15 After executing MR11 Debit Credit GR / IR 15 Stock of Material 15 In this case the MAP of the material will be hit; Inventory details Before Goods Receipt Material Quantity Amount MAP material X 10 100 10 After Goods receipt Material Quantity Amount MAP material X 25 (10 + 15) 250 (100 + 150) 10 After Executing MR11 (Only Value of the material will be hit, quantity remains same) Material Quantity Amount MAP material X 25 (10 + 15) 100 (100 + 150 - 150) 4 All the Scenario explained above is when the Material Stock is equal to the Quantity to be Cleared.

If material Stock is not equal to Quantity to be cleared the actual stock quantity is debited or credited proportionally. The remaining amount is posted to a price difference account. Ideally MR11 should be executed once in a year or twice after getting clearance from MM team and the FI team. Executing MR11 can either over estimate or under estimate the stock value. More Details Can be found from: http://help.sap.com/saphelp_46c/helpdata/en/a8/b99471452b11d189430000e829fbbd/content.htm Also refer the following SAP Notes; 10757 -> FAQ: MR11, clear GR/IR clearing account 790426 -> MR11: Functionality 710865 -> MR11: Important information on account maintenance 1226 Views 12 Comments Permalink Tags: sap_developer_network, financial_excellence, mill_products_and_mining

ERP MM - New Component Hierarchy Tree


Posted by Arminda Jack Feb 22, 2012 Dear Forum Members,

In SAP Active Global Support, we are underway with a project to simplify the component selection process for our customers. From our analysis of customer feedback and usability studies, we have found that customers have difficulty in navigating through the component hierarchy tree, and as such, often end up choosing incorrect components. We will therefore be reducing the number of MM components visible to customers.

Goal Based on an analysis of incoming message volume, 20 components have been selected for hiding because of a lack of usage, or because they could be easily absorbed by other areas or parent components. See the list below which shows the components which will be hidden.

Benefit The reduction of components will assist us in Support as less component granularity leads to swifter and easier dispatching. Secondly, the reduction will pay dividends on the SMP Message Wizard as fewer components being proposed to the customer in the SMP means easier component selection and increased satisfaction. Please see following table for details of the removed components and their alternative components. We plan to introduce component hiding from 8th of March, 2011. Furthermore, we will use this thread to inform you, our customers, of any updates to the MM component hierarchy as and when we have such details.

Component to be Hidden MM-PUR-ADB-PRN MM-PUR-SSP-CAT MM-PUR-SSP-FOD MM-PUR-SSP-UI MM-PUR-SSP-WFL MM-PUR-GF-DOCU MM-PUR-GF-EURO MM-PUR-OPT-IB MM-PUR-OPT-LB MM-PUR-OPT-PLW MM-PUR-EM-DIC MM-PUR-EM-PO MM-IM-GF-DTF-RES MM-IM-GF-DTF-STK MM-IM-GF-PHI MM-IM-RS-APO MM-IV-ADB-PRN MM-IV-GF-REP MM-IV-INT-BARC MM-IV-INT-SD

Comp Description Document output with Adobe document services Catalog for Shopping Cart Follow-on Documents for Shopping Cart UI configurations / POWL / EP Workflow for Shopping Cart Documentation EURO Investment Buy Load Building Planning Workbench Dependent Item Calculator Empties Management in Purchase Orders Data Transfer: Reservations Data Transfer: Stocks Data Transfer: Physical Inventory Reservations - APO Interface Document Output with Adobe Reporting Barcode Entry Sales and Distribution

Alternative Component MM-PUR-GF-OC MM-PUR-SSP MM-PUR-SSP MM-PUR-SSP MM-PUR-SSP MM-PUR-GF MM-PUR-GF MM-PUR-OPT MM-PUR-OPT MM-PUR-OPT MM-PUR-EM MM-PUR-EM MM-IM-GF-DTF MM-IM-GF-DTF MM-IM-PI-BTC MM-IM-RS MM-IV-ADB MM-IV-GF MM-IV-gf MM-IV-INT

Please feel free to post any comments or queries related to this topic and we will respond at our earliest convenience.

Kind Regards, SAP ERP MM Moderators

Multiple Currencies in Purchase Order Release Strategy


Posted by Arminda Jack Jul 3, 2011

In PO release strategy one of the most used characteristics is the net order value. In case the company exists in multiple countries, we need to define the release strategy taking this into account. Please note that the functionality of the release strategy for having multiple currency code is not available in the standard. You can use the user exit EXIT_SAPLEBND_001 to change the SAP standard behavior. However, there is a workaround available. If you want to use different currencies in your release approval procedure you must create different release strategy and maintain for every currency own characteristics. The header data currency is then converted into local currency (Company code currency) and afterwards the local currency is converted into the currency of the characteristics as explained in the SAP Note 493900 question 13: 13. Question : How is the currency converted? Answer : The header currency is converted to local currency (company code currency) and then the local currency is converted to the characteristic currency. In this blog, we will try to explain how to customize this.

Business scenario Company 1000 exists in two countries. These countries have USD and EUR as local currency.

We would like to define the release strategy with the following characteristics: Plant: Net order value : CEKKO-WERKS CEKKO-GNETW

And for CEKKO-GNETW we would like to have the following release levels: Level USD Level1 0<1500 Level2 > 1500 Exchange rate: 1 USD = 0.69 EUR EUR 0<1000 > 1000

Scenario 1: Define one characteristic who uses CEKKO-GNETW: PO_NET_ORDER_VALUE Maintain values in USD as per the exchange rate conversion. Company Code Currency Strategy 1 PO_NET_ORDER_VALUE Strategy 2 PO_NET_ORDER_VALUE 1000 USD U1 0<1500 USD U2 >1501 USD 2000 EUR E1 0<1032 USD E2 > 1032 USD

Advantages and Desadvantages: (+) easy to mantain when you have a new company code (-) if the exchange rate changes continuously, the values defined for the intervals, need to be maintained often.

Scenario II:

We create characteristics for each currency involved: PO_NET_ORDER_VALUE1 - USD PO_NET_ORDER_VALUE 2 - EUR It is necessary to define a value for any characteristic. There should not be a blank value. Company Code Currency Strategy PO_NET_ORDER_VALUE1 PO_NET_ORDER_VALUE2 1000 USD U1 0<1500 USD > 1 EUR 1000 EUR E1 >1 USD 0<1000 EUR

Advantages and Desadvantages: (+) we do not need to maintain the release value if the exchange rates changes (-) if you add a new country, the maintenance is more difficult

Here is a programm to find BADIs and Exits for a certain transaction.


Posted by Arminda Jack Oct 29, 2010 A couple of months ago I found an interesting program that listed all user exits that could be used in a transaction. I wrote this in the blog:

Looking for user exits for a specific transaction?

Now I found one even better: ZAG_FIND_BADI. With this programm you get not only the exits, but also the BADIS. I hope you enjoy it as much as i have:

*&---------------------------------------------------------------------* *& Report ZAG_FIND_BADI

*& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZAG_FIND_BADI. TABLES : TSTC, TADIR, MODSAPT, MODACT, TRDIR, TFDIR, ENLFDIR, SXS_ATTRT , TSTCT. DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE. DATA : FIELD1(30). DATA : V_DEVCLASS LIKE TADIR-DEVCLASS. PARAMETERS : P_TCODE LIKE TSTC-TCODE, P_PGMNA LIKE TSTC-PGMNA .

DATA WA_TADIR TYPE TADIR. START-OF-SELECTION.

IF NOT P_TCODE IS INITIAL. SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE. ELSEIF NOT P_PGMNA IS INITIAL. TSTC-PGMNA = P_PGMNA. ENDIF. IF SY-SUBRC EQ 0. SELECT SINGLE * FROM TADIR WHERE PGMID = 'R3TR' AND OBJECT = 'PROG' AND OBJ_NAME = TSTC-PGMNA. MOVE : TADIR-DEVCLASS TO V_DEVCLASS. IF SY-SUBRC NE 0. SELECT SINGLE * FROM TRDIR WHERE NAME = TSTC-PGMNA. IF TRDIR-SUBC EQ 'F'. SELECT SINGLE * FROM TFDIR WHERE PNAME = TSTC-PGMNA. SELECT SINGLE * FROM ENLFDIR WHERE FUNCNAME = TFDIR-FUNCNAME. SELECT SINGLE * FROM TADIR WHERE PGMID = 'R3TR' AND OBJECT = 'FUGR' AND OBJ_NAME EQ ENLFDIR-AREA.

MOVE : TADIR-DEVCLASS TO V_DEVCLASS. ENDIF. ENDIF. SELECT * FROM TADIR INTO TABLE JTAB WHERE PGMID = 'R3TR' AND OBJECT IN ('SMOD', 'SXSD') AND DEVCLASS = V_DEVCLASS.

SELECT SINGLE * FROM TSTCT WHERE SPRSL EQ SY-LANGU AND TCODE EQ P_TCODE. FORMAT COLOR COL_POSITIVE INTENSIFIED OFF. WRITE:/(19) 'Transaction Code - ', 20(20) P_TCODE, 45(50) TSTCT-TTEXT. SKIP. IF NOT JTAB[] IS INITIAL. WRITE:/(105) SY-ULINE. FORMAT COLOR COL_HEADING INTENSIFIED ON.

* SORTING THE INTERNAL TABLE SORT JTAB BY OBJECT.

DATA : WF_TXT(60) TYPE C, WF_SMOD TYPE I , WF_BADI TYPE I , WF_OBJECT2(30) TYPE C. CLEAR : WF_SMOD, WF_BADI , WF_OBJECT2. *GET THE TOTAL SMOD. LOOP AT JTAB INTO WA_TADIR. AT FIRST. FORMAT COLOR COL_HEADING INTENSIFIED ON. WRITE:/1 SY-VLINE, 2 'Enhancement/ Business Add-in', 41 SY-VLINE , 42 'Description', 105 SY-VLINE. WRITE:/(105) SY-ULINE. ENDAT. CLEAR WF_TXT. AT NEW OBJECT. IF WA_TADIR-OBJECT = 'SMOD'. WF_OBJECT2 = 'Enhancement' . ELSEIF WA_TADIR-OBJECT = 'SXSD'. WF_OBJECT2 = ' Business Add-in'. ENDIF.

FORMAT COLOR COL_GROUP INTENSIFIED ON. WRITE:/1 SY-VLINE, 2 WF_OBJECT2, 105 SY-VLINE. ENDAT. CASE WA_TADIR-OBJECT. WHEN 'SMOD'. WF_SMOD = WF_SMOD + 1. SELECT SINGLE MODTEXT INTO WF_TXT FROM MODSAPT WHERE SPRSL = SY-LANGU AND NAME = WA_TADIR-OBJ_NAME. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. WHEN 'SXSD'.

* FOR BADIS WF_BADI = WF_BADI + 1 . SELECT SINGLE TEXT INTO WF_TXT FROM SXS_ATTRT WHERE SPRSL = SY-LANGU AND EXIT_NAME = WA_TADIR-OBJ_NAME. FORMAT COLOR COL_NORMAL INTENSIFIED ON. ENDCASE.

WRITE:/1 SY-VLINE, 2 WA_TADIR-OBJ_NAME HOTSPOT ON, 41 SY-VLINE , 42 WF_TXT, 105 SY-VLINE. AT END OF OBJECT. WRITE : /(105) SY-ULINE. ENDAT.

ENDLOOP. WRITE:/(105) SY-ULINE.

SKIP. FORMAT COLOR COL_TOTAL INTENSIFIED ON. WRITE:/ 'No.of Exits:' , WF_SMOD. WRITE:/ 'No.of BADis:' , WF_BADI. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(105) 'No userexits or BADis exist'. ENDIF. ELSE.

FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(105) 'Transaction does not exist'. ENDIF. AT LINE-SELECTION. DATA : WF_OBJECT TYPE TADIR-OBJECT. CLEAR WF_OBJECT.

GET CURSOR FIELD FIELD1. CHECK FIELD1(8) EQ 'WA_TADIR'. READ TABLE JTAB WITH KEY OBJ_NAME = SY-LISEL+1(20). MOVE JTAB-OBJECT TO WF_OBJECT. CASE WF_OBJECT. WHEN 'SMOD'. SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10). CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN. WHEN 'SXSD'. SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20). CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN. ENDCASE.

Looking for user exits for a specific transaction?


Posted by Arminda Jack Aug 4, 2010 Would you like to find which user exits can be used while executing a specific transaction? You can achieve this with a simple program. Add this code to a new program which you will call "z_find_userexit " REPORT z_find_userexit NO STANDARD PAGE HEADING. &--------------------------------------------------------------------*& Enter the transaction code that you want to search through in order *& to find which Standard SAP User Exits exists. &--------------------------------------------------------------------&--------------------------------------------------------------------*& Tables &--------------------------------------------------------------------TABLES : tstc, "SAP Transaction Codes tadir, "Directory of Repository Objects modsapt, "SAP Enhancements - Short Texts modact, "Modifications trdir, "System table TRDIR tfdir, "Function Module enlfdir, "Additional Attributes for Function Modules

tstct. "Transaction Code Texts &--------------------------------------------------------------------*& Variables &--------------------------------------------------------------------DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE. DATA : field1(30). DATA : v_devclass LIKE tadir-devclass. &--------------------------------------------------------------------*& Selection Screen Parameters &--------------------------------------------------------------------SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001. SELECTION-SCREEN SKIP. PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY. SELECTION-SCREEN SKIP. SELECTION-SCREEN END OF BLOCK a01. &--------------------------------------------------------------------*& Start of main program &--------------------------------------------------------------------START-OF-SELECTION. * Validate Transaction Code

SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode. * Find Repository Objects for transaction code IF sy-subrc EQ 0. SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' AND object = 'PROG' AND obj_name = tstc-pgmna. MOVE : tadir-devclass TO v_devclass. IF sy-subrc NE 0. SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna. IF trdir-subc EQ 'F'. SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna. SELECT SINGLE * FROM enlfdir WHERE funcname = tfdir-funcname. SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR'

AND object = 'FUGR' AND obj_name = enlfdir-area. MOVE : tadir-devclass TO v_devclass. ENDIF. ENDIF. * Find SAP Modifactions SELECT * FROM tadir INTO TABLE jtab WHERE pgmid = 'R3TR' AND object = 'SMOD' AND devclass = v_devclass. SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND tcode EQ p_tcode. FORMAT COLOR COL_POSITIVE INTENSIFIED OFF. WRITE:/(19) 'Transaction Code - ', 20(20) p_tcode, 45(50) tstct-ttext. SKIP. IF NOT jtab[] IS INITIAL. WRITE:/(95) sy-uline.

FORMAT COLOR COL_HEADING INTENSIFIED ON. WRITE:/1 sy-vline, 2 'Exit Name', 21 sy-vline , 22 'Description', 95 sy-vline. WRITE:/(95) sy-uline. LOOP AT jtab. SELECT SINGLE * FROM modsapt WHERE sprsl = sy-langu AND name = jtab-obj_name. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. WRITE:/1 sy-vline, 2 jtab-obj_name HOTSPOT ON, 21 sy-vline , 22 modsapt-modtext, 95 sy-vline. ENDLOOP. WRITE:/(95) sy-uline. DESCRIBE TABLE jtab. SKIP. FORMAT COLOR COL_TOTAL INTENSIFIED ON.

WRITE:/ 'No of Exits:' , sy-tfill. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'No User Exit exists'. ENDIF. ELSE. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE:/(95) 'Transaction Code Does Not Exist'. ENDIF. * Take the user to SMOD for the Exit that was selected. AT LINE-SELECTION. GET CURSOR FIELD field1. CHECK field1(4) EQ 'JTAB'. SET PARAMETER ID 'MON' FIELD sy-lisel+1(10). CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

I hope this program will be useful for you!.

Transport of Release Strategies? Not a good idea


Posted by Arminda Jack Jul 5, 2010 As many of you might already have experienced, if you try to transport the release strategy customizing, the data in the new system is inconsistent.

The reason for this system behavior is that the classification data cannot be 'transported', it has to be sent by ALE. Therefore you could use transactions:

BD91 for sending characteristics BD92 for sending classes BD93 for sending classifications.

The correct order is important here! Please proceed as in note 45951 described. You can review the following SAP notes for more information: 365604 FAQ: Release strategies in purchasing 86900 Transport of Release strategies (OMGQ,OM 45951 Transporting class data: system / client You can read more about how to set-up ALE in the help.sap.com: R/3 Library -> CA - Cross Aplication Components -> Business Framework Architecture -> ALE Integration Technology -> ALE Quick start). If you do not want to use the ALE to send the release strategy customizing, then the only other solution is to enter the data manually in the new system.

Would you like to SNIF?: All you enhacements at one blick


Posted by Arminda Jack May 17, 2010 SNIF is a very useful program that lets you see at once all your customer enhacements. You can run it from transaction SE38:

" You can click which enhacements youd like to adminstrate:

And there you have all the information you need about your customer enhacements, without having to execute many different transactions:

"I

I hope this is an useful tool for you, as it was for me when I first discovered it.

Customizing of Material Type and MM Inconsistency Prevention


Posted by Jimmy Zhang May 7, 2010 Let us first see an example how stock inconsistency will occur because of the customizing change on quantity/value updating flag for the material type. In transaction MMBE, the current stock of the material TESTMAT_1 in plant 1000 is zero (material type is ROH):

Since the material type is ROH (Raw Material), normally the accounting view is available for the material. Check in MM03, accounting view, the stock valuation data is consistent to the stock quantity in MMBE as zero:

At the moment, the customizing of quantity/value updating flag for the material type ROH could be checked in transaction OMS2:

Since at the moment, the quantity and value updating indicators are ticked for the material type ROH, we expect any goods movement for material TESTMAT_1 in plant 1000 will cause update on stock quantity and valuation data. So firstly we will do a test goods receipt to check out the result: In transaction MIGO, a test GR is done for the material TESTMAT_1 in plant 1000 for 10 PC:

The result in MMBE and MM03 is consistent to each other as below:

Now let us change the customizing of quantity/value updating flag for the material type ROH:

Now we do a test goods movement again to check out the result. It is a goods issue for 5 PC:

The result shows now the inconsistency between the stock quantity in MMBE and the stock valuation data in MM03:

If now you change back the customizing of quantity/value updating flag for the material type ROH in OMS2, so that the quantity and value updating indicators are ticked for the material type ROH, the inconsistency could be reported by inconsistency check report MB5K:

To prevent such inconsistency, if you want to change the value and/or quantity update of the material types, you have to book out the existing stocks in advance. Ensure that you book out existing stocks in your productive system before you transport the Customizing changes. After the customizing change, book back the stocks.

However this best practice is not aware of by everyone when doing customizing change on value and/or quantity update of the material types. So note 1396442 was introduced to provide reminder message when doing the customizing change. After the note implementation, there will be such warning message:

Thus, hopefully we can avoid this kind of inconsistency in the future.

Restriction of Maximum 999 FI Document Items During MM transactions


Posted by Jimmy Zhang Mar 22, 2010 I guess you might have this experience. While entering a goods receipt (MM-IM) through transaction MIGO, there is the error message: F5727 "Maximum number of items in FI reached".

There is a limit of (999) line items which can be posted per FI document. This is because the line item number (BSEG-BUZEI) field length is defined as (3) numeric positions, i.e., (999) line items. The most commonly used workarounds are as follows:
1. Implement FI summarization (per note 36353).

2. Split the MM document which needs to be posted. For example, in the Goods Movements or the invoice document, there are around 500 line items which will lead to more than 999 line items in the accounting document. Then split the 500 line items into different MM postings, so that each posting will only contain less line items which creates accounting document items less than 999. Now with the new solution from note 1353827 (for MM-IM) and note 1353125 (for MM-IV), the FI documents would be automatically splitted. As a result you would have several FI documents assigned to one MM document. Thus you don't have to worry about the error F5727 or splitting the MM documents. For details you could check the notes above. But there are some points you need to pay attention:

To let system executes an automatic document split in FI for MM postings with more than 999 line items in FI, summarization should not be activated. When system is doing FI document splitting, ACCIT_FI-LOGVO field which contains the mseg line information is used to assure, that the split is not done within one material item.

I.e. the FI document line items for one same MM document item should not be splitted into different FI documents. Let us take a look at an example where this automatic document split in FI happens: This material document contains 533 line items:

Previously when posting such material document, there will be F5727 because the line items in the FI document will be more than 999 line items. But with automatic document split in FI, material document got posted and there are 2 FI documents were created:

Cool, huh?

Why can certain fields not be changed using MEMASSPO, or which fields can be changed?
Posted by Arminda Jack Mar 3, 2010 With the transaction MEMASSPO we can mass change purchase orders fields. But once in a while we find some fields that are not changed by the transaction and we do not know why. MEMASSPO has restrictions, not all fields can be changed. The ME_LIMIT_FIELDS_PO function module basically contains all non-changeable fields for the mass change of the purchase order.

In addition, the following item fields cannot be changed with existing items:

Material number (EKPO-EMATN) Material short text (EKPO-TXZ01) Order quantity (EKPO-MENGE) Order unit (EKPO-MEINS) Net order price (EKPO-NETPR) Purchase order price unit (EKPO-BPRME)

Plant (EKPO-WERKS)

I hope this information helps you while working with MEMASSPO.

Non-Deductible Tax in Procurement


Posted by Jimmy Zhang Feb 22, 2010 The detailed explanations regarding Taxes in purchasing are recorded in below SAP notes: 501054 214151 FAQ: Taxes in purchasing Tax processing in purchasing

Let us review the customizings and have an example of non-deductible tax in procurement process. The simple example is procurement of non-stock material. 1. The setting of tax record which is assigned to a tax code in purchasing in FI Customizing (transaction FTXP).

2. For the determination of the tax code via the condition technique, condition type NAVS with assigned access sequence 003 is available in the standard system. Let us check the condition type in MM-PUR customizing (transaction M/06):

In principle, you can assign this access sequence also to other condition types. The tax code is only transferred to the purchase order if class 'D' (taxes) is the condition type. If there are several condition types of this class in the condition schema, then the first condition schema which contains a tax code has priority. Non-deductible part of the tax should be regarded as an additional cost item of the procurement because the tax authorities do not refund this amount unlike the deductible part of the tax. Therefore, the non-deductible part of the tax is added to the stock value during the inventory posting. In the purchase order item, the non-deductible tax amount is saved in field EKPO-NAVNW and, if existing, it is saved in the first condition type of category 'N' (non-deductible tax). For this reason, calculation rule 'B' (fixed amount) must be set for the condition type (also refer to Note 138434).

3. Now the condition record needs to be maintained for the condition type NAVS in transaction MEK1:

Please note since we will create a PO for non-stock material, the key combination should be "Taxes: Plant, Account Assignment Origin and Region". Then the tax code is assigned to the condition record.

4. Let us now create a PO with Non-deductible part of the tax:

In the condition tab, we could see the calculated Non-Deductible Tax:

5. After the GR of the PO, from the accounting document we could see the the non-deductible part of the tax is added to the stock value during the inventory posting:

6. The next step is to create the invoice receipt for the PO:

From the accounting document of above IR, we could see the GR/IR clearing between GR and IR:

Now we have had a simple example to overview the use of Non-Deductible Tax. Let us change the customizing to further understand the configuration of Non-Deductible Tax condition type NAVS. If we change the calculation type from B (Fixed amount) to A (Percentage), then what will happen?

Now let us create a new PO with condition type NAVS:

At the moment in table EKPO, EKPO-NAVNW=15 which is still the fix amount instead of the calculated one based on the percentage. In the next step GR we could see the result of the Nondeductible tax more clearly.

As note 501054 stated: Calculation rule 'B' (fixed amount) must be set for the condition type (also refer to Note 138434). Moreover, you have to take into account that the non-deductible tax amount is calculated with function module 'CALCULATE_TAX_ITEM' program-internally. The calculation does not occur within the price determination. As a result of this, the tax amount is only calculated after you have returned from the condition screen and is not calculated on the condition screen when you change the price. 80 Views 1 Comments Permalink

Are you having problems with fields that are not ready for input in MM?
Posted by Arminda Jack Feb 8, 2010 When creating or changing purchasing documents, certain fields (texts, prices etc.) are not ready for input although indicator "optional entry" has been set correctly for the field selection reference key in the customizing, or at least, it looks like it has been done correctly. The best way to explain how to solve this issue is with an example. Lets have one with the "material group" in a purchase order, that appears in the transaction ME22N as not ready for input.

We might check in the customizing, for the field selection reference keys, but we might not find anything wrong. But in a purchase order, as well as in any other purchasing documents, there are more than one field selection key involved in each transaction for a certain document type. It is sometimes difficult to see which keys are influencing the fields, and we have so many keys, that it can be very tiresome to check all of them, one by one. For this reason you can determine exactly the field selection reference keys that are addressed in the relevant transactions, via a debugging session. 1. In Transaction SE37, display function module MEX_FELDAUSWAHL and set a break point at the first statement.

2. Start the transaction you have the issue with, in this case ME22N. The program should stop at the break point set above.

Copy the import fields I_AUSWAHL0, I_AUSWAHL1, I_AUSWAHL2, I_AUSWAHL3, I_AUSWAHL4, I_AUSWAHL5, and I_AUSWAHL6 to the list of field names. The corresponding field contents show the field selection reference keys that are composed as follows: AUSWAHL0: contains the key for the transaction code AUSWAHL1: contains the key for the activity type (AKT + V/H/A; where V = Change, H = Create, A = Display) AUSWAHL2: contains the field selection key of the document type (Table T161) AUSWAHL3: contains the key for the item type AUSWAHL4: contains the key for deleted items AUSWAHL5: contains the key for the price display (Table T160D) AUSWAHL6: contains the key for the sub-item type

3. You can check the field selection reference keys found in Customizing. After checking the 3 keys shown via debugging: ME21N, AKTV, NBF, we could find that the key that was wrong customized was the NBF:

4. All keys from the AUSWAHLn fields are used to determine the field selection and their status. They are set according to the following matrix. Optional Optional Optional Mandatory Mandatory Display Display Hidden Hidden Mandatory Mandatory Mandatory Display Hidden Display Display Display Display Hidden Hidden Hidden Hidden Hidden Hidden

Alternatively, the following can be stated:

Field status 'Hidden' takes highest priority. This means that if a reference key has defined the field as 'Hidden', all other reference keys are overruled.

Then follow statuses 'Display', 'Mandatory', and finally 'Optional'. Accordingly, a field is assigned the attribute 'Optional' only if all reference keys for the field are set to 'Optional'. I hope this will help you in the future, as it has helped me in the past. 72 Views 1 Comments Permalink

Would you like to prevent copying deleted requisition tems into your purchase order?
Posted by Arminda Jack Feb 1, 2010 When you create a PO referred to a requisition, it can happen that deleted requisition items are also copied. To prevent this you can set the message 06 050 - "Purchase requisition & item & already deleted" to an error message via IMG transaction -> Material Management -> Purchasing -> Environment Data -> Define Attributes of System Messages -> System Messages

" But the checks for the messages can only take place, after adopting all positions, including also the deleted ones.

So, what can we do to avoid copying the deleted requisitions items?. In the transaction ME21N click the "Selection variant" button at Overview screen on the left -> Choose Purchase Requisition

Select the checkbox 'Open only' on the selection screen for the overview.

In this case, the deleted items will not appear on the overview and therefore they can not be adopted.