Текущее время: Вт, июн 24 2025, 15:48

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


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

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


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

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