Автор Тема: Добавление полей в транзакцию IH01  (Прочитано 6359 раз)

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

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Добавление полей в транзакцию IH01
« : Январь 16, 2020, 07:56:08 am »
Доброго времени суток уважаемые консультанты ТОРО и ABAP-ы.

Вопрос 1: возможно ли в транзакции IH01 добавление z-полей? Имеется в виду поля, которые добавляются для отображения иерархической структуры через пункт меню Параметры настройки-Выбор полей и там можно добавлять поля для ЕО и ТМ, но выбирать можно конечно же только стандартные поля. Копался в инете ничего не нашёл. Все советуют использовать для этих целей листовой отчёт и я его конечно же использую, но иерархическая транзакция тоже очень удобна. Может кто делал подобное и подскажет куда копать?

Вопрос 2: возможно ли в транзакцию IH01 добавление не просто стандартных полей, но и их текстовое описание. Ну т.е. например добавил я через пункт меню Параметры настройки-Выбор полей-ЕО поле Местоположение или к примеру поле Производственный участок, а оно содержит цифровой идетификатор и это весьма не информативно. Можно ли туда как нибудь добавить поле ТекстОписание к Местоположению или Производственному участку? Может кто делал что нибудь подобное?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Добавление полей в транзакцию IH01
« Ответ #1 : Январь 17, 2020, 02:25:58 pm »
1. Можно, для иерархических отчетов можно добавить поля в BADI_EAM_STRUCTURE_LIST, добавляете поля какие вам нужно, само собой и заполняете их там же. Там если кратко делаете свою структуру с полями, добавляете их в этом BADI и добавляете так же код для заполнения этих полей.

2. Ну чтобы два раза не вставать для ALV-списка добавление полей делается в BADI_EAM_SINGLELEVELLIST.

PS: Техники добавления для этих BADI различные, видимо писали их очень разные люди  8)
« Последнее редактирование: Январь 17, 2020, 02:29:06 pm от Uukrul »

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Добавление полей в транзакцию IH01
« Ответ #2 : Февраль 24, 2020, 02:38:11 pm »
You are not allowed to view links. Register or Login
1. Можно, для иерархических отчетов можно добавить поля в BADI_EAM_STRUCTURE_LIST, добавляете поля какие вам нужно, само собой и заполняете их там же. Там если кратко делаете свою структуру с полями, добавляете их в этом BADI и добавляете так же код для заполнения этих полей.
У Вас, случайно, нет никакой документации по этому Badi, ну там пример какой нибудь?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Добавление полей в транзакцию IH01
« Ответ #3 : Февраль 24, 2020, 04:56:22 pm »
You are not allowed to view links. Register or Login
У Вас, случайно, нет никакой документации по этому Badi, ну там пример какой нибудь?
В системе есть пример реализации для этого бади, класс примера: CL_EX_BADI_EAM_STRUCTURE_LIST можете сами посмотреть.

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Добавление полей в транзакцию IH01
« Ответ #4 : Февраль 26, 2020, 06:31:08 am »
You are not allowed to view links. Register or Login
В системе есть пример реализации для этого бади, класс примера: CL_EX_BADI_EAM_STRUCTURE_LIST можете сами посмотреть.
В общем, как Вы и советовали, сделал реализацию BADI_EAM_STRUCTURE_LIST, получился Enhancement Implementation ZEAML_BADI_EAM_STRUCTURE_LIST, реализующий класс ZBADI_EAML_STRUCTURE_LIST, который скопировал все методы с класса BADI_EAML_STRUCTURE_LIST. Как Вы и говорили там есть реализованный пример работы с транспортными средствами, которые также отображаются в структурной транзакции IH01. Если я правильно понимаю код примера, то там передаётся всё содержимое таблицы FLEET вместе с Z полями в field-symbols и структуру ct_objects.
Код: You are not allowed to view links. Register or Login
data: ls_object       type ihie_s_object,
        ls_object_fleet type ihie_s_object_equi,
        ls_object_equi  type ihie_s_object_equi,
        ls_objects      like line of ct_objects,
        ls_fleet        type fleet,
        ls_equi         type equi.

*--- Container for UNICODE
  field-symbols: <x_container> type x,
                 <x_structure> type x.

  ls_object = iv_predecessor.

  case ls_object-objty.
    when ihie_c_objty_equi.
      ls_object_equi = iv_predecessor.
*--- Fleet object?
      call function 'OBJECT_NUMBER_READ_IE'
        exporting
          equnr            = ls_object_equi-equnr
        importing
          objnr            = ls_equi-objnr
        exceptions
          object_not_found = 1
          others           = 2.

      select single * from equi into ls_equi
                      where objnr = ls_equi-objnr.
      loop at ls_equi.
      endloop.
      if sy-subrc = 0.
        ls_object_fleet-objty = gc_objty_equi.
        ls_object_fleet-equnr = ls_object_equi-equnr.

        ls_objects-object = ls_object_equi-equnr.
*
*--- move fleet data into data container of object.
        assign ls_objects-data  to <x_container> casting.
        assign ls_equi         to <x_structure> casting.
        <x_container> = <x_structure>.
*
        append ls_objects to ct_objects.
      endif.

    when others.

  endcase.
Но данный пример реализации не работает, потому как в транзакции IH01 Z-овские поля так и не появились. Не понятно что там нужно дальше докручивать?

Полазив в Debug выяснил что есть такая структура  RIHEQUI, содержимое которой передаётся в транзакцию IH01. Расширил эту структуру добавив в неё дополнительную структуру с одним полем Название местоположения. В транзакции IH01 в выборе полей это поле появилось, но конечно же оно пустое. Вот как мне передать в это поле значение?

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Добавление полей в транзакцию IH01
« Ответ #5 : Апрель 09, 2020, 09:28:21 am »
В общем я так и не понял как работать с этим классом, но после долгого брожения в отладчике, вроде нашёл куда втиснуть свой ENHANCEMENT. Использовал для этих целей стандартную программу иерархического отчёта RIIFLO10 Представление структуры технического места - include MIHIXF10.
Предварительно  создал дополнительную структуру Z к существующей физической структуре RIHEQUI, в неё добавил нужные мне z поля.  Потом нужно запустить транзакцию OIWE и проверить появились ли там эти поля. В ENHANCEMENT вставил вот это:
Код: You are not allowed to view links. Register or Login
ENHANCEMENT 1  ZIH01_01.    "active version
************Добавление полей в иерархический отчёт IH01**************************
FIELD-SYMBOLS: <z_container> TYPE X,
<z_structure> TYPE X.
if f_object(1) = 'E' and ( RIHEQUI-stort ne space ).
IF RIHEQUI-EQUNR IS NOT INITIAL.

select single ktext from t499s into ( RIHEQUI-ZZ_KTEXT ) where stand = RIHEQUI-stort.

    ASSIGN f_data TO <z_container> CASTING.
    ASSIGN rihequi TO <z_structure> CASTING.                 "N965677
    <z_container> = <z_structure>.
ENDIF.
endif.
ENDENHANCEMENT.

После этого запускаю транзакцию IH01 и через пункт меню Параметры настройки - Выбор полей - Единица оборудования добавляю те поля, которые я создал в дополнительной структуре Z. Возможно реализация не самая лучшая, но работает. Вдруг кому понадобиться.
« Последнее редактирование: Апрель 09, 2020, 09:31:31 am от themax »

Sapforum.Biz

Re: Добавление полей в транзакцию IH01
« Ответ #5 : Апрель 09, 2020, 09:28:21 am »