How to run through a loop once - and then resetting to make it available again

To answer your question directly.

You read the 'A' you sent via serial and set val = A. Until you change that, val will always = A. So at some point you have to reset that variable. That is where the boolean flag explained above would come in handy. Either way you have to set that val variable to something other than A because it will try to do your 'If' loop everytime.

It loops constantly without the While statement because it sees 'A' everytime as explained above.

Now introduce the While loop. The same thing is happening. In your While loop you look at your var variable. The very first time it sees an 'A', it runs that code, at the end of your function calls you increment the variable by 1. Therefore var will never again be <1. In fact it will forever be 1. Since you never reset this var variable, it will never do the while loop again.

You can change your loop as follows to get rid of your problem:

void loop() { 

  if( Serial.available() )       // if data is available to read
  {
    val = Serial.read();         // read it and store it in 'val'
  }
  // forward
  if( val == 'A' )               // if 'A' was received
  {
  imoveD(1, 1500, 1000); //commands to control servo 1
  imoveD(1, 2100, 1000);  // commands to control servo 1
   }
   val = 'B';   
  }

I set the val to B because I am not certain how to set it to nothing. It really doesn't matter. As long as it is anything but 'A' it will work.