Текущее время: Пн, июн 23 2025, 18:31

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




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 28 2008, 08:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 09:59
Сообщения: 1097
Откуда: Moscow
Пол: Мужской
Zharik написал(а):
Как показала практика использования виртуальных признаков/показателей, от них необходимо по-максимому избавляться.
Лучше расчет перенести на трансформации, иначе процесс формирования отчета будет становиться бесконечным с ростом числа данных.


Золотые слова, Юрий Бенедиктович ! (с) Наша Раша...

Но не всегда это возможно...

Кстати, виртуальные признаки и показатели не так сильно нагружают систему ( если там примитивные расчеты ) как кажется... Время тратиться только на проведение расчета и все. Но все равно это плохо. А вот если попытаться отфильтровать по виртуальному признаку, да еще и с большим объемом - то тут да...

_________________
In SAP we trust !


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 28 2008, 10:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
EvgenySA написал(а):
Вот такой код должен быть.
Code:
METHOD if_ex_rsr_olap_badi~initialize.
...

Чтож это за фигня такая, наплодили хаутушек и ни в одной ни слова об этом.

EvgenySA большое спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 28 2008, 13:28 
Специалист
Специалист

Зарегистрирован:
Пт, апр 13 2007, 17:15
Сообщения: 225
Lench написал:
Чтож это за фигня такая, наплодили хаутушек и ни в одной ни слова об этом.

EvgenySA большое спасибо!

Не за что. Индийские хаутушки это жесть :)

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


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

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Добрый день коллеги!

Создал расширение ZVAR_IMPLT для BADI RSR_OLAP_BADI.

В методе COMPUTE прописал:

Code:
FIELD-SYMBOLS <fs_zvirtkf> TYPE ANY.
  p_kyf_zvirtkf = 16.
  ASSIGN COMPONENT p_kyf_zvirtkf OF STRUCTURE c_s_data "
  TO <fs_zvirtkf>.
  <fs_zvirtkf> = '41.0'.


При тестировании расширения валится в дамп : GETWA_NOT_ASSIGNED.

Оказалось, что имя поля в c_s_data называется не P_KYF_ZVIRTKF, a S_____626.

Почему так ? И где проставляются суффиксы P_CHA_ и P_KYF_ ?

-------------------
SAPKW70018


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

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
в initialization нужно раскомментарить код


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 11:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Lench написал:
в initialization нужно раскомментарить код


Вставил код в метод INITIALIZE, там есть кусок:
Code:
LOOP AT i_th_sfk ASSIGNING <l_s_sfk>.

    CONCATENATE 'P_KYF' <l_s_sfk>-kyfnm
        INTO l_global_name
        SEPARATED BY '_'.

    UNASSIGN <l_global>.
    ASSIGN (l_global_name) TO <l_global>.
    CHECK <l_global> IS ASSIGNED.
    <l_global> = cl_exm_im_rsr_olap_badi=>get_field_position_d(
                                       i_fieldnm = <l_s_sfk>-kyfnm
                                       i_s_data  = i_s_data ).

Валится вдамп:
Цитата:
EОбъект FIELD I_S_DATA-ZVIRTKF не найден. RS_EXCEPTION 111
I>> Строка: 14 Inc: GET_FIELD_POSITION_D Прог.: CL_EXM_IM_RSR_OLAP_BADI RS_EXCEPTION 301

Поскольку в таблице i_s_data поле ZVIRTKF называется Z____626.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 11:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
Найдите одно отличие: :)

Code:
method IF_EX_RSR_OLAP_BADI~INITIALIZE.


  DATA: l_global_name TYPE string.
  FIELD-SYMBOLS:
        <l_global>    TYPE i,
        <l_s_sfc>     TYPE rrkg_s_sfc,
        <l_s_sfk>     TYPE rrkg_s_sfk.

* there's no need to change this method
* Just create attributes for each charactersitic
* with name P_CHA_<characteristic> TYPE i.
* and constants for each key figure with name
* P_KYF_<key figure> TYPE i.

  CLASS cl_exm_im_rsr_olap_badi DEFINITION LOAD.

*
* get field postions for characteristics in structure
* and clear p_cha with user_exit EQ rrke_c_mode-none.
  LOOP AT i_th_sfc ASSIGNING <l_s_sfc>.
