SAP

Home / Archive by category "SAP" (Page 30)

Variant Configuration – Tables with Multiple Value Characteristics

Here’s a fun fact that I totally forgot about.  Tables can’t use multiple value characteristics.  If you attempt to assign a multiple value characteristics to a variant table, the table will work just fine, until you attempt to assign it to a selection condition, or inside of a an IF statement.  It’s been so long since I ever even thought about doing this that I struggled for over an hour trying to get a simple selection condition to compile.  (see my earlier post on if I’m too old school or not for more details).  So, for that reason, I thought I’d throw these little tidbits out there.

1.  If you need to use a multiple value characteristic inside of a table, be sure to create a single value copy of it to be used as the table key.  This will allow you to set values from a variant table.
2.  You can’t use multiple value characteristics as an assignment into a variant table for a “true or False” type scenario.  When I talk about True or False, I mean you can’t enter a table into an IF statement to see if the combo exists, and you can’t use that table in a selection condition or precondition, which also behave in a true or false fashion.

Now, I’ll only be on my soapbox for a second, but to me, this is just one more clue to keep it simple in the BOMs and routings for your selection conditions.  Let the configuration do all the heavy lifting.  That’s it… I’m done =)

Anyway, thanks for reading.

 

Variant Configuration – Restricting Characteristic Values

I realize today might be pretty obvious for a lot of you VC experts out there, but I wanted to talk about Restricting characteristic values.  To me, this is one of the coolest features in variant configuration.  If you are not familiar with the concept, restricting characteristic values gives you the ability to dynamically remove values that are no longer valid because of other selections.

In variant configuration, there are two techniques to accomplish restricting characteristic values.  You can use Preconditions or Constraints.  There are couple things to consider…  One, Preconditions are old technology.  They are typically only recommended as a “last resort”.  In my experience, the only use for preconditions is for multiple value characteristics.

Now, constraints are the best way to handle this in my opinion.  There are some prerequisites to use this.  First of all, the characteristics must be set as Restrictable.  If not, your values won’t dynamically appear/disappear, you’ll just get a red X when things are violated.  Now the first big advantage is that constraints can be set to work differently by product line (or class).

Now the next big thing in a constraint is how to restrict the values.  Now there is the “easy” method that you can manually set the values.  For example:

C.CHAR_1 IN (‘A’,’C’,’F’)  IF C.CHAR_A = 1,
C.CHAR_1 IN (‘X’,’Z’) IF C.CHAR_B = 2

Now, this method works fine, and will restrict the values of CHAR_1.  However, in my humble opinion, the better way to do it is to use a Table.

Table:
Char_A   CHAR_1
1                A
1               C
1               F
2              X
2              Z

Then, in the constraint, you can simple put in the table, and it can restrict things both ways.  Why is this important?  If you plan to push this configuration to your customers, you should never assume that they will answer the questions sequentially.  If you restrict things both ways (and the table is the easiest way), then regardless of what they answer, everything will be consistent.

Anyway, that’s the deal for today.  Hope you find it useful.

 

Material Master – View Level Access, how important is it to you?

While I’m the VC or the SM person on most of my projects, one of the things I’ve heard rather often is that the business wants to control who can access the material master by screen.  Now, I’ve heard that through security, you can provide field by field authorization restrictions.  Short story, nightmare for your security team.  No project that I’ve worked on has been willing to go down that path.  No, most companies I’ve worked for have “given up”.  They give people access to everything and use the honor system to make sure people only touch “their” data.

First question, does this sound familiar to you?  If so, I’d like to hear how you’ve overcome the issue.

Why am I asking?  we are actually working a little mini-app that creates a single transaction for each set of screens in the material master.  For example, the four MRP screens are 1 transaction,  Work Scheduling another, etc…  We’ve included a configuration screen so that you even hide all of the fields that you don’t care about.

http://javellinsolutions.com/products/material-master-advances-sap-material-master-applications/

What I’m trying to do is to get a pulse on the need for something like this before I invest too much time in it.  I confess, it’s not our most creative application or our most complex, but it seems like there’s a need for something like this.  So if you happen to have an opinion on whether or not I’m wasting my time, I’d love to hear from you.

Thanks for your input.

 

Variant Configuration – Bill of Material Design, Am I Too Old School?

On my latest project, I’m not the one setting the design, so I’m going with the flow of what was decided.  One of the point that I’m having a hard time with is the selection conditions being assigned to the bill of material items.  Now my long time friends and colleagues know that I’m hard core of keeping all of the logic out of the bill of material.  I learned a hard lesson of putting too much logic into the BOM selection conditions.  Now, here’s my question to you modeler’s out there.  I managed to crash MRP in 3.0F using a combination of material variants and complex selection conditions.

Now, since that time, I’ve gone to great lengths to avoid anything other than simple assignment logic in my bills of materials.  Now, this does cause me to create a lot of additional characteristics in my configuration.  Granted, all the characteristics are calculated and never seen by the user.  This sets all the logic on the front end.  By the time the back end does anything with it, it’s as simple as pie.  This is the process I’ve lived by for over 15 years of Variant Configuration.

