2016-12-07 4 views
1

Моя компания имеет информацию о материалах в системе SAP, база данных которой размещается на сервере linux. Я разрабатываю новое приложение, которое имеет информацию о чертежах, и теперь я хочу назначить материал чертежам. Старые приложения в компании экспортировали материальные данные из SAP и импортировали их в приложение. Но это означает дублирование данных и обслуживание данных в двух разных местах.подключиться к SAP через приложение C#

Теперь мы разрабатываем новую систему, в которой хотим иметь материальную информацию только в SAP, и подключаем наши новые приложения (разрабатываемые в C#, ASP.Net, ADO.Net, LINQ) к базе данных SAP к готовой материальной информации , SAP-доступ в нашем приложении будет чисто READONLY.

Как подключиться к SAP System/Database из моего приложения?

EDIT: Я могу напрямую подключиться к базе данных SAP через SQL Developer Oracle и просмотреть необходимые таблицы, что означает, что теперь я могу подключиться к этим таблицам с помощью C# -> Entity Framework. Это нормально? Помните, что я буду обращаться к ним в своем приложении с доступом READONLY.

+0

Этот вопрос был дан ответ уже несколько раз. – vwegert

+0

Возможный дубликат [SAP-соединение для извлечения данных] (http: // stackoverflow.com/questions/31076348/sap-connection-to-extract-data) – vwegert

ответ

1

вы можете либо разработать веб-сервис в системе SAP, как уже объяснял mkysoft. Другой альтернативой будет использование SAP .Net Connector, библиотека из самих SAP, предоставляемая клиентам SAP бесплатно. Он позволяет вызывать функциональные модули с поддержкой RFC, такие как BAPI, или действовать как RFC-сервер или RFC-клиент.

Если вам нужен доступ к SAP только в вашем приложении на основе .Net, то, по-видимому, решение SAP NCo является более простым решением, так как вы можете просто вызвать любой удаленный функциональный модуль без каких-либо изменений в системе SAP. Если вам нужен доступ к этим данным из нескольких систем, некоторые из них без эквивалента соединителя SAP .Net, решение, независимое от платформы, такое как веб-службы, будет лучшим решением.

Доступ к базе данных SAP ERP напрямую технически возможен, это просто не рекомендуется. Во-первых, существуют типы таблиц (в частности, таблицы кластера и пула), которые вы не можете напрямую обращаться к таблицам базы данных так же, как вы можете получить к ним доступ через ABAP/функциональные модули. Вы также обходите бизнес-логику на сервере приложений. Если это проблема для вашего конкретного случая, трудно ответить. Если вы получаете доступ только к нескольким основным таблицам материалов, не изменяйте ничего и не нуждаетесь в рассмотрении существующей бизнес-логики (или это удобно с воссозданием этой логики в вашем приложении), вы можете напрямую обращаться к базе данных, не сталкиваясь с какой-либо проблемой ,

+0

Буду признателен, если вы сможете прокомментировать последнюю часть EDITED моего сообщения – WAQ

+0

@WAQ Я отредактировал свой ответ –

0

Вы можете создавать веб-службы eassly. Создайте мыльный веб-сервис в SAP и вызовите его с любого языка.

Если ваша версия больше 7.40, вы также можете использовать службы odata.

Если вы не хотите делать какие-либо разработки на стороне SAP, у вас есть две опции:

  1. с использованием механизма IDoc для новых или измененных элементов
  2. с использованием общего веб-сервиса для вызова BAPI http://sapserverurl/sap/bc/soap/wsdl?sap-client=clientnumber&services=functioname

Наиболее популярная функция bapi - BAPI_MATERIAL_GETLIST.

+0

Буду признателен, если вы сможете прокомментировать последнюю часть EDITED моего сообщения – WAQ

+0

Никогда/никогда не обращайтесь к db непосредственно на свои проекты для продуктов SAP. Поскольку у SAP есть собственные механизм кеширования. И он использует много таблиц, сохраняющих данные. – mkysoft

Смежные вопросы