Shortest, lexicographically smallest generating string
Ruby 1.9, 40 characters
gets;a=?a;a.next!until(a*~/$/)[$_];$><<a
Assumes the input is not terminated by a newline. Also it's probably ridiculously slow for larger results.
$ echo -n "bcabcabca" | ruby genlex.rb
abc
$ echo -n "barfoobarfoobarfoo" | ruby1.9 genlex.rb
arfoob
Python 88 185 chars
import re
s=raw_input()
m=s.index(min(s))
s=s[m:]+s[:m]
i=0
while s.replace(s[:i],''):i+=1
m=min(s[:i])
s=re.findall('%s[\w]*?(?=%s|$)'%(m,m),s[:i])
m=s.index(min(s))
print ''.join(s[m:]+s[:m])
Output:
bcabcabca
abc
aaa
a
abc
abc
cccbbcccbbcccbb
bbccc
barfoofoobarfoofoo
arfoofoob
bacabac
abacbac
Haskell, 299 128 characters
import Data.List
main=interact(\z->minimum$filter(\w->isInfixOf z$concat$replicate(length z)w) $filter((/=)"")$inits=<<tails z)
Thanks to jloy! Now the version is both far shorter and I believe correct.