Текущее время: Пн, июл 28 2025, 20:15

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: проблема при чтении данных через RFC
СообщениеДобавлено: Ср, янв 20 2010, 07:50 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 20 2008, 11:33
Сообщения: 77
Откуда: Новосибирск
Здравствуйте. У меня такая проблема. Мне нужно массово копировать инфотипы с одной системы в другую. Есть ФМ который запускается в системе из которой нужно скопировать и формирует там данные вот сам фм:

Code:
FUNCTION z_rfc_hr_read_infotype.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(TCLAS) TYPE  PSPAR-TCLAS DEFAULT 'A'
*"     VALUE(PERNR) TYPE  PRELP-PERNR
*"     VALUE(INFTY) TYPE  PRELP-INFTY
*"     VALUE(BEGDA) TYPE  PRELP-BEGDA DEFAULT '18000101'
*"     VALUE(ENDDA) TYPE  PRELP-ENDDA DEFAULT '99991231'
*"     VALUE(BYPASS_BUFFER) TYPE  FLAG DEFAULT ' '
*"     VALUE(LEGACY_MODE) TYPE  BOOLE_D DEFAULT SPACE
*"  EXPORTING
*"     VALUE(SUBRC) TYPE  SY-SUBRC
*"  TABLES
*"      INNNN STRUCTURE  PRELP
*"  EXCEPTIONS
*"      INFTY_NOT_FOUND
*"----------------------------------------------------------------------
  DATA: d_ref_data        TYPE REF TO data,
        my_structure_name LIKE dd02l-tabname,
        pt_fieldcat       TYPE lvc_t_fcat,
        i0001             LIKE TABLE OF p0001 WITH HEADER LINE.

* Динамич таблица для хран. данных .
  FIELD-SYMBOLS : <it_data> TYPE table,
                  <prelp> TYPE c,
                  <pnnnn> TYPE ANY.

* 1. создать таблицу нужной структуры по инфо-типу

* 1.1. создать fieldcatalog по инфо-типу
  CONCATENATE 'P'
               infty
               INTO my_structure_name.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
*     I_BUFFER_ACTIVE              =
      i_structure_name             = my_structure_name
*     I_CLIENT_NEVER_DISPLAY       = 'X'
*     I_BYPASSING_BUFFER           =
    CHANGING
      ct_fieldcat                  = pt_fieldcat
    EXCEPTIONS
      inconsistent_interface       = 0
      program_error                = 0
      OTHERS                       = 0.

* 1.2. создать внутр.таблицу по fieldcatalog
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = pt_fieldcat
    IMPORTING
      ep_table        = d_ref_data.

  ASSIGN d_ref_data->* TO <it_data>.
*****

* 1.3. чтение ИТ во внутр.таблицу
  CALL FUNCTION 'HR_READ_INFOTYPE'
    EXPORTING
      tclas           = tclas
      pernr           = pernr
      infty           = infty
      begda           = begda
      endda           = endda
      bypass_buffer   = bypass_buffer
      legacy_mode     = legacy_mode
    IMPORTING
      subrc           = subrc
    TABLES
      infty_tab       = <it_data>
    EXCEPTIONS
      infty_not_found = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
    subrc = sy-subrc.
    EXIT.
  ENDIF.

* 1.4. свернуть прочитанные данные ИТ в prelp
  LOOP AT <it_data> ASSIGNING <pnnnn>.
    ASSIGN <pnnnn> TO <prelp> CASTING.
    APPEND <prelp> TO innnn.
  ENDLOOP.

ENDFUNCTION.


ФМ работал почти на всех инфотипах, и только на одном вылазит ошибка на моменте:
* 1.2. создать внутр.таблицу по fieldcatalog
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = pt_fieldcat
IMPORTING
ep_table = d_ref_data.

Инфотип Z-всий, но вроде простой без новоротов

Если запускать ФМ в виде:
Code:
  DATA it9106 LIKE p9106 OCCURS 0 WITH HEADER LINE.
  DATA p_pernr LIKE p0001-pernr VALUE '83000845'.
  DATA p_des(6) VALUE 'THR200'.

  CALL FUNCTION 'HR_READ_INFOTYPE'
  DESTINATION p_des
    EXPORTING
      pernr           = p_pernr
      infty           = '9106'
      bypass_buffer   = ' '
    TABLES
      infty_tab       = it9106
    EXCEPTIONS
      infty_not_found = 1
      OTHERS          = 2.


то он просто возвратит sy-subrc = 2
я так понял что как раз таким образом читать нельзя, не знаете как выйти из положения ?
все работает, только для одного ИТ ничего не работает.

Спасибо


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проблема при чтении данных через RFC
СообщениеДобавлено: Ср, янв 20 2010, 09:56 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1398
А что за ошибка возникает? Нужно самому догадаться?

И глупое предположение, у Вас ИТ9106 в обоих системах есть? Его структура полностью одинаковая?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: проблема при чтении данных через RFC
СообщениеДобавлено: Ср, янв 20 2010, 10:18 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 20 2008, 11:33
Сообщения: 77
Откуда: Новосибирск
да он там у дебрях какое то имя программы найти не мог, т.к. оно формировалось динамически.
Блин, я что-то не подумал что структура может быть разная, она одинаковая, но там что-то версии разные, скорее всего в этом проблема вся.
Спасибо.


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

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


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

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


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

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