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

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


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

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


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

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