Текущее время: Пн, июл 21 2025, 13:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 13:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
коллеги, добрый день.
в PPOME выведено два пользовательских столбца с разрядом и категорией. и вместо стандартного текста штатной должности из 1000 инфотипа подтягивается текст из 1002 инфотипа.
проблема возникает, когда в PPOME в соответствующих закладках редактируем эту информацию. она по нажатию на enter или сохранение не обновляется в соответствующих столбцах, нужно выходить из транзакции и заходить обратно.
поковырялась с ФМ для обновления данных в T77COL, но как-то не помогло - то ли он недостаточно информации на вход получает, то ли я плохо смотрела.

кто с таким сталкивался\боролся, подскажите, куда копать?
спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 13:55 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Могу сказать только что хреново написан ФМ ;-)... Если его правильно заабапить то проблем просто не возникает. Чем смогу помогу. Кидайте настройки этой группы столбцов и ФМ для этого конкретного столбца - исправим.

В общем виде ФМ должен быть вот такой:
Code:
function Z_COLUMNS.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(COL_KEY) TYPE  TV_ITMNAME
*"     VALUE(TREE_HANDLE) TYPE REF TO  CL_GUI_CONTROL
*"     VALUE(KEY_DATE) LIKE  OBJEC-BEGDA
*"     VALUE(BEGDA) LIKE  OBJEC-BEGDA
*"     VALUE(ENDDA) LIKE  OBJEC-ENDDA
*"  TABLES
*"      TREE_OBJECTS STRUCTURE  TREE_OBJEC
*"      TREE_STRUCTURE STRUCTURE  TREE_STRUC
*"      COLUMN_CONTENT STRUCTURE  ORGNODECON
*"      LEGEND_ICON_TEXT STRUCTURE  TREELEGEND OPTIONAL
*"----------------------------------------------------------------------
clear: column_content[], column_content.
field-symbols:
  <structure> type tree_struc,
  <objects>   type tree_objec.

  case col_key.
* обработка только столбца Z_COL_NAME
    when 'Z_COL_NAME'.
      loop at tree_objects assigning <objects> where otype eq 'O.
        column_content-content = 'наименование из 1002  инфотипа'.
* обновление данные столбца
        append column_content.
       endloop.
  endcase.

_________________
С уважением, Р.В. Величко


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 14:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
Code:
FUNCTION Z_RH_GET_ADDITIONAL_INFO.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(COL_KEY) TYPE  TV_ITMNAME
*"     VALUE(TREE_HANDLE)
*"     VALUE(KEY_DATE) LIKE  OBJEC-BEGDA
*"     VALUE(BEGDA) LIKE  OBJEC-BEGDA
*"     VALUE(ENDDA) LIKE  OBJEC-ENDDA
*"  TABLES
*"      TREE_OBJECTS STRUCTURE  TREE_OBJEC
*"      TREE_STRUCTURE STRUCTURE  TREE_STRUC
*"      COLUMN_CONTENT STRUCTURE  ORGNODECON
*"      LEGEND_ICON_TEXT STRUCTURE  TREELEGEND OPTIONAL
*"----------------------------------------------------------------------

  INCLUDE <icon>.

  tables: hrp1013.

  DATA: in_objects        LIKE hrrootob OCCURS 0 WITH HEADER LINE.
  DATA: main_costcenters  LIKE hri1001_cost  OCCURS 0 WITH HEADER LINE.
  DATA: dist_costcenters  LIKE hri1001_cost  OCCURS 0 WITH HEADER LINE.

  DATA: plvar    TYPE plvar.
  DATA lt_objects LIKE hrobject OCCURS 0 WITH HEADER LINE.
  DATA: costkey LIKE pkeyk.
  DATA: kostl_name LIKE hrca_costc-objectname.
  DATA: kostl_sname LIKE hrca_costc-shortname.
  DATA perc_sum LIKE bseg-dmbtr.

  DATA: dist_icon LIKE orgnodecon-icon.


  WRITE ('ICON_TE_COSTS_ASSIGN') TO dist_icon AS ICON.


  READ TABLE tree_objects INDEX 1.
  IF sy-subrc = 0.
    plvar =  tree_objects-plvar.
  ENDIF.

*                        обработка всех объектов дерева
  LOOP AT tree_objects WHERE otype = 'S'.
    clear hrp1013. clear zkval.
    CLEAR column_content.
    column_content-node_key = tree_objects-node_key.

    CASE col_key.
*                              оклад или тип оплаты
      WHEN 'ZKATEG' OR
           'ZCHARACT'.
*                                      если объект - штатная должность
*                                      то читаем для него данные
        SELECT SINGLE ZZKRD ZZUK
          INTO (hrp1013-ZZKRD, hrp1013-ZZUK)
          FROM hrp1013
          WHERE plvar  = tree_objects-plvar
           AND otype = tree_objects-otype
           AND objid = tree_objects-objid
           AND begda LE endda
           AND endda GE begda.

        IF sy-subrc = 0.

        SELECT SINGLE tkval tharact
          INTO (zkval-tkval, zkval-tharact)
          FROM zkval
          WHERE
            kkval = hrp1013-ZZKRD and
            kharact = hrp1013-ZZUK.

          CASE col_key.
            WHEN 'ZCHARACT'.
              column_content-content = zkval-tharact.

            WHEN 'ZKATEG'.
              column_content-content = zkval-tkval.

          ENDCASE.

          SHIFT column_content-content LEFT DELETING LEADING space.
          APPEND column_content.

        ENDIF.
    ENDCASE.
*
  ENDLOOP.

*  ENDIF.

ENDFUNCTION.


это код ФМ, который заполняет столбцы разрядом и категорией из 1013 ИТ, пользовательские поля.
такое впечатление, что программа обращается к нему только когда первый раз строит дерево по выбранной оргединице.

UPD.
или вопрос в том, что категория и разряд вытягиваются из hrp таблицы, а по нажатию на enter она ещё не обновлена. нужно как-то обращаться к буферу по этой закладке?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 14:21 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Я ж говорю хреновый код.
ФМ должен сначала обрабатывать наименование столбца через case col_key (это для устранения проблем с производительностью), далее внутри WHEN требуется отбирать только те объекты из ОМ для которых этот столбец релевантен, потом заполнять все необходимые данные в структуре COLUMN_CONTENT и в самом конце добавлять их через append COLUMN_CONTENT.

Главное вычищать COLUMN_CONTENT перед обработкой чтобы данные были всегда актуальные, ну не забыть анализировать даты которые пользователь указал в PPOME(SE).

Косяки Вашего исходного кода:
1. Строки с READ TABLE tree_object - этого делать не надо вовсе, иначе будут непредсказуемые результаты
2. ФМ отрабатывает тлько для S ок - в корне не верно, SAP рекомендует при разработке таких ФМ использовать проверки конкретного столбца (опять же привет производтельности системы)
3. Очищается только головная запись COLUMN_CONTENT а не вся таблица COLUMN_CONTENT[] - может остаться мусор, что скорее всего у Вас и происходит и приходится PPOME перегружать;
4. Идет прямой доступ к инфотипам - скажем привет полномочиям;
5. Не используется ограничение доступа к инфотипу по дате KEY_DATE;
6. CASE внутри CASE по одним и тем же критериям - производительность будет хромать + не предсказуемый результат выполнения и как следствие не верные данные в столбце;
7. Если надо читать данные которые еще не сохранены надо использовать вот этот ФМ RHOM_READ_INFTY_BUFFERED. Но чтобы это работало обязательно закладка должна в буфер что-то положить, если она стандартная то проблем нет, если пользовательская - то 100% у Вас те же проблемы и в пользовательской закладке.

_________________
С уважением, Р.В. Величко


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 14:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
я согласна с Вашими замечаниями, но они касаются производительности кода. Они никак не решают проблему того, что после редактировании закладки "Группа\Категория" и сохранения к этому ФМ обращения нет (проверила просто через BREAK-POINT в самом начале ФМ до любой логики).

может нужно добавить ещё какую-то обработку в саму закладку? с вызовом этого ФМ или стандартной обработки дерева?
и как быть с ситуацией, что изменения ещё не сохранены в hrp1013 и сидят в буфере?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 14:54 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Если обращения нет - то этот столбец не вызывается в PPOME. PPOME же до безобразия просто сапом разработана. Если в деревы Вы указали что столбец должен отображаться то из настроек (T77COL) по этому столбцу считывается ФМ из поля T77COL-CB_CONTENT и тупо вызывается. Все... Проверьте настройки столбца.

