Текущее время: Вт, июл 29 2025, 04:22

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


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

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


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

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