Month: November 2013

Home / 2013 / November

Basis – Cancel a Transport Request that is hanging

Well, of course I was in the middle of importing a transport request, and my system crashed.  never failed.  Well, it gave me the chance to find this latest tidbit that I can pass onto you.

If you have a hanging transport, go into STMS, find the transport, then using the menu GOTO->Import Monitor.

You should see some folders, and on them will have a truck with some text.  Go to that, right click and select delete.

magically, you can begin reimporting your transport.  I hope that things still come in cleanly.

thanks for reading,

Variant Configuration – IPC Tracing using Engine Tracing

This next method is yet another option for IPC Tracing.  This time we talk about the Engine Tracing.  First things first, you have to turn it on.

Activating engine traces

In transaction SM53, select Log Configuration:

blog01-01

Activate log level “Debug” for:

  • com.sap.spc.document.rfc.engineTrace
  • com.sap.sxe.trc.imp

blog01-02

From now on, engine traces will be logged and you can use IPC also from VA01.

For seeing these traces, go back to SM53, Display Log and navigate to com.sap.sxe.trc.imp.

blog01-03

This will bring up the engine traces.

Now in comparison, this eliminates the issue of seeing the configuration initialize.  However, it comes with a price.  You MUST Always turn back the log level to error after you are done. VMC logging is very rudimentary and traces produce a lot of data. Complete instances can be brought down by consuming all harddisk space  with log files!  So unless you want to crash your IPC, do NOT leave this on.

thanks for reading,

 

Variant Configuration – IPC Tracing using IPC UI

As I mentioned in a previous post, there are 3 main ways to debug or trace in the IPC.  This second method is probably the easiest method, but comes with limitations (doesn’t everything 🙂 ).  IPC Tracing using IPC UI is very useful and very simple to see what’s happening within your configuration.

Step one is to activate the tracing functionality.

The IPC UI has a built in functionality to display engine traces. In order to active these engine traces, you have to turn on the following switch in the XCM Administrator:

blog01-01

Select or create a specific component configuration for Behavior.

blog01-02

The option behavior.enabletrace is by default off (“F”) and has to be turned on (“T”).

Once traces have been activated, there is a new option in the menu “Trace UI”.

blog01-03

The trace settings can be specified on the following screen:

blog01-04

The modules are the same as in SCE, see Table 1 “traceable engine modules” .

Activate the traces by clicking “Apply Trace Settings” in the top menu.

This brings you back to the configuration UI, now click on Trace UI again and you will see a trace similar what was shown in the COM_CFG_SUPPORT.

Now, I mentioned a downside to this approach.  That downside is that it’s impossible to ever see the initialization of your characteristics and values.  You can see what happens when things change, but not the values that get set upon entering the configuration, like reference cstics.  For any development environment, I still highly encourage this setting to be turned on.

thanks for reading,

Variant Configuration – PFunction vs Function

Today post again is largely due to my good friend Jeremy Meier.  I’ve heard about pfunctions for a long time.  But I never understood the different between functions and PFunctions.  So today, to solidify it in my own mind I’m going to talk about PFunction vs Function and why you would use one versus the other.

So, in my previous life, I used functions heavily, and they worked great.  For example, I had functions that would take a string of digits and convert it into specific characteristic values.  The company I worked for used “intelligent” catalog numbers for everything.  This is actually was a great way to implement variant configuration for the customer service group.  They typed in a string of digits, and the configurator figured out exactly what to populate, leaving only a handful of other values for the CSR to populate.  Now this is great.  The function needed to have an input (the catalog number) and bunch of outputs (each cstic that would be populated).  Now this is fine, until the first time you have to make an addition, say you add a new special option that drives a new characteristic.  Well, now you need to update the CU66 function interface, and also the SE37 ABAP function to bring in the new value and output the proper value.  It’s not the end of the world, but it can be a hassle.

Now, what I just finally figured out (yes, I know I can be slow) is that if you simply change the procedure to PFUNCTION vs Function, then you don’t really need any inputs.  the PFUNCTION statement populates the GLOBALS structure which contains the instance of the $SELF, $PARENT and $ROOT.  So now, you know the current level, the level directly above and the topmost level.  Using that instance number, you can plug into any number of CUPR functions that exist in standard SAP.  (CUPR_SET_VAL, CUPR_GET_VAL, etc.)  These functions allow you to extract the configuration using the instance #, and you don’t have to explicitly define every cstic you want to extract.

So, the real difference is PFUNCTION will send the instance automatically.  You can even have a PFUNCTION that has no parameters and you will have the full range of input and output, and you can set anything, including values at the parent level based on something in the lower level.  It really is pretty slick.  So, pfunction vs function, really is a big difference and clearly something I wish I understood a lot sooner in my career.  But like everything, live and learn and keep learning .

Thanks for reading, and thanks again Jer,

WordPress – Admin Login not working in Firefox or Chrome

Well, this one has been plaguing for a while now, and now that we are making a transition to Optimize Press in order to redo our website, I had to figure this one out, since Optimize Press has limitation in Internet Explorer.  So I was able to find some cludgy work arounds, but today I think I finally found the trick to our WordPress admin login not working in Firefox or Chrome.

Get into your WordPress files and find:  wp-config.php

You’ll need to edit this page and add a couple of simple lines.

Look for either something like this:

define('ABSPATH', dirname(__FILE__) . '/');

OR

/** Absolute path to the WordPress directory. */
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);

Add the following two lines.

define(‘WP_HOME’,’http://www.YOURSITE.com’);
define(‘WP_SITEURL’,’http://www.YOURSITE.com’);

suddenly everything started working for me.  Now, my new web guru (Mike Golden) can get back to work creating our new masterpieces.

Thanks for reading,

Variant Configuration – IPC Trace Functionality – COM_CFG_SUPPORT

My next couple of post will talk about how you can use the IPC Trace functionality.  There are several different ways you that you can trace the dependencies and constraints within the IPC, and today I’ll talk about the first one, COM_CFG_SUPPORT.

Tracing with the transaction COM_CFG_SUPPORT is always available and requires the least effort in the sense of installing any kind of component. However it has the drawbacks of an ugly configuration ui and have to do all steps manually.

The first step to Tracing a configuration session is to figure out what the kbid for the knowledgebase is which you want to test. In order to do so, go to table: COMM_CFGKB in SE16/SE16N.  Pick the most recent KBID that fits your KB and RTV you are tracing.  Next go to COM_CFG_SUPPORT.

blog01-01

Select “Engine Trace” and click on “Start Tool”.

blog01-02

Select the engine module you are interested in and click on activate trace. For a brief list of what these engine modules mean, please have a look at Table 1 “traceable engine modules”.

Then go to tab “Create Config”:

blog01-03

Enter the kbid (which we got from comm_scecfg) and the product id.

Click on Create Config.

This will bring up the initial trace:

blog01-04

You’ll see some of the initial trace lines before anything happens.

1  DDB  201  DDB initialized for knowledge base “X” (version 0001)
2 DDB  219  Instance : “$1(product: XXX)” Created as Root
3  DDB 204 Fact : “sf($1, Cstic_1, INV_P, true)”: Inserted by “Classification”
4  DDB 204 Fact : “sf($1, Cstic_1, NOINP_P, true)”: Inserted by “Classification”

etc…  You’ll quickly start to recognize little things like INV_P is invisible, NOINP is no input, if it’s set by classification or  inferred by the system.

Now let’s set a characteristic value and this will actually show how painful the process is. Go to tab “Configure”.

We need to specify language independent names for the characteristic as well as for the value. The instance ID will be 1 (root instance).  Cstic name will be language independent name, and value is the language independent value.  Pretty straight forward.

Click on OK to set this value and see the trace underneath updating:

Now, you’ll see the new trace lines underneath, so you can see exactly what behavior occurs when you change or set a particular value.

Now, one of the big things to remember is that this won’t help you see what happens during the initialization phase in the sales order.  You’ll still have to simulate that yourself, which could be difficult.

Thanks for reading,

 

 

Variant Configuration – IPC Class Items

In my latest project, I’m getting back into the IPC, and finding all things that don’t quite work the way I expect.  ha ha.  Today’s lesson for me has to to do with IPC Class items.  More specifically, using a class type item on your BOM in conjunction with a multiple value characteristic.

So, let me set the stage of what’s happening within my models.  We have two multiple value characteristics that get set with a bunch of keys.  Then we have multiple class type 200’s that use the same two characteristics to uniquely determine a material.  Pretty straightforward, and works great in ERP.  The problem comes when we moved to IPC.  As soon as we started configuring some test orders, we found that most of our class type 200’s were not resolving, more to the point, they weren’t getting the value.

SAP has OSS Note: 1564395 – Class node specialization with multi-valued characteristics.

The basics of the note state:  values of a multi-valued characteristic will be considered for class node specialization in IPC as follows:

Let {v1, .., vN} be the values assigned to the multi-valued characteristic at runtime and let D be the local domain of classification values maintained for a certain material M in the class node, then this material is considered as a possible (consistent) specialization iff all values v1,…, vN are contained in the set D.

Well, this doesn’t work for our purposes.  The multiple value characteristic contain values for many different materials, M, so specialization won’t occur.

In our case, we’re going to go down the path of a P-Function to handle passing the values explicitly to the class type 200’s.  Otherwise, we were looking at revamping our constraints in a significant way to attempt to pass the values directly to each class type 200.  And this is an option I haven’t even tested, so there’s no guarantee it would even work.  If anyone else has encountered something close to this, I’d love to hear your solution.

As always, thanks for reading,

Business – Keeping your Focus

Well, one of the things I recently learned is that JaveLLin Solutions has attempted to be all things to all people.  This seems like a great approach.  However, we are finally understanding that if we want our business to be successful, we must focus on our strengths.

If you’ve been to our website, I’m sure you noticed that we have a lot of products out there.  We have stuff for Service Management, Production Execution, Materials Management/Warehouse Management, and even Variant Configuration.  So, after some talk, Mike and I have agreed that our material master and variant configuration product lines will need to be shelved for a while.  They certainly won’t go away, and at some point we’ll have the time and resources to expand, but for right now, our niche of SM and PP is largely overlooked by our competitors, so we feel that this area is our best chance to find a home in the market.

It is a bit sad, because I have devoted time to these areas, and have a lot of great ideas, but like you’ve noticed in a lot of my posts, we are overwhelmed with things to do…  so the further we spread our focus the harder it will be to keep up with what we need to do.

So, just a word of advice that I’ve been told lately by some marketing professionals…  stay focused.  Don’t try to be everything to everyone.  The key is to find our specialty, and work the hell out of it.  When you get big enough, you can always expand back into those areas 🙂  But have no fear, I’ll still be blogging about VC and all the things I learn.  I just won’t be developing products in that area for a little while.  Good luck and thanks for reading.

 

Basis – Installing the Netweaver Gateway – Step 1

Well, I’m trying to move into the mobile world.  I recently had a meeting with our friend Paul at Lithium Labs.  He’s our app expert.  So he pretty much gave us the low down on what we need to do to get started.  While there are several different ways to get into the mobile app arena, the easiest method also fits best with our business model.  Using the Netweaver Gateway is the way to go.  In essence, it is a simple way to connect apps with your SAP system without any extra hardware, and just a simple installation (SAINT) .  Obviously, SAP has more complex and high end solutions based on all the technologies they have recently been acquiring, but Netweaver Gateway is our plan.

So, Paul said the best place to start is to get it installed.  Well, I got in installed and tried it on all of my systems.  Of course, my first piece of bad news.  I’m not running a support pack level high enough to install the gateway.  So it turns out, step one is to get the basics of my system up to SP 20 (at least for my 6.0 SR3 system).  There is a Gateway 2.0, but it requires a basis level of 7.02.  Even my EHP4 system is only running 7.01, so it seems that 1.9 is my way to do things.  I guess it fits really well with my philosophy of design in the lowest possible version so it’s always upward compatible.

So, round one goes to the gateway.  I have to get a bunch of support packs installed, starting as soon as I can get them all downloaded, I’ll attempt round two.

thanks for reading,