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

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


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

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


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

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