Текущее время: Вт, апр 16 2024, 21:35

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Загрузка данных из XI
СообщениеДобавлено: Чт, авг 21 2008, 11:34 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 21 2008, 08:57
Сообщения: 3
Необходимо создать ФМ, который бы выгружал данные из одной словарской таблицы в другую. Но есть несколько проблем:
1)Таблица со входными данными может быть произвольной структуры, как и таблица в которую пишем. То есть, надо выгрузить только данные из части полей 1-ой таблицы в соответствующие поля второй, причем имена этих полей не совпадают. Есть определенное соответствие между названями полямей 1-й и 2-й таблиц. Например: поле ZADM 1-й таблицы cоответствует полю /BIC/ZADM (т.е. различие в приставке /BIC/ ) 2-й и т.п. то есть move-corresponding не пройдет. Имена полей менять нельзя.
2) 1-я таблица содержит поле с именем таблицы, куда пишем + несколько "левых" полей типа структуры.
То есть для начала, динамически генерим внутр. таблицу типа 1-й словарской таблицы, грузим в нее данные. Затем надо как-то динамически поменять названия полей этой таблицы, добавить приставку /BIC/. Как это сделать?
Кто что посоветует?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 21 2008, 21:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
1. ФМ REUSE_ALV_FIELDCATALOG_MERGE для получения внутренней таблицы со структурой исходной таблицы + доп.поля.
2. Класс CL_ALV_TABLE_CREATE для создания таблицы № 1
3.Копирование структуры из таблицы из п.1 в таблицу с полями с префиксом "\BIC\"
4. Создание таблицы соответствия полей
5.Создание таблицы № 2 аналогично п.2
6.Копирование записей из таблицы № 1 в таблицу № 2 по полям согласно таблице соответствия полей из п.4 с помощью ASSIGN

п.4 можно заменить на подстановку префикса в п.6 lдля полей таблицы № 2

Если структуры таблиц различаются только префиксом, порядок полей и размерность одинаковые, то можно обойтись без п.4, с помощью ASSIGN COMPONENT <index> OF STRUCTURE ...

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка данных из XI
СообщениеДобавлено: Чт, авг 21 2008, 22:10 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
HelpMe написал(а):
Необходимо создать ФМ, который бы выгружал данные из одной словарской таблицы в другую. Но есть несколько проблем:
...
Одно только непонятно - причём здесь XI?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 21 2008, 23:29 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 02 2005, 20:19
Сообщения: 133
Откуда: Moscow
Вообще примеры подобных задач мне всегда кажутся какими-то "надуманными" что ли ... К чему весь этот огород?
Подозреваю, что задача намного проще, чем Вам это кажется.
Может, сформулируете подробнее + примеры входной и выходной таблиц?

_________________
Монарх - это серъезно (с) "Классик"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка данных из XI
СообщениеДобавлено: Пт, авг 22 2008, 05:23 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 21 2008, 08:57
Сообщения: 3
sy-uname написал(а):
HelpMe написал(а):
Необходимо создать ФМ, который бы выгружал данные из одной словарской таблицы в другую. Но есть несколько проблем:
...
Одно только непонятно - причём здесь XI?


Просто, при загрузке данных из XI, данные пишутся непостредственно в таблицу ODS напрямую. То есть при создании одэски генерится табличка, в которой в полях признаков и показателей автоматом вставляется /BIC/. В XI - ской таблице такую приставку сделать нельзя.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 22 2008, 07:49 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
1. Проблема в принципе надумана. Из плоской таблички обновить ODS достаточно просто.
2. Имеет ли смысл писать напрямую в ODS? Лучше загружать штатно, чтобы создавался журнал и тогда можно, к примеру агрегировать данные в новый инфо-провайдер.
Вы не бросайтесь сразу АБАПить, а предварительно спроектируйте решение вместе с консультантами.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 22 2008, 12:21 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 21 2008, 08:57
Сообщения: 3
Давайте по шагам:
Вот один вариант XI - таблицы:
Имя поля тип
CONTROLLER PRXCTRLTAB - это структура
ZCRST130 CHAR
ZCRST1302 CHAR
ZCRGR3 DEC 17
ZCRGR4 DEC 17
ZCRGR5 DEC 17
ZCRGR6 DEC 17
ZCRGR7 DEC 17
ZCRGR8 DEC 17
ZCRGR9 DEC 17
ZCRGR10 DEC 17
ZADM NUMC 6
ZCRFORM CHAR 8
ZCRPERIOD NUMC
ZCR_PS CHAR 3
ZCRVERS CHAR 2
ZCRTBR NUMC 2
CALDAY XSDDATE_D DATS
REQUEST CHAR 30
DATAPAKID INT4
RECORD INT4 10
+ поле с названем одс-таблицы

Пример одс-таблицы:
Имя поля тип
REQUEST RSREQUNR CHAR 30 0
DATAPAKID RSDATAPID NUMC 6 0
RECORD RSARECORD INT4 10 0
/BIC/ZADM /BIC/OIZADM NUMC 6 0
/BIC/ZCRFORM /BIC/OIZCRFORM CHAR 8 0
/BIC/ZCRVERS /BIC/OIZCRVERS CHAR 3 0
/BIC/ZCRPERIOD /BIC/OIZCRPERIOD NUMC 1 0
CALDAY /BI0/OICALDAY DATS 8 0
RECORDMODE RODMUPDMOD CHAR 1 0
/BIC/ZCRGR3 /BIC/OIZCRGR3 CURR 17 2
/BIC/ZCRGR4 /BIC/OIZCRGR4 CURR 17 2
/BIC/ZCRGR5 /BIC/OIZCRGR5 CURR 17 2
/BIC/ZCRGR6 /BIC/OIZCRGR6 CURR 17 2
/BIC/ZCRGR7 /BIC/OIZCRGR7 CURR 17 2
/BIC/ZCRGR8 /BIC/OIZCRGR8 CURR 17 2
/BIC/ZCRGR9 /BIC/OIZCRGR9 CURR 17 2
/BIC/ZCRGR10 /BIC/OIZCRGR10 CURR 17 2
/BIC/ZCRST130 /BIC/OIZCRST130 CHAR 5 0
/BIC/ZCRST1302 /BIC/OIZCRST1302 CHAR 5 0
/BIC/ZCR_PS /BIC/OIZCR_PS CHAR 5 0
/BIC/ZCRTBR /BIC/OIZCRTBR NUMC 2 0
1)Заранее мы не знаем какие поля будут в одс и в XI - таблице.
2)Названия и типы соотв полей не совпадают. Только знаем соответствия в именах.
Что я делаю:
а)Создаю структуру и вн. таблицу типа XI, Заполняю эту таблицу данными. То есть эта таблица не плоская и поля в ней без /BIC/.
Что дальше? insert в одс нет смыла. move-corresponding в структуру типа одс тоже не пройдет, имена полей разные. Делать таблицу соответствий между именами полей - тоже не вариант, со временем появятся новые формы, придется снова АБАПИТЬ. Консультанты настаивают на АБАПЕ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 22 2008, 14:17 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
Ещё раз.
Проблема полостью надумана. Вы так плавно подойдете к динамическому присвоению полей, согласно настроечной таблицы. И т.д.
Это глупо и потратите кучу времени на сложноподдерживаемое решение.
Необходимо изменить саму постановку задачи. (И подумайте как будете передавать решение человеку, который прийдет после Вас)
Если используете адаптер по XI - значит для каждого Имени ODS должна быть плоская таблица, куда попадут данные, и выбор будет сроиться на обычном case. Затем для каждой таблицы строится экстрактор и цпочка загрузки в ODS.
Любые усложнения - от лукавого.
Здесь проблема не технологическая, а в отсутствии общего языка с постановщиком задачи или консультантом.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 22 2008, 14:49 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
Имя поля (или его номер) с именем таблицы, куда пишем, заранее известно, или тоже каким-то образом определяется?
Если да то, из этого поля извлекаете нужное имя, затем создаете динамически структуру и таблицу этого типа.
Через describe ... into можно получить список полей первой таблицы, ну а далее всё через assign component. (Не забываем проверять sy-subrc)


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

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


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

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


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

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