Is it possible to change it from an array of say A B C D E F to a word as in:- ABCDEF as a single element?
Could have been fun, too bad late lunch on West Coast means slow on the draw. At any rate, the OP has a solution so I do not have to worry about minor details like saving for 8.2. The classic recursion solution is elegant (like most recursive solutions), but native recursion (in LV9+) is slow, and VI server recursion is downright glacial. I think the physicist side of DFGray showed up, rolling the dice is a simple-yet-effective treatment in these cases, I would probably have been putting Riffle to good use here.
Altenbach's solution is (needless-to-say) masterfully efficient, I only have a few quibbles. It assumes the elements are distinct, but oftentimes, especially with letters, elements can be repeated. Second, while there is considerable in-placeness, it is often not the best idea to be carrying around all possible combinations since that can become quite a large number in a hurry.
So, given this good excuse to dust off Knuth's book, and as an added bonus implement a 700 year old algorithm, here is my take. Shamelessly LV9.0 (or at least 8.6 for the IPE and conditional For Loops). This routine is seriously in-place, each time it is run it generates the next permutation given the previous one. Using for example the letters 'aab' it returns only three permutations instead of six.
Oops. seemed to attach same file twice last time. Here is the VI which uses a while loop to find all permutations. Better hurry before altenbach notices...
(One minor flaw: an empty string input should probably give an empty array as output.)
In the TRUE case, check for "empty string?" and wire the output to the tunnel, replacing the boolean diagram constant.