Home / Archive by category "Business" (Page 25)

Looking for an ABAP Web Dynpro Expert

I’m again realizing my limitation.  I’m very good at making things work functionally the way I want, but when it comes to making it look nice, well I fall short.  So I’m looking for someone to help me out with layout and design of my Renovation application.  I need to take my standard web dynpro layout and make it look professional.

If you know ABAP web dynpro and have some extra bandwidth, please email me and we can work out the details.  This could be a great opportunity to learn from each other, and for you to make some extra money.  Win-Win 🙂

Thanks for reading,

Variant Configuration – Deleting Class Connections, a new approach

Thanks to Dennis for this.  A while ago, I posted about a way to delete connections to a class (CL24n type stuff) even after it had been used in transaction.  The method I listed certainly worked, but with the caveat of it should NOT be done in production.  The biggest reason behind that statement is that it could (or most likely would) leave one or many sales orders inconsistent, forcing you to visit each one to refresh the configuration.  A royal PITA.  Well, my friend Dennis found another approach, that I’ll certainly recommend going forward.

Using exit “EXIT_SAPLCUCP_005” combined with a new Z table to handle to put the material that want to delete regardless from a given class . The deletion needs to be carried out using engineering change management and the change date is in the future.  In the user exit we could check the class type , aennr , matnr in the Z table that we want to override the deletion . If allowed by that Ztable , return deletion allowed flag to let the object deleted regardless of the SAP telling us that the configurable objects exists and cannot be deleted.

By including the change number/future date portion of this, it should eliminate any sales order inconsistencies, since it will not go into the past.  Please note, I haven’t tried this specific approach, but it certainly warrants a closer look if you find yourself with materials or classes accidentally attached to the wrong class (and let’s be honest, it happens more than any of us would like to admit).

So thanks Dennis and thanks everyone for reading,

New Book Idea – Service Management User Guide

Well, in my free time I was thinking of adding to my service management library, but I wanted to throw the idea out to anyone reading my stuff to see if it’s something you’d find worthwhile.  My thought is to create a new book, in the same fashion as my first book, but instead of focusing on configuration, I’d focus on the user.  The new book would focus on using the transactions, like Service Orders, Confirmations, Notifications, etc…  I’d talk about the different fields, what you should know about each, and why I do or don’t typically encourage businesses to use them.

I’d stay with my same approach of lots of screen shots, and a quick reference at the beginning to help you focus on the standard process, but throwing in plenty of advanced stuff about each transaction (well, at least as much as I can fit into 10MB.  ha ha ha).

Please let me know if you think this is something worth my time…  or if I’m better off focusing on something else.  I always appreciate your feedback.



ABAP Chemistry – Sometimes don’t always react how you expect

Well, in my extensive time I’ve been spending working on my Renovation updates (multiple serial number, enhanced return order creation, enhanced repair order creation) I’ve spent quite a bit of time scratching my head.  Not because I couldn’t find functions to do what I needed, but rather because independently the code worked great.  But as soon as I started doing more complicated testing, one or more functions suddenly began throwing errors.  Let me tell you, what a headache.

So let me explain some of the things I’ve discovered.  The first takeaway (and I’m sure you programming types already know this) is that functions and BAPI have this global area of variables.  Which is great, you can re-use things and make life easier.  Where the challenge lies is that you don’t always see that the same function group (global area) may be called many levels deep in different “unrelated” functions.  Especially when you begin to loop through and call multiple functions more than once, the confusion hits.  I was having entire functions throw errors because a previous BAPI set a flag that somehow was looked at in an unrelated function (that one took a couple of hours to dig out).  In some instances, call the BAPI_TRANSACTION_COMMIT function can clear some things…  but it doesn’t work for everything.

The worst part is that there isn’t an easy solution to this.  I’ve resorted to finding different functions to call, or moving certain function calls to different parts of the method.

Anyway, if you find yourself getting weird errors, you may have to look for common variables within the functions you are using.  In my case, it took some creativity to make it work.  I’m finally almost there 🙂

Thanks for reading,

Where do you market???

Now this is something that obviously, I’m learning as I go.  I’ve experimented with multiple different forms of marketing, some clearly more effective than others…  The biggest problem is often determining the if they are effective, and how long will it take before it’s effective.  Let me explain more of what I mean.

This blog is probably one of the best examples.  I’ve been plugging away at it for several years.  And let me tell you, it isn’t always easy.  I’m not a terrible writer, but I’m no Hemingway either :).  And above all, coming up with things to talk about is often a challenge for me.  Now, for at least the first year, I really got almost nothing from the blog.  Some of my good friends would read it and post to it…  but very little in terms of new readers.  Then all of the sudden, I started going to new consulting assignments and I’d meet people that had been reading my stuff.  Little did I know, that I had a small following of people learning from me.  Now, it hasn’t generated me sales, but it has certainly increased my credibility.  This has been a mixed blessing.  My consulting career has never been better, but unfortunately, it hasn’t generated the sales I was hoping for in my software.  The good thing is that it has been pretty much no cost, except for a ton of my time 🙂

Now the exact opposite has been my experience with Linked-in.  Now, overall, LI has also been a good experience for me, but far more expensive.  I worked with a firm for a while, did some videos, revamped my profile and got nearly 12,000 new connections.  The problem was that it quickly become overwhelming with all the contacts that provided no value.  So I spent quite a few hours (in fact, I’m still in the process) of cleaning out non-value add contacts.  I have found some new connections and people that have graciously given me feedback…  but again, no direct sales.  I do believe it did directly help my blog increase in popularity.

Now due to the nature of my business, I’ve ignored things like Facebook, Twitter, etc…  as these are more likely to be direct sales approaches, rather than B2B which is what I need.  In addition, I’ve worked with Mailchimp, which has given me mixed results.  Building the lists is always the challenge, and then finding the right mixture of content to advertising to keep people reading what you send…  on top of it all, I slacked off for nearly a year focusing on LI.  Which brings me to my biggest take-away of this post.  Don’t just abandon ideas.  It’s ok to scale back, but I’m in midst of getting in trouble from MailChimp because my list is so old, that there were a lot of bounces.  Had I kept up with it at least monthly, I probably wouldn’t be in the same position…

For any of you out there marketing, I’d love to hear what is and isn’t working for you…

Thanks for reading,

Service Management – Generating a Return Order from a Notification

It’s interesting.  When I think of a call center, I think of returns and repairs.  Well, out of the box, SAP doesn’t provide an action box to accomplish that.  Originally, when I designed the functions for an action box to do just that.  It took a while, but I finally figured out how to pull all the pieces together to make this a truly useful piece of software.  I’ve talked about Renovation in some past posts, but now it’s finally coming together.  Today I’d like to give you a look at the return sales order functionality.


First we begin with a look at the notification list.  This is similar to the IW58 list, with some enhanced selections.


Now, the real improvement over the IW58 list is what we provide here.  We include all the typical fields that IW58 shows, and we added our own fields.  The best in my opinion is the status.  But it’s not just the SAP system status, rather it gives you the quick list of RMA created, Repair in Process, waiting for equipment, etc…  the sort of information you’d only find by digging through the document flow, one notification at a time.


This is our fully customizable change notification screen.  Including the ability to add multiple serial numbers.  If you want more info on this, check my previous post, or email me and I’ll give you all the details.  Now I’m going to select Return Sales Order.


Now for what we came for…  this little window lets you pick the sales document type, then you can link to whatever type of document you want. (sales order, invoice or nothing).  Whatever you pick will be linked in the document flow.  Once you enter in the number, we pull in all the items, included the up to date quantity that hasn’t been returned.  You enter in the qty to return, and press create return order.  Now you get a sales order with the items, linked to both the notification and original sales document.

I think this is pretty cool.  And if you like this, wait till you see what I’ve done with the repair sales order.

Thanks for reading,


Service Management – Purchase Requisition Delivery Address

I ran into something interesting today.  In the service order, you have the option that you can create a purchase requisition for any non-stock item.  This could be for an one-time item, or a service.  Well, when you create the purchase requisition, it turns out that the ship-to delivery address in the purchase order takes the sold-to party from the service order.  While this functionality seems fine if you’re going to drop ship something to a job site, if you need to have the material shipped to your own repair facility, then you need to perform an extra step:

Go to the purchase order, delivery address tab, press Reset Address.

This will pull in the plant address, rather than the sold-to party address.

Every day, something new.  Thanks for reading,

Schedule Your Time and Set Priorities… Going back to the Fundamentals

Well, last week was pretty ugly for me.  I was cranky, stressed out, unfocused…  and in general, just a bit of a mess.  I spent some time on Friday going back to the fundamentals.  So if you’ve ever watched a sports team lose, and the coach goes back to practicing the basics the following day…  well, that was me 🙂  Everything comes down to scheduling your time properly and setting the correct priorities…  let me give you an example.

I have my consulting business and my software business.  I really enjoy doing my software business, but if I don’t have my consulting, I can’t fund the dream.  What does that tell me…  whether I want to or not…  my consulting priorities have to trump the business.  I was trying to make everything a top priority, and there wasn’t enough hours in the day.  So I had to look at what I was doing, and figure out what could wait…  and what I needed to focus on this coming week.

So, I dropped the development tasks for JaveLLin for this week while I spend some extra time focusing on the major milestones I have coming up in my consulting life.  Now, if I can plow through the consulting work quickly, I can pick up the JaveLLin stuff again…  but I had to drop that to a second priority.  My own timelines are not as rigid as the my consulting timelines, and I can’t afford to provide inferior performance to my clients.  And magically, I am far less stressed this week.  Now, does it still bother me that all these things aren’t getting done?  yup… but that’s just who I am.  However, I am focused on the top priorities first now…  instead of trying to do everything at the same time.

So my advise to y’all out there…  if you start to feel stressed, take a step back, write down everything you need to get done, and add a priority.  You’ll quickly see what needs to be done vs. what you want to do 🙂

Thanks for reading,

Turns out, I’m not Super-Human :)

Well, I thought coming back from a vacation I’d be all fired up and ready to take over the world.  Well week 1 back to the real world totally slammed me.  I’ve been battling a head-cold, not to mention that I’m not 30 years old anymore, and most important of all, I may have finally come to the realization that I can take on too much.  Trying to manage my own stuff and consulting clients has hit me like a ton of bricks this week.

Now, the good thing is that I realized, I don’t need to do everything at once.  So, I wanted to send out an early apology.  My blog posts will be sporadic over the next month while I wrap some things up and try to get myself back on track.  I may even try to get more than 6 hours sleep per night as well 🙂

I’ll still post whenever I find a neat trick or tip…  but I’ve been struggling to keep up with my blog, marketing efforts, consulting, and just general running of the business.  I’m also in crunch time for some of my consulting work, so I really need to give that the attention it deserves (even though I really want to finish up my updates on Renovation…  I’ll try to give you a peak at it this week, at least what I’ve done with generating return orders).  As always, thanks for reading,

ABAP Web Dynpro – Dynamic ALV Table – When to Bind

I just found a very subtle little thing, that has been driving me nuts for a few days.  I created a dynamic ALV table and I wanted to be able to select multiple lines.  Seemed pretty easy, I selected the correct Select option to do multiple line testing.  And no matter what I did, I couldn’t select or unselect anything.

Turned out it was a very simple fix.  You can only bind the table once.  If you bind the table more than one, it keeps resetting the selections. Since this occurs in the Modify View method, I needed to check if it was the first time it was executing.  If it was the first time, it needed to be bound, otherwise, don’t bind.  Since it was a dynamic table, for me it was just a matter of moving the bind statement within the IF statement.  Crazy simple, but like everything, little things make a big difference 🙂

Thanks for reading,