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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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