SM

Home / SAP / Archive by category "SM"

SAP Service Management – Changing an Equipment Type

Here is one of those things that I keep running into over and over again.  Someone created an equipment, but now they want it to be a different type.  Well, after so many years, I found a great blog post to show you exactly how to do it.

It’s pretty easy, but like the link points out, there are a couple of things that must happen.  The biggest being that you must have the same status profile on both equipment types.  If they don’t have the same profile, you can’t save the change.  Otherwise, the status data would be corrupted, and make a big mess (probably even a shortdump).

So I hope this helps someone out,

thanks for reading,

SAP Service Management – User Exits – Maintenance Plans

Now, this is a section that I have not dug into.  I have yet to use user exits for the maintenance plans, but truly, I haven’t used maintenance plans a whole lot.  I tend to do prototypes for companies, and initially, they are interested, but don’t like the manual effort of getting them setup, especially if you have a large volume of equipment.  Anyway, it’s still good to have these user exits in your back pocket, just in case.  So I hope you can find these useful.

Enhancement Description
IPRM0002 Determine planned date info for maintenance plan
IPRM0003 User field: Maintenance plan
IPRM0004 Maintenance plan / item: Customer check for time “SAVE”
IPRM0005 Determine Offset for Performance-Based Strategy Plans

Thanks for reading,

SAP Service Management – User Exits – Service Orders

Well, the next set of user exits I wanted to document are the service orders.  I’ve used several of these in my time consulting (many of them I have never touched).  As always, you never know when you might need one.  So, without further typing…  Here are the user exits for service orders (IW31/IW32/IW33/etc…)

Enhancement Description
CNEX0013 Order: Cust. enhancement: Default item category comp. assgmt
CNEX0026 Customer enhancement for general inspection of material
CNEX0027 Customer enhancement: Plant, storage loc. finding for comp.
COI20001 Changing of person found
COI20002 Alternative procurement of HR availability data
COOM0001 Customer Functions for Overhead Percentages
COOPA_01 Customer check modules for internal orders
COOPA002 Customer function for master data maint. – internal orders
COOPA003 User-Defined Fields in the Order Master
COOPA004 Customer function: Print order master data
COOPA004 Customer function: Print order master data
COZF0001 Change purchase req. for externally processed operation
COZF0002 Change purchase req. for externally procured component
CYPP0001 Change sequence criteria and sequencing
ICSV0003 Partner selection
ICSV0004 Check PM object and display object information
ICSV0005 Determining reason for rejection – resource-related billing
ICSV0007 Serial Number Partner Transfer on Goods Issue and Returns
ICSV0008 Validation of additional partner types
IWMI0001 User exits for SM/PM IDOCs
IWO10001 Create a PM sub-order
IWO10002 PM maintenance order: Customer check for order release
IWO10004 Maintenance order: Customer check for order completion
IWO10005 Maintenance order: Cust.-specif. determination of profit ctr
IWO10006 Maint. order: Fcode exclusion through cust. enhancement
IWO10007 Maint.order: Customer enhancement – permits in the order
IWO10008 Cust. enhancement: Determination of tax jurisdiction code
IWO10009 PM Order: Customer Check for ‘Save’ Event
IWO10010 Maint. order: Cust. enhancement for determining WBS element
IWO10011 Maint. order: Customer enhancement for component selection
IWO10012 Maintenance order: Priority handling on central header
IWO10015 Maintenance order: F4 Help for user fields on operation
IWO10016 PM Order: Cust. enhancement to check operation user fields
IWO10017 Determine external order number by customer logic
IWO10018 Maintenance order: User fields on order header
IWO10018 Maintenance order: User fields on order header
IWO10020 Maintenance order: Automatically include task list
IWO10021 Automatic task list transfer when creating order from notif.
IWO10022 Determine calendar from user exit
IWO10023 Service order: Change header data for advance shipment doc.
IWO10024 Service order: Changes to items for advance shipment
IWO10025 PM/SM order: Finding responsible cost center
IWO10026 User check on setting status ‘Do not perform’
IWO10027 User exit: Generate user-defined settlement rule
IWO10029 Inclusion of bill of material in PM/SM order
IWO10030 Predefining the fields for the profitability segment
IWO10031 Hide personnel number in PM/SM order
IWO10033 Customer-Specific Authorization Check Maint./Service Order
IWO10034 Operation status based on the status of capacity reqs
IWO20001 PM order: User exit to pass routing to order
IWO20001 PM order: User exit to pass routing to order
IWOC0001 Create PM/SM notification: Determine reference object
IWOC0002 PM/SM notification: Check whether status change is allowed
IWOC0003 PM/SM authorization check of ref. object and planner group
IWOC0004 Change single-level list editing PM/QM/SM ALV settings
PPCO0001 Application development: PP orders

 

Thanks for reading,

SAP Service Mangement – User Exits – Notifications

Well, back to my series on service management (and PM for that matter) user exits.  No need to go into a lot of explanations.  If you found this post, you were looking for a good user exit to solve some challenge.  Hope you find what you are looking for.

Enhancement Description
ICRP0201 Search Help CS_ORG_02: Authorization Check
ICRP0202 Search Help CS_ORG_02: Internally-Programmed Selection
ICRP0203 Search Help CS_ORG_02: Propose Task
ICSV0001 Display of geographic location data
ICSV0002 Automatic task determination for service notifications
ICSV0003 Partner selection
ICSV0004 Check PM object and display object information
ICSV0005 Determining reason for rejection – resource-related billing
ICSV0007 Serial Number Partner Transfer on Goods Issue and Returns
ICSV0008 Validation of additional partner types
IWOC0002 PM/SM notification: Check whether status change is allowed
QQMA0001 QM/PM/SM: User Subscreen for Notification Header
QQMA0008 QM/PM/SM: User Subscreen for Additional Data on Notif. Item
QQMA0010 QM/PM/SM: User Subscreen for Additional Data on Cause
QQMA0011 QM/PM/SM: User Subscreen for Additional Data on Task
QQMA0012 QM/PM/SM: User Subscreen for Additional Data on Activity
QQMA0014 QM/PM/SM: Checks before saving a notification
QQMA0015 QM/PM/SM: User-Exit before Call-Up of F4 Help on Catalogs
QQMA0016 QM/PM/SM: “User data” Function “Goto” –> “Task” Menu
QQMA0017 QM/PM/SM: “User data” Function “Goto” –> “Activity” Menu
QQMA0018 QM/PM/SM: Deadline setting based on entered priority
QQMA0019 QM/PM/SM: Default Partner when Creating a Notification
QQMA0021 QM/PM/SM: Function “User data” in “Goto” menu
QQMA0022 QM/PM/SM: “User data” function in “Goto -> Causes” menu
QQMA0023 QM/PM/SM: “User data” function in “Goto -> Item” menu
QQMA0024 QM/PM/SM Deactivate function codes in CUA menu
QQMA0025 PM/SM: Default values when adding a notification
QQMA0026 PM/SM: Auth. check when accessing notification transaction
QQMA0027 PM/SM: Default values when adding a task
QQMA0029 QM/PM/SM: Change Notification Type
QQMA0030 Check validity of status change

Thanks for reading,
Piehl

SAP Service Management – User Exits – Technical Objects

One of the things I never blogged about is the many user exits that service has to offer.  Like all good consultants, this is a last resort, but inevitably, you will need these from time to time.  So I’ll be putting out some posts with the user exits I have found for the different areas that service management touches.  Hope you find these as useful as i have.  Many of these I have not personally used, but just being to run through the list and get an idea of where to look has been invaluable in my career.

Thanks for reading,

Enhancement Description
ICSV0001 Display of geographic location data
ICSV0003 Partner selection
IEQM0001 Add. checks for equip. installation at functional locations
IEQM0002 Additional checks for definition of equipment hierarchies
IEQM0003 Additional checks before equipment update
IEQM0004 Object is allowed for contract partner (Order->MaintCont.)
IEQM0005 Object allowed for SD contract (MaintContract->MaintCont.)
IEQM0006 Object allowed for SD contract (Maintain maintenance cont.)
IEQM0007 Check/change manufacturer field in equipment master
IHCL0001 Create equipment using material template: Classes/chars
ILOM0001 Additional checks before saving a functional location
ILOM0002 User exit when checking structure of location numbers
IQSM0001 Automatic serial number assignment
IQSM0002 Check when copying object list
IQSM0003 Serial numbers, user exit for additional data
IQSM0004 Serial numbers, user exit after exiting the serial screen
IQSM0005 Serial numbers, user exit in the update
IQSM0007 Serial numbers, user exit for goods movements
IQSM0008 Serial number character string check
ITOB0001 PM: Customer include subscreen for techn. obj. master data
ITOB0002 ITOB: Field changes to copy model
ITOB0003 PM: Customer Include subscreen for fleet object data
ITOB0004 PM: Customer Exit fleet identification data: Checks

SAP Service Management – The Tables of SM

Well, it’s still good to go back to your roots from time to time, and this is one of those areas that still serves me well on a daily basis.  Using SE16N and these tables (plus some Excel vlookups) is used at least weekly, if not more often.  So I thought I’d share my list of tables with you.  I’ll do my best to break it up into sections that make sense.

This diagram is also around PM, rather than CS/SM, so it’s not complete with everything you would care about, but it is a great place to start.  Perhaps someday, I’ll get around to building a full Visio of this stuff, but for not, I’ll give you the places to start, and you can see the relationships 🙂

Equipment:

  • EQUI – equipment head
  • EQKT – text
  • EQUZ – time related stuff
  • ILOA – additional data
  • EQBS – stock information
  • IHPA – partner details

Functional Location:

  • IFLOT – header
  • IFLOTX  – text
  • ILOA – additional data
  • IHPA – partners

Notification:

  • QMEL – header
  • QMIH – service data
  • IHPA – partners
  • QMMA – Activities
  • QMSM – Tasks
  • QMUR – Causes
  • QMFE – Items

Service Orders:

  • AUFK – header
  • AFKO – additional header details
  • AFPO- order items (not used much for service)
  • AFIH – service data
  • PMSDO – sales data in the order
  • AFRU – order confirmations
  • AFVC – operations
  • RESB – components
  • AFVV – Operation data
  • AFFH – PRT assignments

This not an exhaustive list, and I often find new tables with obscure data that I need for a random project, but if you start with the tables listed above, you will be in good shape.

Thanks for reading,

Mike

 

Adding Additional Document Flow to a Warranty Claims

Well, since my bread and butter is SAP, I have found some new tricks since I was last blogging, so might as well sprinkle those in along with all my new endeavors.  ha ha ha.
I guess this blog post could also have been called implementing a Badi…  but that doesn’t so as much fun 🙂  My goal was to add some additional links into the Warranty Claims document flow.  Namely, I wanted to see purchase orders that might be generated during the flow of the claim.  Out of the box, these are not part of document flow, so I began searching on how to do it.

Everything started with using this blog post to get me started on how to do the Badi.  But of course, the real work came from figuring out how to get it all connected.  So first let me tell you some of the basic data you will need to make this work:

BAdi Definition:  WTY_DOCU_FLOW
Interface:  IF_EX_WTY_DOCU_FLOW

