Birthday app - sharathsym/SAP-Employee_summary GitHub Wiki
- =====================================================================*
- Intf.: ig_componentcontroller
- Purp.: programming interface for access of this controller within
- other controllers of the same component
- controller: of
- component: <zwd_hcm_bdays></zwd_hcm_bdays>
- UDate: 20170606 133316
- =====================================================================*
interfaces: ziwci_wd_hcm_bdays .
constants:
wdctx_context type string value `CONTEXT`.
constants:
wdctx_emp type string value `EMP`.
types:
Element_emp type HRPAD_S_PER_PHOTO,
Elements_emp type
standard table of Element_emp
with default key. "#EC NEEDED
- @Returns: controller runtime interface
endinterface.
- =====================================================================*
- Intf.: if_componentcontroller
- Purp.: programming interface for the application class of this
- controller only
- controller: of
- component: <zwd_hcm_bdays></zwd_hcm_bdays>
- UDate: 20170606 133316
- =====================================================================*
interfaces:
IG_COMPONENTCONTROLLER.
aliases:
wdctx_context for IG_COMPONENTCONTROLLER~wdctx_context.
aliases:
wdctx_emp for IG_COMPONENTCONTROLLER~wdctx_emp.
aliases:
Element_emp for IG_COMPONENTCONTROLLER~Element_emp,
Elements_emp for IG_COMPONENTCONTROLLER~Elements_emp.
aliases: wd_get_api for IG_COMPONENTCONTROLLER~wd_get_api.
- @Purpose: creates an action during runtime
endinterface.
- =====================================================================*
- Class: CL_COMPONENTCONTROLLER_Ctr
- Purp.: definitions for application defined methods of controller
- COMPONENTCONTROLLER (COMPONENT)
- UDate: 20170606 133316
- =====================================================================*
public section.
interfaces:
_IF_WDR_Tag_As_Application.
methods Constructor
importing
Wd_This type ref to IF_COMPONENTCONTROLLER
Wd_Context type ref to If_Wd_Context_Node.
- +-------------------------------------------------------------------+
- | general methods |
- +-------------------------------------------------------------------+
methods WDDOAPPLICATIONSTATECHANGE
importing
STATE_CHANGE type ref to If_Wd_Application_State_Change ."#EC NEEDED
methods WDDOBEFORENAVIGATION
importing
IS_CURRENT_ROOT type Wdy_Boolean ."#EC NEEDED
methods WDDOEXIT
importing
REASON type Wdr_Appl_Exit_Reason ."#EC NEEDED
methods WDDOINIT ."#EC NEEDED
methods WDDOPOSTPROCESSING
importing
IS_CURRENT_ROOT type Wdy_Boolean ."#EC NEEDED
private section.
- +-------------------------------------------------------------------+
- | framework properties |
- +-------------------------------------------------------------------+
endclass.
- =====================================================================*
- Class: CL_COMPONENTCONTROLLER_Ctr
- Purp.: explicit definitions derived from application coding
- (COMPONENT)
- Notes: NOT intended for use outside of framework driven calls !!
- UDate: 20170606 133316
- =====================================================================*
- =======================
- =======================
Me->Wd_This = Wd_This. Me->Wd_Context = Wd_Context.
endmethod.
- +-------------------------------------------------------------------+
- | general methods |
- +-------------------------------------------------------------------+
endmethod.
method WDDOBEFORENAVIGATION . "#EC NEEDED
endmethod.
method WDDOEXIT . "#EC NEEDED
endmethod.
METHOD wddoinit .
TYPES: BEGIN OF lty_bday,
pernr TYPE pa0002-pernr,
nachn TYPE pa0002-nachn,
vorna TYPE pa0002-vorna,
gbtag TYPE pa0002-gbtag,
END OF lty_bday.
DATA lo_nd_emp TYPE REF TO if_wd_context_node.
DATA ls_emp TYPE wd_this->element_emp.
data lv_date TYPE sy-datum.
data lv_month TYPE n LENGTH 2.
DATA lt_emp TYPE wd_this->elements_emp.
DATA:lt_pernr TYPE TABLE OF lty_bday,
lv_gbtag TYPE int1,
lv_ltx TYPE t247-ltx,
lv_url(4096) TYPE c.
lv_date = sy-datum.
SELECT SINGLE ltx
FROM t247
INTO lv_ltx
WHERE spras = sy-langu
AND mnr = lv_date+4(2).
IF sy-subrc NE 0.
"Do nothing
ENDIF.
lv_month = sy-datum+4(2).
SELECT b~pernr
nachn
vorna
gbtag
FROM pa0000 AS b INNER JOIN pa0002 AS a
ON b~pernr = a~pernr
INTO TABLE lt_pernr
WHERE b~endda GE lv_date
AND b~begda LE lv_date
AND b~stat2 EQ '3' "Active employee
AND a~gbmon EQ lv_month
AND a~GBTAG GE lv_date+6(2).
IF sy-subrc NE 0.
"Do nothing
ENDIF.
SORT lt_pernr BY pernr.
DELETE ADJACENT DUPLICATES FROM lt_pernr COMPARING pernr.
SORT lt_pernr BY gbtag.
LOOP AT lt_pernr ASSIGNING FIELD-SYMBOL(<fs_pernr></fs_pernr>).
lv_gbtag = <fs_pernr></fs_pernr>-gbtag.
CASE <fs_pernr></fs_pernr>-gbtag.
WHEN '1' OR '21' OR '31'.
DATA(lv_dayformat) = 'st'.
WHEN '2' OR '22'.
lv_dayformat = 'nd'.
WHEN '3' OR '23'.
lv_dayformat = 'rd'.
WHEN OTHERS.
lv_dayformat = 'th'.
ENDCASE.
CALL FUNCTION 'HRWPC_RFC_EP_READ_PHOTO_URI'
EXPORTING
pernr = <fs_pernr></fs_pernr>-pernr
datum = sy-datlo
IMPORTING
uri = lv_url
EXCEPTIONS
not_supported = 1
nothing_found = 2
no_authorization = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc EQ 0.
REPLACE '\' IN lv_url WITH '/'.
ls_emp-image_url = lv_url.
ls_emp-object_key = |{ lv_ltx } { lv_gbtag }{ lv_dayformat }: { <fs_pernr></fs_pernr>-vorna } { <fs_pernr></fs_pernr>-nachn }|.
APPEND ls_emp TO lt_emp.
ELSE.
ls_emp-image_url = 'http://portaldev.ptabank.org:50000/PTALogon/layout/happy-birthday-white-cake-burning-candles-animated-gif.gif'.
ls_emp-object_key = |{ lv_ltx } { lv_gbtag }{ lv_dayformat }: { <fs_pernr></fs_pernr>-vorna } { <fs_pernr></fs_pernr>-nachn }|.
APPEND ls_emp TO lt_emp.
ENDIF.
ENDLOOP.
IF lt_emp[] IS INITIAL.
ls_emp-object_key = |No further birthdays for this month|.
APPEND ls_emp TO lt_emp.
ENDIF.
lo_nd_emp = wd_context->get_child_node( name = wd_this->wdctx_emp ).
lo_nd_emp->bind_table( new_items = lt_emp set_initial_elements = abap_false ).
ENDMETHOD.
method WDDOPOSTPROCESSING . "#EC NEEDED
endmethod.
endclass.