Blog

Home / Archive by category "Blog" (Page 7)

Happy Independence Day

Just a short post to wish all of you a happy independence day.  I hope you have a great 4th of July filled with fun BBQ’s, parades, fireworks and most importantly friends and family.

Happy 4th of July,

Thanks for reading,

 

Why is it so important to be unique?

Have you ever stopped to think about how hard people go out of their way to be unique or different from everyone else?  This is a very concept to me because everywhere in the media, advertising, politics and even general conversations most people will focus on the differences, rather than the similarities.

Take people for example.  We are bombarded for all sides of why we are different than someone else.  Maybe it’s skin color, financial background, education or a simple belief.  But why do we focus so hard on the things that are different between us?  If we really look hard, I’ve be willing to wager to that most people are 80% the same (probably a lot more).  After all, if we look at education here in the US.  Most of us went to grade school, middle school and high school.  We were all taught the same things.  We can look at even higher levels…  we are all people, most with 2 arms, 2 legs, 2 hands and 1 head.  We all breathe air, eat food and sleep.

We can drill down for pages about how we are the same, yet a single idea that differs between us and our neighbors could be enough to dismiss anything they say.  It could be a complex issue like global climate change, or something simple like cats are better than dogs.  So why is it that one idea is enough for us dismiss any entire person’s wealth of experience just because a single idea is different from ours?

Could it be that as a species we are hardwired to somehow set ourselves apart from everyone else?  is it just that we need to feel special, and the only way to accomplish that is focus on how we are different?  Or has society just conditioned us to focus on Coke vs. Pepsi, Republican vs. Democrat, PC vs. Mac in order to keep us separated.  After all, as long as you are different than me, there is will always be a marketing spin that can be applied.

I don’t have a good answer, and I’m just as guilty as anyone else.  But the next time you are about to dismiss someone’s ideas because they are different than yours, keep in mind that other person likely agrees with 90% or more of everything else you say.  So, when we are so similar, maybe we shouldn’t focus only on the differences.  Food for thought.

Thanks for reading,

Service Management – Selling a Subscription

I’ve recently had multiple different people ask me a similar question.  The general idea is that a company has a product that they want to sell on a contract.  This product will then be shipped on a regular interval.  This can often apply to some sort of consumable for a product, like cleaning supplies, testing kits, whatever.  The customer buys a bunch up front, typically at a discounted rate, or they simply want to include a bunch of extras on a big contract purchase order.  Either way, the idea is to buy a bunch in advance and have them delivered sometime in the future…  or on a regular interval.

I’ve spent some time digging, but unfortunately, I haven’t found a good solution.  I have found 3 different ways talked about, so I wanted to cover them and explain what I have found.  Maybe you can tell me a better way to do it.

  1. Subscription order.  This is the most promising.  It is a specific sales order type that is designed to deliver something on a regular interval.  The drawback, unless you have IS-Media, you don’t have this functionality.  I believe it also requires some master data setup, which could be an issue if you sell this product normally and on a subscription.  I wasn’t able to dig further into this to know for sure.
  2. Schedule Agreements.  Again, this sounded like a winner, but as I dug into it, it really appears to have little difference from a standard order.  I could not find any functionality to help me automatically drive schedule line dates.
  3. Standard Sales order…  for me, I chose to go down this process because if I had to set the schedule lines manually anyway, why mess with a different order type or fancy configuration.  Simply lock in the schedule lines so that they are not rescheduled, and enter in the quantity to be delivered on each date.

Now, this still is far from ideal, so I might end up designing something into my Renovation tool for service contract processing.  Then I can add an option to add an item on a schedule.  Then define if it is monthy, quarterly, yearly or manual.  Sound like anything you might be able to use?

Thanks for reading,

Service Management – Setting Warranty when you sell through a distributor

I’ve been running into more and more businesses that sell products through a distributor.  The problem from a service perspective is that when a distributor holds products for you, you have no idea how long they could sit on the shelf.  This makes a life a challenge when trying to accurately set the warranty start date.  Now you can use a master warranty to control the end date, but this doesn’t help you to determine when to set the start date.

