You are on page 1of 5

REPORT yhrr0023.

INFOTYPES: 0001, 0002.


TABLES: pernr.
TYPES: BEGIN OF y_alv,
pernr
TYPE p_pernr,
ordem
TYPE string,
nome
TYPE string,
cargo
TYPE string,
dt_admissao TYPE datum,
anos
TYPE i,
meses
TYPE i,
dias
TYPE i,
END OF y_alv.
DATA: t_alv TYPE TABLE OF y_alv,
w_alv TYPE y_alv.
DATA: l_message_handler TYPE REF TO if_hrpa_message_handler,
l_begda
TYPE datum,
l_endda
TYPE datum,
l_index
LIKE sy-tabix,
l_idx_c
TYPE string,
l_trat(5)
TYPE c,
l_nome_c(60)
TYPE c,
l_stext
TYPE p1000-stext.
DATA: l_layout TYPE slis_layout_alv,
l_layout1 TYPE slis_layout_alv,
l_repid LIKE sy-repid,
w_fieldcat TYPE slis_fieldcat_alv,
t_fieldcat TYPE slis_t_fieldcat_alv.
START-OF-SELECTION.
l_begda = pn-begda.
l_endda = pn-endda.
IF l_begda = sy-datum AND l_endda = '99991231'.
MESSAGE 'Perodo escolhido no trar resultados. Escolher outro perodo.' TYPE 'I'.
RETURN.
ENDIF.
IF l_endda = '99991231'.
l_endda = sy-datum.
ENDIF.

GET pernr.
PERFORM get_data.
END-OF-SELECTION.

SORT t_alv BY anos meses dias DESCENDING pernr ASCENDING.


LOOP AT t_alv INTO w_alv.
l_index = sy-tabix.
l_idx_c = l_index.
CONCATENATE l_idx_c '' INTO w_alv-ordem.
CONDENSE w_alv-ordem NO-GAPS.
MODIFY t_alv FROM w_alv INDEX l_index.
ENDLOOP.
* PERFORM alv_layout.
* PERFORM alv_fieldcat.
*
* PERFORM exibe_alv.
FORM open_job_formulario.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = fp_outputparams
EXCEPTIONS
cancel
=1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS
= 5.
IF sy-subrc IS NOT INITIAL.
MESSAGE 'Erro ao executar relatrio' TYPE 'E' .
ENDIF.
fp_docparams-langu = 'P'.
fp_docparams-country = 'BR'.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = 'YHR_FORM_DOSSIE'
IMPORTING
e_funcname = fm_name.
ENDFORM.
FORM get_data.
CLEAR: w_alv.
w_alv-pernr = pernr-pernr.
* Buscar data de admisso
CALL FUNCTION 'HR_ENTRY_DATE'
EXPORTING
persnr
= pernr-pernr

IMPORTING
entrydate
= w_alv-dt_admissao
EXCEPTIONS
entry_date_not_found = 1
pernr_not_assigned = 2
OTHERS
= 3.
CHECK w_alv-dt_admissao IS NOT INITIAL.
* Calcular dias, meses e anos
CALL FUNCTION 'HR_ES_CALC_YRS_MTHS_DAYS'
EXPORTING
beg_da
= w_alv-dt_admissao
end_da
= l_endda
IMPORTING
no_day
= w_alv-dias
no_month
= w_alv-meses
no_year
= w_alv-anos
EXCEPTIONS
dateint_error = 1
OTHERS
= 2.
* Buscar nome e forma de tratamento
rp-provide-from-last p0002 space l_begda l_endda.
CLEAR: l_trat.
SELECT SINGLE atext
INTO l_trat
FROM t522t
WHERE anred = p0002-anred
AND sprsl = sy-langu.
IF sy-subrc IS INITIAL AND l_trat IS NOT INITIAL.
CONCATENATE l_trat p0002-cname INTO l_nome_c SEPARATED BY space.
CALL FUNCTION 'ISP_CONVERT_FIRSTCHARS_TOUPPER'
EXPORTING
input_string = l_nome_c
IMPORTING
output_string = l_nome_c.
w_alv-nome = l_nome_c.
ENDIF.
* Buscar cargo
rp-provide-from-last p0001 space l_begda l_endda.
CALL FUNCTION 'RH_READ_OBJECT'
EXPORTING
plvar = '01'
otype = 'C'
objid = p0001-stell
IMPORTING

stext = l_stext
EXCEPTIONS
not_found = 1
OTHERS = 2.
w_alv-cargo = l_stext.
APPEND w_alv TO t_alv.
ENDFORM.
FORM exibe_alv.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= l_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
"i_grid_title
= 'MINISTRIO PBLICO DO ESTADO DO ESPRITO SANTO'
i_callback_pf_status_set = 'PF_STATUS_SET'
is_layout
= l_layout
it_fieldcat
= t_fieldcat
i_default
= 'X'
i_save
= 'A'
TABLES
t_outtab
= t_alv
EXCEPTIONS
program_error
=1
OTHERS
= 2.
ENDFORM.
FORM pf_status_set USING i_rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD' OF PROGRAM 'SAPLKKBL'.
"SET PF-STATUS 'STATUS_ALV' EXCLUDING i_rt_extab.
ENDFORM.
FORM alv_layout.
l_layout-zebra
= 'X'.
l_layout-colwidth_optimize
= 'X'.
ENDFORM.
" alv_layout
FORM alv_fieldcat.
PERFORM fill_fieldcat USING: 1 'ORDEM' 'Ordem de Antiguidade na Carreira',
2 'NOME' 'Nome',
3 'CARGO' 'Cargo',
4 'ANOS' 'Anos',
5 'MESES' 'Meses',
6 'DIAS' 'Dias'.
ENDFORM.

" alv_fieldcat

FORM fill_fieldcat USING posicao


fieldname

texto_cabecalho.
CLEAR: w_fieldcat.
w_fieldcat-col_pos = posicao.
w_fieldcat-fieldname = fieldname.
w_fieldcat-seltext_m = texto_cabecalho.
w_fieldcat-tabname = 'T_ALV'.
APPEND w_fieldcat TO t_fieldcat.
ENDFORM.
*-------------------------------------------------------------------*
* Form TOP-OF-PAGE
*
*-------------------------------------------------------------------*
* ALV Report Header
*
*-------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
w_header TYPE slis_listheader,
t_line
LIKE w_header-info,
l_lines
TYPE i,
l_linesc(10) TYPE c.
* MP
CLEAR w_header.
w_header-typ = 'H'.
w_header-info = 'MINISTRIO PBLICO DO ESTADO DO ESPRITO SANTO'.
APPEND w_header TO t_header.
* Ttulo
CLEAR w_header.
w_header-typ = 'S'.
w_headerinfo = 'ANTIGUIDADE NA CARREIRA DOS MEMBROS DO MINISTRIO PBLICO'.
APPEND w_header TO t_header.
* Data
CLEAR: w_header.
w_header-typ = 'S'.
w_header-key = 'Data: '.
CONCATENATE sy-datum+6(2) '/'
sy-datum+4(2) '/'
sy-datum(4) INTO w_header-info.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM.

You might also like