Year: 2012

Home / 2012

SAP Basis – Generating a System Key from Solution Manager

Hey Everybody, I’m trying my hardest to simply change the instance number on my ERP 6.0 system (I’ll talk more about that in another post), but one of the things I tried was doing a system copy (unfortunately that also is causing me headaches), but it reminded me of another little tip.  How do you get the system key from solution manager.  Obviously, step one is to have solution manager, or access to someone else that does (a solution manager system key doesn’t need to be connected to your system.  You can call up any Basis friend, give them a little info and get a key that will work).

Now, on with the show:

After executing T-code SMSY in Solution Manager system, you need to do the following steps:

Create a system by right clicking on System entry and select Create new system.
Enter the System Name i.e., SID (3 chars)
Product = SAP ECC (select from the list)
Product Version= ECC 5.0 (select from the list)
Save the entries.
Select Menu Item “System—>Other Configuration” and enter the SID which you have created earlier.
Enter the Server Name(hostname)
Finally click on Generate “Installation/Upgrade Key Button ”

The system generates a system Key ,copy that system Key and paste it in the SAPINST screen when it prompts for Sol man Key.

That’s it.  Pretty easy, but still required…

Have a great new years eve, and remember as the new budget cycle opens up, if you need help with anything, or have use for one of our SAP Easy Button’s please let us know.



ABAP – Create an ABAP Custom Header Automatically for all your Programs

I found this cool post that showed me a way to have my own ABAP custom header default into every new program I created.  I thought I’d share it with you all (and add it to my note book :> ).

It’s really pretty easy.  Simply go to table: TSE05 (use SE16N, since no table maintenance has been defined).

If you want to update a program, use the following:

Next up, just make the changes as you’d like.  Feel free to add additional lines, move around what’s there, etc.  Now you don’t even need to paste your header into every program, just set up your boilerplate once, then you only need to populate in the information.  Just like that you have your own ABAP custom header that will populate every time you create a new program.

Happy Hacking,


Variant Configuration – Poor Man’s Variant Configuration Iteration

Well, one of the obstacles I’ve recently had to tackle is to handle variant configuration iteration within a model.  If you’ve done VC for a while, I’m sure you’ve heard about the advanced mode modeling, and it’s ability to have rules talk to different line items etc.  Well, short story, I don’t have that option.  So that means I have to go old school.  While it’s uglier than I’d prefer, it does still work.  So I wanted to go over my method and either give you a new idea, or perhaps hear of a better way to accomplish the same thing.

Here’s my situation.  I have a multiple level KMAT.  Inside of the second level (which is a cabinet), I have different types of shelves that needs to be iterated.  The business has said that the customer can choose up to 5 different types of shelves to go into a single cabinet.  Originally, the model was designed to use a single type of shelf.  So we need to adjust the current design.  What follows is my method to accomplish this.

1.  Create a Class that contains all of the shelf related characteristics.  This class needs to contain all the attributes that the Bill of Material will require to run all the object dependencies.  This can be an opportunity to do some cleanup work.  In my current project, we were able to do some characteristic consolidation.  This becomes especially important because of my next task.

2.  Duplicate all the necessary characteristics.  This is the part I really hate.  Having to make copies of existing characteristics always frustrates me because it creates needless work.  If I make a change to one cstic, I now need to change it 5 times (one for each duplicate).  My problem is that I don’t know of a better way to handle it.

3.  Create a KMAT material master that will handle the shelves.  Pretty straight forward.  Make the material, then create the configuration profile, and attach the class we created in step 1.

4.  Bill of Material Creation/Change.  First, find all the components of the shelves and add them to the new KMAT you created in step 3.  Be sure to move the object dependencies along with them.  If it was already modeled, like it was in my case, you need to go into the cabinet BOM and remove those same components so you don’t add them twice to your finished BOM.  In addition, you need to add your KMAT to the cabinet BOM.  In my case, I added it 5 times and included a selection condition on each item.  One more note.  you now have the option to maintain the qty at the KMAT level, or you can leave it at the component level.  You’ll need to review the qty procedures existing on your components and make that choice for yourself.  Initially, I’m just moving the qty procedures as they currently exist to the lower level.  If time permits, I may come back and adjust them.

