FUNCTION ZSNSSF_CALCULATE_DATA.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IV_DATEF) TYPE DATUM
*" REFERENCE(IV_TIMEF) TYPE UZEIT
*" REFERENCE(IV_DATET) TYPE DATUM
*" REFERENCE(IV_TIMET) TYPE UZEIT
*" EXPORTING
*" REFERENCE(EV_TIME_DIFF) TYPE STRING
*" REFERENCE(EV_SECONDS) TYPE STRING
*"----------------------------------------------------------------------
DATA: LV_TIMEDIFF TYPE T,
LV_DATE_B TYPE D,
LV_DATE_S TYPE D,
LV_TIME_B TYPE T,
LV_TIME_S TYPE T.
DATA: LV_DIFF_D TYPE P, "天数差
LV_DIFF_H TYPE P, "小时数差
LV_DIFF_M TYPE P, "分钟数差
LV_DIFF_S TYPE P, "秒数差
LV_DIFF_ALL TYPE P, "总秒数差
LV_DIFF_TMP TYPE P. "除去小时的秒数
IF IV_DATEF = IV_DATET.
LV_DIFF_D = 0.
IF IV_TIMET > IV_TIMEF.
LV_TIME_B = IV_TIMET.
LV_TIME_S = IV_TIMEF.
ELSE.
LV_TIME_B = IV_TIMEF.
LV_TIME_S = IV_TIMET.
ENDIF.
ELSEIF IV_DATEF > IV_DATET.
LV_DATE_B = IV_DATEF.
LV_DATE_S = IV_DATET.
LV_TIME_B = IV_TIMEF.
LV_TIME_S = IV_TIMET.
ELSEIF IV_DATEF < IV_DATET.
LV_DATE_B = IV_DATET.
LV_DATE_S = IV_DATEF.
LV_TIME_B = IV_TIMET.
LV_TIME_S = IV_TIMEF.
ENDIF.
LV_TIMEDIFF = LV_TIME_B - LV_TIME_S.
IF LV_TIMEDIFF > LV_TIME_B AND IV_DATEF <> IV_DATET.
LV_DIFF_D = LV_DATE_B - LV_DATE_S - 1.
ELSEIF LV_TIMEDIFF = LV_TIME_B AND IV_DATEF <> IV_DATET.
LV_DIFF_D = LV_DATE_B - LV_DATE_S .
ELSEIF LV_TIMEDIFF < LV_TIME_B AND IV_DATEF <> IV_DATET.
LV_DIFF_D = LV_DATE_B - LV_DATE_S .
ENDIF.
LV_DIFF_ALL = LV_TIME_B+0(2) * 3600 + LV_TIME_B+2(2) * 60 + LV_TIME_B+4(2) -
LV_TIME_S+0(2) * 3600 - LV_TIME_S+2(2) * 60 - LV_TIME_S+4(2) .
LV_DIFF_H = FLOOR( ABS( LV_DIFF_ALL ) / 3600 ).
LV_DIFF_TMP = ABS( ABS( LV_DIFF_ALL ) - ABS( LV_DIFF_H * 3600 ) ).
LV_DIFF_M = FLOOR( LV_DIFF_TMP / 60 ) .
LV_DIFF_S = ABS( LV_DIFF_TMP - LV_DIFF_M * 60 ).
LV_DIFF_H = LV_DIFF_H + LV_DIFF_D * 24.
EV_TIME_DIFF = LV_DIFF_H && '时' &&
LV_DIFF_M && '分' && LV_DIFF_S && '秒'.
EV_SECONDS = LV_DIFF_ALL . "间隔秒数
ENDFUNCTION.