카테고리 없음

가용예산 확인

SAP HR,CO 2020. 4. 21. 17:06

  METHOD GET_PERIOD_COSP_TOTAL.

    DATALR_WRTTP TYPE RANGE OF WRTTP,
          LR_YRNMN TYPE RANGE OF ZEYRNMN,
          LR_OBJNR TYPE RANGE OF J_OBJNR,
          LR_VERSN TYPE RANGE OF VERSN,
          LR_KSTAR TYPE RANGE OF KSTAR.

    DATALT_KOSTL TYPE GSETH_MD_TAB,
          LS_KOSTL TYPE GRPMDLINE.

    DATALV_OBJNR TYPE J_OBJNR.

    DATALS_COSP TYPE COSP,
          LT_COSP TYPE TABLE OF COSP.

    DATALV_MONTH(2TYPE N.

    DATALV_STRING TYPE CHAR30.

    CLEARLR_OBJNR[]LT_COSPLV_STRINGE_WKGRT,
           LR_WRTTP[]LR_WRTTPLV_MONTHLT_KOSTLLS_KOSTL,
           LR_KSTAR[].

*-> 계획 실적 구분
    CASE I_WRTTP_TYPE.
      WHEN '1'.
        LR_WRTTP VALUE #SIGN 'I' OPTION 'EQ' LOW '01' ).
        LR_VERSN VALUE #SIGN 'I' OPTION 'EQ' LOW I_VERSN ).

      WHEN OTHERS.
        LR_WRTTP VALUE #SIGN 'I' OPTION 'EQ' LOW '04' ).
        LR_VERSN VALUE #SIGN 'I' OPTION 'EQ' LOW '000' ).
    ENDCASE.

*-> 기간(월) / 기간(월)From - 기간(월)To
    IF I_YRNMN_TO IS NOT INITIAL.
      LR_YRNMN VALUE #SIGN 'I' OPTION 'BT' LOW I_YRNMN_FROM HIGH I_YRNMN_TO ).
    ELSE.
      LR_YRNMN VALUE #SIGN 'I' OPTION 'EQ' LOW I_YRNMN_FROM ).
    ENDIF.

    CASE I_OBJTY.
      WHEN 'KS'.
*-> 계정이 1개만 던졌을 경우
        IF I_KSTAR IS NOT INITIAL.
          LR_KSTAR VALUE #SIGN 'I' OPTION 'EQ' LOW I_KSTAR ).
        ENDIF.

        IF I_KSGRU IS NOT INITIAL.
          CALL METHOD ZCL_CO_COMMON=>GET_COST_CENTER_GROUP
            EXPORTING
              I_CLASS     ZCL_CO_COMMON=>C_COST_CENTER_GROUP_CLASS
              I_KOKRS     I_KOKRS
              I_KSGRU_TOP I_KSGRU
            IMPORTING
              ET_KOSTL    LT_KOSTL[].

          LOOP AT LT_KOSTL INTO LS_KOSTL.
            CLEARLV_OBJNR.
            LV_OBJNR 'KS' && I_KOKRS && LS_KOSTL-NAME.
            LR_OBJNR VALUE #BASE LR_OBJNR SIGN 'I' OPTION 'EQ' LOW LV_OBJNR ).
          ENDLOOP.

        ELSE.
          CLEARLV_OBJNR.
          LV_OBJNR 'KS' && I_KOKRS && I_KOSTL.
          LR_OBJNR VALUE #SIGN 'I' OPTION 'EQ' LOW LV_OBJNR ).
        ENDIF.
      WHEN 'PR'.
        CLEARLV_OBJNR.
        LV_OBJNR 'PR' && I_PSPNR.
        LR_OBJNR VALUE #SIGN 'I' OPTION 'EQ' LOW LV_OBJNR ).
    ENDCASE.

    SELECT WKG001,
            WKG002,
            WKG003,
            WKG004,
            WKG005,
            WKG006,
            WKG007,
            WKG008,
            WKG009,
            WKG010,
            WKG011,
            WKG012,
            WKG013,
            WKG014,
            WKG015,
            WKG016
       INTO CORRESPONDING FIELDS OF @LS_COSP
       FROM COSP
      WHERE LEDNR  @ZCL_CO_COMMON=>C_LEDNR "관리회계 오브젝트에 대한 원장 00
        AND OBJNR IN @LR_OBJNR
        AND GJAHR  @I_GJAHR
        AND VERSN IN @LR_VERSN
        AND KSTAR IN @LR_KSTAR
        AND KSTAR IN @IR_KSTAR
        AND WRTTP IN @LR_WRTTP.

      COLLECT LS_COSP INTO LT_COSP.
      CLEARLS_COSP.
    ENDSELECT.

    IF SY-SUBRC 0.

      READ TABLE LT_COSP INTO LS_COSP INDEX 1.
      IF SY-SUBRC 0.
        DO 12 TIMES.
          ADD TO LV_MONTH.
          CLEARLV_STRING.
          IF LV_MONTH IN LR_YRNMN.
            LV_STRING 'LS_COSP-WKG0' && LV_MONTH.
            ASSIGN (LV_STRINGTO FIELD-SYMBOL(<FS>).
            IF <FS> IS ASSIGNED.
              E_WKGRT E_WKGRT + <FS>.
            ENDIF.
          ENDIF.
        ENDDO.

      ENDIF.

    ENDIF.

  ENDMETHOD.