Текущее время: Сб, июн 21 2025, 00:06

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


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

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


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

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