Now, the most common approach I’ve seen to this is either having a customer mail in a registration form or creating their website to let a customer register it themselves.  Now the mail in cards is the worst of all worlds (in my opinion)  because it requires your customer to manually fill out a card, mail it back to you, and then you have to manually input the information into the system.  Many possible points of failure.

Option 2 is the better approach.  You can create a website, portal, whatever and then make interfaces back into SAP.  It’s the best possible option.  To the best of my knowledge, Hybris does not include any tools for product registration or customer.

This is the reason I built Rapier a long time ago.  I always wanted to provide an out of the box solution that would give customers a service portal.  I built it to allow them to register themselves as a new user, register their serial number, and create a service ticket (notification) all directly from this Web Dynpro Application.  If this sounds like it might be useful for your organization, I’d love to hear from you and provide you a demo.

Thanks for reading,

 

Variant Configuration – Characteristic Value Hierarchy

I recently discovered a fun fact with a characteristic.  In all my years, I had never noticed this fun little feature.  Not sure I would use it a lot, but it certainly could have some interesting benefits.  Within the Characteristic value screen, you can add values to a lower level.

Notice the the check mark on A06 under the S column.  Subordinate Values Exist.

If you press:  to see the next level of the hierarchy.

Now you can see the values at the next level down.  You can continue to build multiple levels down, or simply stop here and go back up a level.  

To see the complete hierarchy, press 

This will show you the full hierarchy.

Now, if you want to see this in action, check out the simulator:

I did the drop down for BK_ACCY, and here you can see that you get the option of all the values in the hierarchy.  This can be an interesting way to break up large characteristic value sets.

Thanks for reading,

ABAP – Code Inspector Results

I must say, I was pretty happy with the results of the code inspector.  I was fearing I would have a LOT of rework, but it turned out to be a manageable number of errors/warnings/information.

The only errors I had were all the same message:

Large table X: No WHERE condition

And these revolved around some search help functions that I built for my UI5 applications.  So it was a simple matter of finding an appropriate field to include in the WHERE statement.

Aside from that, all of my warnings/information messages were the same as well:

Possible use of <internal table> without prior content check.

This is the more important one for me.  This is an instance where I populated an internal table, but didn’t check to make sure it was populated before using it in a select statement FOR ALL ENTRIES IN.

I’ve run into this before, and it’s caused crazy long run times before it reads the entire table.  Short story… BAD.  So this is a great way to make sure that I fix any outstanding issues.  It’s a very simple fix.  Add an IF statement around the Select statement to check that it is NOT INITIAL.  Problem solved 🙂

I highly encourage running this, even if you don’t plan to upgrade to HANA anytime soon.  It’s a good method to make sure your code is following some simple standards.

Thanks for reading,

Career Ups and Downs

If you are anything like me, you hit the highs and lows of your career.  One day, you are on top of the world.  Solving fun puzzles, working with fun people, the next day you find yourself stuck in the drudgery of documentation for the next 2 months, or playing in Excel to handle a data migration for long enough to make you go cross-eyed.  (at least for me, those are the lows).

Much of life is how we deal with the lows.  I have a tendency to fall into a bit of a slump when I hit those lows.  I guess for me, so much of my time is tied up in work, and when I fall into one of the areas that doesn’t excite me, I find myself grouchy, tired and just generally unfulfilled.

