Вкладки дополнительных полей ABAP SAPMV45A

У меня есть требование от клиента, которое включает в себя представление информации в транзакции VA42 (контракты), которая сохраняется в нескольких настраиваемых таблицах. Данные недоступны через структуру добавления на VBAK, и я не могу внести это изменение самостоятельно.

Я зарегистрировал экран 8309 и начал добавлять на него свои поля. Таким образом, я создал модуль PBO, чтобы иметь место для сопоставления данных с полями на экране. Я установил точку останова в модуле, он запускается, и данные, которые я хочу представить, извлекаются. Я пока ничего не сделал, хотя не записывал это в поле программы выхода пользователя.

Что я пробовал:

  • Я присвоил полям «идентификатор параметра», чтобы можно было использовать GET и SET PARAMETER ID. Это не работает, поля остаются пустыми после использования этого оператора.

http://hastebin.com/qinerexola.sql

  • Я дал полям обычное имя вместо того, чтобы называть поле в структуре / имени, и попытался с помощью DYNP_VALUES_UPDATE сопоставить данные с предоставленным полем. Sy-subrc возвращает 0, но поле не обновляется.

http://hastebin.com/anakirikah.sql

  • Я дал полям имя (структура) - (поле) и попытался использовать указанный выше функциональный модуль. Это тоже не сработало.
  • Я зациклился на screen и увидел имя моего поля, но эта структура не имеет информации о его значении или, по крайней мере, о том, что я могу видеть.

У меня нет возможности добавлять поля в VBAK, можно ли заполнить поля расширенных экранов пользовательскими данными из таблиц клиентов?


person user7199471    schedule 23.11.2016    source источник
comment
Добро пожаловать в SO! Вы объявляете FIELD contract-req_ref. (или FIELD ZSD_VA_ADD_FIELDS-REF_REGEX., в зависимости от того, что в вашем случае) перед вызовом модуля? Это вводит значение поля в область видимости, чтобы вы могли читать и писать в него внутри модуля.   -  person gkubed    schedule 23.11.2016
comment
Твои хастебины пусты. Вставьте код сюда.   -  person Suncatcher    schedule 23.11.2016
comment
Чтобы поле отображало значение, оно также должно поддерживаться как глобальное поле в основной программе, в вашем случае SAPMV45A. Из приведенного вами описания проблемы и того, что вы пробовали, неясно, так ли это, может помочь источник вашего модуля. Вы можете создать переменную в MV45ATZZ.   -  person Gert Beukema    schedule 23.11.2016
comment
@gkubed, оператор FIELD не действует в PBO.   -  person Gert Beukema    schedule 23.11.2016
comment
@GertBeukema Ой! Спасибо, я подумал о PAI.   -  person gkubed    schedule 23.11.2016
comment
@Suncatcher они у меня работают. Я не делал переменные глобальными и не определял их в поле. Я пока создал только экран. Попробую MV45ATZZ   -  person user7199471    schedule 24.11.2016
comment
@ user7199471, теперь они работают, но в любом случае вы должны разместить это в теле вопроса. Прочтите правила: Как мне задать хороший вопрос? и Как создать минимальный, полный и проверяемый пример   -  person Suncatcher    schedule 24.11.2016
comment
@Suncatcher, возможно, в следующий раз.   -  person user7199471    schedule 24.11.2016
comment
@GertBeukema Теперь ты видишь хастебинов? Код модуля на экране - не что иное, как вызов функции PBO. В этом смысле это не что иное, как выбор в таблице Z. Я добавил переменную в MV45ATZZ. Я попытался переименовать поле так же, как переменная в MV45ATZZ, а затем повторить попытку как SET PARAMETER, так и DYNP_VALUES_UPDATE, но ничего не вышло.   -  person user7199471    schedule 24.11.2016
comment
Слишком рано заговорил, поля заполнены. Спасибо за помощь. @GertBeukema, вы можете опубликовать его в качестве ответа, чтобы я мог отдать должное.   -  person user7199471    schedule 24.11.2016


Ответы (1)


Чтобы поле отображало значение, оно также должно поддерживаться как глобальная переменная в основной программе, в вашем случае SAPMV45A. Из приведенного вами описания проблемы и того, что вы пробовали, неясно, так ли это, может помочь источник вашего модуля. Вы можете создать переменную в MV45ATZZ.

person Gert Beukema    schedule 24.11.2016