Для смелых:
1. Смотрим таблицу T019.
Если в ней есть запись
DYNCL="A", KOART="D", UMSKZ="A", BUVAR="", DYNNR="0304"
(динамический выбор экрана для программы SAPMF05L. В случае аванса дебитора установлен экран 0304)
то
2. Запускаем прогу:
Code:
REPORT ztest005 .
INCLUDE mseusbit.
DATA: h TYPE d020s
, f TYPE d021s OCCURS 1 WITH HEADER LINE
, e TYPE d022s OCCURS 1 WITH HEADER LINE
, m TYPE d023s OCCURS 1 WITH HEADER LINE
, id type E071-OBJ_NAME
.
FIELD-SYMBOLS: <f> TYPE d021s.
id = 'SAPMF05L'.
id+40 = '0304'.
IMPORT DYNPRO h f e m ID id.
LOOP AT f ASSIGNING <f>.
IF <f>-fnam(5) = 'BSEG-'. " Incremental search
CASE <f>-fnam+5.
WHEN 'VBEL2' OR 'POSN2' OR 'ETEN2'.
IF <f>-flg1 O flg1edt.
<f>-grp3 = '001'.
ENDIF.
ENDCASE.
ENDIF.
ENDLOOP.
EXPORT DYNPRO h f e m ID id.
DATA: bind_err(1).
CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE'
EXPORTING
object = 'DYNP'
obj_name = id
activate_only_this_object = 'X'
object_saved = 'X'
IMPORTING
bind_error_window = bind_err.
Изначально для полей торгового документа (VBEL2,POSN2,ETEN2) поле экрана screen-group3 имеет значение "пусто". Программа SAPMF05L анализирует значение поля screen-group3 и если оно пусто, то такие поля не разрешает редактировать.
Можно либо модифицировать программу SAPMF05L, либо модифицировать экран 0304 к ней.
Программа ztest005 модифицирует экран 0304 программы SAPMF05L, устанавливает значение screen-group3 ="001".
3. Теперь статусы полей для полей торгового документа в случае аванса дебитора будут работать, т.е. поля можно будет редактировать (для 4.7)