SAP

Home / Archive by category "SAP" (Page 15)
Setting Warranty Dates for new products

Setting Warranty Dates for new products

A challenge I always seem to encounter in SAP is setting warranty dates.  Now, in my world, I’m very familiar with what to do with the warranty dates and how to process things, but one of the biggest challenges is getting the warranty dates set properly in the first place.  In my travels, I’ve done this 4 different ways, often depending on the business or development resources available.  Here are the options I’ve done in the past and I’d love to hear your experience.

  1.  Write a user exit at the time of post goods issue.  This will work, especially if you follow simple warranty rules.  The gotcha for this always ends up being how to set different dates by product line, hierarchy, material type, etc.  You typically end up with one or more custom tables to hold this information.  But this falls apart if you need to get more complicated than material number (prod hier, or whatever).  Perhaps you offer 12 months on everything in a product family, except for you most mature product, which you offer 18 months.  Short of adding in new product hierarchy, or listing each material individually, you end up writing a lot of code that may or may not change.
  2. Product Registration: Method 1 is great if you start the warranty clock as soon as you ship it.  What happens if you deal with distributors that may hold your product for 1 – 6 months before the end user purchases it.  You can’t very well your end user it’s out of warranty if they just bought it and it’s been sitting on a shelf for a while.  In this case, you need to resort to product registration.  If you users are willing to do this, I love this approach.  However, this requires a lot of up front work.  You typically need a user website capable of allowing your customers to register a product.  This means you need to be capable of creating new customers on the fly, adding partner types to an existing equipment record, and then setting the warranty dates.  You also typically need to add a front end to login, or even create new users in the system to even allow an end customer to do this.  It’s a big up front effort unless your business has already done it.
  3. Create a background program that looks at all the of the serial numbers shipped, PGI’d, etc, and then using similar logic to the user exit, load in the correct values.  This approach is very similar to #1, but offloads the heavy lifting until later rather than doing it as the delivery is going out the door.  This approach is typically better, since warranty information is not critical as a product leaves the door.  You typically have at least a week before you should need to worry about it 🙂
  4. Manually entering the data/skipping it.  All too often, this ends up being the approach that businesses take.  Why?  it’s too much development to get the data in when it might never be used.  So they may run a report monthly to show all the equipment with blank warranty dates, and in someone’s “spare time”, they might enter in the data.  Let’s be honest, this means you might as well skip it, since the warranty data will be so hit or miss that data is not trustworthy.

Now, something to consider regardless of how you set the warranty dates (or master warranty) is:  What happens if you don’t have a simple time based warranty?  as soon as you need to track hours of usage, miles, tons moved, or whatever, you now need to track a whole new level of warranty data.  Measurement documents are great for this…  but they carry their own overhead.  For example, how do you get the numbers?  do you have technicians that can see each piece of equipment and regularly report back the latest values?  Are your customers willing to give you numbers on a daily, weekly, monthly basis?  If you can’t get something to give you these numbers, you end up with a product that appears to infinitely under warranty.  Great for your customers, not so great for you.

Now, all of these methods can work…  but is there a better way?  I’ve been thinking of developing something into Renovation/Proximity to help with this.  Before I invest my time, I want to make sure there isn’t an easier way to do this that I may have missed.  Would love to hear from you.

Thanks for reading,

UI5 – Gateway Service Debug Timeout

UI5 – Gateway Service Debug Timeout

Well, I recently had some trouble connecting my services to a template in the WebIDE.  So like any good developer, I tried a whole bunch of things, then moved over to another system.  And when it still didn’t work, I started fresh.  Well, can’t pinpoint what exactly changed, but now things are working better than ever.  Of course, when you start fresh, something else inevitably pops up.  This time, when I went to debug my gateway service, it kept timing out after 30 seconds.  This was something I hadn’t encountered before.

Seems like I’m not the only one.  I happily found a post that explained what to do.  The short story is that in HCP, I needed to add another parameter to my destination.

ClientReadTimeout = 30000

Interesting that this didn’t occur before, so I can only guess that a change occurred in HCP recently.  Either way, now I have 5 mins of debug time, instead of 30 seconds.  So I’m back in business again.

Thanks for reading,

Netweaver Gateway – Beware of changing versions

I recently ran into a new error when working through the Netweaver gateway.  Because it was occurring on a new service, it left the door wide open to possible pieces I may have missed on the service.  Well, after some digging, I realized that I had developed the service in one system, and was deploying it to a newer system.  Since I had used structures, I bad the bad assumption that it would automatically update if the structure changed.

Well, it turns out, this is wrong.  When SAP generates the service, it creates interfaces that take a snapshot of the structure, but they don’t use the structure itself.  In the newer system, the structure contained 8 new fields, and until I generated the service in the new system, the service kept failing.

So, remember, structures used within a type in a Gateway Service are snapshots, not dynamic.  So if you are having a strange error, sometimes it pays to regenerate the whole package.

Thanks for reading,

Service Quotations…  Why are these so challenging?

Service Quotations… Why are these so challenging?

I’ve recently been helping out a fellow service expert to navigate the ins and outs of quoting service.  It really has lead me to the question “why is it so difficult?”  Let me tell you where I’m coming from, in the ECC world, if you want to quote your customer for In-House Repairs, you have to jump through a lot of hoops.  First, you have to decide if you want to go with a more manual approach, or do a bunch of “SAP sponsored” development.  Each of these methods as merit, but at the end of the day, if you want send a quote to your customer, it’s not easy.

A while back, I did a post that explained the SAP approved method for handling this.  It entailed new item categories, users exits, DIP profiles, and of course, a lot of form and pricing work.  Overall, it’s a pretty slick method, but it requires a lot of ramp up to get there, and for non-SAP experts, it can look very cluttered and cumbersome.  The long and short of it is that your sales order because both the sales order and the quote.  Does it work?  absolutely.  Is it an elegant solution… in my opinion, absolutely NOT.

The flip side is to simply create a quotation with reference to the original sales order.  This means that you basically have to enter in the quote from scratch.  You will need your service guys to send you an excel, or you need to be fluent enough in reading a service order to enter in all the data.  Minimal development effort… maximum effort from the users.

This lack of good options lead me to create a simple button in Renovation: Repair Order Execution.  The button is simply Create Quotation.  What isn’t simple is the cool functionality behind this button.  First off, it checks for a specific user status on the service order to make sure the service department has finished updating the order with planned cost.  Next off, it check how you want you quote created.  Do you want the servicable material as an item on the quote?  do you want all the items that would have come from you DIP profile?  do you want to pull from a sales bom?  Then it pulls in the items on the order, and then adds the unit costing for each thing, so that EK02 condition will show you the cost.  Then, to let the service department know what’s going on, it changes the user status to show that they are waiting for the customer to accept or reject the quote.

If you are interested in a better way to quote for service, check out Renovation.  Just email me, and I”ll be happy to set up a demo.

Thanks for reading,

Proximity Production Supervisor – UI5

Proximity Production Supervisor – UI5

Well, this experiment was months in the making, but I have to say, it was worth the effort.  When I first started the journey of UI5, really thought it was just another crappy method to make SAP look a LITTLE less like SAP (for example , Web Dynpro).  Well, I was happily proven wrong.  After creating my first application in UI5, I’m rather excited by the results.  Thanks to some OpenSAP courses, I even have the guideback to make it into a hybrid application that can work offline (but I’ll save that for Field Service Engineer).

My first experiment was to replicate a UI5 application that a good friend of mine built for us a few years back.  Then of course, I wanted to see if I could make it just as flexible as my GUI version.  The results were great.  The answer was YES.  I’d really love to have you take a look at this and give me your feedback.  Be brutal, I can take it 🙂  This is my first app in UI5 and have begun rolling it out to Renovation, my application most in need of a facelift, since it was only designed in web dynpro.

Please keep in mind, you will need to have a Hana Cloud Platform account to login.  The account is free, and doesn’t expire, so you have nothing to lose.  if you don’t get a login popup, you will get this link:

  1. https://account.hanatrial.ondemand.com/
    1. Select register
    2. Enter in the basic info.  Accept, and you have your free account.
  2. https://proxprodsup-s0008170837trial.dispatcher.hanatrial.ondemand.com/
    1. Login
      1. User: jvs
      2. Password: password
    2. If you just have a blank blue screen (this happens occasionally)  just press refresh.

