Среда, 25.06.2025
Воробьев С.Л.
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Для организации канала Oracle->SAP R3 в бд Oracle необходимо установить пакет RFCXML.

 

Далее, для получения данных из SAP R3 необходимо в SAP R3 написать RFC-функцию которая будет возвращать данные.

 

Для примера рассмотрим порядок работы с функцией RFC_READ_TABLE.

 

Данная функция имеет на входе 3 параметра

 

QUERY_TABLE         - имя считываемой таблицы

DELIMITER         - разделитель

NO_DATA         - признак читать данные или структуру.

 

На выходе она имеет несколько таблиц. Так как нас интересуют только данные, мы берем выходную таблицу DATA.

Структура таблицы  DATA состоит из одного поля WA длиной 512.

Создаем следующие типы

 

CREATE OR REPLACE TYPE ZDATA512 AS OBJECT

(

  WA VARCHAR2(512)

)

 

CREATE OR REPLACE TYPE ZTDATA512

AS TABLE OF ZDATA512

 

Потом создаем пакет

 

CREATE OR REPLACE PACKAGE ZPCK_RFC_READ_TABLE AS

 

  FUNCTION RFC_READ_T001 RETURN ZTDATA512;

  

 

END ZPCK_RFC_READ_TABLE;

 

CREATE OR REPLACE PACKAGE BODY ZPCK_RFC_READ_TABLE AS

 

  FUNCTION RFC_READ_T001 RETURN ZTDATA512 

  as

   rec ZDATA512 := ZDATA512('');

   ret ZTDATA512 :=ZTDATA512();

   row_count pls_integer;

  BEGIN

/* Инициализируем пакетные переменные для работы с функцией RFC_READ_TABLE*/

    rfcxml.init ('RFC_READ_TABLE');

/*Заполняем входные параметры*/    

    rfcxml.setexport('QUERY_TABLE', 'T000');

    rfcxml.setexport('DELIMITER', '|');  

    rfcxml.setexport('NO_DATA', ' ');  

/*Выполняем. В качестве параметров идут адрес сервере где запужен StS, кодировка в которой необходимо получить данные,

  и имя обработчика

*/

    rfcxml.Execute ('192.168.0.4', 'CL8MSWIN1251', 'R3');

/*Получаем количество записей в таблице DATA*/         

    row_count := rfcxml.Rowcount ('DATA'); 

/*Заполняем возвращаемую таблицу*/    

    for i in 0..row_count-1 loop

      ret.EXTEND;

      rec.wa:=rfcxml.gettablevalue('DATA','WA', i);

      ret(i+1) :=rec;

    end loop;

    rfcxml.free;

    RETURN ret;

  END;

 

 

END ZPCK_RFC_READ_TABLE;

 

Теперь мы можем выполнить select

 

Select *

      From Table

            (Cast (ZPCK_RFC_READ_TABLE.RFC_READ_T001 As ztdata512

                  )

            );

 

Мы получим содержимое таблицы T000 где в качестве разделителя между полями используется символ "|"

 

000|SAP AG Konzern           |Walldorf                 |EUR  |          |S|2| |X| | | | | |            |00000000|                                                                                                                                                                                                                                                                                                                                                                                                               

001|SAP AG Konzern           |Walldorf                 |EUR  |          |C|1| | | | | | | |            |00000000|                                                                                                                                                                                                                                                                                                                                                                                                               

066|Test EarlyWatch Profiles |Walldorf                 |EUR  |          |S| |1| |X| | | | |SAP         |20030620|       

 

                                                                                                                                                                                                                                                                                                                                                                                                        

Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright Воробьев С.Л. © 2025
    Бесплатный конструктор сайтовuCoz