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

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


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

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


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

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