Текущее время: Чт, июн 19 2025, 15:55

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Ср, ноя 16 2011, 19:22 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Всем безглючного кода!
Имею проблемку с ремоделингом: есть куб ZN_DATA, большой, забитый данными в продуктиве. Потребовалось добавить признак в измерения Прочие, но значения нового признака должны быть рассчитаны на основании значения признака Покупатель (SID_ZN_POKUP) измерения Продажи. Поэтому фраза
Code:
ASSIGN COMPONENT 'SID_ZN_POKUP' OF STRUCTURE <L_S_OLD> TO <L_FILLFIELD>.

вызывает у Customer-Exit'а стойкое желание умереть.
Внимание, вопрос: как обратиться в Customer-Exit ремоделинга к значениям признака из другого измерения?

_________________
SAP BW 7.0


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Пт, ноя 18 2011, 17:14 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Шамрик написал(а):
Всем безглючного кода!
Имею проблемку с ремоделингом: есть куб ZN_DATA, большой, забитый данными в продуктиве. Потребовалось добавить признак в измерения Прочие, но значения нового признака должны быть рассчитаны на основании значения признака Покупатель (SID_ZN_POKUP) измерения Продажи. Поэтому фраза
Code:
ASSIGN COMPONENT 'SID_ZN_POKUP' OF STRUCTURE <L_S_OLD> TO <L_FILLFIELD>.

вызывает у Customer-Exit'а стойкое желание умереть.
Внимание, вопрос: как обратиться в Customer-Exit ремоделинга к значениям признака из другого измерения?
Оператор ASSIGN работает очень быстро, потому как обращается по ссылке к нужному ему объекту. А что значит умирает ? Обработка "стоит" на этом операторе ? Код всего exit'а можете показать ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Пт, ноя 18 2011, 17:52 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Шамрик написал(а):
Code:
ASSIGN COMPONENT 'SID_ZN_POKUP' OF STRUCTURE <L_S_OLD> TO <L_FILLFIELD>.

Если падает в дамп, то очень похоже, на то, что ФС <L_S_OLD> "is not assigned"


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Пт, ноя 18 2011, 18:38 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Не совсем корректно я выразился. ASSIGN не срабатывает, т.е. не происходит присвоения. Если написать ASSIGN COMPONENT 'SID_ПОЛЕ_ТОГО_ЖЕ_ИЗМЕРЕНИЯ', то всё работает, а если ASSIGN COMPONENT 'SID_ПОЛЕ_ДРУГОГО_ИЗМЕРЕНИЯ', то "is not assigned". К сожалению, отдебажить ремоделирующий Customer-Exit нельзя: ни один вид точек прерывания не работает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Сб, ноя 19 2011, 18:33 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2008, 07:22
Сообщения: 163
Откуда: Ektb
Пол: Мужской
Шамрик написал(а):
К сожалению, отдебажить ремоделирующий Customer-Exit нельзя: ни один вид точек прерывания не работает.


Сделайте бесконечный цикл и отдебажьтесь с помощью него (тр. sm50).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Пн, ноя 21 2011, 13:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Шамрик написал(а):
Не совсем корректно я выразился. ASSIGN не срабатывает, т.е. не происходит присвоения. Если написать ASSIGN COMPONENT 'SID_ПОЛЕ_ТОГО_ЖЕ_ИЗМЕРЕНИЯ', то всё работает, а если ASSIGN COMPONENT 'SID_ПОЛЕ_ДРУГОГО_ИЗМЕРЕНИЯ', то "is not assigned". К сожалению, отдебажить ремоделирующий Customer-Exit нельзя: ни один вид точек прерывания не работает.
Попробуйте написать вот так:
Code:
ASSIGN COMPONENT 'DIMID' OF STRUCTURE <L_S_OLD> TO <L_FILLFIELD>.
SELECT SINGLE SID_ПОЛЕ_ДРУГОГО ИЗМЕРЕНИЯ
FROM /BIC/D+ДРУГОЕ ИЗМЕРЕНИЕ
INTO L_SID
WHERE DIMID = <L_FILLFIELD>.
CALL FUNCTION 'RRSI_SID_VAL_CONVERT_COMPLETE'
EXPORTING
I_IOBJNM = 'ИНФООБЪЕКТ в ДРУГОМ ИЗМЕРЕНИИ'
I_SID = L_SID
IMPORTING
E_CHAVL = L_VALUE.
EXCEPTIONS
NO_VALUE_FOR_SID = 1
X_MESSAGE = 2
OTHERS = 3.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Ср, фев 01 2012, 14:25 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Цитата:
Попробуйте написать вот так:
Code:
ASSIGN COMPONENT 'DIMID' OF STRUCTURE <L_S_OLD> TO <L_FILLFIELD>.
SELECT SINGLE SID_ПОЛЕ_ДРУГОГО ИЗМЕРЕНИЯ
FROM /BIC/D+ДРУГОЕ ИЗМЕРЕНИЕ
INTO L_SID
WHERE DIMID = <L_FILLFIELD>.
...

