Salas написал(а):
Насчёт бредовости отчасти согласен.
Но задачу поставили с самого верха

, да и смысл могу прояснить.
Пользователи вбивают позиции сбытового заказа - только материал и кол-во, которые внутри уже бьётся по секторам, СКК и проч., попадая в разные "реальные" заказы.
Суть в том, что на ходу происходит подбор партий и расчёт цен, при этом оператор, видя что запасов не хватает или превышен лимит - делает UNDO нескольких позиций.
При этом на каждой вбитой позиции запускается BAPI*ORDER*CHANGE и BAPI*ORDER*SIMULATE и их надо откатить
Вообщем, пока делаю оболочку(т.е. приближаюсь к стене) и лбом пока не ударился

Давайте упрощать!
Что будет, если вбивать заказы будут одновременно ДВА (или более) пользователя? Каким образом они будут, видя, что запасов не хватает, отклонять и потом опять набирать? Может быть один пользователь будет просто ждать, пока у другого сдадут нервы и тот отменит заказы, а первый сможет их подцепить? Может быть они перебегают друг от друга, хлопая по плечу и договариваясь о заказах? Подумайте! И попробуйте описать этот процесс по шагам!
Или можно точно разделить сферу ответственности пользователей по какой-нибудь аналитике? Может быть пользователь будет вообще ОДИН?
Моё предложение (idea redesign) следующее:
1) Когда пользователь начинает работать с этой программой, то происходит БЛОКИРОВКА в нужных разрезах, чтобы никто не смог одновременно ничего провести.
2) Считываются текущие остатки.
3) В обычном ALV пользователь играется в рамках остатков (без какого-либо сохранения).
4) Когда нажимает кнопку "Спасти", то для введённых и выбранных записей осуществляется проводка без отмены.
Вам не нужно будет морочить голову по поводу отмены, а руководство увидит тот интерфейс, который хочет.
Чем не устраивает подобное решение?