Чтобы это проверить под собой:
1. Запустить SU3
2. Добавить параметр OM_ARRAYTYPE_DISPLAY=X.
3. в PPOME нажмите кнопку отображения столбцов и в диалоге нажмите кнопку "ТехИнформация"
4. Посмотрите есть ли там Ваш столбец и дальше в T77COL ищите по этому столбцу ФМ и вот в нем уже ставьте контрольные точки.

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

И самое последнее, судя по Вашему коду столбец релевантен только для S, тут уж внимательно смотрите в PPOME что выбрано и для чего должны отображаться данные.

Чтобы данные можно было считать из буфера используйте только ФМ либо тот который я опсиал чуть выше (п.7) либо банальный RH_READ_INFTY так как ФМ автоматом проверяют буфера.

_________________
С уважением, Р.В. Величко


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 14:59 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
столбец отображается в PPOME, его можно скрыть и отобразить в конфигурации столбцов.
при выборе организационной единице из поиска в структуре (и просто при открытии PPOME) информация в столбцах отображается корректно - та, которая введена на конкретных штатных должностях.
проблема именно в том, что после редактирования этой информации в отдельной закладке в этом же PPOME обновления в столбце не происходит - надо или выходить из транзакции или переключаться на другую оргединицу. тогда дерево строится заново и этот ФМ вызывается снова.

подозреваю, что надо всё-таки искать, что нужно дописывать в саму закладку, чтобы вызывалось обновление по объекту.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 15:03 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Екатерина, понимаете столбца живут отдельно, закладки отдельно, все вызывает последовательно PPOME, все это динамические вызовы - так разработано PPOME. Попробуйте все же найти настройки и поставить точку (не просто BREAK-POINT) а именно точку остановки через se37, если в этот ФМ нет входа то он не вызывается из-за проблем настроек столбцов (группы столбцов)...

Хотя если закладка для 1013 инфотипа пользовательская то да - может быть и там проблема буфферов.

_________________
С уважением, Р.В. Величко


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 20:06 
Специалист
Специалист

Зарегистрирован:
Чт, фев 12 2009, 12:47
Сообщения: 117
Откуда: Kiev
Пол: Мужской
Дело в том, что информация еще не записана в базу данных. Она в буффере OM.
Группа функций RHOMBUFFER должна помочь. ФМ RHOM_READ_INFTY_BUFFERED вместо селекта с базы данных точно работает.

_________________
SAP macht frei


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Ср, окт 02 2013, 20:56 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
YSICHOV написал:
Группа функций RHOMBUFFER должна помочь. ФМ RHOM_READ_INFTY_BUFFERED вместо селекта с базы данных точно работает.


спасибо, как раз вот над ней размышляла.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Чт, окт 03 2013, 10:44 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
в общем, RHOM_READ_INFTY_BUFFERED действительно помог, в буфере всё сохранялось, нужно было только считать.

но проблема с обновлением данных в столбцах осталась - дерево обновлялось только при изменении текстов на первой закладке. и только после этого уже подтягивались и обновлённые данные из 1013 инфотипа.

и проблема, судя по всему, в ФМ OM_GEN_OV_REDUCED_REFRESH - он запускает обновление дерева только если изменяется 1000 инфотип. Из-за вот этой строки:

Code:
DELETE plogtab WHERE infty <> 1000.


может, я просто изобретаю велосипед и нужно в закладку вставить какой-нибудь ФМ, запускающий принудительное обновление дерева?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Чт, окт 03 2013, 14:33 
Специалист
Специалист

Зарегистрирован:
Чт, фев 12 2009, 12:47
Сообщения: 117
Откуда: Kiev
Пол: Мужской
Екатерина Мячина написала:
в общем, RHOM_READ_INFTY_BUFFERED действительно помог, в буфере всё сохранялось, нужно было только считать.

но проблема с обновлением данных в столбцах осталась - дерево обновлялось только при изменении текстов на первой закладке. и только после этого уже подтягивались и обновлённые данные из 1013 инфотипа.

и проблема, судя по всему, в ФМ OM_GEN_OV_REDUCED_REFRESH - он запускает обновление дерева только если изменяется 1000 инфотип. Из-за вот этой строки:

Code:
DELETE plogtab WHERE infty <> 1000.


