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

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Экстракция через функциональный модуль
СообщениеДобавлено: Чт, фев 17 2005, 14:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 02 2004, 09:20
Сообщения: 152
Пол: Женский
Свой первый функциональный модуль экстракции я писала на основе RSAX_BIW_GET_DATA_SIMPLE.
Если I_INITFLAG = ' '(те. не инициализация), делаем выборку и ставим RAISE NO_MORE_DATA.
Программа экстракции тогда с удовольствием возвращает 0 записей, хотя выборка работает нормально. Если смотреть в отладчике, то видно, что первую порцию записей экстрактор берет, но никуда не посыдает. Поэтому соответственно, если делать выборку дважды (те дважды вызывается мой ФМ), то вторая выборка уже обрабатывается нормально. Если не ставить в ФМ RAISE NO_MORE_DATA, выборка идет до бесконечности. Если ставить, результат - 0 записей. Пока делаю искуственный параметр в памяти, где отображается первый раз был вызван ФМ или второй.В последнем случае срабатывает RAISE NO_MORE_DATA. Подскажите как сделать экстракцию через ФМ по человечески.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 18 2005, 13:30 
Гость
Если I_INITFLAG = ' '(те. не инициализация), делаем выборку первого пакета данных и НЕ ставим RAISE NO_MORE_DATA. Просто выходим благополучно из функционального модуля и все. Здесь важно вернуть ровно столько записей, сколько запрошено (параметер I_MAXSIZE). Потом придет запрос на второй пакет - делаем выборку, возвращаем. И так далее. В последнем пакете данных скорее всего будет меньше, чем запрошено в I_MAXSIZE. Не страшно. Заполняем E_T_DATA - возвращаеми сколько получилось и опять НЕ ставим RAISE NO_MORE_DATA. И только при следующем вызове ФМ, когда данных для экстракции нет (то есть совсем-совсем нет), только тогда поднимаем исключение RAISE NO_MORE_DATA. Вся эта логика как раз и реализована в RSAX_BIW_GET_DATA_SIMPLE, разберите алгоритм повнимательнее.
В том частном случае если данных немного (меньше чем I_MAXSIZE), заполняем E_T_DATA и выходим. И только при следующем вызове ФМ, когда данных действительно нет - поднимаем исключение.


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

Зарегистрирован:
Чт, дек 02 2004, 09:20
Сообщения: 152
Пол: Женский
Спасибо, тепеть логика прозрачна.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экстракция через функциональный модуль
СообщениеДобавлено: Пн, фев 12 2007, 15:59 
Специалист
Специалист

Зарегистрирован:
Ср, авг 18 2004, 08:10
Сообщения: 238
Galala написала:
Если смотреть в отладчике, то видно, что первую порцию записей экстрактор берет, но никуда не посыдает.


Пытаюсь считать данные через аналогичный ФМ с ошибкой "Произошла ошибка при выборе данных". Подскажите, как можно отладить ФМ на стороне R/3 после запуска в BW?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экстракция через функциональный модуль
СообщениеДобавлено: Пн, фев 12 2007, 16:21 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
Trezeguet написал(а):
Galala написала:
Если смотреть в отладчике, то видно, что первую порцию записей экстрактор берет, но никуда не посыдает.


Пытаюсь считать данные через аналогичный ФМ с ошибкой "Произошла ошибка при выборе данных". Подскажите, как можно отладить ФМ на стороне R/3 после запуска в BW?


обычным бряк-поинтом. в rsa3 можно потестировать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 22 2007, 12:50 
Специалист
Специалист

Зарегистрирован:
Ср, авг 18 2004, 08:10
Сообщения: 238
Насколько я понимаю rsa3 запускается непосредственно на стороне R/3 . а можно ли как-то отладить экстрактор (функциональный модуль) после запуска загрузки данных из BW.
Дело в том, что rsa3 в R/3 возвращает записи, а вот если запустить загрузку из BW, то система возращает сообщение "Данных нет"


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