The thing is, that was 3.0F…  15 years ago that this occurred.  I know that SAP has dramatically changed the processes for VC.  The “word” is that as long as you don’t plan to use Characteristic Value Planning or APO.  But being the old VC guy that I am, I have a hard time to believing that.  So my question to all of my readers out there…  where do you stand?  have you put complex BOM logic into your models?  and if so, did you notice any impact on MRP?  I’d love to hear your experiences.

As always, thanks for reading and I look forward to hearing form you.

 

Service Management – Service Contract Profitability

Today is another pulse question.  By that I mean how do you handle Service Contract profitability.  Service contracts, maintenance contracts, warranties, etc all have a very important fact in common.  They all need to be tracked to figure out if you are making or losing money.  Let’s take the example of an extended warranty contract.  You charge $1000 for a 1 year extended warranty.  But how much does it cost you to live up to the contract?  More importantly, do you actually know exactly what you earned or lost on any particular service contract?  Can you see how many times you performed service on the item?  how much was spent on parts?  labor?  travel time/expenses?

If you don’t the answer, how can you accurately determine what you should charge for your extended warranty?

I’m thinking about adding a new Dashboard report to show the service contract details.  Especially, the cost vs. price, and all of the attached documents, service, serial numbers etc.  But again, I’m always wondering, is this something people want?

So I’m hoping you can help me out.  First, is service contract profitability reporting something you could use?  If so, what would you be looking for?  if not, why not?  do you already have a custom solution?  do you use service contracts?  In either case, I’d love to hear from you.  Any insight you could provide would be greatly appreciated.

Thanks for reading and I look forward to your comments.

 

Variant Configuration – VC_I_GET_CONFIGURATION Issues

Well, it’s funny, just yesterday we were talking about interface design and the printouts, and here we are already finding an issue 🙂  Well, I came up with a great idea of having multiple Sales Printouts, and using the function: VC_I_GET_CONFIGURATION to just call it by Sales Printout and by the name of the UI Char group.  Well, unfortunately, I found that char group is not one of the parameters you can send into VC_I_GET_CONFIGURATION.  This was highly disappointing to me.  I did a little debug work, and found that it’s even more confusing than that.  If you create multiple Interface Designs with the same printout checked (for example, Sales Printout is selected on 2 different char groups) then it will only display the characteristics common in both groups.  Confusing???  well it was to me too.  So, let me explain a little better…

Char group 1 (sales printout has been checked)
Cstic 1
Cstic 2Cstic 3

Char group 2 (sales printout has been checked)
Cstic 2
Cstic 4
Cstic 6

If you execute: VC_I_GET_CONFIGURATION for sales, then it will only return Cstic 2.

I really don’t understand this behavior, but it’s what the function does.

Now… there is one potential, so bear with me…

Option 2 is a bit more involved, and depending on the requirements may not even be an option.  Here is the basic concept.  We would create a “super” UI for “engineering” that would be used for production orders and the like.  Then each characteristic (within the model specific class) could have an organizational area set.  We could create an organization for each plant (or each breakdown needed).  We could then assign all the applicable org areas to each characteristic, and the function module above is able to take into account the org areas in what it prints.  Since this is confusing, here’s an example…

Org areas available:

1-Plant 1
2-Plant 2
3-Plant 3
4-Plant 4
5-Plant 5
Etc…

Plant 1 only wants to see: Char 1, char 2, char 3.
Plant 3 wants to see char 1, char 3, char 5, char 7
Plant 5 wants to see char 1, char 4, char 7, char 10.

The Class would have the following:

Char                       Org Area
CHAR 1                 1, 4 , 5
CHAR 2                 1
CHAR 3                 1, 4
CHAR 4                 5
CHAR 5                 4
CHAR 6
CHAR 7                 4, 5
CHAR 8
CHAR 9
CHAR 10               5

So our UI (interface design) for engineering would contain:

CHAR 1
CHAR 2
CHAR 3
CHAR 4
CHAR 5
CHAR 7
CHAR 10

Now, when plant 1 prints the production order, we would call the function above with Org Area = 1, Engineering = X

The function will then pull the “super” UI, and then strip out anything that doesn’t have Org Area = 1.

Now keep in mind, VC_I_GET_CONFIGURATION can read the org areas, but I haven’t fully proved out this idea.  If anyone has a better idea to do something like this, I’d love to hear it.

So, there’s your forray into the mind of a crazy VC modeler.  Thanks for reading.

 

Variant Configuration – Interface Design for Printing

Here’s a fact about the Variant Configuration Interface Design I took for granted because I’ve been using it for so long.  The printout options are what I’m talking about today.  These 3 extra checkboxes come about because of the need to easily control what should print on output documents.  Why is this so cool?  because it let’s you separate out your tabs and sequences, and let you have a unique output for each different document just by setting up another interface design characteristic group.

