/********** Option 1 ************/
DEFINE VARIABLE cList AS CHARACTER NO-UNDO INIT "a,b,c,d,a,b,c,d".
DEFINE TEMP-TABLE ttUnique
FIELDS Listitem AS CHAR.
FUNCTION getUniqueList RETURN CHAR (INPUT cList AS CHAR) FORWARD.
MESSAGE "Option 1 : " SKIP
getUniqueList("a,b,c,d,a,b,c,d")
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
FUNCTION getUniqueList RETURNS CHAR (INPUT cList AS CHAR):
DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
DEFINE VARIABLE icnt AS INTEGER NO-UNDO.
DO icnt = 1 TO NUM-ENTRIES(clist):
FIND FIRST ttunique WHERE ttunique.ListItem = TRIM(ENTRY(icnt,cList)) NO-ERROR.
IF NOT AVAILABLE ttunique THEN
DO:
CREATE ttunique.
ASSIGN ttunique.ListItem = TRIM(ENTRY(icnt,cList)).
END.
END.
FOR EACH ttunique:
cresult = IF cResult = "" THEN
ttunique.ListItem
ELSE
cResult + "," + ttunique.ListItem.
END.
RETURN cResult.
END FUNCTION.
/********** Option 2 ************/
FUNCTION getUniqueList2 RETURN CHAR (INPUT cList AS CHAR) FORWARD.
MESSAGE "Option 2 :" SKIP
getUniqueList2("a,b,c,d,a,b,c,d")
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
FUNCTION getUniqueList2 RETURNS CHAR (INPUT cList AS CHAR):
DEFINE VARIABLE cResult AS CHARACTER NO-UNDO.
DEFINE VARIABLE icnt AS INTEGER NO-UNDO.
DO icnt = 1 TO NUM-ENTRIES(clist):
CREATE ttunique.
ASSIGN ttunique.ListItem = TRIM(ENTRY(icnt,cList)).
END.
FOR EACH ttunique BREAK BY ttunique.ListItem:
IF FIRST-OF(ttunique.ListItem) THEN
DO:
cresult = IF cResult = "" THEN
ttunique.ListItem
ELSE
cResult + "," + ttunique.ListItem.
END.
END.
RETURN cResult.
END FUNCTION.