project QadFinancials > class BFRWColumnGroup > method DataLoadByInput

Description

This method loads database records corresponding to input values (records found in the t_s*** tables).
When nothing found in the database, a new record should be initialised.
Input values should also be updated with :
- identity fields (override input values)
- tc_Rowid / tc_ParentRowid / tc_Status

Annotation

This template can be used to implement the code for this method.

* Replace [MainTableName] with the name of the main table in the class dataset (no prefixes).
* This template assumes that the main table has an identity field, and this field is the only field of the primary index of the table. Replace [PrimaryKeyFieldName] with the name of this field.
* This template assumes that the table has one logical alternate key (a key that is visible and editable to end-users) with one field. Replace [LogicalKeyFieldName] with the name of this field. If the logical key contains more than one field, repeat the code with this tag for every field in the key.
* The run statement following [METHOD CALL] should not be copied literally, but inserted as a method call (run the method in your own component).




for each t_s[MainTableName] by rowid(t_s[MainTableName]) on error undo, throw:

/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = "for each [MainTableName] where [MainTableName].[LogicalKeyFieldName] = '":U + t_s[MainTableName].[LogicalKeyFieldName] + "'":U.
[METHOD CALL]
run DataLoad
(input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus))
if viFcReturnSuper >= 0
then do:
/* DataLoad succeeded, no no-error needed */
find first t[MainTableName] where t[MainTableName].[LogicalKeyFieldName] = t_s[MainTableName].[LogicalKeyFieldName].
if t[MainTableName].tc_Status <> ""
then do:
[METHOD CALL]
run SetMessage
(input [duplicate key error] (icMessage),
input t_s[MainTableName].[LogicalKeyFieldName] (icArguments),
input 't[MainTableName].[LogicalKeyFieldName]':U (icFieldName),
input t_s[MainTableName].[LogicalKeyFieldName] (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_s[MainTableName].tc_Rowid (icRowid),
input 'ERR-xyz':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus))
assign oiReturnStatus = -1.
return.
end.
end.
end.

/* ================================================================= */
/* When in delete mode, ignore input data. */
/* When object not found, do not return an error. */
/* ================================================================= */
if vcActivityCode = "Delete":U
then do:
if viFcReturnSuper = -4
then delete t_s[MainTableName].
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.

/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
[METHOD CALL]
run SetRowidConvert
(input t_s[MainTableName].tc_Rowid (icOldRowid),
input t[MainTableName].tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus))

/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_s[MainTableName].tc_Rowid = t[MainTableName].tc_Rowid
t_s[MainTableName].tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(t[MainTableName].[PrimaryKeyFieldName]).
end.

next.
end.

if vcActivityCode = "Create":U
or viFcReturnSuper = -4
then do:
/* ================================================================= */
/* When object not found and in modify only mode, return an error. */
/* ================================================================= */
if vcActivityCode = "Modify":U
then do:
[METHOD CALL]
run SetMessage
(input #T'Object with key $1 does not exist.':100T# (icMessage),
input t_s[MainTableName].[LogicalKeyFieldName] (icArguments),
input 't[MainTableName].[LogicalKeyFieldName]':U (icFieldName),
input t_s[MainTableName].[LogicalKeyFieldName] (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_s[MainTableName].tc_Rowid (icRowid),
input 'ERR-xyz':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus))
assign oiReturnStatus = -1.
return.
end.

/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
[METHOD CALL]
run AddDetailLine
(input '[MainTableName]':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus))

/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_s[MainTableName].tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_s[MainTableName].tc_Status = "C":U
t[MainTableName].tc_Status = "C":U.
end.

if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.

/* insert code for subtables here */

/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
[METHOD CALL]
run SetRowidConvert
(input t_s[MainTableName].tc_Rowid (icOldRowid),
input t[MainTableName].tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus))

/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_s[MainTableName].[PrimaryKeyFieldName] = t[MainTableName].[PrimaryKeyFieldName]

/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_s[MainTableName].tc_Rowid = t[MainTableName].tc_Rowid
t_s[MainTableName].tc_ParentRowid = ""

opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(t[MainTableName].[PrimaryKeyFieldName]).
end.






If the class dataset contains more than one table, insert this code for every additional table.

/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each t[ChildTableName] where
t[ChildTableName].tc_ParentRowid = t[ParentTableName].tc_Rowid:
assign t[ChildTableName].tc_Status = "D":U.
end.

/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_s[ChildTableName] where
t_s[ChildTableName].tc_ParentRowid = t_s[ParentTableName].tc_Rowid
on error undo, throw:

find first t[ChildTableName] where
t[ChildTableName].tc_ParentRowid = t[ParentTableName].tc_Rowid and
t[ChildTableName].[LogicalKeyFieldName] = t_s[ChildTableName].[LogicalKeyFieldName] no-error.
if available t[ChildTableName]
then if t[ChildTableName].tc_Status = "D":U
then assign t_s[ChildTableName].tc_Status = "C":U
t[ChildTableName].tc_Status = "C":U.
else do:
[METHOD CALL]
run SetMessage
(input [duplicate key error] (icMessage),
input t_s[ChildTableName].[LogicalKeyFieldName] (icArguments),
input 't[ChildTableName].[LogicalKeyFieldName]':U (icFieldName),
input t_s[ChildTableName].[LogicalKeyFieldName] (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_s[ChildTableName].tc_Rowid (icRowid),
input 'ERR-xyz':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus))
assign oiReturnStatus = -1.
return.
end.
else do:
[METHOD CALL]
run AddDetailLine (input '[ChildTableName]':U (icTable),
input t[ParentTableName].tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus))
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign t_s[ChildTableName].tc_Status = "N":U
t[ChildTableName].[LogicalKeyFieldName] = t_s[ChildTableName].[LogicalKeyFieldName].
end.

/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
[METHOD CALL]
run SetRowidConvert
(input t_s[ChildTableName].tc_Rowid (icOldRowid),
input t[ChildTableName].tc_Rowid (icNewRowid),
output viFcReturnSuper (oiReturnStatus))

/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_s[ChildTableName].[ChildPrimaryKeyFieldName] = t[ChildTableName].[ChildPrimaryKeyFieldName]

/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_s[ChildTableName].[ParentPrimaryKeyFieldName] = t[ChildTableName].[ParentPrimaryKeyFieldName]
t_s[ChildTableName].tc_Rowid = t[ChildTableName].tc_Rowid
t_s[ChildTableName].tc_ParentRowid = t[ParentTableName].tc_Rowid.
end.

PreCondition

The code of this method must always be overridden, not extended.


Parameters


opPrimeKeyoutputlongcharPrimary Key field value of loaded record(s).
Keys are chr(4) separated.
Key fields are chr(2) separated.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program2/bfrwcolumngroup.p)

if oiReturnStatus = 0
then oiReturnStatus = -98.

