Mass Maintenance in SAP Project Systems (Part 2): CNMASSSTATUS

Microsoft excel and microsoft powerpoint.
Blog Series:
Mass Maintenance in SAP Project Systems (Part 1): CNMASS
Mass Maintenance in SAP Project Systems (Part 2): CNMASSSTATUS
Mass Maintenance in SAP Project Systems (Part 3): CNMASSCREATE

In the previous blog, I quickly went over how to use CNMASS. Most people should already know about it as far as I’m concerned and since it’s based on MASS, it’s not hard to figure out.

Like I said in the opening of that blog, it’s the SAP Development Team and their continued delivery of small solutions in PS that has gotten my attention.  Based on the success of CNMASS, they released a new program fixes one of the holes in it.  It’s not possible to change either system or user status with CNMASS so they released a new program that specifically handles that requirement.

You can read more about in SAP Note 2330142.


What’s the Need?

There are many use cases where you may want to change the system or user status over a wide range of projects.  Some examples that I’ve seen are:

  • Lock all projects from posting during settlement.
  • Mass close or TECO projects at month-end.
  • Mass change of any user status. This is particularly true of the un-numbered ones that act as flags on a project.  These tend to be turned ON and OFF at various times during the project lifecycle. 


How Does it Work?

Let’s take a look at the program.


Let me zero in on this section-by-section.  First we have the project selection at the top of the screen.  This should look familiar.  The reason is that it uses the same PSJ logical database as most of the delivered PS reports.


The next section is where you get to specify the desired system or user status value that you want to work with.  At the bottom are the processing options where you can either Set or Reset the status value that is specified above it.  These work in the same way as they do at the dialog CJ20N transaction.  Here are some quick notes:

  • It’s possible to specify both a change in system and user status at the same time.  While it’s possible to do this, I have found that it can be problematic.  The reason is that if you get an error on the system status change, then the user status change won’t be processed.  Both would have to be successful in order for the change to be made.  Also, given the inherent risk of using any mass transaction, I find that it’s safer to make one change at a time.
  • However, you can only Set or Reset in a single execution of the program.  i.e., you can’t Set a system status and Reset a user status value.
  • If you initially click on the dropdown for the user status values, it’ll be blank.  You must first enter in the user status profile, press [Enter], and then you’ll be able to view the list of available user status values.


If you’re setting the system status, only the following values are available.  The most prominent ones that I use are CLSD, TECO, AALK, and LKD.  I supppose in larger scenarios it might be useful to mass release projects but I haven’t had to deal with that requirement in a way that didn’t require other factors that would preclude a mass treatment.


The last section has two important settings:

  • [Show Screen For Selection] – If this setting is active than you’ll get a preliminary screen that shows the list of project objects you selected along with their current status values.  I prefer to leave this active.
  • [Display Errors Only] — If this is active, then the final output will only include error messages.  It will essentially filter out all of the success messages.  In general, I prefer to activate this while I’m testing a series of changes.  The reason is because if I have a very large list of objects that I’m working with, I’m likely to miss/ignore a random error as I scroll down the result screen.  It’s possible to sort or filter the final status change traffic light but it’s just easier to interpret a blank output as a successfully processed list, or a result screen with just a few red messages as a few errors out of 1,000+ objects.  However, for a final update run and if an audit log/screenshot was required, I’d probably leave this inactive.


Example Project

In this case, I want to set a user status value called U07.  In this system, the U07 status locks all actual postings on the WBS. 


After pressing [Execute], the next screen shows the selected project objects along with their current system and user status values.  I can confirm that U07 is not currently active on any of the WBS shown below and that the right project and WBS elements were selected.


At this same screen, you can select the individual objects (rows) that you want to update.  In this case, I’m going to select all and then press [Execute].


Finally, the final results screen is displayed.  In this case, the user status U07 was set for all of the WBS but I got an error on the project definition.  This is a good example because there isn’t a user status profile on the project definition so it was never going to be set anyways.  Also, this was just a test run so I’ll have to backup and rexecute it in update mode (but the screens all look the same).


What’s Next?

I’ll cover how you can mass create projects using another item delivered by SAP’s CEI program.