Зарегистрирован:
Пт, июн 24 2005, 15:18
Сообщения: 1216
Откуда: Diagon Alley
Trezeguet написал(а):
Насколько я понимаю rsa3 запускается непосредственно на стороне R/3 . а можно ли как-то отладить экстрактор (функциональный модуль) после запуска загрузки данных из BW.
Дело в том, что rsa3 в R/3 возвращает записи, а вот если запустить загрузку из BW, то система возращает сообщение "Данных нет"


Вставить бесконечный цикл в модуль, затем в R/3 -> SM50 -> Debug

_________________
"Если ты в молодости не испытал трудности, их стоит купить за большие деньги". (с) Даймо


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

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
RSA1 написал(а):
Trezeguet написал(а):
Насколько я понимаю rsa3 запускается непосредственно на стороне R/3 . а можно ли как-то отладить экстрактор (функциональный модуль) после запуска загрузки данных из BW.
Дело в том, что rsa3 в R/3 возвращает записи, а вот если запустить загрузку из BW, то система возращает сообщение "Данных нет"


Вставить бесконечный цикл в модуль, затем в R/3 -> SM50 -> Debug

один очень хороший человек придумал вечный цикл сей запускать по условию...условие простое есть табличка..там поле char1='X' если надо отдебажить...или пусто если не надо и имя модуля как ключь. заходим в ведение табличины...ставим галку и вуаля....идем смотреть SM50.....навернео надо поставить типа (c) как никак не я придумал :)

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


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

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
Подскажите
в RSAX_BIW_GET_DATA_SIMPLE есть код:

Code:
RANGES: L_R_CARRID  FOR SFLIGHT-CARRID,
                 L_R_CONNID  FOR SFLIGHT-CONNID.


Эти диапазоны заполняются данными из критериев выбора (в инфо-пакете закладка Выбор данных:
Code:
LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CARRID'.
        MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
        APPEND L_R_CARRID.
      ENDLOOP.

      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
        MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
        APPEND L_R_CONNID.
      ENDLOOP.

В соответствии с данными в этих диапазонах ограничиваем выборку:
Code:
SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
                               WHERE CARRID  IN L_R_CARRID AND
                                     CONNID  IN L_R_CONNID.

Получается если я в критериях выбора ничего не укажу - то выборка будет пустая?


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

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
Lench написал:
Получается если я в критериях выбора ничего не укажу - то выборка будет пустая?


Выборка будет самая полная


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 24 2007, 08:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
Хочешь сказать если код будет такой:
Code:
SELECT * FROM SFLIGHT WHERE CARRID IN (NULL).

то выборка будет самая полная?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 24 2007, 08:35 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
Lench написал:
Хочешь сказать если код будет такой:
Code:
SELECT * FROM SFLIGHT WHERE CARRID IN (NULL).

то выборка будет самая полная?


Да. Только не нужно указывать здесь null:

1. Типы L_R_CARRID и L_R_CONNID - это RANGE.
2. Не нужно смешивать open SQL и native SQL...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, апр 24 2007, 08:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, авг 16 2006, 03:22
Сообщения: 464
Пол: Мужской
О, нашел в хелпе:

Цитата:
If the selection table is inital, the expression is true.


Vitaly V.V. спасибо


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

Зарегистрирован:
Чт, янв 25 2007, 09:57
Сообщения: 276
Я прошу прощения, а не подскажет кто хаутушку из разаряда "для чайников" как написать ФМ для экстракции переменных данных. Очень надо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 18 2007, 12:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 09:59
Сообщения: 1097
Откуда: Moscow
Пол: Мужской
подними глаза в начало поста, там приведен ФМ - пример. зайди в него и посомтри на комментарии. Это и есть хау тушка, которую ты ищешь

_________________
In SAP we trust !


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

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


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

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


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

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