* Boa tarde galera, quem é vivo sempre aparece, hoje vou mostrar
* uma função muito boa que te retorna o intervalo entre duas datas
* em horas, minutos e se for esperto até os segundo, usei essa função
* pra criar uma regra de criticidade das datas onde a empresa deveria
* dar retorno ao cliente deles.
* Vamos lá então porque a função é simples, e de brinde executei a
* rotina de conversão, pra vocês compararem os valores coloquei um
* break-point no meio do processo.
* Bons estudos e espero ter ajudado.
*--------------------------------------------------------------------*
REPORT zfunction_calc_Interval_date_hour.
* Tela de seleão com parametros e um CheckBox caso queira usar a rotina
* de conversão.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_date2 TYPE sy-datum, " Data
p_time2 TYPE sy-uzeit. " Hora
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS :
cb_conv AS CHECKBOX. " Rotina de Conversão.
SELECTION-SCREEN END OF BLOCK b2.
DATA :
l_tdiff TYPE tvro-fahztd,
l_duration(10),
l_hour_bpm TYPE i
.
* Essa é a função.... Simples e rápida.
CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME'
EXPORTING
i_date1 = sy-datum
i_time1 = sy-uzeit
i_date2 = p_date2
i_time2 = p_time2
IMPORTING
e_tdiff = l_tdiff
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
BREAK-POINT.
IF cb_conv IS NOT INITIAL.
* Rotina de conversão da variavel l_tdiff ( Dominio TSTRDURAN )
CALL FUNCTION 'CONVERSION_EXIT_TSTRN_OUTPUT'
EXPORTING
input = l_tdiff
IMPORTING
output = l_duration.
ELSE.
* A minha rotina eu retiro os Minutos tambem, mas se repararem a
* função retorna os segundos também, caso queira.
UNPACK l_tdiff TO l_duration.
* Excluding ( MMSS )
DO 4 TIMES.
SHIFT l_duration RIGHT.
ENDDO.
PACK l_duration TO l_duration.
ENDIF.
WRITE l_duration.
Bom dia, como eu faria para mostrar os segundos ?
ResponderExcluirFala Diego, belezinha ? Acredito que somente tirando o comando SHIFT que fiz no programa do post, assim você vai ter os segundos e assim conseguir trabalhar com essa informação. Espero ter ajudado. vlw.
ResponderExcluir