Can’t wait to hear you thoughts.  If you want to compare it, check out my webdynpro version for service supervisor.  It works on the same premise, but the UI5 is the new look and feel.

Proximity Service Supervisor – Web Dynpro

Thanks for reading,

Netweaver Gateway – Using Expand

Netweaver Gateway – Using Expand

I’ve recently started to move a new product onto UI5, and of course, that has open up new areas for me to explore.  The most recent was display the notification.  Initially, this sounded so easy.  Unfortunately, when you look at a document, there are many different tables associated with a single notification.

Header, items, tasks, etc.

I wrote my RFC to accept a single input of notification number, but the output consists of header and a bunch of tables.  Of course, for UI5, having a structured OData is far easier to work with, instead of doing a whole bunch of reads to the same RFC and tie them together myself.  Luckily, I found a great blog post that showed me the major things I needed to do:

http://scn.sap.com/community/gateway/blog/2014/07/18/implementing-expand-entityentity-set

Now, of course, this requires some work on the service side as well as in the coding.  So on the service side, you need to tie everything together with associations and navigation to connect the header to each of the individual tables.  Next, you go to the DPC_EXT class, and update the get_expanded_entityset method.  In this method, you need to build your structure.  You can make this as deep as you want, but this will make your service easier to use on the UI5 side.

Now, you can use the expand command within UI5 to say what pieces to pull out.  One thing I discovered while doing this, if you manually create each step of the association, my service had difficulties reading the expand.  So make sure you right click on Associations and select create.  This will walk you through 3 steps to make the connections.  For some reason when I manually built the pieces, my service couldn’t expand.  It might be my old version of the Gateway, but keep this in mind.

Thanks for reading,

Understand the technical side of DIP

Understand the technical side of DIP

Today I wanted to find out if there was a simple function to call the Dynamic Item Processor without executing it.  Basically, I wanted a simulator to see what materials would be placed on the sales order.  I found a great post that really helped me:

https://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=394105949

In a nutshell, this post walked through all the major function modules called in the DIP processing.  It’s quite extensive, and happily saved me a lot of debugging to learn all of this.  Turns out, I can do everything I was hoping for with a single function:

VPKDPP_GET_DI_WITH_VALUES

Jackpot!!!  it’s a good day.

thanks for reading,

Understanding HANA

Understanding HANA

I finally get it now 🙂  I’ve been trying to understand the deal with HANA for quite a while, and thanks to a very enthusiastic presentation by Dr. Jeff Word.  Jeff was one of the original founders of the HANA concept, so I can see why he is so passionate about the topic.  Now, I’m paraphrasing a lot of this, but let me give you the layman’s version.

The whole reason HANA was invented was because of hardware constraints.  It’s been a while since I took physics, but the basic concept is that hard disk drives (HDD) cannot possibly retrieve data any faster than they do today.  We have truly reached the physical limits (per Newton’s Laws) so HDD can never deliver data any faster than it does today.  In addition, you can’t read and write simultaneously to the same drive.  This alone increases the time to retrieve data because you must write to one drive, read from another and eventually marry the two sets of data, most likely using even more reads and writes.

HANA solves this by eliminating HDD’s and reading at the speed of light, using RAM.  By eliminating the hardware constraints, you finally move away from the long reads and writes.  In some instances, seeing 100’s or 1000’s of percent improvements.  In addition, this means that the application layer (SAP, ERP, or whatever) no longer needs to do all the additional logic to speed up DB reads.  Now, I’m a programmer, so I’ve found that there are a lot of tricks that can be done to improve runtime.  You can use temporary tables, loops instead of selects, and lots of additional logic.  All of this logic is done because the DB reads won’t get any faster.  With HANA, all that logic is obsolete.  According to Dr. Word, 90% of the code in R/3 (ECC) has been deleted in S/4 because now the DB does the work.  Hence why S/4 MUST use HANA.  Without HANA, S/4 would immediately crash and burn.

