!--a11y-->
Dieser Eventhandler wird nach
OnRequest durchlaufen. Er dient dazu, Daten für das Layout zu beschaffen, aufzubereiten und eventuell Berechnungen durchzuführen.In unserem Beispiel enthält der Eventhandler OnInitialization den folgenden Programmcode.
|
DATA: line_item TYPE bsbasket, item_detail TYPE bsbookdata, catid_tab TYPE catid_tab, psubtotal TYPE bscurr.
IF application->m_basket IS NOT INITIAL. LOOP AT application->m_basket INTO line_item. IF line_item-qty > 0. append line_item-catid to catid_tab. ELSE. DELETE application->m_basket. ENDIF. ENDLOOP.
SORT catid_tab. DELETE ADJACENT DUPLICATES from catid_tab.
CALL METHOD cl_book_shop=>get_items EXPORTING catid_tab = catid_tab IMPORTING bookdata = bookcat_tab.
* calculate total price LOOP AT bookcat_tab INTO item_detail. READ TABLE application->m_basket WITH KEY catid = item_detail-cata_id INTO line_item. psubtotal = psubtotal + ( item_detail-our_price * line_item-qty ). ENDLOOP. totalamount = psubtotal. ENDIF. |
Wenn der Einkaufskorb nicht leer ist, werden die Katalog-Ids der Einträge in der Tabelle
catid_tab gespeichert. Anhand dieser Tabelle werden dann die benötigten Detaildaten zu den Büchern mittels der Methode cl_book_shop=>get_items ermittelt und in die interne Tabelle bookcat_tab geschrieben (vgl. Seitenattribute).Abschließend wird der Gesamtpreis der Bücher im Korb berechnet, der dann im
Layout mit ausgegeben wird.
Nun zum letzten Eventhandler dieser Seite:
