ASSIGN
iRow = INT('{&gRow}') + 1
iDynRow = 0
iColumn = 1.
DO WITH FRAME {&FRAME-NAME}:
/* Output the keys in comma separated list */
RUN getUniquekeys.p(INPUT gchDatabase,
INPUT gchTableName,
OUTPUT gchKeysList ).
/* sample output: --> WHERE Field-Name = ,AND Field-Name = */
RUN buildPredicateExpressionProc(OUTPUT chRawPredicate ). /* for processing */
buf-hndl-TempTable:EMPTY-TEMP-TABLE().
/* Extract excel values to the dynamic temp-table */
ExcelRow:
DO WHILE(TRIM(chWorkSheet:CELLS( iRow + iDynRow, iColumn ):VALUE) <> "eof" ) TRANSACTION:
chPredicate = "".
/* Assigning values to where clause */
RUN assignPredicateExpressionProc(INPUT chFieldListFromExcel,
INPUT chRawPredicate ,
INPUT (iRow + iDynRow),
INPUT gchKeysList,
OUTPUT chPredicate,
OUTPUT loValidPredicate ).
/* with keys only */
IF chPredicate <> "" THEN
loAvail = buf-hndl-TempTable:FIND-FIRST(chPredicate, EXCLUSIVE-LOCK ) NO-ERROR.
IF NOT loAvail THEN
DO:
IF loValidPredicate THEN
DO:
buf-hndl-TempTable:BUFFER-CREATE.
/* Iterate to columns */
ExcelCol:
DO idx = 1 TO giTotalCol:
IF buf-hndl-TempTable:BUFFER-FIELD(STRING(chWorkSheet:CELLS( int( '{&gRow}') , idx):VALUE))ATA-TYPE <> "BLOB" THEN
ASSIGN
buf-hndl-TempTable:BUFFER-FIELD(STRING(chWorkSheet:CELLS( int( '{&gRow}') , idx):VALUE)):BUFFER-VALUE = chWorkSheet:CELLS( iRow + iDynRow, idx):VALUE.
ELSE DO: /* Load the blob datatype */
/* Blob file availability checking */
FILE-INFO:FILE-NAME = STRING(chWorkSheet:CELLS( iRow + iDynRow, idx):VALUE).
IF FILE-INFO:FILE-TYPE <> "FRW" THEN
DO:
ASSIGN
loProblemFound = YES.
NEXT ExcelCol.
END.
ELSE
DO: /* File path is valid */
COPY-LOB FROM FILE STRING(TRIM(chWorkSheet:CELLS( iRow + iDynRow, idx):VALUE)) TO memImage.
buf-hndl-TempTable:BUFFER-FIELD(STRING(chWorkSheet:CELLS( int( '{&gRow}') , idx):VALUE)):BUFFER-VALUE = memImage.
END.
END.
END. /* DO idx = 1 TO giTotalCol: */
END. ELSE /* IF loValidPredicate THEN DO: */
ASSIGN loProblemFound = YES.
END. ELSE /* Duplicate Record or with error */
ASSIGN loProblemFound = YES.
ASSIGN
iDynRow = iDynRow + 1 /* Excel Row Iteration */
loProblemFound = NO. /* reset problem indicator */
END. /* DO WHILE(TRIM(chWorkSheet:CELLS( iRow + iDynRow, iColumn ):VALUE) <> "eof" ): */
chExcelApplicationisplayAlerts = NO.
chExcelApplication:AlertBeforeOverwriting = NO.
chWorkBooks:SaveAs(FILL-IN-Source,,,,,,) NO-ERROR.
DELETE OBJECT hTempTable.