может, я просто изобретаю велосипед и нужно в закладку вставить какой-нибудь ФМ, запускающий принудительное обновление дерева?


может, чтобы не брать ключ разработчика и проверить гипотезу, в начало ФМ OM_GEN_OV_REDUCED_REFRESH добавить энхансмент с телом ФМ, закомментировать строчку DELETE и выйти из ФМ до начала стандартного кода. А дальше пусть владелец решает как быть: OSS или ключ

_________________
SAP macht frei


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Чт, окт 03 2013, 14:49 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
В нашей системе пользовательские ФМ для пользовательских столбцов работают корректно, никакого шаманства со стандартными ФМ производить не надо, проблема не в этом. Приведенные исходник об удалении того что не равно 1000 инфотипу вызывается строго после обновления дерева вот этим ФМ который в свою учеред динамически вызывает ФМ для данных в столбцах.

1. Вот стэк вызовов:
Code:
15      FUNCTION   ZINHR_PLANS_ALL
14      FORM   GET_CONT_OF_USER_COLS
13      FORM   FILL_NODE_AND_ITEMS
12      FORM   REFRESH_TREE
11      FUNCTION   OM_OOT_REFRESH_TREE
10      FUNCTION   OM_GEN_OVERVIEW_REFRESH
9      FUNCTION   OM_GEN_OV_REDUCED_REFRESH
8      FUNCTION   NF_GM_CALL_OVERVIEW_FUNCTION
7      FORM   EM_EVENT_TO_CURRENT_OBJECTS
6      FUNCTION   NF_GM_REFRESH_CURRENT_OBJECTS
5      FORM   PM_START_NEW_LUW
4      MODULE (PAI)   START_NEW_LUW
3      FORM   PM_START_FRAMEWORK
2      FUNCTION   NF_GM_CREATE
1      EVENT   START-OF-SELECTION

Смотрим на эвенты 9 и затем 10.
10 эвент вызывается вот здесь (call function OM_GEN_OVERVIEW_REFRESH)
Code:
    LOOP AT plogtab TRANSPORTING NO FIELDS
                    WHERE infty = '1001'
                    OR    infty = '1008'                    "relat 015
                    OR    infty = '1018'                    "relat 014
                    OR    infty = '1208'                    "relat 222
                    OR    infty = '1005'                "public sector
                    OR    infty = '1501'
                    OR    infty = '1504'
                    OR    infty = '1506'
                    OR    infty = '1509'
                    OR    infty = '1520'.               "public sector
*                   OR    infty = 'XXXX'.
      EXIT.
    ENDLOOP.
    IF sy-subrc = 0.
      CALL FUNCTION 'OM_GEN_OVERVIEW_REFRESH'.
      EXIT.
    ENDIF.

*   special treatment for infotype 1000
   DELETE plogtab WHERE infty <> 1000.

и только потом уже идет
Code:
DELETE plogtab WHERE infty <> 1000.


Так что 100% проблема у Вас не в этом ФМе.

_________________
С уважением, Р.В. Величко


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Чт, окт 03 2013, 15:23 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 13 2006, 11:59
Сообщения: 221
Откуда: Киев
Пол: Женский
и получается, что если моего инфотипа (1013) нет в этом списке
Code:
                    WHERE infty = '1001'
                    OR    infty = '1008'                    "relat 015
                    OR    infty = '1018'                    "relat 014
                    OR    infty = '1208'                    "relat 222
                    OR    infty = '1005'                "public sector
                    OR    infty = '1501'
                    OR    infty = '1504'
                    OR    infty = '1506'
                    OR    infty = '1509'
                    OR    infty = '1520'.               "public sector
*                   OR    infty = 'XXXX'.

то и дальше он не обработается, потому что всё, что не равно 1000 удаляется?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: пользовательские столбцы в PPOME
СообщениеДобавлено: Пт, окт 04 2013, 10:04 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, ноя 07 2006, 10:12
Сообщения: 1194
Откуда: Москва
Пол: Мужской
Хм.. да уж, прощу прощения не сразу обратил внимания на то что в списке нет этого 1013 инфотипа. Как вариант можете переписать этот ФМ с включением туда не только этих инфотипов, ну и проставить его в настройки к GOWD (есть такое элемент в настройках, к нему и привязан этот ФМ).

_________________
С уважением, Р.В. Величко


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB