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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Сб, сен 03 2011, 12:49 
Начинающий
Начинающий

Зарегистрирован:
Сб, сен 03 2011, 12:45
Сообщения: 8
Добрый день!
Задача: интегрироваться с SAP, а именно забирать клиентов, формировать заказы покупателей из своего приложения и передавать (т.е. создавать) их в SAP, ну и много чего другого. На данный момент понял, что без знаний самого SAP-а, ABAP-а эту задачу выполнить проблематично. Поэтому пытаюсь разобраться с элементарными задачами. Как например, создание простого заказа покупателя. Насколько я понял, это можно сделать, используя RFC-функцию BAPI_SALESORDER_CREATEFROMDAT2. Но проблема в том, что я не знаю какие параметры в нее нужно передавать. Может кто-нибудь мне подсказать, где посмотреть эти параметры, или привести пример кода на C# по вызову этой функции с созданием этих параметров? Перерыл как весь инет и кроме ABAP-скриптов ничего нет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Сб, сен 03 2011, 16:57 
Менеджер
Менеджер

Зарегистрирован:
Вт, июл 24 2007, 14:52
Сообщения: 603
Откуда: Казахстан
Пол: Мужской
я бы рекомендовал интеграцию делать со стороны SAP
т.е. программный код передачи информации между SAP и внешней системой реализовывать в сапе, а не наоборот


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Сб, сен 03 2011, 18:58 
Начинающий
Начинающий

Зарегистрирован:
Сб, сен 03 2011, 12:45
Сообщения: 8
Ludens написал:
я бы рекомендовал интеграцию делать со стороны SAP
т.е. программный код передачи информации между SAP и внешней системой реализовывать в сапе, а не наоборот


Наверное не вариант, так как инициация интеграции будет из другой системы, не из SAP.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Вс, сен 04 2011, 08:57 
Менеджер
Менеджер

Зарегистрирован:
Вт, июл 24 2007, 14:52
Сообщения: 603
Откуда: Казахстан
Пол: Мужской
было бы интересно услышать почему принято такое решение


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Вс, сен 04 2011, 09:27 
Начинающий
Начинающий

Зарегистрирован:
Сб, сен 03 2011, 12:45
Сообщения: 8
Ludens написал:
было бы интересно услышать почему принято такое решение

Что именно? Почему инициация будет идти из другой системы? Все очень просто. Интеграция подразумевается между CRM-системой (та самая другая система) и ERP-системой (SAP R/3). По моему очевидно, что эти системы выполняют во многом абсолютно разные функции. Задача: на стороне CRM реализована работа колл-центра и функционал подразумевает при обработке телефонного звонка (при общении с клиентом) создавать заказ сразу же из окна самого колл-центра. Сами теле-сейлы доступа к САПу не имеют (и это правильно, так как каждый должен заниматься своим делом), поэтому и нужно создавать заказ из CRM-системы.

Еще уточнение по технической части: использовать нужно не ERPConnect (по нему примеры в инете нашел). Покупать его клиент не будет, т.к. и так в наличии есть SAP .Net Connector 3.0.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Вс, сен 04 2011, 11:53 
Начинающий
Начинающий

Зарегистрирован:
Сб, сен 03 2011, 12:45
Сообщения: 8
Еще оговорюсь. Опыта разработки под SAP у меня нет и об ABAP услышал только пару дней назад. Соот-но информации по RFC-функциям у меня практически нет. Немного продвинулся в разработке, если можно так сказать. Удалось подключиться к SAP-у и получить данные по клиентам. Но это на данный момент мне не особо нужно. Нужно создавать заказы. Для этого мне нужна информация по BAPI_SALESORDER_CREATEFROMDAT2. Нет ли у кого примера ее использования на c# (с созданием параметров)?

Что на данный момент имею:
RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination("WDA");
RfcRepository SapRfcRepository = SapRfcDestination.Repository;

//IRfcFunction BapiGetCompanyList = SapRfcRepository.CreateFunction("BAPI_COMPANY_GETLIST");
//IRfcFunction BapiGetCompanyDetail = SapRfcRepository.CreateFunction("BAPI_COMPANY_GETDETAIL");

IRfcFunction BapiSalesOrder = SapRfcRepository.CreateFunction("BAPI_SALESORDER_CREATEFROMDAT2");

Дальше, по идее нужны параметры. Один из параметров, скорее всего, партнер.
Что-то типа

