Changing the Value Set of an Existing Flexfield Segment
In general, once you have set up and begun to use a flexfield, you should never change anything about its structure or its value sets (other than defining, enabling, and disabling values, shorthand aliases, and cross-validation and security rules). In particular, once you have any rules or data, you should avoid changing the number or arrangement of your segments, and you should avoid changing the value set that a segment points to. Even changing cross-validation rules or flexfield security rules can cause inconsistencies with existing data.
Warning: Changing your flexfield definition once you have used it to acquire data can cause serious inconsistencies with existing data.
This section does not include all possible ways you could change your value sets, nor does it contain complete information on all the data changes you might need to do if you were to make such changes. Since flexfields data is used throughout the Oracle Applications, you should carefully consider what forms, tables, and entities such changes might affect. Because of the risk of damaging the integrity of your existing data, you should never change Oracle Applications data using SQL*Plus.
In general, when you change your segment to use a different value set than it used before, you need to be careful not to invalidate your existing flexfield data. Before you make such a change you should back up all of your existing data, including Oracle Application Object Library data, before attempting any value set changes.
Oracle Applications prevents you from inadvertently invalidating your flexfield value set data by preventing you from changing the validation type of an existing value set. However, sometimes your business needs change unforeseeably, and you may need to change the validation type of your value set by defining a new value set and attaching it to your flexfield segment in place of your old value set. Whether you can change your value set depends on your value set's current type and the type you want to change to. See the following lists to determine if you can make such changes to your flexfield.
Oracle Applications also prevents you from inadvertently invalidating your flexfield value set data by preventing you from deleting an existing value set under some conditions. If you define and save a value set and then immediately re-query it, you can delete it. However, once you use your value set in any of the following ways, you cannot delete your value set:
- assign it to a key or descriptive flexfield segment
- assign one or more values to it (even if it is not assigned to a segment)
- assign a security rule to it (through the segment to which your value set is attached)
Changing to a Non-validating ("None") Value Set
When you replace an old value set with a new non-validating ("None" type) value set, these types of changes do not cause a problem with existing flexfield data so long as the format conditions are not violated (character, number, date, alphabetic characters allowed, uppercase only, and so on). Note that the values in the new value set do not have descriptions (meanings) at all, and that any value is now valid:
You may need to convert any existing application data that uses value descriptions, since you will no longer have descriptions or segment qualifiers for your segment values.
- Independent to None (do not make this change if you have an associated dependent value set or if you need segment qualifier information for those values)
Changing from a None Value Set to Independent or Table Value Sets
When you replace an old value set with a new value set, you can make these types of changes as long as you ensure that your new value set contains every single value that you ever used for that segment and that is now in the combinations table as parts of your code combinations. If you are missing any values that had been in the original value set, your users will get error messages upon querying up any old records whose values are now missing.
Changing Between Independent and Table Value Sets
You can make these types of changes as long as you ensure that the new value set contains every single value that the old value set contained. If you are missing any values that had been in the original value set, your users will get error messages upon querying up old code combinations whose values are now missing.
Changes You Should Never Make
You should never make these types of changes (old value set to new value set) because you will corrupt your existing key flexfield combinations data:
Changing the Maximum Size of Your Value Set
Oracle Applications prevents you from invalidating your existing flexfields data by preventing you from decreasing the maximum size of an existing value set. You should never attach a new value set to your segment where the maximum size of the new value set is smaller than the maximum size of the old value set. You will cause data corruption because your existing segment values will be truncated.
In general, increasing the maximum size of an existing value set (or replacing your value set with a bigger one instead) does not cause any problem with your existing flexfields data so long as your new maximum size is still small enough to fit in the underlying flexfield table's segment columns. However, you should never change to a value set with a larger (or smaller) maximum size if your value set is Right-justify Zero-fill, since 001 is not the same as 0000001, and all of your existing values would become invalid. Oracle Applications products prevent you from invalidating your existing flexfields data by preventing you from changing the maximum size of an existing value set at all if the value set is Right-justify Zero-fill.
Planning Values and Value Sets
Decide What Your User Needs
Choosing a Validation Type for Your Value Set