PROCESSBLOCK:
for each t_sFRWCol:

    /* ================================================================= */
    /* Lookup object by logical key                                      */
    /* When in create mode, skip lookup.                                 */
    /* ================================================================= */
    if vcActivityCode <> "Create":U
    then do:
        vcFreeform = "for each FRWCol where FRWCol.FRWColCode = '":U + t_sFRWCol.FRWColCode + "'":U.
        <M-68 run DataLoad
           (input  '' (icRowids), 
            input  '' (icPkeys), 
            input  '' (icObjectIds), 
            input  vcFreeform (icFreeform), 
            input  yes (ilKeepPrevious), 
            output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>

        if viFcReturnSuper >= 0
        then find first tFRWCol where tFRWCol.FRWColCode = t_sFRWCol.FRWColCode no-error.
    end.

    /* ================================================================= */
    /* When in delete mode, ignore input data.                           */
    /* When object not found, do not return an error.                    */
    /* ================================================================= */
    if vcActivityCode = "Delete":U
    then do:
        if viFcReturnSuper = -4
        then delete t_sFRWCol.
        else do:
            if viFcReturnSuper <> 0
            then oiReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0
            then return.
    
            /* ================================================================= */
            /* Update input to allow correct matching                            */
            /* ================================================================= */
            assign t_sFRWCol.tc_Rowid  = tFRWCol.tc_Rowid
                   t_sFRWCol.tc_ParentRowid = ""
                   opPrimeKey   = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
                                + string(tFRWCol.FRWCol_ID).
        end.

        next.
    end.

    if vcActivityCode = "Create":U
    or viFcReturnSuper = -4
    then do:
        /* ================================================================= */
        /* When object not found and in modify only mode, return an error.   */
        /* ================================================================= */
        if vcActivityCode = "Modify":U
        then do:
            assign
                vcMessage = trim(#T-61'Object with key $1 does not exist.':100(48021)T-61#).
            <M-72 run SetMessage
               (input  vcMessage (icMessage), 
                input  t_sFRWCol.FRWColCode (icArguments), 
                input  'tFRWCol.FRWColCode':U (icFieldName), 
                input  t_sFRWCol.FRWColCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sFRWCol.tc_Rowid (icRowid), 
                input  'qadfin-304804':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>

            assign oiReturnStatus = -1.
            return.
        end.

        /* ================================================================= */
        /* When object not found or in create mode, create it.               */
        /* ================================================================= */
        <M-16 run AddDetailLine
           (input  'FRWCol':U (icTable), 
            input  '' (icParentRowid), 
            output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>

        buffer-copy t_sFRWCol 
             except t_sFRWCol.FRWCol_ID
                    t_sFRWCol.tc_Rowid
                    t_sFRWCol.tc_Status
        to tFRWCol.

        /* ================================================================= */
        /* Update input to allow correct matching                            */
        /* ================================================================= */
        assign t_sFRWCol.tc_Status = "N":U.
    end.
    else do:
        /* ================================================================= */
        /* Update input to allow correct matching                            */
        /* ================================================================= */
        assign t_sFRWCol.tc_Status = "C":U.
    end.

    if viFcReturnSuper <> 0
    then oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0
    then return.

    /* ================================================================= */
    /* override value for identity fields in input                       */
    /* ================================================================= */
    assign t_sFRWCol.FRWCol_ID = tFRWCol.FRWCol_ID.

    /* insert code for subtables here */
    /* ================================================================= */
    /* Delete existing detail                                            */
    /* ================================================================= */
    for each tFRWColDet where
             tFRWColDet.tc_ParentRowid = tFRWCol.tc_Rowid:

        for each tFRWColDetComp where
             tFRWColDetComp.tc_ParentRowid = tFRWColDet.tc_Rowid:
            assign tFRWColDetComp.tc_Status = "D":U.
        end.

        assign tFRWColDet.tc_Status = "D":U.
    end.

    /* ================================================================= */
    /* Update / add detail                                               */
    /* ================================================================= */
    for each t_sFRWColDet where
             t_sFRWColDet.tc_ParentRowid = t_sFRWCol.tc_Rowid and
             t_sFRWColDet.tc_Status     <> "D":U:
        
        assign t_sFRWColDet.FRWCol_ID = t_sFRWCol.FRWCol_ID.

        find first tFRWColDet where
                   tFRWColDet.tc_ParentRowid    = tFRWCol.tc_Rowid and
                   tFRWColDet.FRWCol_ID         = t_sFRWColDet.FRWCol_ID and
                   tFRWColDet.FRWColDetSeq      = t_sFRWColDet.FRWColDetSeq no-error.
        if available tFRWColDet
        then assign t_sFRWColDet.tc_Status = "C":U.
        else do:
            <M-30 run AddDetailLine
               (input  'FRWColDet':U (icTable), 
                input  tFRWCol.tc_Rowid (icParentRowid), 
                output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>
            if viFcReturnSuper <> 0
            then oiReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0
            then return.
            assign t_sFRWColDet.tc_Status = "N":U.
        end.

        for each t_sFRWColDetComp where
                 t_sFRWColDetComp.tc_ParentRowid = t_sFRWColDet.tc_Rowid and
                 t_sFRWColDetComp.tc_Status      <> "D":U:

            find first tFRWColDetComp where
                       tFRWColDetComp.tc_ParentRowid    = tFRWColDet.tc_Rowid and
                       tFRWColDetComp.FRWColDet_ID      = t_sFRWColDetComp.FRWColDet_ID and
                       tFRWColDetComp.FRWColDetCompSeq  = t_sFRWColDetComp.FRWColDetCompSeq no-error.
            if available tFRWColDetComp
            then assign t_sFRWColDetComp.tc_Status = "C":U.
            else do:
                <M-40 run AddDetailLine
                   (input  'FRWColDetComp':U (icTable), 
                    input  tFRWColDet.tc_Rowid (icParentRowid), 
                    output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>
                if viFcReturnSuper <> 0
                then oiReturnStatus = viFcReturnSuper.
                if viFcReturnSuper < 0
                then return.
                assign t_sFRWColDetComp.tc_Status = "N":U.
            end.
            /* ================================================================= */
            /* override value for identity fields in input                       */
            /* ================================================================= */
            assign t_sFRWColDetComp.FRWColDetComp_ID = tFRWColDetComp.FRWColDetComp_ID.
    
            /* ================================================================= */
            /* Update input to allow correct matching                            */
            /* ================================================================= */
            buffer-copy t_sFRWColDetComp 
                 except t_sFRWColDetComp.FRWColDetComp_ID
                        t_sFRWColDetComp.FRWColDet_ID
                        t_sFRWColDetComp.FRWCol_ID
                        t_sFRWColDetComp.tc_Rowid
                        t_sFRWColDetComp.tc_Status
                        t_sFRWColDetComp.tc_ParentRowid
            to tFRWColDetComp.

            <M-85 run SetRowidConvert
               (input  t_sFRWColDetComp.tc_Rowid (icOldRowid), 
                input  tFRWColDetComp.tc_Rowid (icNewRowid), 
                output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>
            assign t_sFRWColDetComp.FRWColDet_ID     = tFRWColDetComp.FRWColDet_ID
                   t_sFRWColDetComp.FRWCol_ID        = tFRWColDet.FRWCol_ID
                   t_sFRWColDetComp.tc_Rowid         = tFRWColDetComp.tc_Rowid
                   t_sFRWColDetComp.tc_ParentRowid   = tFRWColDetComp.tc_ParentRowid.
            
            /* FRW Chart Code and Analysis Code */
            /* From */
            if t_sFRWCol.tcFRWChartCode <> '':U
            then do:
                if t_sFRWColDetComp.tcFRWAnCodeCode <> ? and
                   t_sFRWColDetComp.tcFRWAnCodeCode <> '':U
                then do:
                    <Q-35 run FRWAnCodePrim1 (all) (Read) (NoCache)
                       (input ?, (FRWAnCode_ID)
                        input t_sFRWColDetComp.tcFRWAnCodeCode, (FRWAnCodeCode)
                        input t_sFRWCol.tcFRWChartCode, (ChartCode)
                        output dataset tqFRWAnCodePrim1) in BFRWAnalysisCode>
                    find first tqFRWAnCodePrim1 where 
                        tqFRWAnCodePrim1.tcFRWAnCodeCode = t_sFRWColDetComp.tcFRWAnCodeCode and
                        tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode = t_sFRWCol.tcFRWChartCode no-error.
                    if available tqFRWAnCodePrim1
                    then assign t_sFRWColDetComp.FromRangeFRWAnCode_ID = tqFRWAnCodePrim1.tiFRWAnCode_ID
                                t_sFRWColDetComp.tcFRWAnCodeFRWChartCode = tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode.
                end. /* if t_sFRWColDetComp.tcFRWAnCodeCode <> '':U */
                
                /* To */
                if t_sFRWColDetComp.tcFRWAnCodeCode1 <> ? and
                   t_sFRWColDetComp.tcFRWAnCodeCode1 <> '':U
                then do:
                    <Q-91 run FRWAnCodePrim1 (all) (Read) (NoCache)
                       (input ?, (FRWAnCode_ID)
                        input t_sFRWColDetComp.tcFRWAnCodeCode1, (FRWAnCodeCode)
                        input t_sFRWCol.tcFRWChartCode, (ChartCode)
                        output dataset tqFRWAnCodePrim1) in BFRWAnalysisCode>
                    find first tqFRWAnCodePrim1 where 
                        tqFRWAnCodePrim1.tcFRWAnCodeCode = t_sFRWColDetComp.tcFRWAnCodeCode1 and
                        tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode = t_sFRWCol.tcFRWChartCode no-error.
                    if available tqFRWAnCodePrim1
                    then assign t_sFRWColDetComp.ToRangeFRWAnCode_ID = tqFRWAnCodePrim1.tiFRWAnCode_ID
                                t_sFRWColDetComp.tcFRWAnCodeFRWChartCode1 = tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode.
                end. /* if t_sFRWColDetComp.tcFRWAnCodeCode1 <> '':U */

                /* Range */
                if t_sFRWColDetComp.tcFRWAnCodeCode2 <> ? and
                   t_sFRWColDetComp.tcFRWAnCodeCode2 <> '':U
                then do:
                    <Q-94 run FRWAnCodePrim1 (all) (Read) (NoCache)
                       (input ?, (FRWAnCode_ID)
                        input t_sFRWColDetComp.tcFRWAnCodeCode2, (FRWAnCodeCode)
                        input t_sFRWCol.tcFRWChartCode, (ChartCode)
                        output dataset tqFRWAnCodePrim1) in BFRWAnalysisCode>
                    find first tqFRWAnCodePrim1 where 
                        tqFRWAnCodePrim1.tcFRWAnCodeCode = t_sFRWColDetComp.tcFRWAnCodeCode2 and
                        tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode = t_sFRWCol.tcFRWChartCode no-error.
                    if available tqFRWAnCodePrim1
                    then assign t_sFRWColDetComp.ToRangeFRWAnCode_ID = tqFRWAnCodePrim1.tiFRWAnCode_ID
                                t_sFRWColDetComp.tcFRWAnCodeFRWChartCode2 = tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode.
                end. /* if t_sFRWColDetComp.tcFRWAnCodeCode2 <> '':U */
            end. /* if t_sFRWCol.tcFRWChartCode <> '':U */
        end.  /* for each t_sFRWColDetComp */

        /* ================================================================= */
        /* override value for identity fields in input                       */
        /* ================================================================= */
        assign t_sFRWColDet.FRWColDet_ID = tFRWColDet.FRWColDet_ID.

        /* ================================================================= */
        /* Update input to allow correct matching                            */
        /* ================================================================= */
        buffer-copy t_sFRWColDet 
             except t_sFRWColDet.FRWColDet_ID
                    t_sFRWColDet.FRWCol_ID
                    t_sFRWColDet.tc_Rowid
                    t_sFRWColDet.tc_Status
                    t_sFRWColDet.tc_ParentRowid
        to tFRWColDet.

        <M-18 run SetRowidConvert
           (input  t_sFRWColDet.tc_Rowid (icOldRowid), 
            input  tFRWColDet.tc_Rowid (icNewRowid), 
            output viFcReturnSuper (oiReturnStatus)) in BFRWColumnGroup>
        assign t_sFRWColDet.FRWCol_ID      = tFRWColDet.FRWCol_ID
               t_sFRWColDet.tc_Rowid       = tFRWColDet.tc_Rowid
               t_sFRWColDet.tc_ParentRowid = tFRWColDet.tc_ParentRowid.

        /* FRW Chart Code and Analysis Code */
        if t_sFRWCol.tcFRWChartCode <> '':U
        then do:
            if t_sFRWColDet.tcFRWAnCodeCode <> ? and
               t_sFRWColDet.tcFRWAnCodeCode <> '':U
            then do:
                <Q-14 run FRWAnCodePrim1 (all) (Read) (NoCache)
                   (input ?, (FRWAnCode_ID)
                    input t_sFRWColDet.tcFRWAnCodeCode, (FRWAnCodeCode)
                    input t_sFRWCol.tcFRWChartCode, (ChartCode)
                    output dataset tqFRWAnCodePrim1) in BFRWAnalysisCode>
                find first tqFRWAnCodePrim1 where 
                    tqFRWAnCodePrim1.tcFRWAnCodeCode = t_sFRWColDet.tcFRWAnCodeCode and
                    tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode = t_sFRWCol.tcFRWChartCode no-error.
                if available tqFRWAnCodePrim1
                then assign t_sFRWColDet.FRWAnCode_ID = tqFRWAnCodePrim1.tiFRWAnCode_ID
                            t_sFRWColDet.tcFRWChartCode = tqFRWAnCodePrim1.tcFRWAnCodeFRWChartCode.
            end. /* if t_sFRWColDetComp.tcFRWAnCodeCode <> '':U */
        end. /* if t_sFRWCol.tcFRWChartCode <> '':U */
    end. /* for each t_sFRWColDet */
                     
    <I-52 {UpdateTransString
         &TABLE    = "FRWCol"}>

    /* ================================================================= */
    /* override value for identity fields in input                       */
    /* ================================================================= */
    assign t_sFRWCol.FRWCol_ID = tFRWCol.FRWCol_ID

    /* ================================================================= */
    /* Update input to allow correct matching                            */
    /* ================================================================= */
    t_sFRWCol.tc_Rowid  = tFRWCol.tc_Rowid
    t_sFRWCol.tc_ParentRowid = ""
    opPrimeKey       = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
                     + string(tFRWCol.FRWCol_ID).
end.

if oiReturnStatus = -98
then oiReturnStatus = 0.