Текущее время: Вт, авг 05 2025, 08:17

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Виртуальный куб с сервисами
СообщениеДобавлено: Пн, май 28 2012, 15:41 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
Добрый день!

Тема не новая, но мне очень нужна помощь. Пытаюсь создать виртуальный куб, который использует ФМ. Нашла кучу хаутушек (в том числе и How To…Implement a virtual InfoProvider with Services), но что-то они не очень помогли.

По идее ФМ должен выбирать данные из ОДС ZOST_GP.
Результирующая таблица e_t_data странная, ей как будто не передается нужный формат. При формировании отчета в BEX появляется ошибка
An exception with the type: CX_SY_DYN_CALL_PARAM_MISSING occurred, but wa
Function call of ZCUB_VRT_FM failed; the: obligatory parameter E_T_DATA:
Системная ошибка в программе SAPLRRK0 и FORM RSRDR;SRRK0F30-01-
И еще при отладке заметила, что таблицы i_th_sfc, i_th_sfk, l_t_component пустые.

В чем может быть проблема и как её решить?
BW 3.5
Заранее спасибо отзывчивым!


Глобальные переменные
TYPE-POOLS:
rsaot,
rsazt,
rs, rsd, rsdd, rsdpm, rsdpr, rsdu, RSDRC, abap, slis.
TYPES:
BEGIN OF oid_tab_wa,
PSTNG_DATE TYPE /BI0/OIPSTNG_DATE,
MATERIAL TYPE /BI0/OIMATERIAL,
PLANT TYPE /BI0/OIPLANT,
OI_MENGE TYPE /BI0/OIOI_MENGE,
BASE_UOM TYPE /BI0/OIBASE_UOM,
LOC_CURRCY TYPE /BI0/OILOC_CURRCY,
/BIC/ZSUM_N TYPE /BIC/OIZSUM_N,
COMP_CODE TYPE /BI0/OICOMP_CODE,
GL_ACCOUNT TYPE /BI0/OIGL_ACCOUNT ,
CHRT_ACCTS TYPE /BI0/OICHRT_ACCTS,
END OF oid_tab_wa.
FUNCTION ZCUB_VRT_FM.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(I_INFOPROV) TYPE RSINFOPROV
*" REFERENCE(I_TH_SFC) TYPE RSDRI_TH_SFC
*" REFERENCE(I_TH_SFK) TYPE RSDRI_TH_SFK
*" REFERENCE(I_T_RANGE) TYPE RSDRI_T_RANGE
*" REFERENCE(I_TX_RANGETAB) TYPE RSDRI_TX_RANGETAB
*" VALUE(I_FIRST_CALL) TYPE RS_BOOL
*" VALUE(I_PACKAGESIZE) TYPE I DEFAULT 1000
*" EXPORTING
*" REFERENCE(E_END_OF_DATA) TYPE RS_BOOL
*" REFERENCE(E_T_MSG) TYPE RS_T_MSG
*" TABLES
*" E_T_DATA
*" EXCEPTIONS
*" WRONG_INPUT
*" READ_ACCESS_ERROR
*"----------------------------------------------------------------------
* initialize
* TYPES:
* BEGIN OF abap_compdescr,
* length TYPE i,
* decimals TYPE i,
* type_kind TYPE char1,
* name TYPE char30,
* END OF abap_compdescr,
*
* BEGIN OF oid_tab_wa,
* PSTNG_DATE TYPE /BI0/OIPSTNG_DATE,
* MATERIAL TYPE /BI0/OIMATERIAL,
* PLANT TYPE /BI0/OIPLANT,
* /BIC/ZKALNR TYPE /BIC/OIZKALNR,
* OI_MENGE TYPE /BI0/OIOI_MENGE,
* BASE_UOM TYPE /BI0/OIBASE_UOM,
* LOC_CURRCY TYPE /BI0/OILOC_CURRCY,
* /BIC/ZSUM_N TYPE /BIC/OIZSUM_N,
* COMP_CODE TYPE /BI0/OICOMP_CODE,
* VAL_CLASS TYPE /BI0/OIVAL_CLASS,
* GL_ACCOUNT TYPE /BI0/OIGL_ACCOUNT ,
* CHRT_ACCTS TYPE /BI0/OICHRT_ACCTS,
* END OF oid_tab_wa.

FIELD-SYMBOLS: <l_s_data> TYPE ANY,
<l_s_tab> TYPE oid_tab_wa.

DATA: oid_tab TYPE TABLE OF oid_tab_wa,
wa_oid_tab TYPE oid_tab_wa,
l_t_component TYPE abap_compdescr_tab.

DATA: L_SELALIAS TYPE RSALIAS.