In addition, HANA isn’t SAP specific.  It is truly another DB that can provide lightning fast response time to any application. This means that companies can now run a single DB for ERP, BI, and any other application you want or need.  No more replicating data to a specific BI system, you just read the original SAP DB because it is so fast that it won’t be impacted by large queries.

One of the major things that struck me as interesting is that S/4 stripped out a lot of tables that are no longer needed.  For example, BSEG can now be read directly instead of using all the helper tables like COSP, COSS, etc…  but to make sure that legacy customer code continues to work, the old tables remain as views.  This means no custom code will be impacted and the read times will still be lightning quick.

So, those are the high points of what I learned.  Overall, I really liked understanding the whole point of HANA.  It finally turned the light bulb on for me.  However, at the end of the day, I still look at things the same way.  SAP marketing is still implying things that a DB alone cannot provide.  For customers on existing SAP instances (with the exception of BI), there is little financial reason to jump in and convert to S/4.  The system is cool, the premise is sound, but in my humble opinion, the ROI isn’t there for customers with an existing SAP system.  New installations without question, should do HANA, and consider S/4 (S/4 is still rather new, so it would take a lot more due diligence to determine how stable and how well it all works).  On the bright side, SAP has extended maintenance to 2025 for all the existing stuff.  So the rumors I heard about forcing everyone to HANA in the next 2 years seems to be false.  To me, it looks like SAP is working REALLY hard to sell HANA and S/4, as many other companies seem to be of the same opinion.  I guess only time will tell.

Thanks for reading,

Are you interested in learning how to improve you service organization?

Are you interested in learning how to improve you service organization?

While I know that service is often the red headed step-child of an organization, it doesn’t mean that things can’t get better.  I’ve worked in enough places to recognize that the service group is often the last place any budget gets allocated to.  As a result, I’ve worked very hard to help service organization improve themselves on a shoestring budget.  One of those methods is my e-course that shows you some easy and affordable ways to cut cost or generate revenue within your service organization, all using standard SAP.

Service Management E-Course

If your service organization could use some new ideas, please check out this e-course.  I would love any feedback, or even new ideas to add to the class.

Thanks for reading,

Why is SAP struggling???

Why is SAP struggling???

My buddy Jeff recently sent me an article talking about SAP.

https://www.thestreet.com/story/13605479/1/struggling-sap-downgraded-to-underperform-by-jefferies.html

The general gist of the article is that SAP is struggling because it’s having issues getting customers into the new subscription model and the new HANA/S4 versions.  I found this both interesting, and not surprising.  I’d be curious to hear others take on this, but of the sampling of customers I know, HANA, S4 and the cloud are all things that many customers just don’t see the need for.  Now, don’t get me wrong, everyone likes things to be fast, and everyone wants to be the coolest new platform.  The problem is that is that the price tag of all new hardware, all new software, and potential ramp up of new skills due to changes in S/4 have a lot of customers hesitating to make the switch.

First off, look at the hardware.  When you switch to HANA, you either need to look at going to an entirely cloud based model, like SalesForce.com or RAMCO.  The problem is that SAP is still unproven in the cloud arena.  It’s hard to stay say if the fear is warranted, but at this point, Salesforce has been doing this for a long time…  SAP is trying to jump into the game, perhaps very late.  So that means if you don’t feel comfortable offloading your ERP to the cloud, you need to pretty much replace all your hardware to switch from HDD to RAM.  No small price tag associated with that.

Now if you look at the benefits, you get all the faster analysis, faster runtime on DB access, and possibly some new functionality…  but it’s been hard to see much of S/4.  Regardless, it’s a new learning curve for your basis person…  and it may be all new for your business if you start moving toward all FIORI which is cool and possibly better, but it’s still new.  That means you need a budget for change management now too.  At the end of the day, many manufacturing companies just don’t see the need for it.  It’s useful in the BI world, but for the general ERP, it’s just not cost effective for many industries.

Now, I’m sure that SAP will force this customers to change at some point… or at least make it “an offer they can’t refuse”, but in the meantime, many companies are look to continue business as usual.

Thoughts???

Thanks for reading,