This sample provider in available in the system in class /IWNGW/CL_DEMO_NOTIF_PROVIDER.
CLASS /iwngw/cl_demo_notif_provider DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES /iwngw/if_notif_provider . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS /IWNGW/CL_DEMO_NOTIF_PROVIDER IMPLEMENTATION. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Public Method /IWNGW/CL_DEMO_NOTIF_PROVIDER=>/IWNGW/IF_NOTIF_PROVIDER~GET_NOTIFICATION_PARAMETERS * +-------------------------------------------------------------------------------------------------+ * | [--->] IV_NOTIFICATION_ID TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION-ID * | [--->] IV_TYPE_KEY TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-TYPE_KEY * | [--->] IV_TYPE_VERSION TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-VERSION * | [--->] IV_LANGUAGE TYPE SPRAS * | [<---] ET_PARAMETER TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_T_NOTIFICATION_PARAMETER * | [!CX!] /IWNGW/CX_NOTIF_PROVIDER * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD /iwngw/if_notif_provider~get_notification_parameters. DATA ls_parameter LIKE LINE OF et_parameter. DATA lv_rand_int TYPE i. DATA lv_rand_str TYPE string. DATA lv_quantity TYPE p DECIMALS 0. DATA lv_order_date TYPE d. " Don't specify a specific ID, since it will be generated, put all parameters in the "context" * if iv_notification_id = '001'. CALL FUNCTION 'GENERAL_GET_RANDOM_INT' EXPORTING range = 5000 IMPORTING random = lv_rand_int. lv_rand_str = lv_rand_int. CONDENSE lv_rand_str. ls_parameter-name = 'po_number'. CONCATENATE '#' lv_rand_str INTO ls_parameter-value. ls_parameter-type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string. ls_parameter-is_sensitive = abap_false. APPEND ls_parameter TO et_parameter. ls_parameter-name = 'lr_number'. CONCATENATE '#' lv_rand_str INTO ls_parameter-value. ls_parameter-type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string. ls_parameter-is_sensitive = abap_false. APPEND ls_parameter TO et_parameter. CALL FUNCTION 'GENERAL_GET_RANDOM_INT' EXPORTING range = 10 IMPORTING random = lv_rand_int. lv_rand_str = lv_rand_int. CONDENSE lv_rand_str. IF iv_language = 'D'. ls_parameter-name = 'cost'. CONCATENATE 'USD ' lv_rand_str '.000' INTO ls_parameter-value. ls_parameter-type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string. ls_parameter-is_sensitive = abap_true. APPEND ls_parameter TO et_parameter. ELSE. ls_parameter-name = 'cost'. CONCATENATE '$' lv_rand_str ',000' INTO ls_parameter-value. ls_parameter-type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string. ls_parameter-is_sensitive = abap_true. APPEND ls_parameter TO et_parameter. ENDIF. ls_parameter-name = 'quantity'. ls_parameter-type = 'Edm.Decimal'. lv_quantity = 10000. ls_parameter-value = lv_quantity. ls_parameter-is_sensitive = abap_true. APPEND ls_parameter TO et_parameter. ls_parameter-name = 'requester_name'. ls_parameter-value = 'Gavin Gradel'. ls_parameter-type = /iwngw/if_notif_provider=>gcs_parameter_types-type_string. ls_parameter-is_sensitive = abap_true. APPEND ls_parameter TO et_parameter. ls_parameter-name = 'order_date'. ls_parameter-value = sy-datum. ls_parameter-type = 'Edm.DateTime'. ls_parameter-is_sensitive = abap_true. APPEND ls_parameter TO et_parameter. * endif. ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Public Method /IWNGW/CL_DEMO_NOTIF_PROVIDER=>/IWNGW/IF_NOTIF_PROVIDER~GET_NOTIFICATION_TYPE * +-------------------------------------------------------------------------------------------------+ * | [--->] IV_TYPE_KEY TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-TYPE_KEY * | [--->] IV_TYPE_VERSION TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-VERSION * | [<---] ES_NOTIFICATION_TYPE TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE * | [<---] ET_NOTIFICATION_ACTION TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_T_NOTIFICATION_ACTION * | [!CX!] /IWNGW/CX_NOTIF_PROVIDER * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD /iwngw/if_notif_provider~get_notification_type. DATA ls_naction LIKE LINE OF et_notification_action. IF ( iv_type_key = 'PurchaseOrderTypeKey' OR iv_type_key = 'PurchaseOrderType2Key' ) AND iv_type_version = '1'. es_notification_type-is_groupable = abap_true. ls_naction-action_key = 'AcceptPOActionKey'. ls_naction-nature = /iwngw/if_notif_provider=>gcs_action_natures-positive. APPEND ls_naction TO et_notification_action. ls_naction-action_key = 'RejectPOActionKey'. ls_naction-nature = /iwngw/if_notif_provider=>gcs_action_natures-negative. APPEND ls_naction TO et_notification_action. ELSEIF iv_type_key = 'LeaveRequestTypeKey' AND iv_type_version = '1'. es_notification_type-is_groupable = abap_true. ls_naction-action_key = 'ApproveLRActionKey'. ls_naction-nature = /iwngw/if_notif_provider=>gcs_action_natures-positive. APPEND ls_naction TO et_notification_action. ls_naction-action_key = 'DenyLRActionKey'. ls_naction-nature = /iwngw/if_notif_provider=>gcs_action_natures-negative. APPEND ls_naction TO et_notification_action. ELSE. " TODO: raise error, unexpected notification type/version ENDIF. ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Public Method /IWNGW/CL_DEMO_NOTIF_PROVIDER=>/IWNGW/IF_NOTIF_PROVIDER~GET_NOTIFICATION_TYPE_TEXT * +-------------------------------------------------------------------------------------------------+ * | [--->] IV_TYPE_KEY TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-TYPE_KEY * | [--->] IV_TYPE_VERSION TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-VERSION * | [--->] IV_LANGUAGE TYPE SPRAS * | [<---] ES_TYPE_TEXT TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_TEXT * | [<---] ET_ACTION_TEXT TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_T_NOTIFICATION_ACTION_TEXT * | [!CX!] /IWNGW/CX_NOTIF_PROVIDER * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD /iwngw/if_notif_provider~get_notification_type_text. DATA ls_naction_t LIKE LINE OF et_action_text. DATA lv_tmptext TYPE string. DATA lv_tmpattr TYPE string. IF ( iv_type_key = 'PurchaseOrderTypeKey' OR iv_type_key = 'PurchaseOrderType2Key' ) AND iv_type_version = '1' AND iv_language = 'D'. "language specific handling es_type_text-template_public = 'A purchase order requires your approval'. "TEXT-001. "german text should go here lv_tmptext = 'Purchase order &1 for &2 by &3 requires your approval'. "TEXT-002. REPLACE '&1' WITH '{po_number}' INTO lv_tmptext. REPLACE '&2' WITH '{cost}' INTO lv_tmptext. REPLACE '&3' WITH '{requester_name}' INTO lv_tmptext. es_type_text-template_sensitive = lv_tmptext. es_type_text-template_grouped = 'Purchase orders requiring your approval'. "TEXT-003. ls_naction_t-action_key = 'AcceptPOActionKey'. ls_naction_t-display_text = 'Accept'. "TEXT-004. ls_naction_t-display_text_grouped = 'Accept all'. "TEXT-005. APPEND ls_naction_t TO et_action_text. ls_naction_t-action_key = 'RejectPOActionKey'. ls_naction_t-display_text = 'Reject'. "TEXT-006. ls_naction_t-display_text_grouped = 'Reject all'. "TEXT-007. APPEND ls_naction_t TO et_action_text. ELSEIF ( iv_type_key = 'PurchaseOrderTypeKey' OR iv_type_key = 'PurchaseOrderType2Key' ) AND iv_type_version = '1'. es_type_text-template_public = 'A purchase order requires your approval'. "TEXT-001. lv_tmptext = 'Purchase order &1 for &2 and &3 items by &4 on &5 requires your approval'. "TEXT-008. REPLACE '&1' WITH '{po_number}' INTO lv_tmptext. REPLACE '&2' WITH '{cost}' INTO lv_tmptext. REPLACE '&3' WITH '{quantity}' INTO lv_tmptext. REPLACE '&4' WITH '{requester_name}' INTO lv_tmptext. REPLACE '&5' WITH '{order_date}' INTO lv_tmptext. es_type_text-template_sensitive = lv_tmptext. es_type_text-template_grouped = 'Purchase orders requiring your approval'. "TEXT-003. ls_naction_t-action_key = 'AcceptPOActionKey'. ls_naction_t-display_text = 'Accept'. "TEXT-004. ls_naction_t-display_text_grouped = 'Accept all'. "TEXT-005. APPEND ls_naction_t TO et_action_text. ls_naction_t-action_key = 'RejectPOActionKey'. ls_naction_t-display_text = 'Reject'. "TEXT-006. ls_naction_t-display_text_grouped = 'Reject all'. "TEXT-007. APPEND ls_naction_t TO et_action_text. ELSEIF iv_type_key = 'LeaveRequestTypeKey' AND iv_type_version = '1' AND iv_language = 'D'. es_type_text-template_public = 'A leave request requires your attention'. "TEXT-009. lv_tmptext = 'Leave request &1 by &2 requires your attention'. "TEXT-010. REPLACE '&1' WITH '{lr_number}' INTO lv_tmptext. REPLACE '&2' WITH '{requester_name}' INTO lv_tmptext. es_type_text-template_sensitive = lv_tmptext. lv_tmptext = 'You have &1 leave requests requiring your attention'. "TEXT-011. CONCATENATE '{' /iwngw/if_notif_provider=>gcs_parameter_reserved_names-group_count '}' INTO lv_tmpattr. REPLACE '&1' WITH lv_tmpattr INTO lv_tmptext. es_type_text-template_grouped = lv_tmptext. ls_naction_t-action_key = 'ApproveLRActionKey'. ls_naction_t-display_text = 'Approve'. "TEXT-012. ls_naction_t-display_text_grouped = 'Approve all'. "TEXT-013. APPEND ls_naction_t TO et_action_text. ls_naction_t-action_key = 'DenyLRActionKey'. ls_naction_t-display_text = 'Deny'. "TEXT-014. ls_naction_t-display_text_grouped = 'Deny all'. "TEXT-015. APPEND ls_naction_t TO et_action_text. ELSEIF iv_type_key = 'LeaveRequestTypeKey' AND iv_type_version = '1'. es_type_text-template_public = 'A leave request requires your attention'. "TEXT-009. lv_tmptext = 'Leave request &1 by &2 requires your attention'. "TEXT-010. REPLACE '&1' WITH '{lr_number}' INTO lv_tmptext. REPLACE '&2' WITH '{requester_name}' INTO lv_tmptext. es_type_text-template_sensitive = lv_tmptext. lv_tmptext = 'You have &1 leave requests requiring your attention'. "TEXT-011. CONCATENATE '{' /iwngw/if_notif_provider=>gcs_parameter_reserved_names-group_count '}' INTO lv_tmpattr. REPLACE '&1' WITH lv_tmpattr INTO lv_tmptext. es_type_text-template_grouped = lv_tmptext. ls_naction_t-action_key = 'ApproveLRActionKey'. ls_naction_t-display_text = 'Approve'. "TEXT-012. ls_naction_t-display_text_grouped = 'Approve all'. "TEXT-013. APPEND ls_naction_t TO et_action_text. ls_naction_t-action_key = 'DenyLRActionKey'. ls_naction_t-display_text = 'Deny'. "TEXT-014. ls_naction_t-display_text_grouped = 'Deny all'. " TEXT-015. APPEND ls_naction_t TO et_action_text. ELSE. " TODO: raise error, unexpected notification type/version ENDIF. ENDMETHOD. * <SIGNATURE>---------------------------------------------------------------------------------------+ * | Static Public Method /IWNGW/CL_DEMO_NOTIF_PROVIDER=>/IWNGW/IF_NOTIF_PROVIDER~HANDLE_ACTION * +-------------------------------------------------------------------------------------------------+ * | [--->] IV_NOTIFICATION_ID TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION-ID * | [--->] IV_TYPE_KEY TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-TYPE_KEY * | [--->] IV_TYPE_VERSION TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_TYPE_ID-VERSION * | [--->] IV_ACTION_KEY TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_ACTION-ACTION_KEY * | [<---] ES_RESULT TYPE /IWNGW/IF_NOTIF_PROVIDER=>TY_S_NOTIFICATION_ACTN_RESULT * | [!CX!] /IWNGW/CX_NOTIF_PROVIDER * +--------------------------------------------------------------------------------------</SIGNATURE> METHOD /iwngw/if_notif_provider~handle_action. DATA lt_notif_id TYPE /iwngw/if_notif_provider=>ty_t_notification_id. DATA ls_notif_id LIKE LINE OF lt_notif_id. " For now always return success if ids are set, since no persistence in this test provider IF iv_notification_id IS INITIAL OR iv_action_key IS INITIAL. es_result-success = abap_false. ELSE. es_result-success = abap_true. es_result-delete_on_return = abap_true. * * ls_notif_id-id = iv_notification_id. * APPEND ls_notif_id TO lt_notif_id. * * /iwngw/cl_notification_api=>delete_notifications( * EXPORTING * iv_provider_id = 'IWNGW_DEMO1' * it_notification_id = lt_notif_id ). ENDIF. ENDMETHOD. ENDCLASS.