DO VARYIN用法

发布时间 2023-06-13 13:39:08作者: Chris的博客
    DATA: LT_P0041 TYPE TABLE OF P0041,
          LS_P0041 TYPE P0041,
          LV_DATAR TYPE DATAR,
          LV_DATE  TYPE DATUM.

    IF IV_KEYDT IS NOT INITIAL.
      CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
          PERNR           = IV_PERNR
          INFTY           = '0041'
          BEGDA           = IV_KEYDT
          ENDDA           = IV_KEYDT
        TABLES
          INFTY_TAB       = LT_P0041
        EXCEPTIONS
          INFTY_NOT_FOUND = 1
          INVALID_INPUT   = 2
          OTHERS          = 3.
    ELSE.
      CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
          PERNR           = IV_PERNR
          INFTY           = '0041'
        TABLES
          INFTY_TAB       = LT_P0041
        EXCEPTIONS
          INFTY_NOT_FOUND = 1
          INVALID_INPUT   = 2
          OTHERS          = 3.
    ENDIF.

    SORT LT_P0041 BY BEGDA DESCENDING.
    READ TABLE LT_P0041 INTO LS_P0041 INDEX 1.
    DO IF_HRPA_CONSTANTS=>GC_NUMBER_OF_DATE_TYPES_IT0041 TIMES
                          VARYING LV_DATAR FROM LS_P0041-DAR01 NEXT LS_P0041-DAR02
                          VARYING LV_DATE  FROM LS_P0041-DAT01 NEXT LS_P0041-DAT02.
      IF LV_DATAR = IV_DATAR.
        RV_DATE = LV_DATE.
        EXIT.
      ENDIF.
    ENDDO.