Так и хочется сказать, ну вот же никогда такого небыло и вот снова. Есть расширение и есть аналогичное старое BAdI ME_PROCESS_REQ_CUST, в котором можно многое что проверить в заявке на закупку, но как-то как обычно по непонятной случайности в методе работы с позицией заявки почему-то нет доступа к контировкам обрабатываемой позиции. Хотя вернуть ошибку без проблем можно в таблице EX_MESSAGES. В функцию работы с позиций вам передают ссылку на интерфейс для доступа к позиции, а так же по старой памяти заполненные структуры, ну если вы не очень умеете работать с полученным интерфейсом. Но, почему-то не передают таблицу контировок к этой же позиции, а интерфейс так же по непонятной логике не имеет методов доступа к контировкам, хотя внутри реализации такие методы есть.
Теперь для чего нужна таблица контировок в данном месте, Ну скажем так, чтобы красиво вывелся журнал проверки, что ошибка именно в позиции ХХХ, а не в методе CHECK вы сами перечисляете в каких позициях проблемы, там кстати таблица с контировками к позициям заявки передается.
В общем для доступа к контировкам позиции внутри ФМ/Метода пишем следующее:
DATA : lo_obj_acc TYPE REF TO object,
lo_obj_cobl TYPE REF TO object,
lt_cobl TYPE TABLE OF cobl.
FIELD-SYMBOLS: <lo_any> TYPE any.
***
lo_obj_acc ?= im_req_item.
ASSIGN lo_obj_acc->('MY_STATE->ACCT_CONTAINER') TO <lo_any>.
lo_obj_cobl = <lo_any>.
CALL METHOD lo_obj_cobl->('GET_COBL') IMPORTING ex_cobl = lt_cobl.
***
Все, в таблице LT_COBL получаем контировки к текущей позиции заявки, с которыми можно уже делать все что необходимо. Кстати, если вам случайно нужно что-то поменять в контировках, то после изменений таблицы LT_COBL необходимо записать данные изменения обратно в общий класс, для этого вызываем, метод записи:
CALL METHOD lo_obj_cobl->('SET_COBL') EXPORTING im_cobl = lt_cobl.