IRfcTable ORDER_PARTNERS = BapiSalesOrder.GetTable("ORDER_PARTNERS");
ORDER_PARTNERS.Append();
ORDER_PARTNERS.SetValue("Тут какое-то значение, которое не знаю где брать", "PARTN_ROLE");
ORDER_PARTNERS.SetValue("По идее, номер партнера, но где его посмотреть не понятно", "PARTN_NUMB");

Так вот мне бы полный пример вызова этой функции с параметрами. :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Вс, сен 04 2011, 14:52 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
На Си-шарпе примера нет, но есть пример вызова на Абапе. Однако лучше бы вам договориться чтоб дали доступ в систему SAP (или он уже есть?), для того чтоб посмотреть описание параметров, и еще лучше - договориться чтоб вам показали тр. BAPI с описанием BAPI_SALESORDER_CREATEFROMDAT2.

P.S. Хинт - логиниться в SAP лучше на английском, так бывает доступно больше документации.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа в SAP из .NET-приложения
СообщениеДобавлено: Пн, сен 05 2011, 17:01 
Начинающий
Начинающий

Зарегистрирован:
Сб, сен 03 2011, 12:45
Сообщения: 8
Итак, то чего добился за выходные и сегодняшний день:
1) связался с клиентом. Оказалось у них есть в штате человек, неплохо разбирающийся в SAP, что обрадовало.
2) почти формируется заказ. Привожу код:

RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination("WDA");
RfcRepository SapRfcRepository = SapRfcDestination.Repository;
IRfcFunction BapiSalesOrder = SapRfcRepository.CreateFunction("BAPI_SALESORDER_CREATEFROMDAT2");

IRfcTable ORDER_PARTNERS = BapiSalesOrder.GetTable("ORDER_PARTNERS");
ORDER_PARTNERS.Append();
ORDER_PARTNERS.SetValue("PARTN_ROLE", "AG");
ORDER_PARTNERS.SetValue("PARTN_NUMB", "10000396");

IRfcStructure order_header_inx = BapiSalesOrder.GetStructure("ORDER_HEADER_INX");
order_header_inx.SetValue("UPDATEFLAG", "I");
order_header_inx.SetValue("DOC_TYPE", "X");
order_header_inx.SetValue("SALES_ORG", "X");
order_header_inx.SetValue("DISTR_CHAN", "X");
order_header_inx.SetValue("DIVISION", "X");
order_header_inx.SetValue("PURCH_NO_C", "X");
order_header_inx.SetValue("REQ_DATE_H", "X");
order_header_inx.SetValue("PURCH_DATE", "X");

IRfcStructure order_header_in = BapiSalesOrder.GetStructure("ORDER_HEADER_IN");
order_header_in.SetValue("DOC_TYPE", "CMR");
order_header_in.SetValue("SALES_ORG", "1001");
order_header_in.SetValue("DISTR_CHAN", "X");
order_header_in.SetValue("DIVISION", "X");
order_header_in.SetValue("PURCH_NO_C", "200");
order_header_in.SetValue("REQ_DATE_H", "2011-09-05");
order_header_in.SetValue("PURCH_DATE", "2011-09-05");

IRfcTable ORDER_ITEMS_INX = BapiSalesOrder.GetTable("ORDER_ITEMS_INX");
IRfcTable ORDER_ITEMS_IN = BapiSalesOrder.GetTable("ORDER_ITEMS_IN");

ORDER_ITEMS_INX.Append();
ORDER_ITEMS_IN.Append();
ORDER_ITEMS_INX.SetValue("UPDATEFLAG", "I");
ORDER_ITEMS_INX.SetValue("ITM_NUMBER", "1056");
ORDER_ITEMS_IN.SetValue("ITM_NUMBER", "1056");
ORDER_ITEMS_INX.SetValue("MATERIAL", "X");
ORDER_ITEMS_IN.SetValue("MATERIAL", "0");

ORDER_ITEMS_INX.SetValue("COMP_QUANT", "X");
ORDER_ITEMS_IN.SetValue("COMP_QUANT", "2");

BapiSalesOrder.Invoke(SapRfcDestination);

IRfcTable res = BapiSalesOrder.GetTable("RETURN");
listBox1.Items.Add(res.GetString("MESSAGE"));

Но при этом выдается ошибка: "Sales document was not changed". Насколько я понял, все дело в признаке "UPDATEFLAG", но во всех местах кода = "I" (т.е. вставка). Поэтому на этом я "завис" и не пойму куда дальше копать.


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

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


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

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


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

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