Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DATA:
- lt_filters TYPE /iwbep/t_mgw_select_option,
- ls_filter TYPE /iwbep/s_mgw_select_option,
- ls_entity like LINE OF et_entityset,
- lv_begda1 TYPE begda,
- lv_endda1 TYPE endda,
- lv_pernr TYPE pernr_d,
- lv_etext TYPE string,
- lv_atext TYPE string,
- lt_range_atext TYPE RANGE OF atext,
- ls_range_atext LIKE LINE OF lt_range_atext,
- ls_so TYPE /iwbep/s_cod_select_option,
- lt_order TYPE /iwbep/t_mgw_tech_order,
- ls_order TYPE /iwbep/s_mgw_tech_order,
- lt_objects TYPE TABLE OF hrwpc_s_keyobjec,
- lt_pernr TYPE TABLE OF pernr_d,
- lt_pernr_uname TYPE TABLE OF pernr_d,
- lt_pernr_0105 TYPE TABLE OF pernr_d,
- lt_pernr_0001 TYPE TABLE OF pernr_d,
- lv_index TYPE i,
- lv_text TYPE string,
- wa_indx TYPE indx,
- lv_id TYPE c LENGTH 25,
- lt_t528t TYPE TABLE OF t528t,
- lt_t554t TYPE TABLE OF t554t,
- ls_t528t TYPE t528t,
- ls_t554t TYPE t554t,
- ls_hrp1000 TYPE hrp1000,
- lt_hrp1000 TYPE TABLE OF hrp1000.
- FIELD-SYMBOLS:
- <lt_filters> TYPE /iwbep/t_mgw_select_option,
- <ls_entityset> LIKE LINE OF et_entityset,
- <ls_data> TYPE any,
- <ls_field> TYPE any.
- SELECT * FROM t528t INTO TABLE lt_t528t
- WHERE sprsl = sy-langu
- AND otype = 'S'
- AND begda <= sy-datum
- AND endda >= sy-datum.
- * SELECT * FROM t554t INTO TABLE lt_t554t
- * WHERE sprsl = sy-langu
- * AND moabw = '50'.
- SELECT * FROM hrp1000 INTO TABLE lt_hrp1000
- WHERE plvar = '01'
- AND otype = 'O'
- AND begda <= sy-datum
- AND endda >= sy-datum
- AND langu = sy-langu.
- " get all filters from query
- lt_filters = io_tech_request_context->get_filter( )->get_filter_select_options( ).
- lt_order = io_tech_request_context->get_orderby( ).
- READ TABLE lt_order INTO ls_order INDEX 1.
- READ TABLE lt_filters WITH TABLE KEY property = 'ATEXT' INTO ls_filter.
- IF sy-subrc EQ 0.
- LOOP AT ls_filter-select_options INTO ls_so.
- MOVE-CORRESPONDING ls_so TO ls_range_atext.
- DATA(lv_length) = strlen( ls_range_atext ).
- INSERT ls_range_atext INTO TABLE lt_range_atext.
- ENDLOOP.
- ENDIF.
- * IF lv_pernr IS INITIAL.
- * lv_pernr = zhrxs_cl_pcr_util=>uname_to_pernr( sy-uname ).
- * ENDIF.
- lt_pernr_uname = zhrxs_cl_pcr_util=>get_all_pernr_from_uname( sy-uname ).
- LOOP AT lt_pernr_uname INTO lv_pernr.
- CLEAR: wa_indx, lv_id.
- wa_indx-aedat = sy-datum.
- wa_indx-usera = sy-uname.
- wa_indx-pgmid = sy-repid.
- CONCATENATE 'ZHR_PP_OADP_' sy-uname INTO lv_id.
- EXPORT p1 = lv_pernr TO DATABASE indx(hk) ID lv_id FROM wa_indx.
- *-get filter for begda
- READ TABLE lt_filters WITH TABLE KEY property = 'BEGDA' INTO ls_filter.
- IF sy-subrc EQ 0.
- READ TABLE ls_filter-select_options INDEX 1 INTO ls_so.
- IF sy-subrc EQ 0.
- lv_begda1 = |{ ls_so-low(4) }{ ls_so-low+5(2) }{ ls_so-low+8(2) }|.
- ENDIF.
- ELSE.
- lv_begda1 = '18000101'.
- ENDIF.
- *-get filter for endda
- READ TABLE lt_filters WITH TABLE KEY property = 'ENDDA' INTO ls_filter.
- IF sy-subrc EQ 0.
- READ TABLE ls_filter-select_options INDEX 1 INTO ls_so.
- IF sy-subrc EQ 0.
- lv_endda1 = |{ ls_so-low(4) }{ ls_so-low+5(2) }{ ls_so-low+8(2) }|.
- ENDIF.
- ELSE.
- lv_endda1 = '99991231'.
- ENDIF.
- *-get filter for employee type
- READ TABLE lt_filters WITH TABLE KEY property = 'ETEXT' INTO ls_filter.
- IF sy-subrc EQ 0.
- READ TABLE ls_filter-select_options INDEX 1 INTO ls_so.
- IF sy-subrc EQ 0.
- lv_etext = ls_so-low.
- REPLACE ALL OCCURRENCES OF '*' IN lv_etext WITH ''.
- ENDIF.
- ELSE.
- lv_etext = 'ZMSS_EE_DIR'.
- ENDIF.
- DATA lv_objsel TYPE HRWPC_OBJSEL.
- lv_objsel = lv_etext.
- CALL FUNCTION 'HRWPC_RFC_OADP_GET_OBJECTS'
- EXPORTING
- objsel = lv_objsel "'ZMSS_EE_DIR'
- begda = sy-datum
- endda = sy-datum
- user = sy-uname
- TABLES
- t_objects = lt_objects
- EXCEPTIONS
- objsel_not_found = 1
- objectselection_invalid = 2
- OTHERS = 3.
- IF sy-subrc <> 0.
- * Implement suitable error handling here
- ENDIF.
- *
- LOOP AT lt_objects ASSIGNING FIELD-SYMBOL(<line>).
- APPEND INITIAL LINE TO lt_pernr ASSIGNING FIELD-SYMBOL(<lv_pernr>).
- <lv_pernr> = <line>-objid.
- ENDLOOP.
- SELECT pernr FROM pa0105 INTO TABLE lt_pernr_0105
- WHERE begda <= sy-datum
- AND endda >= sy-datum
- AND subty = '0015'
- AND usrid = lv_pernr.
- SELECT pernr FROM pa0001 INTO TABLE lt_pernr_0001
- WHERE begda <= sy-datum
- AND endda >= sy-datum
- AND zzbpe = lv_pernr.
- APPEND LINES OF lt_pernr_0105 TO lt_pernr.
- APPEND LINES OF lt_pernr_0001 TO lt_pernr.
- CLEAR: lt_objects, lt_pernr_0105, lt_pernr_0001.
- ENDLOOP.
- SORT lt_pernr ASCENDING.
- DELETE ADJACENT DUPLICATES FROM lt_pernr.
- IF lines( lt_pernr ) = 0.
- RETURN.
- ENDIF.
- SELECT * FROM t554t INTO TABLE lt_t554t
- WHERE t554t~sprsl = sy-langu
- AND t554t~moabw = '50'
- AND t554t~atext IN lt_range_atext.
- .
- SELECT pa0002~pernr, pa0002~vorna, pa0002~nachn, pa2001~awart, pa2001~abwtg, pa2001~begda, pa2001~endda, pa0001~orgeh, pa0001~plans, pa0000~stat2
- FROM pa0002
- JOIN pa2001 ON pa0002~pernr EQ pa2001~pernr
- JOIN pa0001 ON pa0001~pernr EQ pa0002~pernr
- JOIN pa0000 ON pa0000~pernr EQ pa0002~pernr
- INTO TABLE @DATA(lt_report)
- FOR ALL ENTRIES IN @lt_pernr
- WHERE pa2001~begda LE @lv_endda1
- AND pa2001~endda GE @lv_begda1
- AND pa0002~begda LE @sy-datum
- AND pa0002~endda GE @sy-datum
- AND pa0001~begda LE @sy-datum
- AND pa0001~endda GE @sy-datum
- AND pa0000~stat2 EQ 3
- AND pa0002~pernr EQ @lt_pernr-table_line.
- lv_id = 1.
- LOOP AT lt_report ASSIGNING <ls_data>.
- MOVE-CORRESPONDING <ls_data> TO ls_entity.
- lv_text = '<ls_data>-plans'.
- ASSIGN (lv_text) TO <ls_field>.
- IF <ls_field> IS ASSIGNED.
- READ TABLE lt_t528t INTO ls_t528t WITH KEY plans = <ls_field>.
- ls_entity-plstx = ls_t528t-plstx.
- ENDIF.
- lv_text = '<ls_data>-awart'.
- ASSIGN (lv_text) TO <ls_field>.
- IF <ls_field> IS ASSIGNED.
- READ TABLE lt_t554t INTO ls_t554t WITH KEY awart = <ls_field>.
- IF sy-subrc = 0.
- ls_entity-atext = ls_t554t-atext.
- ENDIF.
- ENDIF.
- lv_text = '<ls_data>-orgeh'.
- ASSIGN (lv_text) TO <ls_field>.
- IF <ls_field> IS ASSIGNED.
- READ TABLE lt_hrp1000 INTO ls_hrp1000 WITH KEY objid = <ls_field>.
- ls_entity-orgeh = ls_hrp1000-stext.
- ENDIF.
- ls_entity-id = lv_id.
- ADD 1 TO lv_id.
- IF ls_entity-atext IS NOT INITIAL.
- APPEND ls_entity TO et_entityset.
- ENDIF.
- CLEAR: ls_entity, ls_t554t, ls_hrp1000, ls_t528t.
- UNASSIGN <ls_field>.
- ENDLOOP.
- "sorting
- IF ls_order-order EQ 'asc'.
- SORT et_entityset ASCENDING BY (ls_order-property).
- ELSEIF ls_order-order EQ 'desc'.
- SORT et_entityset DESCENDING BY (ls_order-property).
- ELSE.
- SORT et_entityset ASCENDING BY begda pernr.
- ENDIF.
- LOOP AT et_entityset ASSIGNING <ls_entityset>.
- <ls_entityset>-begda = |{ <ls_entityset>-begda+6(2) }.{ <ls_entityset>-begda+4(2) }.{ <ls_entityset>-begda(4) }|." && '000000'.
- <ls_entityset>-endda = |{ <ls_entityset>-endda+6(2) }.{ <ls_entityset>-endda+4(2) }.{ <ls_entityset>-endda(4) }|.
- SHIFT <ls_entityset>-pernr LEFT DELETING LEADING '0'.
- ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement