How To Set Flexfield To Be Required by Form Personalization
How To Set Flexfield To Be Required by Form Personalization
Oracle Teleservice
SYMPTOMS
Trying to make a descriptive flexfield segment required by using personalizations to modify a form item propery (required=TRUE) but the field does not become required. Instead, when applying the personalization, the form errors with ERROR: FRM-41014: Cannot set attribute of null canvas item TASKS.ATTRIBUTE4 -- Steps To Reproduce: Create one or more flexfields for the service request form CSXSRISR: Application: Service Title: Additional Information for Agents Switch to the service request form. Click on Help -> Diagnostics -> Custom Code -> Personalize Create a new entry for level Form and enable it. Condition: Trigger Event: WHEN-NEW-ITEM-INSTANCE Trigger Object: INCIDENT_TRACKING.STATUS_CODE Condition: :INCIDENT_TRACKING.STATUS_CODE LIKE '4 %' (for this example we have status code 1, 2, 3, 4, 5, 6,...) Actions: New entry for type Property Object Type: Item Target Object: INCIDENT_TRACKING.INCIDENT_ATTRIBUTE_4 Prpoerty Name: REQUIRED Value: FALSE Change the status to 4 and check the flexfield once more. Now it should be required but it isn't
CAUSE
This behaviour is described in Note 372034.1: PAXPREPR - Form Personalization: FRM-41014: Cannot Set Attribute Of Null Canvas Item You cannot display an item which is not on a canvas (thus, individual flexfield segments cannot be displayed) The error is raised if the item to be customized does not belong to any canvas in the base form, i.e. these fields can be accessed only in the Application from the FND Flexfield canvases (user has to click on the Flexfield and another window pops up to enter the details.).
Junaid Iftikhar Ahmed | Sr.Oracle Solution Architect & PM| BCS-SE, MBA-FIN, SCM-EXP
Individual flexfield segments cannot be displayed/customized via Form Customizations functionality. Enhancement Request 6964879 (NEED PERSONALIZATIONS TO BE POSSIBLE TO CHANGE PROPRTIES OF DFF FIELDS) has been logged to request this functionality. The case in that Note is the same as in this SR (just for a different Form / DFF combination
SOLUTION
-- To implement the solution, please execute the following steps:: Modify the flexfield setup by adding context values for the status_code as reference field. For the statuses that should have a value for the dff segment, make the segment required. For the statuses that do not need this segment to be populated, define it in the same way, but do not make it required.
1. set up the context field in the Additional Information for Agents DFF to look at the STATUS_CODE field. If the profile Flexfield: Validate on server is set to NO, then also check the 'Synchronize with Reference Field checkbox 2. Then define context values. You'll have to set up a context value for each of the possible status codes. 3. For the status codes that require additional information, set up the segments as 'required'. 4. For the other codes, set up the segments in the same way (use the same columns) but do not mark them as required. To do that, click on the Open button in the segment definition and deselect the required checkbox. 5. Compile the flexfield. 6. Retest. It should be enough to change the status in the SR to see the change in the DFF. You do not need to save first. As an alternative to basing the whole DFF structure on the status field you could use a 'Special' value set to enforce this restriction.
Junaid Iftikhar Ahmed | Sr.Oracle Solution Architect & PM| BCS-SE, MBA-FIN, SCM-EXP