Jak vytvořit Custom Business Object s automaticky generovaným ID číslem a kontrolami v SAP Marketing Cloudu?
Jak vytvořit Custom Business Object s automaticky generovaným ID číslem a kontrolami v SAP Marketing Cloudu?
Napsal: Filip Žarnovický, CX konzultant
Narozdíl od předchozích on-premisových řešení, SAP Marketing Cloud zatím nenabízí příliš mnoho možností nastavení custom business objectu. Pokud tedy chcete mít automaticky generované ID, případně kontroly vyplnění povinných polí, potřebujete pomoc vývojáře. Jde však o velmi jednoduchou činnost, kterou s malou pomocí zvládnete i vy. Tou pomocí je právě tento blog kde si popíšeme:Jak vytvořit custom business object včetně samostatné aplikace na jejich správu.
- Jak ho naplnit poli, které chcete aby obsahoval.
- Jak zajistit automatické generování ID dle Vámi určené číselné šablony.
- Jak automaticky doplňovat jméno zaměstnance, který custom objekt vytvořil.
- Jak nastavit základní kontroly na data a vyplnění povinných polí spolu s chybovými hláškami.
- Začneme se základním vytvořením custom business objectu. V skupině Extensibility otvoříme app Custom Business Objects.
- Vytvoríme nový objekt klikom na tlačidlo New (vpravo hore)
- Definujeme mu Name. Další pole se doplní automaticky, je jich ale možné změnit. Klikneme na tlačítko Create.
- Otevře se nám nové okno se záložkou General Information. Podle potřeby zaškrtněte následující checkboxy.
- Determination and Validation – umožňuje implementovat custom logic.
- UI Generation – generování User Interface pro běžící aplikaci na řízení objektu.
- Service Generation – vytváření Odate, které umožňují uploadování dat.
- Can Be Associated – umožňují asociaci objektu s custom field.
- System Administrative Data – automaticky vytváří administrativní pole (Created On, Created By, Changed On, Changed By).
- Change Documents – automatické logování o změnách objektů.
- Data Access Management – poskytuje bezpečnostní funkcionalitu relevantní pro ochranu dat.
Pozn. pro naše potřeby zaškrtneme prvních 6 možností.
- Přesuneme se na záložku Fields. Systém automaticky vytvořil základní Labels. Přes tlačítko New máme možnost přidat nové. Doplníme mu Name a Type. Většina typů je jednoduchá bez nutnosti dalšího nastavení, rozdíl je však u typu Code List. Pro ten je třeba vytvořit specializovaný seznam možností výběru. Postup vytvoření Code Listu naleznete zde.
- Při výběru Code Listu se nám zobrazí pouze ty, které jsou se statusem Published. Z těch si následně můžeme vybrat ten, který potřebujeme.
- Tímto způsobem si naplníme všechny potřebné Labels, které chceme v našem objektu používat.
!!! Pro potřeby vytvoření kontrol je důležité vytvořit pole Is Consistent s typem Checkbox.
- Před tím než budeme pokračovat s vytvářením generátoru ID a kontrolami, jsme upozorněni na to, že musíme objekt publikovat.
- Provedeme tak vpravo dole tlačítkem Publish.
- Vrátíme se zpět do našeho nově vytvořeného a publikovaného objektu na záložku Logic. Status objektu vidíme vpravo nahoře. Vytváření custom Logic se dělí na 2 části:
- After Modification
- Before Save
My začneme pracovat se After Modification, kde definujeme hlavní část našeho kódu.
- Zobrazí se nám okno Draft Logic, kam můžeme vpisovat kód. Na obrázku se nachází příklad kódu, který generuje ID objektu ve formátu 6500x. Samozřejmě formát si můžete změnit.
Pozn. tento kód je nastaven pouze na čistě numerický formát generování ID, čili bez písmen.
Zvýrazněné části obsahují název objektu a polí, které jsme si definovali v našem příkladu bod 7. Tyto části si musíte upravit podle názvu vašeho objektu a polí.
HINT: pokud začnete psát název pole / objektu, stiskněte CTRL + SPACE a zobrazí se vám pomůcka všech dostupných polí, ze kterých si vyberete vaše ID.
Kód na generování ID:
*set ID
IF tradepromotion-promotionid IS INITIAL.
SELECT MAX( Promotionid ) FROM yy1_tradepromotion INTO @DATA(current_max_id).
if current_max_id = 0.
tradepromotion-PromotionID = 65001.
else.
tradepromotion-promotionID = current_max_id + 1.
endif.
ENDIF.
- V případě, že máte chybu v syntaxi, systém vás na to upozorní červeným zvýrazněním řádku spolu s chybovou hláškou.
- Vytvořený kód je možné si otestovat. Kliknutím do Click to add value (1) se zobrazí vámi vytvořené pole, které lze naplnit do testovacího scénáře. Následně vlevo dole stiskneme Test (2).
- V okně Test Results si umíme podívat na výsledek testu. V případě, že nám doplnilo pole ID, náš kód je správný.
- Stejným způsobem přidáme i část s automatickým doplněním zaměstnance a kontrolami povinně vyplněných polí Start Date, End Date, Name a zda End Date je větší než Start Date.
Pozn. Pole Is Consistent používáme jako pomocné pole na překlenutí kontrol z logických částí After Modification do Before Save.
* find out name of employee
tradepromotion-employeename = cl_abap_context_info=>get_user_formatted_name( ).
* check of filled values
IF tradepromotion-promotionstartdate IS INITIAL
OR tradepromotion-promotionenddate IS INITIAL
OR tradepromotion-promotionstartdate GE tradepromotion-promotionenddate
OR tradepromotion-promotionname IS INITIAL
tradepromotion-isconsistent = abap_false.
ELSE.
tradepromotion-isconsistent = abap_true.
ENDIF.
- Finální podobu kódu otestujeme, uložíme a publikujeme.
- Přejdeme do části Before Save.
- Vložíme kód na rozhodnutí o uložení podle kontrol v části After Validation a přidání Error Messages. Při přizpůsobování kódu se řídíme pokyny v bodě 11.
Pozn. V případě, že jsme do části After Modification nepřidávali kontroly, tento bod neprovedeme.
Kód do části Before Save:
* decide to save on checks
IF tradepromotion-isconsistent EQ abap_true.
valid = abap_true.
RETURN.
ELSE.
valid = abap_false.
ENDIF.
*error messages
IF tradepromotion-promotionstartdate IS INITIAL OR tradepromotion-promotionenddate IS INITIAL.
message = ‚Start Date and End Date must not be empty.‘.
RETURN.
ELSEIF tradepromotion-promotionstartdate GE tradepromotion-promotionenddate.
CONCATENATE ‚End Date‘ tradepromotion-promotionenddate ‚must be later than Start Date‘ tradepromotion-promotionstartdate ‚!‘ INTO message SEPARATED BY space.
RETURN.
ENDIF.
IF tradepromotion-promotionname IS INITIAL.
message = ‚Name must not be empty.‘.
RETURN.
ENDIF.
- V případě, že jsme na úvodní straně objektu zaškrtli možnost UI Generation, vytvoří se nám samostatná aplikace na vytváření našeho custom objektu. Přes hyperlink Maintain Catalogs definujeme, v jakém katalogu a tedy zároveň i ve skupině aplikací se nám naše custom appky zobrazí.
- V případě, že jste se řídili všemi pokyny, máte na home page přístupnou aplikaci na vytváření vlastních custom objektů.