*       WHERE user_exit NE rrke_c_mode-none.
* field name in structure is keyreturnnm
* name of the global variable
    CONCATENATE 'P_CHA' <l_s_sfc>-chanm
        INTO l_global_name
        SEPARATED BY '_'.
* fill the global variable
    UNASSIGN <l_global>.
    ASSIGN (l_global_name) TO <l_global>.
    CHECK <l_global> IS ASSIGNED.
    IF <l_s_sfc>-user_exit NE rrke_c_mode-none.
      <l_global> = cl_exm_im_rsr_olap_badi=>get_field_position_d(
                                         i_fieldnm = <l_s_sfc>-keyreturnnm
                                         i_s_data  = i_s_data ).
    ELSE.
      <l_global> = 0.
    ENDIF.
  ENDLOOP.

* get field positions for key figures in structure
  LOOP AT i_th_sfk ASSIGNING <l_s_sfk>
       WHERE value_returnnm IS NOT INITIAL.
* name of the global variable
    CONCATENATE 'P_KYF' <l_s_sfk>-kyfnm
        INTO l_global_name
        SEPARATED BY '_'.
* fill the global variable
    UNASSIGN <l_global>.
    ASSIGN (l_global_name) TO <l_global>.
    CHECK <l_global> IS ASSIGNED.
    <l_global> = cl_exm_im_rsr_olap_badi=>get_field_position_d(
                                       i_fieldnm = <l_s_sfk>-value_returnnm
                                       i_s_data  = i_s_data ).
  ENDLOOP.


endmethod.

у нас такой код


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 11:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Code:
<l_s_sfk>-value_returnnm

Угадал ?! :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 11:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
ага ))


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 11:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Дамп ушел, но в методе COMPUTE ничего не поменялось, поле по прежнему назвается Z____626. Кстати, вы мне ксочек из COMPUTE можете выложить ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 11:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
Code:
assign component P_CHA_ZB1CH60 of structure C_S_DATA to <text>.
    <text> = 'Hello World!'.

Code:
IF P_KYF_0RSTT_COUNT > 0 AND P_CHA_ZKFTYP > 0 .
      ASSIGN COMPONENT P_KYF_0RSTT_COUNT OF STRUCTURE C_S_DATA TO  <l_0RSTT_COUNT>.
      CHECK <l_0RSTT_COUNT> IS ASSIGNED.

      ASSIGN COMPONENT P_CHA_ZKFTYP OF STRUCTURE C_S_DATA TO  <l_ZKFTYP>.
      CHECK <l_ZKFTYP> IS ASSIGNED.
      IF <l_ZKFTYP> = 0 .
        <l_0RSTT_COUNT> = 1.
      ENDIF.

    ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Виртуальные признаки и показатели
СообщениеДобавлено: Пт, окт 02 2009, 12:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Вроде все как у вас, а не пашет. Скажите, а на этапе Инициализации в таблице i_th_sfk тоже содержатся значения типа
Z____058
Z____624
Z____625
Z____626 ?

А потом они конвертируются в P_KYF_0MATERIAL, P_KYF_ZVIRTKF ....... ?


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

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
Z____058
Z____624
Z____625
Z____626 это поле <l_s_sfk>-value_returnnm
по нему метод класса cl_exm_im_rsr_olap_badi=>get_field_position_d должен вернуть значение int - номер поля в выходной структуре
P_KYF_0MATERIAL = 321
P_KYF_ZVIRTKF = 1025
Что метод возвращает?


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

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Lench написал:
Z____058
Z____624
Z____625
Z____626 это поле <l_s_sfk>-value_returnnm
по нему метод класса cl_exm_im_rsr_olap_badi=>get_field_position_d должен вернуть значение int - номер поля в выходной структуре
P_KYF_0MATERIAL = 321
P_KYF_ZVIRTKF = 1025
Что метод возвращает?

Code:
<l_global> = 12.


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

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
Ну и нормально
потом в COMPUTE
ASSIGN COMPONENT P_KYF_0MATERIAL OF STRUCTURE C_S_DATA TO <l_kyf>.
<l_kyf> = 1111.

Не работает?


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

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


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

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


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

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