Skip to Content
1

What options exist to quickly clean-up inactive objects?

Jul 13, 2017 at 04:16 PM

795

avatar image

Hi Folks!

We are currently executing a system upgrade from NW 7.4 and EHP7 to NW 7.5 and EHP8 in a sandbox system. We have run into issues due to many inactive objects (+/- 200) which need to be cleaned up.

We already tried activating impacted objects individually via SE80 and en masse via a Z-program calling FM RS_WORKING_OBJECTS_ACTIVATE but are not having much success. There are inactive objects for many different object types (TABL, REPS, CINC, CUAD to name just a few) and trying to activate them individually runs into various issues:

  • some don't even exist
  • we have inactive text-elements for no longer existing programs
  • the source system for some objects is different (this might be due to previous system copies)
  • many objects are "old" and the developer who changed it last is long gone
  • trying to activate an object creates an additional entry in table DWINACTIV instead of getting rid of some (most likely due to a different user trying to activate the object)
  • for some activations, transport-requests are required
  • some DDIC-objects cannot be activated due to inconistencies like missing data elements

Trying to activate them via FM RS_WORKING_OBJECTS_ACTIVATE doesn't work as expected either (even though several SCN-threads pointed towards this FM as a solution). Even when it finishes with "Object activated" it - in most cases - the objects don't vanish from the SE80-list of inactive objects and also remain in table DWINACTIV or even insert additional entries for my user-ID.

This is how the FM currently gets called - not sure if the parameters are all needed but I already tried with different combinations and none was successful (the parameter p_check for CHECK_ONLY can be provided via the selection-screen):

  CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
    EXPORTING
      suppress_syntax_check  = 'X'
      suppress_corr_insert   = 'X'
      activate_ddic_objects  = 'X'
      SUPPRESS_ENQUEUE       = 'X'
      check_only             = p_check
*     WITH_POPUP             = ' '
*     SUPPRESS_GENERATION    =
*     P_WB_MANAGER           =
*     SUPPRESS_INSERT        =
*     CWB_MODE               =
*     DISPLAY_SYSID          = ' '
*     UI_DECOUPLED           =
*     MESSAGE_CONTAINER      =
*     PHASED_ACTIVATION      =
*     CONTEXT                =
* IMPORTING
*     P_NO_FORCE_ACTIVATION  =
*     P_CHECKLIST            =
    TABLES
      objects                = gt_objects
    EXCEPTIONS
      excecution_error       = 1
      cancelled              = 2
      insert_into_corr_error = 3
      OTHERS                 = 4.

We are looking for two types of solutions:

  1. If push comes to shove, a quick and dirty one to be able to proceed with the upgrade of the sandbox, even if it means deleting some objects if they cannot be activated "easily"
  2. A robust and save option we can implement for the productive development systems, ideally via a custom-program calling a FM or BAPI to tackle or activate multiple objects in one go.

Does anybody have some ideas what we could do and try? Are there other FMs, BAPIs, transactions or reports available we could use or will the objects need to be tackled individually as there just is no "one size fits all" option?

Thanks for any pointers you have!

Cheers

Baerbel

P.S.: Yes, we know that this is quite a mess!

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Matthew Billingham
Jul 13, 2017 at 04:29 PM
3

There is a transaction - don't remember what it is, but it begins with S and has 4 characters... - that finds objects that don't exist in TADIR and entries in TADIR where there is no object and cleans them up. It might help,

Frankly, a sandbox? Copy development (better, production!) over it and upgrade that.

Show 3 Share
10 |10000 characters needed characters left characters exceeded

Thanks, Matt!

When I mentioned "mess", I actually meant it ...

The sandbox is a recent copy of one of the DEV-systems created to perform a run-through of the upgrade process. Having said that, this issue with the incactive objects will rear its ugly head again when the time comes to perform the upgrade on that (and some other) systems. So, we'll need to figure out how to deal with this best sooner rather than later.

0

You could replace your dev and sandpit with a cleaner system. There are ways of saving the version management data, which I think is the only critical thing.

0

Replacing the systems is unfortunately not an option. We have to find a means to activate the incactive objects or to dispose of them in another way. For the sandbox we are open to quick & dirty options to get the upgrade moving forward, for the actual dev-systems we need a workable solution (or multiple solutions dependend on object types and/or current state of the various objects).

0