Personal Insights
DDIC-Objects that miss an enhancement-category β part 3 – fix it – to what?
You have joined me in finding those objects – if not you can read up here:
https://blogs.sap.com/2020/08/31/task-find-ddic-objects-that-miss-an-enhancement-category-part-1/
https://blogs.sap.com/2020/08/31/ddic-objects-that-miss-an-enhancement-category-part-2-use-cds-views/
Now let’s fix it!
There are 2 aspects to that:
What categories should I set
and
How should I do it.
On what to set it to:
I want my tables to
1. Have an enhancement category
2. Not break stuff because of that new enhancement category .
The lazy way would be to set it to “allow everything”:
– ” Can be enhanced (Deep)”
…but I would feel very bad using this as a default (I think most of the time, I would not expect those structures to be extended with a “deep component (string, reference, or table type)” (Taken from F1-help, which is pretty good/detailed! )
The other extrem would be to set it to “Cannot Be Enhanced” which most certainly would break stuff.
So I think I go for what I (and others) should have done before me (this is debatable (-> comments! π ) but that’s what guided me in my ABAP-career).
1. By default, set it to “Can be enhanced (character-like or numeric)”
2. If this is not possible or doesn’t make sense, choose something else -> the option that makes sense.
This is very generic, but I can give at least on example: There are BAPI-Structures, that should only contain characters. If you create (or append) one of those -> set the enhancement category to “character only”.
I’ll leave the “how” to the next part.
(Hint: I will not do it all manual by SE11 for every singel object.
Maybe I do get a hint an my question: https://answers.sap.com/questions/13129838/mass-maintenance-for-se11-setchange-enhancement-ca.html
If not (and probably even if), I have already looked into some (semi-)automation via SHDB.
Stay tuned! π
In my opinion that depends: Are you a software vendor or not?
If I remember it correctly this is only relevant when enhancing (.APPEND) structures or tables that are part of a namespace that you don't own. This is valid for the SAP namespace and for third party namespaces.
In your own namespace there is no need for an append. So this could always be set to "Cannot be enhanced".
SAP and third party software vendors need to specify this. If you are one of these I would set tables to "character-like and numeric". That blocks deeps structures but also blocks RAW and STRING fields. Letter should never be used in table fields in my opinion (other discussion). RAW can happen with GUIDs. SAP has no enhancement category for this. The only other option would be "allow all".
With structures it is more difficult. If they are or can be included in a table you mus not have deep structures. Restricting it to "character-like and numeric" would again prohibit GUIDs and STRINGs. In structures strings can appear way more often. The only default that fits them all is "allow all".
Maybe I would rather set a check at transport level that something must be specified here. This takes way longer to fill them all but that way the developers did think a bit more about the specific case and what is suitable there.