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.

 

Variant Configuration – using CS_BOM_EXPL_KND_V1 for VC BOM Explosion

Here’s a fun little tidbit.  A recent client was looking for ways to get the BOM from a sales order line item before if hits the planned order/production order phase.  Particularly when you deal with large or expensive manufacturing, you planning/procurement groups might need a heads up on what components will be needed long before it hits MRP.  In that case, you can use the ABAP Function:  CS_BOM_EXPL_KND_V1  This function with a few inputs will provide you the complete BOM for the sales order configuration.  Here’s what you need to enter to make CS_BOM_EXPL_KND_V1 work:

VBELN & VBPOS…  easy one here.  the sales order & line item you want to explode.
WERKS – the plant it should be exploded in
MTNRV – this is your configurable material (KMAT)
EMENG – the quantity of the line item
DAVTUV – the explosion date you want to use (important if you use ECM on the BOM)
CUOBJ – this is the configuration to use ( you can find this in VBAP)
CAPID – this is your BOM type.  PP01 or SD01 are the most popular
MMory – set this to 0 (not sure if this is required)
MEHRS – set this to X (again, not sure what this is for)

If you set these values, BAM, you get your VC BOM before MRP does.  Hope you find this useful.

 

Variant Configuration – Using the PMEVC for Dependencies

Well, since I was talking about the PMEVC the other day, I thought I’d throw out the other biggest piece of functionality that I found helpful.  That’s the improved editor for object dependencies and constraints.  There are 2 big pieces that are absolutely a hit in my book.

The first piece is the editor.  It’s finally a text based editor that is easy to use.  You can use standard copy and paste, no longer do you need to to use the cryptic I9 command into the line number to add more lines.  You can just hit enter.  It’s also very easy to use the find and replace, copy and paste, etc.

The second part is that you can actually use a nice little Input help button.  It’s a hand/question mark looking button.  If you start a statement, it will tell you the options of what you enter next.  This is especially nice for constraints if you forget the key words (like I often do.  ha ha ha).

Short story, if you have access, I recommend doing your PMEVC to do your dependency coding.

Happy Modeling,

 

Marketing – Using Linked-In Ads

Well, in my never ending quest to improve my marketing skills, I’ve been trying all sorts of random things.  Linked-In ads is one of the pieces that I’ve been trying.  I’ve had mixed results using Linked-In ads, so i thought I’d chat a little about them today and give you some pointers.

First off, if you haven’t used Linked-In Ads, it’s another form of pay per click (PPC) that you can use to try to connect to all the people on linked-in.  You can find it by going to:  www.linkedin.com/ads.  Now for me, this is my first foray into PPC.  It’s actually pretty simple, but keep in mind that I’m still learning (right now, I’m learning about Google Adwords, so I’m sure I’ll have more pointers on that coming soon.  =)

Anyway, start simple, make yourself an account.  You connect the linked-in ad account to your linked-in account.  From there, create yourself a campaign and  list all the groups you’d like to market to.  Now, connecting to a lot of groups in Linked-in can be good, or it can be a spam attractor.  (As a side note, be sure to watch your email settings for each group you join, or your inbox might end up pretty cluttered).  Now for each campaign you can assign how much you’re willing to pay for each click, what groups are assigned to each etc.

Now, the most important part is the ad.  The ad gives you the option of a title, a little text, the ability to point to a linked-in page or a website, and even add a logo.  You can make a bunch of these ads under a single campaign.  Now the real work comes in from making different variations of the same theme over.  Make a bunch to figure out what might actually attract someone to click on it.  But remember, this is only the click…  it still doesn’t mean “interest”.  So here’s what you need to think about…  you want people to click on your ad, but only if they are really interested.  Every click means you have to pay…  if you get a lot of people clicking, but no one requesting additional information, you’ve just spent a lot of money for nothing.  If no one clicks…  well, then it was wasted effort.  You’re looking for the sweet spot.

I’ve been doing linked-in ads for around 9 months.  Initially, I got no hits for a few months.  This is likely for one of 2 reasons.  One, every ad must be viewed multiple times before it “generates” interest (got this from marketing books).  The other option…  my titles just weren’t good enough to generate interest.  So, you might need to keep tweaking your titles and text… over and over and over again…  Now if you have ads that are working well, but aren’t getting clicks…  I’d suggest adding even more detail to the ad…  Either way…  it’s a lot of trial and error.

If anyone out there has some good advice, I’d love to hear it…  I’m learning things slowly…  but if anyone can speed up my learning curve, I’d love it…

Thanks for reading,

 

Variant Configuration – Using the PMEVC for the Interface Design

Well, I’m still rolling on the variant configuration track.  Today is a new revelation that I recently discovered.  In some of my previous contracts I’ve had to set up some rather large interface design tabs.  Often consisting of 20 – 50 characteristics.  If you’re at all familiar with the original tool for creating/updating the interface design, you know how clunky it is.  You have to manually page through the list of characteristics, and even click the checkbox in the appropriate sequence so they show up where you want them.  It’s not challenging, but it certainly is tedious.

What I found is that the PMEVC actually has a great tool for creating and updating the interface design.  Instead of doing the hunt and click method of adding characteristics, you can just type them in.  You still have the option to select a bunch of characteristics in a method similar to the old method.

On top of everything, you can even easily change if it’s a tab or a sequence, or flag it as Sales or Engineering, just by flipping a tab.  So much easier than hunting through a cryptic menu to find the characteristic grouping.

All in all, I’m pretty excited about this.  I was thinking about writing a utility to upload the interface design from an excel sheet, but after finding this functionality, I don’t really need a need for that.  Hope you’ve already found this trick, if not, enjoy the nice interface =)

 

