First, your last question:
"Can we achieve this by the way i need ? "
Not really. Unless you have all the code you showed us in some sort of big REPEAT loop, you will never give the user an opportunity to fix field-a or field-b (the SET CONTROL ‘N’ prevents them from accessing the fields).
Now for the far more important issue.
You said there is similar code used to create popups. The code cannot be too similar, because the code you showed will not work at all.
I am going to go on an assumption here; there is some code that works, and it does somehow involve re-issuing the map12345. This is really BAD code. What you are talking about is creating more instances of BAD code.
How did this BAD code come about? Years ago, when windowing first became available, someone probably wrote the code without really understanding INPUT, REINPUT, helproutines, REINPUT USING HELP, and windowing in general. Rather than learn about these topics, other programmers followed, basically reproducing, or slightly modifying, the BAD code. New programmer trainees saw the BAD code, appearing in many places, and assumed it was good code, so they too started writing BAD code.
Now I am not suggesting you put your job on the line. Especially in these economic times, that is not a good idea. But, you should point out to technical management how BAD this approach to windowing is. Not only is the BAD code inefficient, it does not work, and it would be messy to add on to. By contrast, good code, using a helproutine and REINPUT USING HELP (or some other variation) would be efficient, and, would be easy to add on to.
I have my mainframe access back. I hope to have time today (and if not today, tomorrow) to write good code for what I perceive you are trying to do.
p.s. the most important aspect of working with Natural, or any other programming language, is Education, Education, Education. Without Education you have ignorance; which tends to result in BAD code.