@satoru
Well, things really seem to be quite complicated. I think it is astonishing that NDSolve crashes all the time. So I thought what one could do. Just giving your diff.equation leave no options. So I decided to treat it somewhat more flexible. Rewriting your diff.eq, gives a system of to equations of 1st order:
\[Lambda]n = .7; vn = 100;
sys1 = {
f'[x] == u[x],
u'[x] == \[Lambda]n f[x] (f[x]^2 - vn^2),
f[-1000.] == vn,
u[-1000.] == A};
The idea is, if this system could be integrated, to vary the value A and look for the value of f [ 1000 ], hopefully finding an A that "hits" the right value.
So I tried (note the huge value for MaxSteps)
Clear[sol1]
sol1[An_] := Module[{},
sys = sys1 /. A -> An;
(*Print[sys];*)
NDSolve[sys, {f[x], u[x]}, {x, -1000., 1010.}, MaxSteps -> 10^7] //
Flatten]
and
In[122]:= ff = f[x] /. sol1[-5. 10^-6];
ff /. x -> 1000
Out[123]= -97.4093
That is almost the -100 you wanted to have. The result is a fast varying oscillation (note that i plotted it only i a small window of width ten):
Plot[ff, {x, -1000, -990}]
Is such an oscillation what you expected in your problem?
BUT : the behavior of that system seems to be quite insensitive with respect to the value of A (if it does not crash, which occurs as well). Note that I enhanced A by a factor of 1000
In[129]:= sol1[-.5 10^-3];
ff /. x -> 1000
Out[130]= -97.4093