Sapforum.Biz
Логистика => Техническое обслуживание и ремонт оборудования (PM) => Тема начата: themax от Январь 16, 2020, 07:56:08 am
-
Доброго времени суток уважаемые консультанты ТОРО и ABAP-ы.
Вопрос 1: возможно ли в транзакции IH01 добавление z-полей? Имеется в виду поля, которые добавляются для отображения иерархической структуры через пункт меню Параметры настройки-Выбор полей и там можно добавлять поля для ЕО и ТМ, но выбирать можно конечно же только стандартные поля. Копался в инете ничего не нашёл. Все советуют использовать для этих целей листовой отчёт и я его конечно же использую, но иерархическая транзакция тоже очень удобна. Может кто делал подобное и подскажет куда копать?
Вопрос 2: возможно ли в транзакцию IH01 добавление не просто стандартных полей, но и их текстовое описание. Ну т.е. например добавил я через пункт меню Параметры настройки-Выбор полей-ЕО поле Местоположение или к примеру поле Производственный участок, а оно содержит цифровой идетификатор и это весьма не информативно. Можно ли туда как нибудь добавить поле ТекстОписание к Местоположению или Производственному участку? Может кто делал что нибудь подобное?
-
1. Можно, для иерархических отчетов можно добавить поля в BADI_EAM_STRUCTURE_LIST, добавляете поля какие вам нужно, само собой и заполняете их там же. Там если кратко делаете свою структуру с полями, добавляете их в этом BADI и добавляете так же код для заполнения этих полей.
2. Ну чтобы два раза не вставать для ALV-списка добавление полей делается в BADI_EAM_SINGLELEVELLIST.
PS: Техники добавления для этих BADI различные, видимо писали их очень разные люди 8)
-
1. Можно, для иерархических отчетов можно добавить поля в BADI_EAM_STRUCTURE_LIST, добавляете поля какие вам нужно, само собой и заполняете их там же. Там если кратко делаете свою структуру с полями, добавляете их в этом BADI и добавляете так же код для заполнения этих полей.
У Вас, случайно, нет никакой документации по этому Badi, ну там пример какой нибудь?
-
У Вас, случайно, нет никакой документации по этому Badi, ну там пример какой нибудь?
В системе есть пример реализации для этого бади, класс примера: CL_EX_BADI_EAM_STRUCTURE_LIST можете сами посмотреть.
-
В системе есть пример реализации для этого бади, класс примера: 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.
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 в выборе полей это поле появилось, но конечно же оно пустое. Вот как мне передать в это поле значение?
-
В общем я так и не понял как работать с этим классом, но после долгого брожения в отладчике, вроде нашёл куда втиснуть свой ENHANCEMENT. Использовал для этих целей стандартную программу иерархического отчёта RIIFLO10 Представление структуры технического места - include MIHIXF10.
Предварительно создал дополнительную структуру Z к существующей физической структуре RIHEQUI, в неё добавил нужные мне z поля. Потом нужно запустить транзакцию OIWE и проверить появились ли там эти поля. В ENHANCEMENT вставил вот это:
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. Возможно реализация не самая лучшая, но работает. Вдруг кому понадобиться.