I needed to update 2 methods in order to make it all work.

  • ADD_DOCUMENT – this adds the link into document flow
    •   DATA:

          lt_gbinrel   TYPE TABLE OF gbinrel,

          gs_wdocs        TYPE pwty_wdocs,

          lt_trl_borid TYPE          trl_borid,

          ls_trl_borid TYPE          borident.

      **** via document relation

        CALL FUNCTION ‘WTY03_RELATION_FIND’

          EXPORTING

            iv_claim   IV_CLMNO

          TABLES

            et_gbinrel lt_gbinrel

            et_object  lt_trl_borid.

        LOOP AT lt_trl_borid INTO ls_trl_borid.

            CASE ls_trl_boridobjtype.

              WHEN ‘BUS2012’.

                gs_wdocsdoctype  ‘EBELN’.

                gs_wdocsdocttext ‘Purchase Order’.

                gs_wdocsclmno    IV_CLMNO.

                gs_wdocsdocno    ls_trl_boridobjkey.

                APPEND gs_wdocs TO ct_wdocs.

            ENDCASE.

        ENDLOOP.

  • DOCUMENT_DISPLAY – I enhanced this so that you could double click on the node in document and drill to the PO
    • Data:  ld_ebeln type eblen.
    • case is_wdocs-doctype.
      • when ‘EBELN’.
        • ld_ebeln = IS_WDOCS-docno.
        • set parameter ID ‘BES’ FIELD ld_ebeln.
        • call transaction ‘ME23N’ and skip first screen
    • endcase.

Now, of course there isn’t Purchase order action out of the box either…  so I had to build that as well.  to do that, I had to define an action (see TXN:  OWTY –> Control Data –> Process Control –> Define Actions)

I created a new one, and then assigned a function module to it that called a BAPI to create the PO (and of course it pulled data from the claim to have it all happen in the background).  If you would like more details on creating this function, let me know and I can walk you through that in a future post.  The key piece of this is to create the document flow links using the function ‘BINARY_RELATION_CREATE’.  this links the PO and claim.

Once you have the new action, you need to build it into the Action controls and of course, play with a bit to make sure 1) you are creating the PO, 2) you are linked to it and 3) that your BAdi above is firing to add the document flow.

All and all, it was a lot more moving pieces than I expected, but it was a fun exercise (once it was done.  LOL).

Ping me if you have issues, and as always, thanks for reading,

Service management – Warranty Claims – General Settings in OWTY is Blank

I recently ran into a strange issue.  I was configuring warranty claims, but the general settings screen is completely blank and there are no options to add a new entry.

So, the first thing that needs to happen is that you need to generate a blank line in order to populate the entry:

See OSS Note: 1039665 – this will give you a simple way to add the entry.

Next, you will probably want to see the baseline configuration:

Hope this helps,

Thanks for reading,

Service Management – Changing the Profit Center on a Service Order

I have been running into some new requests lately. The ability to change the profit center inside of the service order is one of those.

Turns out, it is pretty easy.

If you use Enhancement: IWO10005 -> EXIT_SAPLCOIH_005

You will have access to a large structure:   CAUFVD  this will have nearly all of the service order information you could need 🙂

Simply update the PRCTR values in this exit, you will get this to update upon save, or upon visiting the Additional Data screen..

Thanks for reading,

 

SAP – Copy Control and Sales BOM Items

I did a post on this in the past, but I learned the hard way that I didn’t include enough details to easily replicate my solution.  So I’m going to cover it again.  Here is the concept.  If you have a sales order with a sales bom, you may want to push a single line item  from the sales BOM to a return order for example.  You don’t want to include all the other pieces, and you want to maintain the reference to original sales order line.

You will get the the error V2 104 – Item xxxxxx is a component of a bill of material so cannot be copied.

Well, the trick to this is maintained at the copy control in the header section.

You will need to create a new requirement (using VOFM, menu:  data Transfer -> Orders.

I created a new requirement, 951 in this example and I copied all the code from 051.

At the bottom of the new requirement, add the following code:

LOOP AT CVBAP.
IF CVBAPSTLNR NE SPACE.
CLEARCVBAPUEPOS,
CVBAPSTLNR,
CVBAPSTLTY,
CVBAPSTLKN,
CVBAPSTPOZ.
MODIFY CVBAP.
ENDIF.
ENDLOOP.

What this will do is ignore if anything is part of a BOM or not.  This requirement shouldn’t apply to everything, so that’s why you will need a new one to be used for return orders (and in my case, service contracts).

Thanks for reading,