Решение для управления логистической сетью SAP SCM позволяет совместно работать, планировать, выполнять и координировать сеть логистических цепочек.
SAP SCM является частью SAP Business Suite, что предоставляет организациям уникальную возможность работать в единой интегрированной среде, охватывающей все бизнес-процессы предприятия.
Решение «Управление логистической сетью» (SAP SCM) позволяет перейти от концепции управления линейной логистической цепочкой компании к управлению адаптивной логистической сетью. Оставаясь ориентированным на клиента, решение повышая позволяет повысить конкурентоспособность предприятия, обеспечивая доступ к данным и ресурсам партнеров по логистической цепочке и предоставляя возможность интеллектуальной адаптации к меняющимся условиям рынка.
Использование решения «Управление логистической сетью» уже помогло многим предприятиям усовершенствовать свои логистические бизнес-процессы и операции. Фактически, решение «Управление логистической сетью» является единственным комплексным решением, которое позволяет компаниям адаптировать процессы в логистической цепочке к постоянно меняющимся условиям конкурентной среды.
МОЯ ДОМАШНЯЯ СТУДИЯ / СКОЛЬКО ОНА СТОИТ?
Решение «Управление логистической сетью» (SAP SCM) помогает формировать адаптивные логистические сети, предоставляя предприятиям средства для планирования и реализации, которые позволяют управлять операциями в рамках предприятия, и современные технологии для организации и координации совместной работы, нацеленные на расширение этих операций за рамки предприятия. В результате внедрения этого решения предприятия получают измеримые и существенные преимущества благодаря сокращению затрат, повышению уровня сервиса и производительности, что в конечном итоге приводит к более высокой рентабельности бизнеса компании.
SAP SCM базируется на концепции Demand Driven Supply Chain (Управление цепями поставок на основе спроса). Такой подход выдвигает требования к информационной среде, поддерживающей процесс, в которой каждый участник может обмениваться информацией, товарами, сервисами с другими участниками. Вторая особенность подхода заключается в развитой синхронизации между участниками процесса и их реакцией на изменение спроса, вызванного различными причинами – изменением самого продукта, проведением промоакций, изменением дистрибьюцией и т.д. [1]
Приложения в составе SAP SCM
- SAP Advanced Planner and Optimizer (SAP APO)
- SAP Inventory Colaboration Hub (SAP ICH)
- SAP Event Management (SAP EM)
- SAP Service Parts Management (SAP SPM)
- SAP Forecasting and Replenishment for Retail (SAP Fhttps://www.tadviser.ru/index.php/%D0%9F%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82:SAP_Supply_Chain_Management_(SAP_SCM)» target=»_blank»]www.tadviser.ru[/mask_link]
Использование SCM для управления драйверами в C# реализованной с помощью dll на C++/cli
SCM — это сервер, реализованный в Windows, для удаленного управления сервисами (вызовом процедур).
Поговорим о цепи поставок (англ. supply chain management, SCM)
Для того, чтобы запустить драйвер в Windows, ему в соответствие ставится сервис, который обеспечивает управление этим драйвером. Не путать с устройством, которое создает драйвер в системе, через которое происходит обмен сообщениями с драйвером. Это устройство создается уже после старта драйвера, а вот SCM обеспечивает само внесение драйвера в систему. С помощью SCM можно: добавлять, удалять, запускать или останавливать службы.
Постановка задачи
Написать буферный класс позволяющий упростить работу SCM в C#.
Сам внешний вид этого класса можно обознать очень просто:public ref class ServiceControlManager : public IDisposable < public: ServiceControlManager(void); void AddDriver(String^ ServiceName, String^ BinaryPathName); void DeleteDriver(String^ ServiceName); void StartDriver(String^ ServiceName); void StopDriver(String^ ServiceName); protected: ~ServiceControlManager(); !ServiceControlManager(); private: SC_HANDLE SCMHandle; >;
Конструктор, деструктор, финализатор, основные методы, из атрибутов только HANDLE объекта SCM. Из этого следует, что экземпляр объекта этого класса будет содержать в себе созданный объект SCM, а методы упрощают с ним работу. Класс является буферным, и поскольку он реализован в C++/cli он будет автоматически масштабируем для работы в среде .NET, соответственно и в C#.
Решение проблемы с ошибками
Основная проблема работы с таким классом — это возвращение кодов ошибок, которые произошли в ходе работы SCM, которое желательно на самом первом этапе работы заменить на более привычные для .NET среды исключения. Для этого можно создать подобный класс:
[Serializable] public ref class KernelErrorException : Exception < public: KernelErrorException(void); virtual String^ ToString() override; property virtual String^ Message < String^ get() override; >; property virtual DWORD Errorsource < DWORD get(); >; private: DWORD errorsource; internal: KernelErrorException(DWORD Errorsource); >;
Как мы видим, экземпляр этого класса будет содержать, как атрибут только номер кода, который будет получен от GetLastError(). А при попытке привести экземлляр к типу System::String выведет полный текст описания сообщения средствами Windows.
Класс имеет два конструктора, первый — по умолчанию: сохраняет код ошибки при выполнении. Второй — получает код ошибки, как аргумент. Второй необходимо использовать в тех случаях, когда необходимо вызвать исключение, но перед этим выполнить какие-либо действия, после которых команда GetLastError() вернет не верные значения. Для этого сохраняется код ошибки, выполняются действия, затем вызывается исключение. Пример таких действий можно найти ниже: очиста PTR, исползуемой для маршалинга (PTR необходимо очистить до вызова исключения, т.к. вернуться к этому куску кода в дальнейшем не получится).
Реализация
KernelErrorException::KernelErrorException(void) < this->errorsource = GetLastError(); > KernelErrorException::KernelErrorException(DWORD Errorsource) < this->errorsource = Errorsource; >
При этом реализация методов будет самой, что ни на есть элементарной:
String^ KernelErrorException::Message::get() < LPTSTR message = NULL; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, this->errorsource, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) String^ messageString = gcnew String(message); LocalFree(message); return messageString; > DWORD KernelErrorException::Errorsource::get() < return this->errorsource; > String^ KernelErrorException::ToString() < return this->Message::get(); >
Память выделенную под SCM надо очищать
Вторая проблема работы с SCM в .NET: handle SCM не может жить долго, иначе это приведет к зависанию системы. Поэтому при использовании необходимо следить за тем, чтобы удалением занимался не сбощик мусора, а сам программист. Придется строго описать конструктор и финализатор, в деструкторе же, по логике Dispose-паттерна, вызывается финализатор [спасибо GraD_Kh]. В финализаторе описывается высвобождение unmanage объектов:
ServiceControlManager::ServiceControlManager(void) < this->SCMHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (!this->SCMHandle) throw gcnew KernelErrorException(); > ServiceControlManager::~ServiceControlManager() < this->!ServiceControlManager(); GC::SuppressFinalize(this); > ServiceControlManager. ServiceControlManager() < CloseServiceHandle(this->SCMHandle)); >
Основной функционал
Реализация всех методов очень проста, основа ее — это вызов конкретной соответствующей процедуры, но корректное выполнение обязательно нуждается во всех проверках на исключительные ситуации.
Реализация
void ServiceControlManager::AddDriver(String^ ServiceName, String^ BinaryPathName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); IntPtr binaryPathNamePtr = Marshal::StringToHGlobalUni(BinaryPathName); SC_HANDLE SCMHandleService = CreateService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, (LPCTSTR)binaryPathNamePtr.ToPointer(), NULL, NULL, NULL, NULL, NULL); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); Marshal::FreeHGlobal(binaryPathNamePtr); if (!SCMHandleService) throw gcnew KernelErrorException(errorsource); if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); > void ServiceControlManager::DeleteDriver(String^ ServiceName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); SC_HANDLE SCMHandleService = OpenService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); if (!SCMHandleService ) throw gcnew KernelErrorException(errorsource); if (!DeleteService(SCMHandleService)) throw gcnew KernelErrorException(); if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); > void ServiceControlManager::StartDriver(String^ ServiceName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); SC_HANDLE SCMHandleService = OpenService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); if (!SCMHandleService) throw gcnew KernelErrorException(errorsource); if (!StartService(SCMHandleService, 0, 0)) throw gcnew KernelErrorException(); if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); > void ServiceControlManager::StopDriver(String^ ServiceName) < IntPtr serviceNamePtr = Marshal::StringToHGlobalUni(ServiceName); SC_HANDLE SCMHandleService = OpenService(this->SCMHandle, (LPCTSTR)serviceNamePtr.ToPointer(), SERVICE_ALL_ACCESS); DWORD errorsource = GetLastError(); Marshal::FreeHGlobal(serviceNamePtr); if (!SCMHandleService) throw gcnew KernelErrorException(errorsource); SERVICE_STATUS serviceStatus; if (!ControlService(SCMHandleService, SERVICE_CONTROL_STOP, if (!CloseServiceHandle(SCMHandleService)) throw gcnew KernelErrorException(); >
Первый метод связывает sys файл с сервисом, добавляя этот сервис в систему. Второй — удаляет драйвер из системы, остальные две — запускают и останавливают сервис, соответственно.
Примеры использования в C#:
try < using (ServiceControlManager scm = new ServiceControlManager()) < scm.AddDriver(serviceName, filePath); scm.StartDriver(serviceName); scm.StopDriver(serviceName); scm.DeleteDriver(serviceName); >> catch (Exception ex)
Настройки при компиляции
Самое главное не забывать постояно использовать маршалинг между управляемой и не управляемой кучей. Напомню, для маршаллинга необходимо находится в пространстве имен:
using namespace System::Runtime::InteropServices;
Не забудьте прописать lib:
#pragma comment(lib, «Advapi32.lib»)
Настройки свойств при компилировании библиотеки:
Послесловие
Многие могут возразить, что подобный подход не имеет никакого смысла, и что гараздо проще в C# воспользоваться маршаллингом аргументов из стандартных библиотек. Но, на мой взгляд, мое решение является более гибким. И позволяет избавиться от несущественных переменных, подстраивая класс под себя. /Те, кто пробовал настроить DLLImport этих функций в x64 меня поймут. /
Источник: habr.com
Что такое SCM, или управление цепочкой поставок
Любая бизнес-деятельность, связанная с перемещением продукта от момента создания до передачи в руки покупателя, является частью цепочки поставок. В нее входят в том числе разработка продуктов, производство, распространение, финансовый менеджмент и логистика. Эффективная стратегия предприятия, заинтересованного в улучшении обслуживания клиентов и повышении конкурентоспособности, — объединить все процессы создания стоимости в одну консолидированную бизнес-функцию и оптимизировать их на каждом этапе. Для решения этой задачи и необходимо создание системы SCM (Supply Chain Management) — управления цепочкой поставок.
Что такое SCM
- анализ рыночного спроса и предложения на рынке, выбор продуктов, которые отвечают запросам потребителей;
- оперативная обработка заказов;
- планирование и организация поставок, которая исключит как дефицит, так и избыток продукции на складах и полках;
- формирование стабильных и долгосрочных отношений с партнерами по снабжению и сбыту.
Чтобы сделать управляемым весь цикл закупки сырья, производства и дистрибуции, SCM должно охватывать шесть ключевых областей:
- производство — предприятие определяет, что и как будет производить;
- поставки — при выстраивании цепочки поставок предприятие решает, какие этапы оно реализует самостоятельно, а для каких привлекает сторонние компании;
- расположение — где будут находиться производственные площади, склады, источники поставок;
- запасы — управление запасами призвано застраховать от дефицита, возникающего из-за опозданий в поставках или роста спроса;
- транспортировка — действия в этом направлении зависят от локации участников цепи и выбранной политики в области запасов и сервиса. Они составляют большую долю всех затрат на снабжение и прямо влияют на соблюдение сроков поставок;
- информация — от отлаженности каналов обмена информации зависит возможность координировать планы и контролировать потоки между участниками цепи.
В разных компаниях внедрение SCM имеет свои особенности в зависимости от сферы деятельности, политики взаимодействия с партнерами и клиентами. Однако можно выделить принципы, которые используют большинство предприятий:
- потребителей сегментируют с учетом различной потребности;
- логистическую сеть ориентируют на клиентов;
- проводят анализ спроса и планируют производство на его основе;
- разрабатывают стратегию цепи снабжения;
- стремятся привлекать новые каналы дистрибуции.
Внедрение SCM влечет за собой существенные изменения, которые влияют на разные аспекты деятельности предприятия. Часть из них связана с персоналом: приходится посвящать больше времени заполнению клиентских данных, повышать скорость работы. Наиболее значительные трансформации необходимы в технологическом обеспечении деятельности компании: качественное управление цепочкой поставок невозможно без формирования единого информационного поля, сбора данных и их анализа, автоматизации процессов.
Функции SCM
Эффективное управление цепочками поставок SCM дает организации несколько значимых преимуществ.
Координируя процессы между поставщиками, организация может более динамично реагировать на потребности клиентов, сокращая при этом эксплуатационные расходы. Например, управление на основе спроса удерживает от перепроизводства, что снижает затраты не только на рабочую силу и сырье, но и на управление запасами и транспортные расходы.
- Повышение качества продукта
При отлаженных партнерских связях по всей цепочке компании легче контролировать качество, отслеживать дефекты на разных этапах и работать над их исправлением.
- Повышение качества сервиса
SCM минимизирует вероятность того, что востребованный продукт закончится и станет недоступен для покупателей. При этом оптимизация цепочки поставок ускоряет доставку и позволяет отслеживать статус заказов, что также важно для современных клиентов.
- Использование активов
Благодаря управлению цепочкой поставок организации могут с максимальной эффективностью использовать активы, такие как производственное или транспортное оборудование. За счет выпуска продукции в соответствии с потребностями удается уменьшить «лишний» износ средств производства.
- Устойчивость цепи поставок
За счет прозрачности производственно-сбытовой цепи компания может заранее узнавать о возможной нехватке сырья или падении продаж определенного продукта и предпринять действия, чтобы минимизировать проблемы с исполнением заказов и снижение прибыли. Управляемость позволяет быстрее и легче подстраиваться под форс-мажорные обстоятельства или колебания рынка.
- Конкурентное преимущество и увеличение дохода
В конечном итоге, когда компания использует технологии SCM, ее продукты с большей вероятностью дойдут до покупателей и удовлетворят их ожидания. И кроме того, если производство оптимизировано и настроено на выпуск ровно того количества товаров, которое будет востребовано, дополнительные ресурсы можно направить на разработку новых изделий, расширение ассортимента и продажу дополнительных товаров и услуг.
По оценкам аналитиков, качественное внедрение SCM может принести значимый эффект по всем основным параметрам операционной деятельности:
Снижение стоимости и сроков обработки заказа
Ускорение вывода продукта на рынок
Уменьшение издержек в закупках
Сокращение складских запасов
Снижение производственных затрат
Таким образом, грамотно выстроенная SCM система управления позволяет быстрее доставлять товары, обеспечивать доступность продуктов, сокращать проблемы с качеством и управлять возвратами. В конечном итоге она максимизирует ценность как внутри организации, так и для клиентов, и создает для компании конкурентное преимущество на рынке.
Этапы управления цепочкой поставок
Процесс управления цепочкой поставок состоит из пяти шагов, необходимых для создания и доведения до потребителя качественных продуктов и услуг — в срок и в рамках установленных бюджетов. SCM помогает предприятиям установить четкие планы по закупке ресурсов, созданию и доставке продукции, а также поддержанию позитивных отношений с потребителями.
Чтобы обеспечить наличие запасов для всего производственного процесса, компании необходимо проанализировать спрос, разработать план потребности в сырье и материалах, рассчитать объем производства и требования к системе дистрибуции. Также а этом этапе необходимо определить, какие ресурсы и операции будут производиться самостоятельно, а какие — с привлечением сторонних исполнителей, и сформулировать требования к ним. Ключевой проблемой, о которой стоит помнить, является колебание спроса, которое может повлиять на доступность ресурсов и требуемый объем поставок.
Далее необходимо оценить и выбрать поставщиков, которые могут предоставить необходимые материалы и услуги в рамках бюджета и наиболее эффективным способом. Основное внимание уделяется тому, чтобы найти ресурсы, соответствующие производственным требованиям, и обеспечить их поступление в нужные сроки без сбоев и неоправданных издержек. Сюда же относятся сопутствующие процедуры: заключение контрактов с поставщиками, организация входного контроля сырья, складское хранение.
При производстве конечного продукта необходимо обеспечить его соответствие требованиям потребителей (качество) и объему спроса (количество). Этот этап включает в первую очередь изготовление, контроль и упаковку продуктов. К сопутствующим процессам относится управление производственными мощностями и ресурсами, постоянные улучшения производственного процесса, внутренняя логистика.
Обеспечение бесперебойной доставки продуктов прямо влияет на удовлетворенность клиентов и имидж бренда. Этот процесс состоит из нескольких ключевых систем:
- управление заказами (ведение клиентской базы, учет заказов, ведение базы данных по товарам и ценам);
- управление складом (комплектация заказов, упаковка, этикеровка);
- управление транспортировкой (регулирование товаропотоков, координация, контроль и обеспечение качества доставки).
- Возврат
Помимо доставки, важно обеспечить поддержку клиентов, особенно в отношении возврата товаров и продуктов. Этот этап, также называемый «обратная логистика», включает ряд процедур: оценка состояния товара, оформление возврата, логистика, направление на переработку или уничтожение. Беспрепятственный процесс возврата или обмена так же значим, как и процесс доставки, так как существенно влияет на впечатление клиента от взаимодействия с компанией.
Организации могут подходить к SCM по-разному в зависимости от своих целей, особенностей рынка и продуктов, которые они поставляют. Каждую из пяти фаз можно улучшить, полагаясь на стратегии, характерные для каждой из них: ресурсное представление (RBV), анализ транзакционных издержек (TCA), управление материальной логистикой (MLM), планирование требований к материалам (MRP), полное управление качеством (TQM), конкуренция по времени (TBC), управление взаимоотношениями с клиентами (CRM) и т.д.
Даже хорошо отлаженные цепочки поставок необходимо постоянно контролировать и оценивать. Используя ряд метрик, компания может сфокусироваться на важных операциях и улучшить существующие процессы. Наиболее критические показатели связаны с соответствием нормативным требованиям и выполнением договорных обязательств. Остальные позволяют измерять и повышать эффективность, улучшать обслуживание и увеличивать прибыль.
Основные показатели включают:
- Совершенные заказы: процент безошибочных заказов
- Время цикла оплаты: количество дней между оплатой сырья и получением оплаты за конечный продукт.
- Время цикла заказа: время от получения заказа до доставки продукта.
- Скорость выполнения: процент заказов, доставленных в соответствии с заказом.
Для оценки цепочки поставок существуют сотни метрик. Задача предприятия — найти наиболее показательные для конкретной отрасли и конкретного бизнеса.
Автоматизация SCM
Как программное обеспечение SCM способствует оптимизации и повышению производительности цепочки поставок?
Если решение SCM не внедрено, предприятию приходится использовать несколько точечных решений для управления поставщиками, денежными средствами, запасами и другими ключевыми областями. Полноценное решение SCM позволит управлять всем в одном приложении.
Использование специализированного ПО значительно улучшает видимость всего процесса цепочки поставок. Это помогает бизнес-подразделениям принимать обоснованные решения в отношении запасов, а руководству — оптимизировать целевые показатели на основе предыдущих заказов и финансовых данных, повышая общую производительность цепочки поставок. Кроме того, улучшается обслуживание клиентов, которые могут отслеживать свои заказы в режиме реального времени.
Не менее важно и то, что SCM система становится общекорпоративным средством коммуникации. Она позволяет отделам внутри организации действовать централизованно, используя одни и те же данные, что значительно увеличивает эффективность.
Автоматизированные системы предлагают инструменты, которые помогают управлять всем процессом SCM. Качественное ПО обычно включает возможность отслеживать спрос, координировать сеть поставок и планировать производство. Возможны функции для подробного планирования, поиска поставщиков и управления взаимодействием с ними, а также аналитика, которая поможет контролировать логистику цепочки поставок. SCM собирает в одном пространстве множество элементов: поставщики, перевозчики, возвраты, склады, розничные продавцы, производители и клиентов в одном месте. И тем самым упрощают управление ими за счет повышения эффективности, прозрачности и точности.
Итак, управление цепочкой поставок — это целая стратегия, которая значительно влияет на деятельность компании. Грамотное управление приносит ценные преимущества в виде снижения издержек и оптимального распределения ресурсов. Тогда как ошибки и сбои на разных этапах могут обойтись дорого, приведя к задержкам поставок, проблемам с качеством и репутацией.
Возможности SCM-решений создают огромный потенциал, позволяя менеджменту взаимодействовать в режиме реального времени со всеми участниками цепи. Как результат, с помощью SCM организация может предвидеть проблемы, динамически корректировать цены, повышать качество продуктов, сервиса и удовлетворенность клиентов.
Источник: www.enterchain.ru