5.  Create a Constraint for each position.  Now, here’s where the magic comes in (at least I think it’s pretty cool).  Since I intend to use a single KMAT for the 5 iterations, I still need a way to make sure I pass the correct cstic values to each position.  For that, I use a constraint with the RESTRICTIONS section and the PART_OF command.  This syntax allows me to look at a specific BOM position.  Since I chose to put shelf 1 at 500, shelf 2 at 501, etc. I know where they will be, so I can pass all the shelf 2 characteristics to position 501.  You get the idea.  If you haven’t already, be sure that the constraint net has been attached the cabinet configuration profile.

6.  Be sure all the new characteristics are passed to the lower levels.  Depending on how deep your model currently goes, you need to make sure that all the new duplicated characteristics get pass down to the cabinet.  In my model, I’m utilizing some phantom levels, plus nested KMATs, etc.  so I needed to do a procedure/CNET to pass those values down to the cabinet level where the Shelf KMAT’s exist.

Finally, test your work.  make sure the components are all showing up like you expect, then hand it over to the business.  In my case, we are using order BOMs, so we’ll need to pass an example down to production to make sure that the planned/production orders explode the same way that CU50/CU51 explode.  If you’ve dealt with order BOM’s you’re already familiar with some of those hassles.

Anyway, that’s been my latest adventure.  I hope to hear back that someone has found a better way, or if not, I hope this may help in your own iteration adventures.

As always, if there’s anything we can do for you, please click contact us above, and let us know how we can help,

Thanks for reading,



Merry Christmas

Well, the time has finally come, and I hope you’ve finished all your Christmas preparations.  For me, this is always a hard time of year.  I love Christmas, but I hate all the additional stress it inevitably brings with it.  So, again, I hope you can learn from my mistakes, and coast a little for the next few days.  I confess, I doubt I’ll stop working between now and New Years, but I do intend to take things easier and just enjoy my family.

Above all else, if you’re doing anything like I am, remember WHY you’re doing all this work.   For me, I want to build a business so I can spend more time at home with my family.  So I often need to remind myself that it’s ok to enjoy my family NOW.  So that’s what I’m doing as I write this…  reminding myself the reason behind my pursuit of this endeavor.  I won’t pretend it’s not for me too… =)

So on that note, I’ll keep this short.  I hope you have a great Christmas and I’ll be back on Wednesday.

Started a new Development Project – Getting Over the Hump

If you’re anything like me, sometime getting started is the hardest part of any new endeavor.  Right now, I’m ready to start converting my Service Dashboard to Web Dynpro.  I haven’t done a real project in Web Dynpro yet, so getting started can be tough for me.  I have a tendency to get stuck in my own head.  Like tonight, I’ve got things setup by moving the ERP code into my Web Dynpro system, but then I started waffling… where do I start?  what do I do first?  How did I start when I did the textbook exercises?

Ugh…  I tend do this from time to time…  Every time, this is one cure.  DO SOMETHING!!!  it doesn’t matter if it’s right, or if you need to re-do…  but for me, if I don’t do something, I end up never doing anything.

Learn from me…  just start doing something… when I finish this post, that’s exactly what I’m going to do =)

Now, if only I didn’t have 10 other things I was trying to accomplish at the same time =)  I covered that in another post though on time management.

Dropbox – Getting the most out of the cloud

I think I may have touched on this a while ago, but I’m constantly reminded of just how useful having a ropbox account is.  Originally I created a Dropbox account just so I could easily most large files from one computer to another.  Since that time, my appreciation has only grown.

The first great thing about Dropbox is that you can share folders.  This means it is incredibly easy to share pictures (even large file sizes) with any group of people you choose.  If you have Dropbox start automatically on your computer, you will get a quick notification that new files or changed files exist in your folder, so it’s easy to know if you have something new to look at.

Next up, the whole cloud concept.  I confess, I heard about the cloud for a long time and never really got the concept until recently.  Now I finally get that it’s just a virtual location for some or all of your files.  Why do you care?  Well, you never know when your HDD is gonna fail (if you read some of my earlier posts, you know that I’ve had major heartaches when my hard drive died).  The cloud lets you put those files somewhere else that is safe, and highly unlikely that those HDD will die at the same time as your own.

Collaboration is the next great thing.  While it’s not quite as cool as I’ve heard that Google docs is, sharing specifications and business documents with my partner has never been easier.  We have a shared folder, and we keep everything important in there.  If we make changes to something, we can instantly let the other know to take a look at the latest updates.  Otherwise, I’ve always had to deal with emailing file back and forth, and waiting for a new attachment, then making sure that you only keep the latest version, blah blah blah… you get the idea.

Anyway, I’m not getting paid for this, but I do highly encourage you to get a Dropbox account.  It’s a free cloud if nothing else (and you can share things even on your smartphone from your computer).


Idiot Proofing your Software

Today I just want to talk about something that is pretty obvious to most people, but I hope to give you a few new ideas on it anyway.  The topic today is idiot proofing your application.  Now, let me go on record by saying idiot proofing your software is pretty much impossible, however, you still need to you best.  I had a friend that used to tell me, “you can monkey proof your software all you want, but they just hiring better monkeys”.

So do you just run through it once, and call it good since you know it’ll be broken anyway?  of course not.  For me, this has always been a challenge.  I’m part of a small business, and I’m the lone developer.  That means, I’ve gotten really good at fixing the things I know will happen, but it also means that I tend to get tunnel vision.  I believe it a common thing among developers, but the key is to avoid that trap.  So here are some of the ways I’m trying to improve my own products…

1.  Get someone that knows nothing about product to play with it.  If I could get her interested, my wife would be a perfect test subject.  She doesn’t use SAP, she knows nothing about service, but she does understand IT and software.  By getting someone with no idea what is supposed to happen means that they will push all the buttons you never expected anyone to push.  They will also look at it from a purely aesthetic perspective, something that I don’t do as well.

2.  Next, if you can, get someone that isn’t good with software, but understands the business.  this will give you the true test if you got the right info.  If someone looks at the information generated, and says “this would help me run my business”, then you’re onto something.

3.  finally, get another developer to look at your stuff.  they’ll look at some of the ways you’ve done things and ask “why?”  Often, we know a way to do something, so we don’t look for better ways.  Often I’ll go to someplace like tech-ed or even a blog post and notice a strange piece of code.  I look at it closer, next thing you know, I’ve found a better way to do something 🙂  The problem is that I don’t have the time to reveiw everything, and I’m biased, so I don’t see anything wrong with my approach.  But…  if someone else asks why did I do this, instead of that? well, it forces me to look at my stuff and either explain why it had to be done this way, or I may say…  hmmmm, that’s a better way.  Now I know a new way to do it.  ha ha ha

The last point is to do this early and often in your development cycle.  Point #2 is really something you should get before you even start programming.  Sketch what you’re thinking, and show it to a business person.  Ask if it would help… if not, why bother?

Anyway, this has been on my mind lately, so if you have some other good ideas, or are interested in playing with anything I’ve done, I’m always interested in having another set of eyes look at my stuff.



Variant Configuration – Using a Parameter ID in a Dependency

Another fun tidbit I learned from my friends at Elogic.  Have you ever needed the model to change based on who is running it???  I know it sounds unusual, but I ran into this scenario.  We had a group that was constantly updating the bill of materials, however the business had begun a round of testing.  They needed to have the BOM locked down, but we didn’t want to have the modeler’s doing weird things just to test the new things they created.  For this, we used a Parameter ID in a dependency to handle this issue.

So, we created a copy of the BOM that was consistent.  This would provide the business with a bill of materials that wasn’t constantly adding new materials that would change the MRP results, or costing amounts, or introduce new errors.  Then, in our test environment, we added both BOM’s and used a parameter ID to determine who would see each bill of material.

Now for the new part, using a PFUNCTION, we called an ABAP function that would check for a specified user parameter.

* Read the user setting for this parameter
parameter_id    = l_parid
parameter_value = l_parva
rc              = l_rc.

l_parid is the paremeter ID to look for, and l_parva is the value returned from that parameter.  Using this function, you can define the cstics you want to use.  then you can assign this PFUNCTION exactly like any selection condition.

While I admit, it won’t be common, you never can tell when this could come in handy.  If you need more code around the PFUNCTION, just ask, but it’s pretty easy stuff.

Happy configuring…
As always, if there is anything we can help you with, please press the contact us button above, and let us know what we can do for you.


Getting Some Help – When is it the right time?

Being a small company, it’s a big deal whenever you start thinking about bringing in more help.  Right now, I’m the only developer for a small software company.  that means, I have a limitless amount of work that I can do, and since I’m still doing consulting, my time isn’t limitless 🙂  So, how do you fix this issue…

