Занятный случай самообмана в транзакции FF67

Дано:

Есть транзакция FF67, у которой есть специальное окошечко для значений “по умолчанию”. Там в том числе есть важное поле – “Вид последующей обработки”. Для правильной работы по шаблону должно стоять значение режима равное 4.

Есть глупые пользователи, которым если давать такие вещи в руки, то можно получить разные числа на выходе.

Наблюдаю следующее решение этой проблемы:


Вариант к транзакции FF67

На транзакцию FF67 сделан вариант в котором все поля заполнены по умолчанию (Вариант и Вид обработки) и эти поля закрыты на ввод.

Однако для некоторых старых пользователей (по всей видимости, запускавших эту транзакцию в те стародавние времена, когда варианта ещё не было) поле “Вид обработки” физически равно 1.

Вариант транзакции при просмотре значения рисует поверх значение 4 и закрывает поле на ввод. Так как данные закрыты на ввод, то сохранение не требуется, и в результате имеющееся значение в таблице не перезаписывается.

Ну а транзакция FF67 ориентируется на данные в таблице и работает в режиме 1 с известными последствиями.

А убедиться, какой именно режим установлен практически невозможно, так как значение этого поля мало того что хранится в особой хитрой таблице RFDT, так ещё и в закодированном виде (в виде кластера).

 

Варианты:

1. Самое неприятное следствие такого решение – это то, что SAP лжёт показывая значения по умолчанию. То есть, в таблице написано: “Режим работы = 1”, а натянутый вариант транзакции говорит “Режим работы = 4”. С такой ситуацией можно немного смириться, если гарантировать неизменяемость данных в будущем и обработать все созданные ранее данные.

Для гарантий нужно сделать отчёт, который будет показывать правду и сможет запинать значения “по умолчанию” не смотря ни на что.

2. Открыть поля и добавить немножко проверок на ABAP. Но с одной стороны это энхансменты или филд-экзиты (не очень кошерно), а с другой стороны получается глупая ситуация, когда программа даёт выбрать, но все выборы кроме нужного – карает (безусловная ошибка вида “Вид обработки должен быть равен 4”).

3. Как (2), но добавить ещё немного ABAP-кода, для заполнения значений по умолчанию.

Постскриптум:

Если вдруг вам понадобилось посмотреть списком данные настроек FF67 по всем пользователям, то надо создать небольшой отчётик.

Выкладываю этот отчёт сюда: http://pastebin.com/XBsimp9U

Опубликовано 01.07.2013 в 15:46 · Автор ivan · Ссылка
Рубрики: ABAP

Написать комментарий