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

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Чт, ноя 25 2010, 19:36 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Собственно, вопрос: если пишется экстрактор, то как определить систему, из которой происходит вызов?

_________________
Ян Владимирович,
http://www.vladimirovich.net


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 08:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Code:
*
DATA: system(10).
*
CONCATENATE sy-sysid 'CLNT' sy-mandt INTO system.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 11:01 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Я могу ошибаться, но это не та система из которой вызывают, а та, которую вызывают.

Это не так интересно :-)

_________________
Ян Владимирович,
http://www.vladimirovich.net


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 11:31 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
Если копать глубоко ,
то можно попробовать так:

поискать в EDIDC EDID4 входной IDOC (например за тек день) типа RSRQST с REQNR = I_REQUNR
и из него вытянуть систему отправитель.
хотя может есть более простое решение. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 13:05 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Идея хороша, только

I_REQUNR - это что-то типа REQU_D9COEML5HO56Q8DI3VUXNGK5L

Как его преобразовать в IDOCNO?

Кстати, есть ли какие-то стандартные ФМ для работы с IDOC, или нормально читать прямо из таблиц?

_________________
Ян Владимирович,
http://www.vladimirovich.net


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 13:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Yanvladimirovich написал(а):
Я могу ошибаться, но это не та система из которой вызывают, а та, которую вызывают.

Это не так интересно :-)

Таблицы:
ROOSGEN - Сгенерированные объекты к OLTP-источнику;
ROOSPRMSF - Управляющие параметры на источник данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 15:37 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
К сожалению сейчас нет системы рядом.

Да, I_REQUNR и IDOC_NO не связаны между собой.

Выберите поступившие за день( или меньше, если они обрабатываются немедленно) IDOCNO из
EDIDC
потом содержимое каждого IDOCа

Code:
CALL FUNCTION 'IDOC_READ_COMPLETELY'
       EXPORTING
            document_number         = p_docnum
       IMPORTING
            idoc_control            = s_edidc
       TABLES
            int_edidd               = itab_edidd
       EXCEPTIONS
            document_not_exist      = 1
            document_number_invalid = 2
            OTHERS                  = 3.


и гдето в itab_edidd-sdata ищите исходный REQNR
ну а потом где то в edidc есть отправитель.

Если не секрет Вам это зачем? может проще через s_s_if-t_select задавать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Пт, ноя 26 2010, 19:18 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, фев 16 2006, 15:46
Сообщения: 451
Откуда: Россия
Вот такой код, в целом, работает, и работает быстро. Минус - нужно тестировать с умом из RSA3, например подставляя реальный запрос.

Code:
      r_logsys = ''.

      SELECT  *
        FROM  EDIDC
        INTO  wa_edidc
        ORDER BY DOCNUM DESCENDING.

        CALL FUNCTION 'IDOC_READ_COMPLETELY'
          EXPORTING
            document_number         = wa_edidc-DOCNUM
          TABLES
            int_edidd               = it_edidd
          EXCEPTIONS
            document_not_exist      = 1
            document_number_invalid = 2
            OTHERS                  = 3.

        READ TABLE it_edidd INDEX 1 INTO wa_edidd .

        srch_str = wa_edidd-SDATA+0(30).

        IF srch_str = I_REQUNR.
          r_logsys = wa_edidc-RCVPRN.
          EXIT.
        ENDIF.

        IF wa_edidc-CREDAT < backdate.
          EXIT.
        ENDIF.

      ENDSELECT.

      IF r_logsys = ''.
        RAISE ERROR_PASSED_TO_MESS_HANDLER.
      ENDIF.


_________________
Ян Владимирович,
http://www.vladimirovich.net


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как определить вызывающую систему в самописном экстракторе?
СообщениеДобавлено: Вт, дек 28 2010, 18:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 08:36
Сообщения: 182
Откуда: Russia
Пол: Мужской
Yanvladimirovich написал(а):
Собственно, вопрос: если пишется экстрактор, то как определить систему, из которой происходит вызов?


все гораздо проще, чем в описанных выше примерах :)

вот кусок кода:

DATA: RFCSI_EXPORT TYPE RFCSI.
CALL FUNCTION 'RFC_SYSTEM_INFO' DESTINATION 'BACK'
IMPORTING
RFCSI_EXPORT = RFCSI_EXPORT.

В RFCSI_EXPORT параметры вызывающей экстрактор системы

_________________
С Уважением Серега


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

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


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

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


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

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