| icWindow | input | character | Window |
| icBusinessComponentCode | input | character | |
| icActivityCode | input | character | |
| icRoleName | input | character | Role for which the window is being customised (ignored when customising on system level) |
| icUserLogin | input | character | Login of user for which the window is being customised (ignored when not customising on user level) |
| iiDesignLayerType | input | integer | Layer Type = customisation level |
| ilIncludeLowerLevel | input | logical | include lower design levels (merged) |
| tControlPropertyForWindow | output | temp-table | current level of customisation |
| oiReturnStatus | output | integer | Return status of the method. |
empty temp-table tControlPropertyForWindow.
<M-16 run DataLoadByWindowActivity (input icWindow (icWindow),
input icBusinessComponentCode (icBusinessComponentCode),
input icActivityCode (icActivityCode),
input icRoleName (icRoleName),
input icUserLogin (icUserLogin),
input iiDesignLayerType (iiLayerType),
input ilIncludeLowerLevel (ilIncludeLowerLevels),
output oiReturnStatus (oiReturnStatus)) in BControlProperty>
if oiReturnStatus < 0
then return.
/* ================================================================= */
/* Copy data into output table, merged on customisation level */
/* ================================================================= */
for each tControlProperty by tControlProperty.ControlPropertyLayerType on error undo, throw:
if tControlProperty.ControlPropertyName = {&CONTROLPROPERTY-VIEWSDEFINITIONS}
then do:
/* special merge for views only */
/* For View, only one ControlProperty is returned, where the different levels are saved in the field */
/* tcControlPropertyValue with chr (2) */
find first tControlPropertyForWindow where
tControlPropertyForWindow.tcControlPropertyControl = tControlProperty.ControlPropertyControl and
tControlPropertyForWindow.tcControlPropertyName = tControlProperty.ControlPropertyName
no-error.
if available tControlPropertyForWindow
then do:
/* syntax = USER chr(2) ROLE chr(2) SYSTEM */
/* ControlPropertyLayerType = 1 --> USER */
/* ControlPropertyLayerType = 2 --> ROLE - should be one chr (2)*/
/* ControlPropertyLayerType = 3 --> SYSTEM - should be two chr (2) */
if tControlProperty.ControlPropertyLayerType = {&CONTROLPROPERTYLAYERTYPE-SYSTEM} and
num-entries (tControlPropertyForWindow.tcControlPropertyValue,chr(2)) = 2
THEN assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + chr(2).
else
if tControlProperty.ControlPropertyLayerType = {&CONTROLPROPERTYLAYERTYPE-SYSTEM} and
num-entries (tControlPropertyForWindow.tcControlPropertyValue,chr(2)) = 1
THEN assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + chr(2) + chr (2).
else
if tControlProperty.ControlPropertyLayerType = {&CONTROLPROPERTYLAYERTYPE-ROLE} and
num-entries (tControlPropertyForWindow.tcControlPropertyValue,chr(2)) = 1
THEN assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + chr(2).
If Not Can-find(First tControlPropertySegment Where
tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID)
Then Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue +
tControlProperty.ControlPropertyValue.
For Each tControlPropertySegment Where
tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID
By tControlPropertySegment.ControlPropertySegmentSeq
on error undo, throw:
Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue +
tControlPropertySegment.ControlPropertySegmentText.
End.
next.
end. /* if available tControlPropertyForWindow */
end. /* if tControlProperty.ControlPropertyName = {&CONTROLPROPERTY-VIEWSDEFINITIONS} */
if not can-find (first tControlPropertyForWindow where
tControlPropertyForWindow.tcControlPropertyControl = tControlProperty.ControlPropertyControl and
tControlPropertyForWindow.tcControlPropertyName = tControlProperty.ControlPropertyName)
then do:
create tControlPropertyForWindow.
assign tControlPropertyForWindow.tcControlPropertyAssemblyName = tControlProperty.ControlPropertyAssemblName
tControlPropertyForWindow.tcControlPropertyAssemblyType = tControlProperty.ControlPropertyAssemblType
tControlPropertyForWindow.tcControlPropertyControl = tControlProperty.ControlPropertyControl
tControlPropertyForWindow.tcControlPropertyName = tControlProperty.ControlPropertyName
tControlPropertyForWindow.tcControlPropertyParent = tControlProperty.ControlPropertyParent
/*tControlPropertyForWindow.tcControlPropertyValue = tControlProperty.ControlPropertyValue*/
tControlPropertyForWindow.tiControlPropertyTab = tControlProperty.ControlPropertyTab
tControlPropertyForWindow.tlControlPropertyChildChanged = tControlProperty.ControlPropertyChildChange
tControlPropertyForWindow.tiControlPropertyLayerType = tControlProperty.ControlPropertyLayerType.
If Not Can-find(First tControlPropertySegment Where
tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID)
Then Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue +
tControlProperty.ControlPropertyValue.
For Each tControlPropertySegment Where
tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID
By tControlPropertySegment.ControlPropertySegmentSeq
on error undo, throw:
Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue +
tControlPropertySegment.ControlPropertySegmentText.
End.
end.
end.