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

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Как прочитать данные по оприделенному номеру заказа с использованием библиотек SAP ActiveX
СообщениеДобавлено: Чт, окт 25 2012, 14:02 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 25 2012, 13:03
Сообщения: 2
Добрый день,
В ходе разработки ПО для тестирования продукции возникла необходимость чтения базы SAP о заказе (нужно читать данные о заказе и характеристиках продукции, которые установил заказчик). Для разработки ПО используется язык программирования LabVIEW. Для работы с SAP используются библиотеки ActiveX.
С даной системой сталкиваюсь впервые. Проблема в следующем: удается наладить связь с базой, вызвать нужную функцию (как я понимаю, это название таблицы) и прочитать все описание данной таблицы (название строк, их количество, тип данных и т.д.). Но к данным никак добраться не могу, конкретно не могу понять как я могу прочитать данные по интересующему номеру заказа.
Если кто сталкивался с такой проблемой или знает какие методи или свойства нужно использовать, пожалуйста подскажите.
Работа с SAP проходит по таким этапам:
1. Подключение и логон. Вызов SAPFunctionsOCX.ISAPFunctions, использование свойства Connection для получения данных типа вариант, на основании которого с использованием SAPLogonCtrl._CSAPLogonConnection задаются свойтва подключения (сервер, логин, пароль, клиент, язык и т.д.); далее используется метод Logon для подключения к SAP.
2. Используется метод Add объекта SAPFunctionsOCX.ISAPFunctions для добавления функции (например название таблицы Z_KALIB_GET_ORDER) и получения данных типа вариант.
3. Вызывается объект SAPFunctionsOCX.IFunction и используется свойство Tables для получения данных типа вариант.
4. Вызывается объект SAPTableFactoryCtrl._CSAPTaFacTables и используется метод Item и номер нужной таблицы для получения данных типа вариант.
5. Вызывается объект SAPTableFactoryCtrl._CSAPTaFacTable и используется свойство Columns для получения данных типа вариант.
6. Вызывается объект SAPTableFactoryCtrl._CSAPTaFacColumns, используется свойство Count для получения количества строк и метод Item с соответствующим номером для получения данных типа вариант.
7. Вызывается объект SAPTableFactoryCtrl._CSAPTaFacColumn и используется свойства Index, Name, Type, Decimals, IntLength, TypeName для получения информации о строке.
Смотрел пример кода на С# с использованием .Net коннектора, в нем для задания параметра поиска информации используется добавление функции (напр. Z_KALIB_GET_ORDER) и затем вызов по названию строки с номером заказа (напр. ZKAL_AUFNR) и номера самого заказа (напр. 2016859).
Возможно что то похожее есть в ActiveX.
Кто знает подскажите пожалуйста.
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как прочитать данные по оприделенному номеру заказа с использованием библиотек SAP ActiveX
СообщениеДобавлено: Чт, окт 25 2012, 14:31 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Хз что такое LabVIEW, почитайте для VBA
http://scn.sap.com/people/vikas.sreedharan/blog/2007/12/12/accessing-sap-functions-from-excel-using-visual-basic-applications
последний пример как раз работа с таблицей
Цитата:
вызвать нужную функцию (как я понимаю, это название таблицы)

это не название таблицы, это название function module (ФМ)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как прочитать данные по оприделенному номеру заказа с использованием библиотек SAP ActiveX
СообщениеДобавлено: Пт, окт 26 2012, 13:21 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, янв 14 2010, 13:26
Сообщения: 70
Откуда: Санкт-Петербург
Пол: Мужской
Цитата:
2. Используется метод Add объекта SAPFunctionsOCX.ISAPFunctions для добавления функции (например название таблицы Z_KALIB_GET_ORDER) и получения данных типа вариант.
Судя по всему, вам сообщили название функционального модуля (фм), который вернет вам необходимые данные по заказу....
С помощью этого метода вы говорите что хотите вызвать в системе SAP функциональный модуль Z_KALIB_GET_ORDER.
Цитата:
3. Вызывается объект SAPFunctionsOCX.IFunction и используется свойство Tables для получения данных типа вариант.
Тут вы определяете к какой вашей таблице будет привязана таблица-параметр TABLES функционального модуля.
А дальше я не знаю что вы делаете :)

Скорее всего на входе у Z_KALIB_GET_ORDER есть номер заказа. Данные этого заказа он сложит в TABLES-параметр...
Т.е. вам нужно передать на вход Z_KALIB_GET_ORDER номер заказа, связать TABLES-параметр с таблицей, куда вы хотите сложить данные и вызвать метод SAPFunction.Call

Приведу пример кода на 1С, вызывается VBA-скрипт:
Code:
Процедура ПередачаСправочникаОС(Элемент)   //RFC
   
   СправочникОС = Справочники.ОС;
   Выборка = СправочникОС.Выбрать();
   
   Попытка
      ScrCtrl = новый COMОбъект("MSScriptControl.ScriptControl");
      ScrCtrl.Language = "vbscript";
            
      ТекстСприпта = "
      |Sub Mess()   
      |    Set FunctionCtrl = CreateObject(""SAP.Functions"")
      |    Set SAPConnection = FunctionCtrl.Connection
      |   
      |    SAPConnection.ApplicationServer = ""192.111.1.11"
      |    SAPConnection.System = ""10""
      |    SAPConnection.Client = ""100""
      |    SAPConnection.User = ""user""
      |    SAPConnection.Password = ""parol""
      |    SAPConnection.Language = ""RU""
      |    SAPConnection.SystemNumber = ""10""
      |    SAPConnection.ABAPDebug = False
      |    If SAPConnection.Logon(0, True) <> True Then
      |      MsgBox ""No connection to R/3 System""
      |      Exit Sub
      |    End If
      |
      |    Set SAPFunction = FunctionCtrl.Add(""ZFM_RFC_LOAD_OS"")
      |    Set lt_data = SAPFunction.Tables(""IT_OS_DATA"")
      |            
      |";
      СчетчикЦикла = 1;
      Пока Выборка.Следующий() Цикл
         Объект = Выборка.ПолучитьОбъект();
         ТекстСприпта = ТекстСприпта + "
         |  lt_data.Rows.Add   
         |  lt_data.Value(" + Строка(СчетчикЦикла) + ", ""OS_1C"") =""" + Объект.Код + """" + "
         |  lt_data.Value(" + Строка(СчетчикЦикла) + ", ""OS_1C_TEXT"") =""" + Объект.Наименование + """";
         СчетчикЦикла = СчетчикЦикла + 1;
      КонецЦикла;      
      ТекстСприпта = ТекстСприпта +
      "
      |    If SAPFunction.Call <> True Then
      |      MsgBox ""Ошибка вызова ФМ""
      |      Exit Sub
      |    End If
      |   
      |    Result = SAPFunction.Imports(""EV_RESULT"")
      |    MsgBox Result
      |End Sub
      |";
      
      ScrCtrl.AddCode(ТекстСприпта);
        ScrCtrl.Run("Mess");
 
    Исключение
      Сообщить(ОписаниеОшибки());
   КонецПопытки;

КонецПроцедуры

Эта процедура вызывает функциональный модуль ZFM_RFC_LOAD_OS, передав ему на вход TABLES-параметр IT_OS_DATA, заполнив его содержимым справочника.
SAPFunction.Call - собственно вызов функционального модуля.
И на выходе берем значение export-параметра EV_RESULT.

Думаю по аналогии сможете реализовать вашу задачу...

PS: пример передачи одиночных import-значений в фм:
Code:
SAPFunction.Exports(""IV_BELNR"") = sf_belnr


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

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


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

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


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

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