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

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Трансформация, подпрограмма завершения(запуска)
СообщениеДобавлено: Чт, июл 31 2008, 21:08 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Подскажите пожалуйста, такой вопрос. Раньше, в 3.5 у меня работала подпрограмма запуска по след. принципу

Code:
  SELECT SINGLE *  FROM ods_active_table
    INTO internal_table
   ...........................

ENDLOOP.


В общем, логика работала по след. принципу. Выбираются данные из активной таблицы ODS, сравниваются с тем что пришло в DATA PACKAGE и далее там пошла обработка это уже не интересно.
Внутреняя таблица, была типа активной таблицы DSO, т.е. просто в DATA задана.

Сейчас, делаю почти такое же, при помощи трансформации. т.е. код уже выглядит так

Code:
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
  SELECT SINGLE *
    FROM ods_active_table
    INTO internal_table
.............................


Но тут облом, появляется сообщение что "You cannot use an internal table as a work area.".
Получается, что, нельзя использовать внутренние таблицы в правилах транформации?? Это же какой-то бред. Синтаксически всё верно.


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

Зарегистрирован:
Ср, июл 04 2007, 22:04
Сообщения: 138
Пол: Мужской
SELECT SINGLE * ...
Данная инструкция выбирает данные в структуру, а не внутреннюю таблицу, поэтому таблица должна быть определена как WITH HEADER LINE.


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

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
Lear написал:
SELECT SINGLE * ...
Данная инструкция выбирает данные в структуру, а не внутреннюю таблицу, поэтому таблица должна быть определена как WITH HEADER LINE.

Либо выбирайте данные в отдельную рабочую область

_________________
а подпись...а подписи не будет :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 01 2008, 11:14 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Lear написал:
SELECT SINGLE * ...
Данная инструкция выбирает данные в структуру, а не внутреннюю таблицу, поэтому таблица должна быть определена как WITH HEADER LINE.


так ведь тогда такая ошибка "Tables with headers are no longer supported in the OO context."


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

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
tdebug написал(а):
так ведь тогда такая ошибка "Tables with headers are no longer supported in the OO context."

ну дык либо отписывайте в другую ворк арею или опишите таблицу так:
data it_tab type table of <тип таблицы>.

_________________
а подпись...а подписи не будет :)


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

Зарегистрирован:
Пт, мар 25 2005, 17:17
Сообщения: 133
data it_tab type table of <тип таблицы>.
data is_tab like line of it_tab.

SELECT SINGLE * FROM ods_active_table
INTO is_tab.

append is_tab to it_tab.

endselect.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 04 2008, 12:55 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Спасибо, вопрос решил.
Но возник другой.
Нужно где-то в подпрограмме завершения, объявить таблицу. Всего у меня таких 5 правил для разных DSO.
Вставил в одно правило объявление здесь
Code:
ENDCLASS.                    "routine DEFINITION

*$*$ begin of 2nd part global - insert your code only below this line  *
TABLES: my_table.
... "insert your code here
*$*$ end of 2nd part global - insert your code only before this line   *

*---------------------------------------------------------------------*
*       CLASS routine IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_transform IMPLEMENTATION.


В одном случае всё активировалось и вроде всё ок. Во всех остальных - меняю правило, сохраняю, выхожу, активирую, захожу опять - изменений нет! Как будно ничего не менял.
Кто-нибудь с такой ерундой сталкивался?

P.S. Я надеюсь выбрал правильное место чтобы объявить таблицу к которой надо обращаться в методе?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трансформация, подпрограмма завершения(запуска)
СообщениеДобавлено: Ср, янв 28 2009, 18:56 
Ассистент
Ассистент

Зарегистрирован:
Вт, окт 17 2006, 10:02
Сообщения: 35
У меня такое было как раз недавно, лечил путем сохранения изменений в подпрограмме запуска, после чего менял что-нибудь в правилах трансформации и после этого уже активировал трансформацию.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трансформация, подпрограмма завершения(запуска)
СообщениеДобавлено: Пт, янв 30 2009, 09:35 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
Пользуйтесь экперт-рутиной ;-)


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

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


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

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


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

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