CLEAR: e_t_data, e_t_msg, oid_tab.
* this is specific to infoprovider VIRTCUBE1
CHECK i_infoprov = 'ZCUB_VIRT'.

select PSTNG_DATE MATERIAL PLANT OI_MENGE
BASE_UOM LOC_CURRCY /BIC/ZSUM_N COMP_CODE
GL_ACCOUNT CHRT_ACCTS
* /BIC/ZKALNR BATCH VAL_CLASS
FROM /BIC/AZOST_GP00
INTO CORRESPONDING FIELDS OF TABLE oid_tab.

IF sy-subrc EQ 0.
*create a working area
ASSIGN LOCAL COPY OF INITIAL LINE OF e_t_data TO <l_s_data>.

* get description of components of <L_S_DATA>
PERFORM get_type_components(saplrsdrc)
USING <l_s_data>
CHANGING l_t_component.
LOOP AT oid_tab ASSIGNING <l_s_tab>.
PERFORM move_oid_tab_to_data
USING <l_s_tab>
i_th_sfc
i_th_sfk
l_t_component
CHANGING <l_s_data>.
* append to output data
APPEND <l_s_data> TO e_t_data.
ENDLOOP.
*all data are selected
e_end_of_data = 'X'.
ENDIF.

ENDFUNCTION.
***********************************************************************
FORM move_oid_tab_to_data
USING i_s_tab TYPE oid_tab_wa
i_th_sfc TYPE rsdri_th_sfc
i_th_sfk TYPE rsdri_th_sfk
i_t_component TYPE abap_compdescr_tab
CHANGING e_s_data TYPE any.

* define FIELD-SYMBOLS
FIELD-SYMBOLS: <l_s_component> TYPE abap_compdescr,
<l_comp_data> TYPE ANY,
<l_s_sfc> TYPE rsdri_s_sfc,
<l_s_sfk> TYPE rsdri_s_sfk.

* Datadeclaration
DATA: l_compno TYPE i,
l_t_component TYPE abap_compdescr_tab,
l_s_tab TYPE oid_tab_wa.

* initialize
CLEAR e_s_data.

l_s_tab = i_s_tab.

* 0CALDAY
IF NOT i_s_tab-PSTNG_DATE IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0CALDAY'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-PSTNG_DATE TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0COMP_CODE
IF NOT i_s_tab-COMP_CODE IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0COMP_CODE'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-COMP_CODE TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0GL_ACCOUNT
IF NOT i_s_tab-GL_ACCOUNT IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0GL_ACCOUNT'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-GL_ACCOUNT TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0MATERIAL
IF NOT i_s_tab-MATERIAL IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0MATERIAL'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-MATERIAL TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0CHRT_ACCTS
IF NOT i_s_tab-CHRT_ACCTS IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0CHRT_ACCTS'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-CHRT_ACCTS TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0PLANT
IF NOT i_s_tab-PLANT IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0PLANT'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-PLANT TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0OI_MENGE
IF NOT i_s_tab-OI_MENGE IS INITIAL.
* get alias name from SFC
READ TABLE i_th_sfk ASSIGNING <l_s_sfk> WITH TABLE KEY kyfnm = '0OI_MENGE'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfk>-kyfalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-OI_MENGE TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* ZSUM_N
IF NOT i_s_tab-/BIC/ZSUM_N IS INITIAL.
* get alias name from SFC
READ TABLE i_th_sfk ASSIGNING <l_s_sfk> WITH TABLE KEY kyfnm = 'ZSUM_N'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfk>-kyfalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-/BIC/ZSUM_N TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0BASE_UOM
IF NOT i_s_tab-BASE_UOM IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0BASE_UOM'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-BASE_UOM TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

* 0LOC_CURRCY
IF NOT i_s_tab-LOC_CURRCY IS INITIAL.
READ TABLE i_th_sfc ASSIGNING <l_s_sfc> WITH TABLE KEY chanm = '0LOC_CURRCY'.
IF sy-subrc = 0.
* get number of target column
READ TABLE i_t_component ASSIGNING <l_s_component> WITH KEY name = <l_s_sfc>-chaalias.
IF sy-subrc = 0.
* number of target data component
l_compno = sy-tabix.
* get target data component
ASSIGN COMPONENT l_compno OF STRUCTURE e_s_data TO <l_comp_data>.
MOVE i_s_tab-LOC_CURRCY TO <l_comp_data>.
ENDIF.
ENDIF.
ENDIF.

endform.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Пт, июн 01 2012, 08:32 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
Есть хотя бы предположения?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 09:47 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 26 2010, 20:07
Сообщения: 240
Пол: Мужской
Добрый день, по поводу "CX_SY_DYN_CALL_PARAM_MISSING", коллеги на http://scn.sap.com подсказывают довольно адекватную вещь проверьте:
Цитата:
Its Simple, You might have forgot to assign a value to non-optiona parameter in the function module interface.

When calling the function module in the print program ( or driver program), Make sure that all manadtory attributes have values assigned.


Вопрос: правильно ли я понимаю в RSA1 при просмотре данных кубика данные выводятся без проблем, исключения возникают именно на этапе создания BEx-запроса?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 10:38 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
AlexanderGamov написал:
Добрый день, по поводу "CX_SY_DYN_CALL_PARAM_MISSING", коллеги на http://scn.sap.com подсказывают довольно адекватную вещь проверьте:
Цитата:
Its Simple, You might have forgot to assign a value to non-optiona parameter in the function module interface.

When calling the function module in the print program ( or driver program), Make sure that all manadtory attributes have values assigned.

?


СПАСИБО! Сейчас проверю, возможно, действительно что-то пропустила.

AlexanderGamov написал:
Вопрос: правильно ли я понимаю в RSA1 при просмотре данных кубика данные выводятся без проблем, исключения возникают именно на этапе создания BEx-запроса?


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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 10:49 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 26 2010, 20:07
Сообщения: 240
Пол: Мужской
Посмотреть значения можно выбрав позицию контекстного меню "Просмотр данных", нажав правую кнопку мыши на данном виртуальном инфопровайре.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 10:56 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
К сожалению данная функция отсутствует.
Есть только:
Изменить
Просмотреть поток данных
Просмотреть модель данных
Удалить
Обзор объектов
Обзор инфо-источников
Сгенерировать источник данных экспорта
Администрирование архива


У нас BW 3.5.

Перепроверила ФМ. Для всех объектов куба определено заполнение.

AlexanderGamov, может у Вас есть еще какие-то предположения? Буду очень благодарна!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 11:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 26 2010, 20:07
Сообщения: 240
Пол: Мужской
Оу :), у меня BW 7.3. И всё корректно работает. Единственное меня смутило, что никак не используется таблица I_T_RANGE, не проверял, но практически уверен, что при наложении ограничений в BEx Query Designer они попросту не будут отрабатывать.
И еще момент, как я понял Вы отлаживаетесь с помощью транзакции RSRT, проверьте почему не заполняются i_th_sfc, i_th_sfk, l_t_component, они не должны быть пустыми.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 11:32 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
Я пользовалась теми же источниками, что и Вы SAP BI - Virtual Infocube based on Function Module (Transport History) и How To…Implement a virtual InfoProvider with Services.
Мне показался странным момент, что мы используем эти таблицы и нигде выше не заполняем их

PERFORM get_type_components(saplrsdrc)
USING <l_s_data>
CHANGING l_t_component.
LOOP AT oid_tab ASSIGNING <l_s_tab>.
PERFORM move_oid_tab_to_data
USING <l_s_tab>
i_th_sfc
i_th_sfk
l_t_component
CHANGING <l_s_data>.


И еще
PERFORM get_type_components(saplrsdrc)
USING <l_s_data>
CHANGING l_t_component.

не возвращает заполненной структуры таблицы l_t_component.
Хотя выше идет определение структуры таблицы <l_s_data>
ASSIGN LOCAL COPY OF INITIAL LINE OF e_t_data TO <l_s_data>.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 12:01 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 26 2010, 20:07
Сообщения: 240
Пол: Мужской
Собственно для моего случая (когда я просматриваю данные через RSA1 "Просмотр данных") перечень выводимых признаков/показателей передаются с таблицами i_th_sfc, i_th_sfk и соответственно заполняются автоматически. Для Вашего случая нужно заполнить данные таблицы в коде функционального модуля. Что касается l_t_component на память не скажу, что происходит с данной таблицей, в данный момент нет возможности отладиться и посмотреть. Напишу позже.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 12:03 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
БОЛЬШОЕ СПАСИБО за помощь!
Буду искать как их заполнить.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Ср, июн 13 2012, 16:05 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 26 2010, 20:07
Сообщения: 240
Пол: Мужской
В общем в версии SAP BW 7.3 все работает по предложенным инструкциям.
Построил BEX-запрос на виртуальном инфопровайдере с сервисом, работает как часы, ограничения признаков и показателей так же работает корректно без дополнительных манипуляций.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Виртуальный куб с сервисами
СообщениеДобавлено: Чт, июн 14 2012, 08:22 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, мар 09 2011, 17:18
Сообщения: 49
Пол: Женский
Мне о BI 7.3 пока можно только мечтать :(

Нашла кривоватый и не очень понятный пример как руками заполнить таблицы i_th_sfc, i_th_sfk. Буду пробовать.

СПАСИБО за помощь!


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

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


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

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


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

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