| 
					
						 Добрый день.   Необходимо считывать атрибуты навигации  из инфо-провайдера. Использую стандартный FM RSDRI_INFOPROV_READ.
  Данному FM на вход поступает таблица с перечнем признаков. Данная таблица ссылается на тип таблицы RSDRI_TH_SFC. В данном типе таблицы тип строки структура RSDRI_S_SFC.   В структуре RSDRI_S_SFC есть два используемых поля  CHANM (char-30)- техническое имя признака. CHAALIAS (char- 18) псевдоним признака. 
  При чтения данных оба этих поля обязаны быть заполнены техническим наименование признака. При считывания признака проблем не возникает, так как длина признака 9 символов. При считывании Атрибута навигации, FM возвращает ошибку- ТИП 11. Общая ошибка
  Опытным путем было установлено следующее,  если длина Атрибута навигации и признака не превышает 18 символов (будет добавляться в поля CHAALIAS), то FM отрабатывает без ошибок. Регламент наименование объектов в компании для признаков 9 символом.  То есть длина тарибута навигации будет 9+ 2 спец символа ("__") + 9 символов самого атрибута навигации. В итоге длина = 20 символов. Перенастраивать модель очень не хотелось бы, далеко не один атрибут навигации создан в системе. Коллеги, может есть какие -нибудь решения, кто как решал ранее данную проблему? Искали с коллегами ноту для расширения на SCN -не нашли.
     
 
  Пример считывания :
  REPORT ztest_atrnav.
 
  * Типы для таблицы с результатом для куба TYPES:      BEGIN OF lts_edo3b553,"<---СТРУКТУРА ВОЗВРАТА          ecbem0017 TYPE /bic/oiecbem0017,          ectls0010 TYPE /bic/oiectls0010,          ecbls0017 TYPE /bic/oiecbls0017,         ecbls0094 TYPE /bic/oiecbls0094,          ecbls0018 TYPE /bic/oiecbls0018,          ecbls0006 TYPE /bic/oiecbls0006,          ecbls0016 TYPE /bic/oiecbls0016,          ectls0010__etr1 TYPE /bic/oietr1,
  *Показатели         efi00003 TYPE /bic/oiefi00003,  END OF lts_edo3b553 .
  TYPES:      BEGIN OF lts_edo3b553_ext, "<---СТРУКТУРА расширенная + рассчитанные показатели         ecbem0017 TYPE /bic/oiecbem0017,          ectls0010 TYPE /bic/oiectls0010,          ecbls0017 TYPE /bic/oiecbls0017,          ecbls0094 TYPE /bic/oiecbls0094,          ecbls0006 TYPE /bic/oiecbls0006,          ecbls0016 TYPE /bic/oiecbls0016,          ectls0010__etr1 TYPE /bic/oietr1, *Показатели         efi00003 TYPE /bic/oiefi00003,        END OF lts_edo3b553_ext.
 
  * Тип для таблицы с результатом DATA: lt_edo3b553           TYPE STANDARD TABLE OF lts_edo3b553_ext, " для вывода в EXCEL       ls_edo3b553 LIKE LINE OF lt_edo3b553.
  DATA: pi_infoprov_edo3b553 TYPE rsinfoprov ,       pi_th_sfc_edo3b553 TYPE  rsdri_th_sfc ,       pi_th_sfk_edo3b553 TYPE  rsdri_th_sfk,
        wa1_edo3b553 LIKE LINE OF pi_th_sfc_edo3b553,       wa2_edo3b553 LIKE LINE OF pi_th_sfk_edo3b553,
        g_end_of_data_edo3b553 TYPE rs_bool, "флаг окончания чтения       g_first_call_edo3b553 TYPE rs_bool,  "флаг начала чтения
        "<---ТАБЛИЦА СО ЗНАЧЕНИЯМИ ПЕРЕДАВАЕМЫХ ПАРАМЕТРОВ        g_t_range_edo3b553       TYPE rsdri_t_range,
        "<---ПОЛЕ ТАБЛИЦЫ СО ЗНАЧЕНИЯМИ ПАРАМЕТРОВ       g_s_range_edo3b553       TYPE rsdri_s_range,
        "<---ПЕРЕМЕННЫЕ ДЛЯ СУММИРОВАНИЯ ПРОМЕЖУТОЧНЫХ ИТОГОВ       l_efi00003 TYPE /bic/oiefi00003,  
        " Таблица куда будет возвращен результат из куба       e_t_all_edo3b553 TYPE TABLE OF lts_edo3b553,       e_t_edo3b553 TYPE TABLE OF lts_edo3b553 .
  FIELD-SYMBOLS:      <fs_e_t_edo3b553> TYPE lts_edo3b553, "<---ФС ДЛЯ ЦИКЛА СУММИРОВАНИЯ ПРОМЕЖУТОЧНЫХ ИТОГОВ      <ls_ds_edo3b553>            LIKE LINE OF e_t_edo3b553,      <ls_ds_edo3b553_ext>            LIKE LINE OF lt_edo3b553.
  CLEAR pi_th_sfc_edo3b553. CLEAR pi_th_sfk_edo3b553. CLEAR g_t_range_edo3b553. CLEAR: l_efi00003. 
 
  pi_infoprov_edo3b553 = 'EDO3B553'. g_end_of_data_edo3b553 = rs_c_false. g_first_call_edo3b553 = rs_c_true.
 
  wa1_edo3b553-chanm    = 'ECBEM0017'.  wa1_edo3b553-chaalias = 'ECBEM0017'. wa1_edo3b553-orderby  = 0.  INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
    wa1_edo3b553-chanm    = 'ECTLS0010'.  wa1_edo3b553-chaalias = 'ECTLS0010'. wa1_edo3b553-orderby  = 0.  INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
 
  wa1_edo3b553-chanm    = 'ECBLS0017'.  wa1_edo3b553-chaalias = 'ECBLS0017'. wa1_edo3b553-orderby  = 0.  INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
    wa1_edo3b553-chanm    = 'ECBLS0094'.  wa1_edo3b553-chaalias = 'ECBLS0094'. wa1_edo3b553-orderby  = 0.  INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
    wa1_edo3b553-chanm    = 'ECBLS0018'. wa1_edo3b553-chaalias = 'ECBLS0018'. wa1_edo3b553-orderby  = 0. INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
  wa1_edo3b553-chanm    = 'ECBLS0006'. wa1_edo3b553-chaalias = 'ECBLS0006'. wa1_edo3b553-orderby  = 0. INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
 
  wa1_edo3b553-chanm    = 'ECBLS0016'.  wa1_edo3b553-chaalias = 'ECBLS0016'. wa1_edo3b553-orderby  = 0.  INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
    wa1_edo3b553-chanm    = 'ECTLS0010__ETR1'.” АТРИБУТ НАВИГАЦИИ КОТОРЫЕ НЕОБХОДИОМ ПОЛУЧИТЬ wa1_edo3b553-chaalias = 'ECTLS0010__ETR'. wa1_edo3b553-orderby  = 0.  INSERT wa1_edo3b553 INTO TABLE pi_th_sfc_edo3b553. 
 
  **++++++++++ Показатели ++ *
  wa2_edo3b553-kyfnm = 'EFI00003'. wa2_edo3b553-kyfalias = 'EFI00003'. wa2_edo3b553-aggr = 'SUM'. INSERT wa2_edo3b553 INTO TABLE pi_th_sfk_edo3b553.
 
  " ФМ  WHILE g_end_of_data_edo3b553 NE 'X'. "<---ПОКА НЕ ПРИДЕТ ФЛАГ ПОСЛЕДНЕГО ПАКЕТА   CALL FUNCTION 'RSDRI_INFOPROV_READ'     EXPORTING       i_infoprov             = pi_infoprov_edo3b553       i_th_sfc               = pi_th_sfc_edo3b553 "признаки       i_th_sfk               = pi_th_sfk_edo3b553 "показатели       i_t_range              = g_t_range_edo3b553 "ограничения       i_reference_date       = sy-datum       i_save_in_table        = rs_c_false       i_save_in_file         = rs_c_false       i_packagesize          = 9999999       i_authority_check      = rsdrc_c_authchk-read       i_use_aggregates       = rs_c_true       i_use_db_aggregation   = rs_c_true *     i_rollup_only          = rs_c_false *     i_read_ods_delta       = rs_c_false     IMPORTING       e_t_data               = e_t_edo3b553       e_end_of_data          = g_end_of_data_edo3b553     CHANGING       c_first_call           = g_first_call_edo3b553     EXCEPTIONS      ILLEGAL_INPUT                = 1      ILLEGAL_INPUT_SFC            = 2      ILLEGAL_INPUT_SFK            = 3      ILLEGAL_INPUT_RANGE          = 4      ILLEGAL_INPUT_TABLESEL       = 5      NO_AUTHORIZATION             = 6      ILLEGAL_DOWNLOAD             = 7      ILLEGAL_TABLENAME            = 8      TRANS_NO_WRITE_MODE          = 9      INHERITED_ERROR              = 10      X_MESSAGE                    = 11      NO_COMMIT_FREE_READ          = 12      OTHERS                       = 13.
 
  *  CHECK SY-SUBRC = 0. "<---ПРОВЕРКА, ЧТО ВСЕ ОК   IF sy-subrc <> 0.  "<---ПРОВЕРКА, ЧТО ВСЕ ОК *    CONCATENATE.     MESSAGE e001(zeasez) WITH sy-subrc.     EXIT.   ENDIF.
    LOOP AT e_t_edo3b553 ASSIGNING <fs_e_t_edo3b553>. "<---ЦИКЛ СУММИРОВАНИЯ ПРОМЕЖУТОЧНЫХ ИТОГОВ     l_efi00003 = l_efi00003 + <fs_e_t_edo3b553>-efi00003. "EFI00003 
    ENDLOOP.
    APPEND LINES OF e_t_edo3b553 TO e_t_all_edo3b553.   BREAK-POINT. ENDWHILE. * **загрузка в расширенную структуру * "e_t[] = e_t_all[]. * LOOP AT e_t_edo3b553[] ASSIGNING <ls_ds_edo3b553>.   APPEND INITIAL LINE TO lt_edo3b553 ASSIGNING <ls_ds_edo3b553_ext>.   MOVE-CORRESPONDING <ls_ds_edo3b553> TO <ls_ds_edo3b553_ext>. ENDLOOP. 
					
  
						
						
							
							 							 | 
						 
						 
					 |