Спасибо за совет.
Я так и сделал. Только получилось, что DIMID в "/BIC/D+ОДНО ИЗМЕРЕНИЕ" и в "/BIC/D+ДРУГОЕ ИЗМЕРЕНИЕ" разный (499 и 1287), так что этот SELECT не помогает.
Возникла гораздо более критичная проблема. Когда я дебажил (спасибо Ash за совет!) присвоение, у меня вылетело с ошибкой (с кем не бывает?). Только после этого я не могу в "/BIC/D+ДРУГОЕ ИЗМЕРЕНИЕ" Повторным моделированием при наличии данных ни добавить любой новый признак, ни удалить существующий. Ругается: GETWA_NOT_ASSIGNED. Выдержка дампа:
Code:
|Фрагмент исходного текста программы                                                               |
----------------------------------------------------------------------------------------------------
|Строк|ИсхднТкст                                                                                   |
----------------------------------------------------------------------------------------------------
|    1|METHOD if_rscnv_operation~convert.                                                          |
|    8|  FIELD-SYMBOLS: <l_s_oldtable> TYPE ANY.                                                   |
|    9|  FIELD-SYMBOLS: <l_s_newtable> TYPE ANY.                                                   |
|   10|  FIELD-SYMBOLS: <l_fillfield> TYPE ANY.                                                    |
|   11|  FIELD-SYMBOLS: <l_addfield> TYPE ANY.                                                     |
|   12|  DATA: l_r_fillfield TYPE REF TO data.                                                     |
|   13|  DATA: l_r_addfield TYPE REF TO data.                                                      |
|   15|  TRY.                                                                                      |
|   17|      ASSIGN c_r_new->* TO <l_s_newtable>.                                                  |
|   20|      ASSIGN COMPONENT p_addfieldnm OF STRUCTURE <l_s_newtable> TO <l_addfield>.            |
|   22|*  GET REFERENCE OF <l_fillfield> INTO l_r_fillfield.                                       |
|>>>>>|      GET REFERENCE OF <l_addfield> INTO l_r_addfield.   


Если добавить новый признак в пустой куб, заполнить данными и попытаться Удалить данные(в rsa1), то вываливается DBIF_RSQL_SQL_ERROR. Выдержка:
Code:
|Указания по устранению ошибки                                                                     |
|    Database error text........: "ORA-00904: "SID_НОВОЕ ПОЛЕ": invalid identifier"                 |
|    Internal call code.........: "[RSQL/INSR//BIC/DДРУГОЕ ИЗМЕРЕНИЕ ]"                                   |
|    Please check the entries in the system log (Transaction SM21).                                |


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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Ремоделинг с Customer-Exit: как получить значение из другого измерения?
СообщениеДобавлено: Чт, фев 02 2012, 17:07 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Разобрались.
Пришлось SE14 для "/BIC/D+ДРУГОЕ ИЗМЕРЕНИЕ" -> "Разблокировать таблицу". Это приводит к потере всех данных в таблице, но потом всё работает нормально.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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