1.  Space the work out, and prioritize!!!
2.  Bring in some additional help

Recently, my partner found someone interested in working with us…  but are we ready for it?  Since I am admittedly a bit of a control freak when it comes the software, I’m naturally resistant to the idea.  Do we need it?  can we afford it? How do I know he’s any good? etc.

So this post is going to be about all the things to consider when you start to think about bringing in some help.

1.  Financial:  We’re small, so we can’t afford to pay someone by the hour, especially for something that “may” sell, but we don’t have any orders for it.  that pretty much leaves paying a percentage of sales on the product.  Even this is hard because our margins are still tight.  We’re offering big money for anyone that can get us a lead (FYI.  $10,000 is still out there if you connect us with a lead that brings in a sales.  No selling, just give us the lead).  On the flip side, 100% of 0, is still 0.  So it’s better to get a some of something, than get nothing…  you get the idea.  Plus, it may help open new markets/prospects.

2.  The application:  It must be designed as a standalone application, but still be easy to integrate with our existing offerings.  Sounds easy, but since I’ve done all the development, I haven’t really documented my standards.  So having someone new comes in would force me to figure out what I want.  While I am the CTO of this venture, I haven’t really acted like one up till now.  I’d still need to review the code, but this would give me a chance to learn some new techniques.  Never a bad thing. finally, is there a market for the new product?  Is it really important enough to bring in someone new?

3.  Legal:  This is the tough part.  We need Non disclosure agreements, as well as documents that give our company complete ownership of this stuff, and still provide the % to the developer.  We need to expressly state that no money changes hands until we get paid.  Plus, there is the whole issue of developer license.  We only have one currently, but I’ll talk more about that in section 4.

4.  Technical:  How will he develop?  I’d have to set up a system for him to create everything in and provide access to that system.  Not impossible, but certainly one more challenge to deal with.  The developer license is an issue.  We only have one, so do we need to buy another, or can we find an alternative?

Anyway, these are the angles to consider.  I think I’ve made my choice… but I’ll talk more about that in the future =)

thanks for reading,


Making a Sales is a Lot Like Dating

I heard this statement in one my marketing lessons, and it really struck me as an interesting analogy.  When I stopped to think about it, it really is more true than I imagined.  So let’s look at this, you’re looking to make a sale, what’s the first thing you need, you need a customer.  The customer is key to everything, without them, you have nothing.  I know what you’re thinking, duh!!!  But bear with me as I get to my point 🙂

A customer is a lot like looking for husband/wife.  You may go to a bar, or meet someone in a public place.  Do you see someone, and just walk up to a stranger and ask them to marry you???  Of course not.  But why?  because you don’t know if they are a fit for you, or vice versa.  Plus, what person in their right mind would say yes.  So how do you figure out if you’re “right” for each other.  You take small steps.  How about going out for coffee to talk?  Well, in the business world this is a lot like checking out your website or blog.  It gives your prospect the chance to get to know you slowly.  By putting out a blog, you let the prospect see that you know what you’re talking about and figure out if there’s any reason to go further.  So, you’ve gone for “coffee” and kinda like what you see.  So you move to the next level, how about a real date…  in the business world, this would be some form of opt-in, like an auto-responder, a mailing list, or a newsletter.  This says I’m interested enough to get free info from you…  but nothing more.  Ok…  now you’re dating…  but it’s still early stages.  It doesn’t mean you’re exclusive or invested…  just interested.  Now if you have enough qualities your customer likes, they may buy something small from you… a sort of trial thing.  This could be like meeting hte parents, or going on vacation together.  It’s still not marriage, but it’s pretty serious.  If the customer likes the small thing they bought, they may finally invest in your big offering…

Now of course marriage isn’t a perfect analogy, since you want as many customers as possible (well, unless you live in Utah).  But you get the idea.  You need to present enough value to get the customer interested in you.  They aren’t just gonna give you their money until they know you can provide the value you claim.  Plus, if you follow the idea of the “Ideal Customer”, you want to check out the customer too and see if they fit for you.  This is a two way street (of course, in my case, I’m early on, so my ideal customer is anyone that will buy from me.  ha ha ha).  but I look forward to becoming more exclusive in the coming year.

anyway, thanks for reading,