+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SMOD/CMOD - Расширения (Модератор: Dmitriy)Тема:
|- MEREQ001 - Собственные данные клиента в заявке на закупку (ME_PROCESS_REQ_CUST)




Автор Тема: MEREQ001 - Собственные данные клиента в заявке на закупку (ME_PROCESS_REQ_CUST)  (Прочитано 84 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 685
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Так и хочется сказать, ну вот же никогда такого небыло и вот снова.  Есть расширение и есть аналогичное старое BAdI ME_PROCESS_REQ_CUST, в котором можно многое что проверить в заявке на закупку, но как-то как обычно по непонятной случайности в методе работы с позицией заявки почему-то нет доступа к контировкам обрабатываемой позиции. Хотя вернуть ошибку без проблем можно в таблице EX_MESSAGES. В функцию работы с позиций вам передают ссылку на интерфейс для доступа к позиции, а так же по старой памяти заполненные структуры, ну если вы не очень умеете работать с полученным интерфейсом. Но, почему-то не передают таблицу контировок к этой же позиции, а интерфейс так же по непонятной логике не имеет методов доступа к контировкам, хотя внутри реализации  такие методы есть.

Теперь для чего нужна таблица контировок в данном месте, Ну скажем так, чтобы красиво вывелся журнал проверки, что ошибка именно в позиции ХХХ, а не в методе CHECK вы сами перечисляете в каких позициях проблемы, там кстати таблица с контировками к позициям заявки передается.

В общем для доступа к контировкам позиции внутри ФМ/Метода пишем следующее:
Код: You are not allowed to view links. Register or Login
    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 необходимо записать данные изменения обратно в общий класс, для этого вызываем, метод записи:
Код: You are not allowed to view links. Register or Login
CALL METHOD lo_obj_cobl->('SET_COBL') EXPORTING im_cobl = lt_cobl.