в дополнение к сказанному, поделюсь опытом:
Поле контировки может быть скрыто настройкой статусов полей - в этом случае его заполнение даст ошибку. Чтобы ее избежать, надо проверить при заполнении таблицы интерфейса FIPI, доступно ли поле для ввода. Сделать можно примерно так:
Code:
** считывание статусов полей
CALL FUNCTION 'FI_FIELD_SELECTION_DETERMINE'
EXPORTING
i_bschl = lf_bschl
i_bukrs = pa_bukrs
i_saknr = ipos-hkont
IMPORTING
e_faus1 = fieldauswahl_1
e_faus2 = fieldauswahl_2
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
CONTINUE. " ошибка считывания статусов полей
ENDIF.
** формирование таблицы полей блока контировки
PERFORM kontierungsblock_ermitteln(sapff001)
TABLES it_coblf
USING 'H'
fieldauswahl_1 fieldauswahl_2 space.
** проверка, что поле доступно к вводу в блоке контировки
LOOP AT ipst WHERE stype EQ 'P'
AND count EQ i
AND fnam CP 'COBL-*'.
SPLIT ipst-fnam AT '-' INTO dummy fieldname_cobl.
READ TABLE it_coblf WITH KEY fdnam = fieldname_cobl.
IF sy-subrc <> 0 OR it_coblf-input = '0'.
DELETE ipst.
ENDIF.
ENDLOOP.
Тем, кто работал с интерфейсом FIPI, думаю, пояснений кода более не надо...
