Ako vytvoriť Custom Business Object s automaticky generovaným ID číslom a kontrolami v SAP Marketing Cloude?
Ako vytvoriť Custom Business Object s automaticky generovaným ID číslom a kontrolami v SAP Marketing Cloude?
Napísal: Filip Žarnovický, CX konzultant
Narozdiel od predchádzajúcich on-premisových riešení, SAP Marketing Cloud zatiaľ neponúka príliš veľa možností nastavenia custom business objectu. Ak teda chcete mať automaticky generované ID, prípadne kontroly vyplnenia povinných polí, potrebujete pomoc vývojára. Ide však o veľmi jednoduchú činnosť, ktorú s malou pomocou zvládnete aj vy. Tou pomocou je práve tento blog kde si popíšeme:
- Ako vytvoriť custom business object vrátane samostatnej aplikácie na ich manažovanie.
- Ako ho naplniť poliami, ktoré chcete aby obsahoval.
- Ako zabezpečiť automatické generovanie ID podľa Vami určenej číselnej šablóny.
- Ako automaticky dopĺňať meno zamestnanca, ktorý custom objekt vytvoril.
- Ako nastaviť základné kontroly na dátumy a vyplnenie povinných polí spolu s chybovými hláškami.
- Začneme so základným vytvorením custom business object. V skupine Extensibility otvoríme app Custom Business Objects.
- Vytvoríme nový objekt klikom na tlačidlo New (vpravo hore).
- Definujeme mu Name. Ďalšie polia sa doplnia automaticky, je ich ale možné zmeniť. Klikneme na tlačidlo Create.
- Otvorí sa nám nové okno so záložkou General Information. Podľa potreby zaškrtneme nasledovné checkboxy.
- Determination and Validation – umožňuje implementovať custom logic.
- UI Generation – generovanie User Interface pre bežiacu aplikáciu na riadenie objektu.
- Service Generation – vytváranie ODát, ktoré umožňujú uploadovanie dát.
- Can Be Associated – umožňujú asociáciu objektu s custom field.
- System Administrative Data – automaticky vytvára administratívne polia (Created On, Created By, Changed On, Changed By).
- Change Documents – automatické logovanie o zmenách objektov.
- Data Access Management – poskytuje bezpečnostnú funkcionalitu relevantnú pre ochranu dát.
Pozn. pre naše potreby zaškrtneme prvých 6 možností
- Presunieme sa na záložku Fields. Systém automaticky vytvoril základné Labels. Cez tlačidlo New máme možnosť pridať nové. Doplníme mu názov a typ. Väčšina typov je jednoduchá bez potreby ďalšieho nastavenia, rozdiel je však pri type Code List. Pre ten je potrebné vytvoriť špecializovaný zoznam možností výberu. Postup vytvorenia Code Listu nájdete tu.
- Pri výbere Code Listu sa nám zobrazia len tie, ktoré sú so statusom Published. Z tých si následne môžeme vybrať ten, ktorý potrebujeme.
- Takýmto spôsobom si naplníme všetky potrebné Labels, ktoré chceme v našom objekte používať.
!!! Pre potreby vytvorenia kontrol je dôležité vytvoriť pole Is Consistent s typom Checkbox.
- Pred tým ako budeme pokračovať s vytváraním generátora ID a kontrolami, sme upozornení na to, že musíme objekt publikovať.
- Vykonáme tak vpravo dole tlačidlom Publish.
- Vrátime sa naspäť do nášho novo vytvoreného a publikovaného objektu na záložku Logic. Status objektu vidíme vpravo hore. Vytváranie custom Logic sa delí na 2 časti:
- After Modification
- Before Save
My začneme pracovať s After Modification, kde definujeme hlavnú časť nášho kódu.
- Zobrazí sa nám okno Draft Logic, kam môžeme vpisovať kód. Na obrázku sa nachádza príklad kódu, ktorý generuje ID objektu vo formáte 6500x. Samozrejme formát si môžete zmeniť.
Pozn. tento kód je nastavený len na čisto numerický formát generovania ID, čiže bez písmen.
Zvýraznené časti obsahujú názov objektu a polí, ktoré sme si definovali v našom príklade bod 7. Tieto časti si musíte upraviť podľa názvu vášho objektu a polí.
HINT: ak začnete písať názov poľa / objektu, stlačte CTRL+SPACE a zobrazí sa vám pomôcka všetkých dostupných polí, z ktorých si vyberiete vaše ID.
Kód na generovanie 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 prípade, že máte chybu v syntaxe, systém vás na to upozorní červeným zvýraznením riadku spolu s chybovou hláškou.
- Vytvorený kód je možné si otestovať. Kliknutím do Click to add value (1) sa zobrazia vami vytvorené polia, ktoré možno naplniť do testovacieho scenára. Následne vľavo dole stlačíme Test (2).
- V okne Test Results si vieme pozrieť výsledok testu. V prípade, že nám doplnilo pole ID, náš kód je správny.
- Rovnakým spôsobom pridáme aj časť s automatickým doplnením zamestnanca a kontrolami povinne vyplnených polí Start Date, End Date, Name a či End Date je väčší ako Start Date.
Pozn. Pole Is Consistent používame ako pomocné pole na preklenutie kontrol z logických častí 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álnu podobu kódu otestujeme, uložíme a publikujeme.
- Prejdeme do časti Before Save.
- Vložíme kód na rozhodnutie o uložení podľa kontrol v časti After Validation a pridaní Error Messages. Pri prispôsobovaní kódu sa riadime pokynmi v bode 11.
Pozn. V prípade, že sme do časti After Modification nepridávali kontroly, tento bod nevykonáme.
Kód do časti 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 prípade, že sme na úvodnej strane objektu zaškrtli možnosť UI Generation, vytvorí sa nám samostatná aplikácia na vytváranie nášho custom objektu. Cez hyperlink Maintain Catalogs definujeme, v akom katalógu a teda zároveň aj v skupine aplikácií sa nám naša custom appka zobrazí.
- V prípade, že ste sa riadili všetkými pokynmi, máte na home page prístupnú aplikáciu na vytváranie vlastných custom objektov.