classification

Home / Posts tagged "classification"

Variant Configuration Performance Tuning

This lesson is timely because I’m dealing with this issue right now at my current client.  Their model uses class nodes in the bill of material VERY heavily, so we’ve been noticing awful performance in CU50.  SAP does provide some solutions for variant configuration performance, take a look at the following note to get some additional ideas:

Note 917987 – General performance in variant configuration

Now, we have done a few things in an attempt to improve the performance.  First, we were using class type 200 with a reference characteristic.  I learned, for class nodes this is actually a no no, unless you check a box in configuration to redundantly store the characteristic value.  Here’s what SAP’s help says about it:

Class Maintenance

Using Reference Characteristics Only

This constellation cannot access the database directly to read the assignment records. All classified objects are processed sequentially.

In order to change it, you must check that little box up top for redundant storage.  Now the drawback of this approach is twice as many table entries.  For that reason, we chose to move the characteristic to be NOT a reference cstic.  The only issue this causes is that value for material number (in our case) will not be populated automatically.  Not a huge deal.

Now, we changed all of that stuff, and still no change.  this was disappointing.  After some debugging, we (using transaction SE30 for performance tuning) we found that the issue was with table KSSK.  Surprise, Surprise, it holds the class connections.  So we handed it off to basis.  They began by running statistics on all of the tables listed in the above OSS note.  Still no help…  finally, we needed basis to reorganize the tables and indexes for KSSK & INOB.  This may sound like a lot of mumbo jumbo, but if you ask your basis person it will make sense to them =)

Short story is that sometimes you can get performance without changing your model.  Now I don’t regret the changes we did, they will still be beneficial, but don’t forget about the technical aspects.

As always, if you need further help in variant configuration, please press the contact us button above and let us know how we can help,

thanks for reading,

Mike

Variant Configuration – Delete Class Assignment

After yesterday’s post, I thought I’d throw this one in there too.  In your Development environment you may find that you need to delete class assignment of a class or another material inside of CL24N or CU42.  It could be you need a smaller class, or just accidentally linked a material that shouldn’t have been connected.  Why isn’t the issue.  You got yourself in a pickle, it’s dev, so you’re willing to live with the potential inconsistencies in order to get your model right.  After all, like we discussed yesterday, you absolutely, positively do NOT do this in production.  Then you use ECM or make a new material and replace it like any other engineering type change.  Ok… now that I have that out of the way, let’s get to the good stuff =)  You can use SE38 to put the breakpoint here straightway (it’s by far the fastest way).

Program: LCLFMF2D

Form: LOESCHEN

          if sysubrc is initial.
call function l_check_function
exporting
cucp_var_class_type       
allksskklart
cucp_root_object_key      
allksskobjek
cucp_root_object_table    
sobtab
cucp_datuv                
rmclfdatuv1
cucp_aennr                
rmclfaennr1
exceptions
deletion_allowed          
1
deletion_allowed_with_ecm 
2
others                    3.
case sysubrc.

 

Set sy-subrc = 1

Then execute the remainder of the code (F8).  That’s all there is to it 🙂

it’s scary that it could be that easy to delete class assignment, even though SAP transactions won’t let you do it =).

If you ever need more help in VC or SM, please use the contact us button above and let us know what we can do to help.

thanks for reading,

Mike

Variant Configuration – Deleting Class with Assignments

Just recently run into a fun little challenge, and my newest VC mentor pointed me in the right direction.  (Thanks Lawrence =) ).  In the dev system, you will often create models, do some testing, and then realize you did the wrong thing (sometimes a simple change, sometimes an epic failure.  ha ha ha).  If you reach the epic failure and need to perform deleting class that is assigned to some orders or materials, you can override the system.  This the little tidbit can help you get rid of stuff in your model that should no longer be there.

DISCLAIMER.  Do not do this in production.  This is an ugly way to make this happen, so it should only be done in development.  It will likely leave sales order line items/production orders in an inconsistent state.  So please use this technique as a last resort.

Go to transaction CL6M (delete class with assignment).

enter in the data you want to delete, but before pressing execute, go to the transaction box and enter /H then hit enter.  This will drop you into debug.  As an alternative, you can place these breakpoints using SE38.

Program: RMCLKDEL
Form: CLASS_ALLOCATION

find the line:
IF NOT VERWKZ IS INITIAL.

You will need to change the variable: verwkz =to initial.

NEXT:

Find the following code in the listed form:

Form: VERWENDUNG_KLASSE_KONF

* Verwendung in Konfiguration
CALL FUNCTION ‘CUCP_CONFIGURATIONS_EXIST’                 “051516
EXPORTING  CUCP_VAR_CLASS_TYPE   = KLART     “051516
CUCP_CLASS            = KLAH-CLASS”051516
CUCP_DATE             = DATUV     “051516
EXCEPTIONS USED_IN_CONFIGURATION = 1.        “051516
IF SY-SUBRC GT 0.                                         “051516

You will need to change the variable sy-subrc to 0 or initial

* ÄNDERUNG AUF DIREKZUGRIFF AUF ANWEISUNG DURCH DIE STÜCKLISTEN  3.1H
* Grund: tote Positionen
CALL FUNCTION ‘CLEX_BOM_CHECK_USAGE_CLASS_DIR’
EXPORTING
CLASS_NAME = KLAH-CLASS
CLASS_TYPE = KLART
EXCEPTIONS
NOT_USED   = 1
OTHERS     = 2.

*… Fehlernachricht ausgeben, falls Klasse verwendet wird.
CHECK SY-SUBRC NE 1.

Finally, change the variable sy-subrc = 1.

now you can execute (F8) the remainder of the program and your class will be deleted.  If you have open sales orders you wish to continue using/testing with, you should go in change mode and visit the configuration.  You may show an inconsistency depending on the class and it’s location in the structure.  Be sure to delete any inconsistencies and validate the cstics and values you still need in the configuration.

Once again, if you need any VC help, please use the contact form above and let us know how we can help,

Thanks for reading,

Mike