Pesquisando na internet não encontrei uma rotina abap que fizesse o cálculo entre 2 datas e 2 horas e me desse isso em minutos. Acabei fazendo esse código que ao realizar alguns testes está me atendendo.
DATA: LC_DATA_INI like sy-datum.
DATA: LC_DATA_FIM like sy-datum.
DATA: LC_HORA_INI like sy-UZEIT.
DATA: LC_HORA_FIM like SY-UZEIT.
DATA: LC_DATADIFF like sy-datum.
DATA: LC_HORADIFF like SY-UZEIT.
DATA: LC_MINUTOS TYPE I.
lc_data_ini = SOURCE_FIELDS-INFO_DATA_INI.
lc_data_fim = SOURCE_FIELDS-INFO_DATA_FIM.
CONCATENATE SOURCE_FIELDS-INFO_HORA_INI(2)
SOURCE_FIELDS-INFO_HORA_INI+3(2) '00'
INTO lc_hora_ini.
CONCATENATE SOURCE_FIELDS-INFO_HORA_FIM(2)
SOURCE_FIELDS-INFO_HORA_FIM+3(2) '00'
INTO lc_hora_fim.
IF lc_data_fim <> ''.
LC_DATADIFF = lc_data_fim - lc_data_ini.
LC_HORADIFF = lc_hora_fim - lc_hora_ini.
IF LC_DATADIFF < 1.
IF lc_hora_fim <= lc_hora_ini.
RESULT = 1440 - ( ( LC_HORA_INI - LC_HORA_FIM ) / 60 ).
ELSE.
RESULT = ( LC_HORA_FIM - LC_HORA_INI ) / 60.
ENDIF.
ELSE.
LC_minutos = ( LC_DATADIFF * 24 ) * 60.
IF lc_hora_fim <= lc_hora_ini.
RESULT = LC_minutos - ( ( LC_HORA_INI - LC_HORA_FIM ) / 60 ).
ELSE.
RESULT = LC_minutos - ( LC_HORADIFF / 60 ).
ENDIF.
ENDIF.
ELSE.
RESULT = 0.
ENDIF.
quarta-feira, 29 de setembro de 2010
quinta-feira, 16 de setembro de 2010
RSCZ - Copiar Componentes Query entre InfoProviders
Assinar:
Postagens (Atom)