When I find myself in a rut like this I have found a few things that tend to help me.

  1. Make a game of it.  When I hit these lulls in the action, and I realize it is just a temporary thing, I find that making a game out of it helps me  power through.  What do I mean by a game?  sometimes, I see how quickly I can get a tedious task done.  For example, if I have to create 500 Object dependencies, or manually make a ton of general task lists, I’ll either work to find a new way to load them, or challenge myself to get X number done in an hour.  Be sure to reward yourself with something fun if you hit your goal 🙂
  2. Find a good distraction.  Often for me, I’ll reward myself with learning a new skill in between pieces of documentation.  Something like this scenario is when I taught my GUI Scripting, arguably my most valuable skill that I’ve learned for data loading 🙂
  3. Take 10-15 minute reading breaks or listen to a podcast.  Stop what you are doing and read a fiction book, read a good blog (like this one.  ha ha ), listen to your favorite podcast, or whatever can help take your mind off the tedium.  Again, use it as a reward.  Get 15 pages of training documents done, then take a break.
  4. Maybe it’s time for a change.  When I feel like my usefulness has run its course, sometimes that means it is time to find a new contract and move on from where I’m at.
  5. Maybe it’s time to re-evaluate everything I’m doing.  This is a more recent feeling for me.  I’m trying to figure out what it is that really makes me happy, what drives me, and what can I do to help people.  Maybe it’s SAP, or maybe it’s something else.  But it is worth the mental exercise to come up with a side project, side learning experiment, or maybe even night classes to learn something totally outside of my comfort zone.

I hope this might help you get through the rough patches,

Thanks for reading,

Variant Config – Limited Numeric Characteristics

I recently “re-discovered” this this when I was trying to build a model that limited the values within a numeric characteristic.  I created a Cstic that had the following values:

0
1-999

It seemed pretty straightforward.  Then I wanted to set the value = 0 if a different cstic was equal to No, and have it be greater than 1, if it was equal to Yes.  Seemed so easy.  I tried all sorts of variations of my code, but even in the trace it would say the inference was scheduled, but it would never do anything 🙁

I finally changed the values to be:

0
1
2

50

and used the same logic.  Like magic, it did my restrictions.  So it turns out that restricting a range doesn’t work so well, so if you run into a similar issue, break your values into individual pieces.  Now, this isn’t ideal for everything, but if you have integers, this approach can work.

Thanks for reading,

SAP – Open up Distribution Channel and Division on a Sales Order

I recently talked about building a contract that can handle services and products in a single document.  The idea behind this contract is that it will allow you to sell a product with an extended warranty and bill the customer in a single invoice.  There is another very interesting use for this concept.  If you run business across multiple divisions, don’t you want the ability to see a customer products from any division and invoice them once?  Now, of course there could be inter-company  considerations, but that is just pricing :).   Using this contract, you could enter as many different divisions on a single order.  You will need to execute real orders in the respective division in order to provide the delivery and intercompany invoicing though.

The key to this is being able to perform the create with reference function from the original contract.  The problem is that when you create with reference, it locks in the sales organization, distribution channel and division.  There is a way to overcome this.  if you use the following user exit, and your own version of custom code, you can open up the field for editing.

Program: MV45AFZZ

FORM userexit_field_modification.

IF screen-name = ‘VBAK-VTWEG’
OR screen-name = ‘VBAK-SPART’.

screen-input = 1.
MODIFY SCREEN.

ENDIF.

 

This is highly simplified logic, and would open the field for everything.  You could enter in a specific document type or other value to denote when the screen field should be opened.  But this should get you going in the right direction.

Thanks for reading,

Doing What you Love

Through my years of being a consultant, one thing I’ve learned over and over again is that doing right by clients or friends isn’t about the money.  Maybe it’s because I truly like parts of SAP, or I just like solving problmes, but I find myself time and time again helping out people with random problems.  I find that those moments make me happy.  Perhaps I am really doing what I’m meant to do.

Now, the day to day consulting has it’s ups and down.  I love the thrill of a new project, learning new business process, and solving new challenges.  Of course, the downsides include the endless amounts of documentation, random meetings, and the scores of other bureaucracy that can come on any large project.  But at the end of the day, I love working with businesses and love solving problems.  As it turns out, I’m good at solving issues in Service and Variant Configuration within SAP.  And I find that many times, I don’t care about the money.  If someone has a question, or even just needs an hour of my time, I’m happy to sit down and talk with them.  Help them understand the ins and outs.  At the end of it, maybe they even hire me on to do some hard core consulting…  or maybe I can give them everything they need in an hour.  Who cares?!?

What I care about is helping people solve problems.  Maybe I finally figured out my purpose in life…  or at I’m getting closer.  What makes you happy?  what do you do that you don’t get paid for?  what gets you excited?  Whatever that is, do more of it… 🙂

Thanks for reading,