* Irei mostrar hoje a função 'DAY_ATTRIBUTES_GET' que retorna uma tabela
* muito interessante que mostra todos os atributos diários em um certo
* intervalo de tempo, dá pra faze muita coisa com estes dados de retorno
* dá pra faze calendário, rotina de apontamento, agenda, um monte de
* coisa só depende de quanto você gosta de brincar com ABAP
REPORT z_day_attributes_get.
* Declaração
DATA :
vg_newdate TYPE sy-datum,
it_day_atr TYPE TABLE OF casdayattr,
st_day_atr TYPE casdayattr.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS:
so_peri FOR sy-datum.
PARAMETERS:
p_langu TYPE scal-fcalid DEFAULT 'BR'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM : f_day_attributes,
f_show.
*&---------------------------------------------------------------------*
*& Form f_day_attributes
*&---------------------------------------------------------------------*
FORM f_day_attributes.
CALL FUNCTION 'DAY_ATTRIBUTES_GET'
EXPORTING
factory_calendar = p_langu " Dias de trabalho no BR
holiday_calendar = p_langu " Dias de feriado no BR
date_from = so_peri-low " Data Inicial
date_to = so_peri-high " Data Final
language = sy-langu " Linhuagem
* IMPORTING
* YEAR_OF_VALID_FROM =
* YEAR_OF_VALID_TO =
* RETURNCODE =
TABLES
day_attributes = it_day_atr
EXCEPTIONS
factory_calendar_not_found = 1
holiday_calendar_not_found = 2
date_has_invalid_format = 3
date_inconsistency = 4
OTHERS = 5
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
BREAK-POINT.
ENDFORM. " f_day_attributes
*&---------------------------------------------------------------------*
*& Form f_show
*&---------------------------------------------------------------------*
FORM f_show.
LOOP AT it_day_atr INTO st_day_atr.
WRITE st_day_atr.
ENDLOOP.
ENDFORM. " f_show