В этой статье Андрей Матыс расскажет, как создать File Upload и File Download в программных продуктах SAP Sales Cloud и SAP Service Cloud, ранее известных как C4C (Cloud for Customers).
С4С предоставляет стандартный функционал для загрузки файлов – Attachment Folder (AF). Его можно использовать в стандартных и кастомных объектах. Но Attachment Folder представляет собой отдельную вкладку на экране и пользователям необходимо делать дополнительные «клики», чтобы загрузить файл.
Для загрузки одиночных файлов может помочь File Upload.
В данной статье мы рассмотрим, как создать и настроить File Upload and File Download для кастомного и стандартного бизнес-объекта.
Примечание. SAP рекомендует использовать Attachment Folder вместо File Upload.
Давайте начнем.
Во-первых, нам необходимо создать кастомную node, которая будет использоваться для сохранения загруженного файла.
node File[1,1]{
element
FileContent: BASIS.Global:BinaryObject;
element
FileName: LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
element FileSize: NumberValue;
}
Дополнительно, можно добавить параметр «Filter» в node. Он используется для того, чтобы фильтровать возможные типы файлов для загрузки.
element FileFilter: LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name.
Кастомный бизнес-объект будет выглядеть следующим образом:
import AP.Common.GDT as
apCommonGDT;
businessobject FileUploadObject {
[Label("Name")] element Name: BASIS.Global:Name;
node
File[1,1]{
element
FileContent: BASIS.Global:BinaryObject;
element
FileName: LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
element FileSize: NumberValue;
}
}
Сейчас необходимо выполнить некоторые действия в UI Designer.
Для кастомного тестового объекта будет создан полный набор экранов с Thing-Based навигацией. Кнопки File Upload and File Download будут добавлены на TI экран.
На TI экран необходимо добавить кнопки File Upload и File Download из Toolbox (рисунок 1):
Рисунок 1 – Добавление кнопок File Upload и Download
После этого необходимо подготовить DataModel (рисунок 2).
1. Перетащить структуру FileContent в кастомный объект;
2. Связать структуру FileContent и ее элементы с элементами в объекте;
3. Удалить структуру FileDownload.
Рисунок 2 – Настройки DataModel
После этого необходимо вернуться в Designer и настроить кнопки (рисунки 4, 5).
*Дополнительный шаг: добавить поле «Имя файла» на TI (рисунок 3)
*Рисунок 3 – Добавить поле «Имя файла»
Настроить кнопку Upload Button (рисунок 4).
Рисунок 4 – Настройки кнопки Upload
Рисунок 5 – Настройки кнопки Download
Итак, конфигурация закончена. Сейчас нам необходимо выдать права на кастомный экран и протестировать (рисунок 6).
Рисунок 6 – Кнопки File Upload и Download
Сейчас мы добавим кнопку file upload на стандартный TI экран.
Необходимо создать node в standard бизнес-объекте (в моем случае ServiceRequest) и создать EC.
Дополнительно можно просмотреть видео, как создать и прикрепить EC к стандартному экрану:
https://www.youtube.com/watch?v=fYfkQW564l0
Расширение стандартного объекта будет выглядеть так:
import AP.Common.GDT;
import AP.CRM.Global;
[Extension] businessobject AP.CRM.Global:ServiceRequest {
node Item {
}
node
ServiceReferenceObject {
}
node File[1,1]{
element
FileContent: BASIS.Global:BinaryObject;
element
FileName: LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
element FileSize: NumberValue;
}
}
После создания кастомной ноды необходимо создать EC.
На вкладке Designer необходимо добавить кнопки Upload и Download (также как на рисунке 2).
После этого необходимо сконфигурировать DataModel согласно рисунку 7.
Дополнительно была добавлена структура Inport. Она будет использована для того, чтобы хранить полученное значение Service Request ID с TI экрана.
Также необходимо сконфигурировать кнопки на вкладке Designer в соответствии Data Model (аналогично с рисунками 4 и 5).
Рисунок 7 – Конфигурация Data Model на экране EC
Сейчас нам необходимо сконфигурировать Inport и Event Handler на вкладке Controller (рисунки 8 и 9).
Рисунок 8 – Настройки Inport
Рисунок 9 – Настройки Event Handler
Сейчас нам необходимо прикрепить экран EC к стандартному экрану (я прикрепил EC к SR_TI на Pane Container) и протестировать (рисунок 10).
Рисунок 10 – File Upload на стандартном TI экране
Для удаления добавленного файла необходимо создать кастомный action для удаления данных из custom node.
Автор статьи - Андрей Матыс, инженер-программист отдела разработок направления Hybris