카테고리 없음

PROVIDE 다중인포타입 기간 처리

SAP HR,CO 2022. 3. 9. 19:46

DATA: LV_TIMES(2) TYPE N.
DATA: BEGIN OF LS_S0014,
         BEG TYPE BEGDA,
         END TYPE ENDDA,
         ANV TYPE ANSVH,
        MNR(3) TYPE NUMC,
        END OF LS_S0014.
FIELD-SYMBOLS: <FS_SPT> TYPE LS_S0014.

PROVIDE FROM P9001 BETWEEN BEGDA AND ENDDA.
CLEAR: LV TIMES, LV_FIELD.
DO.
    ADD 1 TO LV TIMES.
    LV FIELD = ‘P9001-‘ && LV TIMES.
    ASSIGN (LV FIELD) TO <FS_SPT>.
    IF <FS SPT> IS ASSIGNED AND <FS SPT>-BEG IS NOT INITIAL AND <FS_SPT>-END IS NOT INITIAL.
    IF LV_BEGDA IS INITIAL.
       LV_BEGDA= <FS_SPT>-BEG.
    ENDIF.
    MOVE-CORRESPONDING <FS SPT> TO LS_S0014.
    LOOP AT P0001 WHERE BEGDA =< LS_S0014-END 
                            AND ENDDA => LS_S0014-BEG.
    ENDLOOP.
    IF SY-SUBRC = 0.
       MOVE-CORRESPONDING P0001 TO LT P0001_SPLIT.
       LT_P0001_SPLIT-ANSVH = LS_S0014-ANV.
       LT_P0001_SPLIT-BEGDA = LS_S0014-BEG.
       LT_P0001_SPLIT-ENDDA = LS_S0014-END.
       IF LT_P0001_SPLIT-ENDDA >= P9001-ENDDA.
          LT_P0001_SPLIT-ENDDA P9001-ENDDA.
          LV ENDDA LT_P0001_SPLIT-ENDDA.
          LT_P0001_SPLIT-INFTY= '0001".
          APPEND LT_P0001_SPLIT.
          CLEAR: LT_P0001_SPLIT, P0001.
          EXIT. 
       ENDIF.
         LT_P0001_SPLIT-INFTY= '0001’.
         APPEND LT_P0001_SPLIT.
         CLEAR LT_P0001_SPLIT, P0001.
       ENDIF.
       UNASSIGN <FS SPT>.
    ELSE.
       EXIT.
    ENDIF.
       IF P9001-ENDDA =< LV_ENDDA.
          LV_ENDDA = P9001-ENDDA
     ELSE.
          LV_ENDDA = LS_S0014-END.
     ENDIF.
    ENDDO.
  ENDPROVIDE.