The best way to do this is by using mobile grid.
You should read up on this if you don't understand it;
http://www.staredit.net/wiki/Grid_SystemsHere is a visual of what you should be doing
Let's say that the Xs are where the units can come to and the Qs are where they would be pushed back. The O is where the hero unit is at
Q Q Q Q Q
Q X X X Q
Q X O X Q
Q X X X Q
Q Q Q Q Q
So basically with the mobile grid, you would probably need a 5x5, depending on how big you want it
What you do is detect by moving a location on the enemy unit and if it brings both the enemy unit and whatever unit you're using for the grid at location X and you move it to location Q.
Let's say they entered from "Z". What you would have to do is move it back to "Y".
Q Q Q Q Q
Q X X X Q
Q X O X Q
Q X Z X Q
Q Q Y Q Q
So basically after you create the first grid and detect where it entered from, you create a second unit grid and push it back to the corresponding location/unit.
You would have to read the wiki to understand this.
3 4 7
2 6 8
1 5 9
That is the order that the locations are moved and how the units are removed. You would just have to extend it by 5x5 so it would be like this.
5 6 11 16 21
4 7 12 17 22
3 8 14 18 23
2 9 13 19 24
1 10 15 20 25
So with this, you replace the Xs and Qs.
Let's say the enemy unit brings a zealot to grid 13 (Location 5 if you want to start it at a 3x3 grid). You would already have a location on the hero to detect if an "foe" brings a unit there. If it does, you move location "Enemy" on the zealot at location "Hero". Then depending on which grid location the zealot is at and what grid unit is on location "Enemy", you recreate a larger grid (if you didn't create a 5x5) and then you move it to location 15.
If that way is more complicated, you should probably practice and try to learn more about the grid system and for now use a cheap imitation of it. One of the easy way is to create an observer or any other invisible unit that is on junk yard and make the enemy unit move below the observer.
None.