Project Management – Redesigning your baby

Well, lately I’ve been spending a lot of time on the rework of Rapier.  I’m sure you’ve noticed some of my posts in the past.  My original baby, Rapier, started as a crazy idea I came up with on a plane ride  home from my project in Boston.  Rapier started as a BSP application, then when I realized that BSP was a dying technology, I moved to ABAP Web Dynpro.  Now, I’m moving to add a ton of new functionality to the application that started it all.

Now, with all of these new ideas, it forces you to revisit what you originally designed, and come at it from a new perspective.  While that sounds obvious to any developer, it comes with a price that I’m not sure everyone realizes (I didn’t at the time).  When I first converted to Web Dynpro, I left most of the original structure intact, and focused on the web dynpro conversion and understanding that new coding.  Now that I’m full blown into version 2 functionality, I’m realizing there are a lot of pieces that could be designed better.

This post is to remind you that a simply adding new functionality comes with a lot of additional work.  For example, I’m looking at adding a new product designed around the field service engineer.  There is a lot of shared functionality between the 2 products.  So that required me to reevaluate all of my tables and classes, so they could easily shared.  Suddenly, this meant that all of my tables, classes, etc. needed to be created under a new shared namespace.  All of those items then needed to be swapped out of the existing code, etc.  Get the picture?  simply letting my code be reused, caused a huge chain reaction that took almost a week to reconcile.  And all of this wasn’t changing any functionality.  Just renaming things.

So, the word of advise for today is to remember that when you redesign, add plenty of time to your schedule.  If you choose to do it right, it’s gonna take longer than expected.  It’s worth it in the long run, but everything comes with a price.

 

Web Dynpro – Testing a Dynamic Table

Now, since I always learn things the hard way, and if you’ve been reading my posts for any length of time, you’ll know that I can be a bonehead when it comes to things…  but I’m too stubborn to give up (hence why I’m writing this post.  ha ha ha).  Anyway, my latest discovery was in the testing of my new dynamic table.  I really needed a table with some editable fields, but in the creation of my table, the context node was empty.  So the table was being created, but there were no lines in the table.  Well, maybe it was the lack of sleep, but my brain was moving a little slow, so I didn’t grasp that the dynamic table was empty…  thus, impossible to see if there were any fields editable.

So, short story, you need to populate at least one row in the table, even if it’s empty.  Here’s an example:

* navigate from <CONTEXT> to <NOT_ITEM> via lead selection
lo_nd = wd_context->get_child_node( name = wd_this->wdctx_item ).
lo_nd->get_static_attributes_table( importing table = lt ).
IF lt IS INITIAL.
APPEND wa to lt.
lo_nd->bind_table( new_items = lt set_initial_elements = abap_true ).
ENDIF.

this simple addition, and suddenly I could see my editable fields in my dynamic table.  Probably obvious to a lot of folks, but yet another lesson learned in my never ending journey.

Thanks for reading.

 

ABAP – Web Dynpro Dynamic Table, again

Well, as it turns out, I didn’t figure out everything I needed for a dynamic table.  =)  The dynamic table code that I previously talked about works great, until you want to control the read only vs. editable aspects of the table.  I found a great way of creating a Dynamic Table in ABAP Web Dynpro that gives me the control that I needed to do allow for editing.

First things first, you need to create a context node and the attributes for to define the table.  You could do this dynamically, but I’m finding it’s cleaner to build it normally.  Either way, once it exists, here how to build the dynamic table.

*** create dynamic table for Notification – Items
cl_wd_table=>new_table(
exporting
id = ‘TB_TABLE’
bind_data_source = ‘CONTEXT_NODE’
visible_row_count = 5
read_only  = abap_false
receiving
control = l_table ).

*** build table columns
loop at <cols> into wa_config.
wa_cols = cl_wd_table_column=>new_table_column( ).

*For Dynamically creating Input Field
CASE type.
when ‘TEXT’ OR ‘TIME’ or ‘DATE’ or ‘DROPDOWN’.
CALL METHOD cl_wd_input_field=>new_input_field
EXPORTING
bind_value = lv_bind
id         = lv_id
state      = lv_state
read_only  = abap_false
on_enter   = ‘ON_ENTER’
RECEIVING
control    = lr_input.
wa_cols->set_table_cell_editor( lr_input ).
when ‘CHECK’.
CALL METHOD cl_wd_checkbox=>new_checkbox
EXPORTING
bind_checked = lv_bind
id           = lv_id
state        = lv_state
RECEIVING
control      = lr_check.
wa_cols->set_table_cell_editor( lr_check ).
ENDCASE.
ELSE.
CALL METHOD cl_wd_text_view=>new_text_view
EXPORTING
bind_text  = lv_bind
id         = lv_id
RECEIVING
control    = lr_textview.
wa_cols->set_table_cell_editor( lr_textview ).
ENDIF.

l_col_hdr = cl_wd_caption=>new_caption( ).
l_col_hdr->set_text( lv_col_text ).
wa_cols->set_header( l_col_hdr ).

l_table->add_column( wa_cols ).
endloop.

l_root ?= view->get_element( ‘TC_XXX’ ).
grid_data = cl_wd_grid_data=>new_grid_data( l_table ).
l_table->set_layout_data( grid_data ).
l_root->add_child( l_table ).
Now this code obviously won’t work out of the box, but you should be able to get the idea of how to use it.  If you have questions on this let me know and I can expand on the code provided.  Thanks for reading.

 

Posts navigation

1 2 3 73 74 75 76 77 78 79 97 98 99
Scroll to top