+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SMOD/CMOD - Расширения (Модератор: Dmitriy)Тема:
|- RW(IN)-интерфейсы - создание собственных связных объектов




Автор Тема: RW(IN)-интерфейсы - создание собственных связных объектов  (Прочитано 6033 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Бывают задачи, когда мы формируем собственные документы в системе на основе проведенного пользователем документа, так называемые «паровозики» из документов. Техника формирования таких документов может быть различной, кроме одной проблемы, дальнейшая работа/просмотр таких связных документов вызывает определенные проблемы, в плане просмотра связных документов. Чаще всего для этой задачи пишутся какие-то отчеты или же если связь выполняется через присвоение номеров документов в стандартные поля, например ссылочный номер документа, то для этого можно попробовать использовать стандартные отчеты, хотя удобство такого использования сомнительно, так как массово сопоставление связей оказывается не наглядным. Поэтому когда в очередной раз возникла похожая задача было решено поискать другие методы связывания документов. Для примера рассмотрим ситуацию когда выполняется операция проводки документа движения материала для склада с активированной системой управления запасами (пример был описан тут: You are not allowed to view links. Register or Login). При проводке документа движения материала, в зависимости от настроек для СУС система создает автоматически транспортную заявку и далее, если настроены стратегии поиска складских мест, то возможно автоматическое создание транспортного заказа. Первой проблемой в системе является то, что номер транспортной заявки будет виден в документе движения материала, однако перейти к просмотру подробных данных из документа движения запасами нельзя, пример на рисунке: MIGO-01.png

Вторая проблема, даже если к транспортной заявке будет создан транспортный заказ, его не будет видно из документа системы управления запасами, хотя если перейти к просмотру транспортных заказов, то транспортный заказ имеет ссылку на документ движения материала, рисунок: LT23-01.png.

адача заключается в том, чтобы добавить возможность просмотра связных документов системы управления складом с документами движения материалами. Самым оптимальным и наверное логичным способом будет возможность использования RWIN-интерфеса связи документов. В общем виде это работает следующим образом, когда вы в документе логистики, например выбираете кнопку «Док. RW», рисунок: MIGO-02.png

Система откроет окно в котором будет отображен перечень связанных документов. В данном случае как видим это документы модуля финансов, контролинга и документ специальных регистров. Так как документы управления складом являются связанными с  документом логистики, то было бы неплохо отражать их в стандартном окне с возможностью перехода к просмотру таких документов. Для этого необходимо выполнить несколько настроек в системе и реализовать функциональный модуль, который будет предоставлять связанные  документы управления складом.

Для создания собственных объектов сначала необходимо создать в системе компонент RW-интерфейса и тип ссылочного объекта/операции. Не знаю по каким причинам, но просто внести новый код компонента система не позволяет, так перечень допустимых значений ограничен доменом, на которое ссылается поле таблицы компонентов, рисунок: SE11-01.png. Думаю, что это остатки каких-то устаревших разработок о которых давно забыли, но теперь это создает проблему — мы не можем внести собственный компонент для RW-интерфейса в таблицу TRWCI, хотя она просто содержит перечень кодов, с которыми происходит дальнейшая работа.

Однако с версии системы 6.0 у нас появилось замечательная возможность расширения постоянных значений для доменов системы без получения ключа модификации объекта. Для этого в просмотре данных домена по меню выберите: «Перейти к» - «Дополнение к фиксированному значению», рисунок: SE11-02.png

После выбора создания дополнений вам нужно будет создать новый объект расширения, например ZI_WMS, рисунок: SE11-03.png. Фактически будет использована стандартная возможность расширения объектов системы.

Создадим новые значения к домену и активируем изменения,рисунок: SE11-04.png. Ключ нашего объекта будет ZWMS, так как длинна поля 4 символа.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Продолжение:

Теперь можем перейти к ведению созданного кода в ракурсе TRWCI, для этого перейдем в транзакцию SM30 и добавим собственный ключ объекта в перечень уже существующих компонентов, в перечне предлагаемых значений появится на код ZWMS, рисунок: SM30-01.png. Внесем созданный нами код в перечень компонентов системы и сохраним изменения. Система запросит данные транспортного запроса, чтобы данные настройки можно было перенести в другие системы.

Примечание: К сожалению на рисунке полностью введенный код не видел, так как ракурс ведения не настроен по ширине вывода данных таблицы.

Далее для созданного компонента  нужно установить максимальный год действия и признак активности RW-компонента. Для этого переходим к ведению ракурса TRWCA, в транзакции SM30, и добавляем новую запись с кодом ZWMS, рисунок: SM30-03.png. Год ставим например 2999, чтобы точно хватило и конца действия не дождались. Конечно 2999 год это очень оптимистично.

Далее зарегистрируем наш объект в связи с кодом момент вызова. Для этого в транзакции ведения ракурсов SM30, перейдем к ведению ракурса TRWPR. При входе будет предупреждение что ракурс общий для всех мандантов, а далее будет выведено окно с правилами нумерации. Для клиентских разработок стандартно открыт интервал 900 — 999, рисунок: SM30-04.png

В данном ракурсе мы должны создать запись с кодом операции DOCUMENT и событием RECORD, так как проводить связные документы нам не требуется, а вся работа будет заключаться только в демонстрации связных документов. Сам документы проводятся системой. За основу можем взять например запись с номером 10, рисунок: SM30-05.png и скопировать ее.

Номер операции поставим 999, т. е. последний в порядке вызова. Код компонента укажем собственный ZWMS, а вот имя функционального модуля зададим собственное. Так как данный ракурс не проверят наличие модуля при сохранении, то можем создать запись, а реализация модуля будет написана позже, на следующем шаге.

Так как параметры всех модулей для данного интерфейса и события должны совпадать, то копируем модуль FM_DOCUMENT_RECORD в собственный модуль  Z_IWMS_DOCUMENT_RECORD. В общем виде должен быть создан следующий код:

Код: You are not allowed to view links. Register or Login
FUNCTION Z_IWMS_DOCUMENT_RECORD.
*"--------------------------------------------------------------------
*"*"Глобальный интерфейс:
*"  IMPORTING
*"     VALUE(I_AWTYP) LIKE  ACCHD-AWTYP
*"     VALUE(I_AWREF) LIKE  ACCHD-AWREF
*"     VALUE(I_AWORG) LIKE  ACCHD-AWORG DEFAULT SPACE
*"     VALUE(I_AWSYS) LIKE  ACCHD-AWSYS DEFAULT SPACE
*"     VALUE(I_AWTYP_INCL) LIKE  ACCHD-AWTYP DEFAULT SPACE
*"     VALUE(I_AWTYP_EXCL) LIKE  ACCHD-AWTYP DEFAULT SPACE
*"     VALUE(I_BUKRS) LIKE  ACCIT-BUKRS DEFAULT SPACE
*"  TABLES
*"      T_DOCUMENTS STRUCTURE  ACC_DOC
*"--------------------------------------------------------------------


ENDFUNCTION.

Реализация функциональности будет написана позже, а пока осталось донастроить еще один шаг, провисать ссылочную операцию, чтобы наш документ отличался в списке документов системы. Для этого нужно перейти к ведению ракурса TTYP. За основу можно взять запись ссылочной операции MKPF и скопировать ее в свою создаваемую запись. Функциональный модуль и структуру для данной записи оставляем пустыми, рисунок: SM30-06.png

Основные шаги настройки на этом завершены, осталось реализовать ABAP разработку модуля  Z_IWMS_DOCUMENT_RECORD, который должен уметь находить связный документы транспортного заказа для документа движения материала и если такой найден, то выводить его в окно просмотра связных документов. Так же реализуем код, который позволяет переходить к просмотру транспортного заказа из перечня связных документов.

Собственно сам механизм поиска связного транспортного заказа не сложная ABAP-задача, поэтому полностью реализовывать ее я не буду, просто схематично набросаем только актуальный для вывода документа в окне просмотра списка. Сам поиск документа по документу материала, рассмотрен не будет.

Код: You are not allowed to view links. Register or Login
FUNCTION z_iwms_document_record.
*"----------------------------------------------------------------------
*"*"Глобальный интерфейс:
*"  IMPORTING
*"     VALUE(I_AWTYP) LIKE  ACCHD-AWTYP
*"     VALUE(I_AWREF) LIKE  ACCHD-AWREF
*"     VALUE(I_AWORG) LIKE  ACCHD-AWORG DEFAULT SPACE
*"     VALUE(I_AWSYS) LIKE  ACCHD-AWSYS DEFAULT SPACE
*"     VALUE(I_AWTYP_INCL) LIKE  ACCHD-AWTYP DEFAULT SPACE
*"     VALUE(I_AWTYP_EXCL) LIKE  ACCHD-AWTYP DEFAULT SPACE
*"     VALUE(I_BUKRS) LIKE  ACCIT-BUKRS DEFAULT SPACE
*"  TABLES
*"      T_DOCUMENTS STRUCTURE  ACC_DOC
*"----------------------------------------------------------------------
* Вызов для документа движения материала или транспортного заказа
  CHECK i_awtyp = 'MKPF' or i_awtyp = 'ZWMS'.

* Проверим тип вызова: Создание/Просмотр
  READ TABLE t_documents WITH KEY awtyp = 'ZWMS'
                                  display = 'X'.
  IF sy-subrc = 0.
*   Вызов для просмотра документа транспортного заказа
*   Структура будет содеражать данные ранее заполненные при
*   формировании таблицы
    SET PARAMETER ID: 'TAN' FIELD t_documents-docnr,
                      'LGN' FIELD t_documents-bukrs.
    CALL TRANSACTION 'LT21' AND SKIP FIRST SCREEN.
  ELSE.
*   Код который должен по номеру документа ММ прочитать номер ТрЗаказа
*   В переменных будут данные документа движения материала:
*     I_AWTYP  = MKPF
*     I_AWREF  = 5000000177
*     I_AWORG  = 2012

*   Сформировать структуру с номером ссылочного документа на ТрЗаказ
    t_documents-awtyp    = 'ZWMS'.
    t_documents-docnr    = '0000000024'. "Транспортный заказ
    t_documents-bukrs    = 'DH2'.        "Номер склада, так как БЕ не требуется
    t_documents-ac_gjahr = '2012'.
    APPEND t_documents.
  ENDIF.
ENDFUNCTION.

Как видим в перечне документов появился ссылочный документ транспортный заказ, рисунок MIGO-03.png. Если сделать двойной клик мышью на номере документа, то мы попадем в просмотр транспортного заказа.