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

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


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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