Текущее время: Ср, июл 23 2025, 00:35

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


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

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


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

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