Notice, there are 3 different buttons.  Sales, Purchasing & Engineering.  Now most clients I’ve work with never had all 3 different uses, so most of the time, Engineering would be used for production documentation.  Production orders is the most common usage, but it could also be service orders, internal, network orders, etc.  You get the idea.

Purchasing is normally my jack of all trades fall back.  The most common usage is reporting.  This is simply because VC for Purchasing is not a common process.  In my next post, I’ll talk about how you can create your documents to read these UI printouts.  In the meantime, if you haven’t already used this functionality I recommend you check out the interface design and use one of printout options.

Thanks for reading

 

Variant Configuration – The Value of Good Information

To all of my Variant Configuration modelers out there, you all understand exactly what I’m talking about.  Your models are only as good as the information you have to work with.  I’ve modeled at quite a few different places, and more times than not, the information is always the bottleneck.  My current assignment is no different.  So it what brings me to my topic of the day, the value of good information for your VC models, and the format that it’s in.

In my travels, I’ve seen the extremes, good and bad.  I’ve seen notebook pages with scribbles, and I’ve seen fancy designed tools just for the documentation of the VC rules.  What I’m here to tell you is that you don’t need anything fancy.  In my experience, an excel spreadsheet with some standard formatting is more than you need.  Fancy tools will just cost you money, and in the long run, cost you time.  Because you still need to move all the information into the fancy tool.  Spend a couple of hours, put together a format you can read.  Work with the modelers and business people.  It’s really that simple.  I’m an engineer, so I like to start with the bill of materials first.  I’m a fan of listing out all the components, and then break down the rules that it takes to select each.  From there, it’s usually pretty easy to break it down and sort it out.

Then go into the sales/marketing rules.   The important thing here is if you can break things into tables or grids.  Remember, don’t make it more complicated than it needs to be.  The more complex, the less likely anyone will update it or enter it properly.

So take me advise, if you’re just starting out, do it simple.  Use excel to build it.  Thanks for reading.

 

Development – Be Careful when Switching Gears

Today I wanted to talk about a general thing I’ve experienced, and I’m slowly learning from.  Switching gears.  By that I mean jumping from one project to another.  If you’ve checked out the products we’ve designed, you’ll notice that there are some very different items in the list.  Some are SM, some are PP, some VC and some even MM and WM.  So what?  So…  it means they are are all radically different from each other (and perhaps I’ve wandered too far away for some of them, in search of more sales).  Inevitably, it’ll happen though.  Even if you only have 2 different projects you’re working on, you might be asked to jump over to the other project…  so, how can you make that as painless and efficient as possible?  try this approaches..

My favorite, if you can, finish up what you’re working on.  Right now, I’ve been working on a big Web Dynpro addition, but there is interest in one of our MM utilities.  These 2 things have nothing in common.  So I chose to finish up the piece of the Web Dynpro that I’d been working on for the past 2 weeks.  Why?  because when you shift gears, you forget what you were doing, you have to spend an hour or so remember where you left off, and what you still wanted to do.  If you have the option, get yourself to a good stopping point before you move on.  It’ll save you a lot of time (and headaches).

Multi-task when you can.  I know this is a little counter-intuitive, but if you can spend even an hour a day on the first project, you’ll keep all your ideas fresh (even things as simple as where to put the breakpoint).  This will keep you from forgetting where you left off.  Option 1 is still better, but this will help without diverting too much attention away from your new priority.

Take good notes.  (often you’ll do this one no matter what).  Be sure to not everything you haven’t done yet, maybe little techniques you used that you might forget (I use this blog for that), or even just bullet points of what you were working on, and where to start when you can return to this.  It sounds obvious, but I’ve forgotten to do this more than one.

I know, none of this is rocket science, but keep this ideas in mind.  We all get pulled away from what we  “want” to work on, in order to do what we “have” to work on.  So make it as easy as you can to jump right back where you left off.  Thanks for reading.

 

Variant Configuration – Global Multiple Value Characteristic restricted by classification

Ok…  so this is a long title, but in short, here’s the situation.  I have a global Multiple Value Characteristic and it allows additional values.  For one particular KMAT that will use this characteristic, I want to have one preset option available + the free text, and exclude everything else.  In the classification, I set only the single value to be shown, but the problem is that it is automatically selected as well, and it shouldn’t be.  Since the characteristic is to allow customers to enter in free text to denote a special, I don’t want anything populated for a value unless the customer actually enters something in there.

Now, thanks to my friends at the CWG, in particular Steve Schneider, they came up with a great trick.  He gave this simple process for the Multiple Value Characteristic, and it works great.

1) Remove the multi value char from the existing class assigned to the KMAT.

2) Create a NEW class containing only the multi value char.

3) Assign the new class as a SUPERIOR class to the existing KMAT class using transaction CL24N

4) While assigning the superior\subordinate class in CL24N, double click on the multi value char and select the single value you want available.

5) Save

6) Go into CU50 and see the results… You should see NO value specified, and when you specify the multi value char, all you should see is the single value and the free text field..

It really was that easy to restrict a global Multiple Value Characteristic, and works like a charm.  Thanks Steve.