SAP/ABAP 코드

(ABAP 코드) 월 차이 계산

haramang 2022. 1. 21. 20:03

FORM set_month  USING ps_month LIKE s_period CHANGING pv_month_low pv_month_high.

  DATAlv_month_diff TYPE i.
  DATAlv_month_high TYPE vtbbewe-dbervon.
  DATAlv_month_low TYPE vtbbewe-dberbis.

  pv_month_low ps_month-low.

  IF ps_month-high IS INITIAL.
    CALL FUNCTION 'ZFM15_ADD_YEAR'
      EXPORTING
        i_month_low pv_month_low
      IMPORTING
        o_result    pv_month_high.
    EXIT.

  ENDIF.

  lv_month_high ps_month-high && '01'.
  lv_month_low pv_month_low && '01'.


  CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
    EXPORTING
      i_date_from lv_month_low
      i_date_to   lv_month_high
    IMPORTING
      e_months    lv_month_diff.

  IF lv_month_diff > 11.

    CALL FUNCTION 'ZFM15_ADD_YEAR'
      EXPORTING
        i_month_low pv_month_low
      IMPORTING
        o_result    pv_month_high.
  ELSE.
    PV_MONTH_HIGH PS_MONTH-HIGH.
  ENDIF.

ENDFORM.

 

 

함수!!!!!!!!!!!!!!!!!!!!!1

 

FUNCTION ZFM15_ADD_YEAR.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_MONTH_LOW) TYPE  SPMON
*"  EXPORTING
*"     REFERENCE(O_RESULT) TYPE  SPMON
*"----------------------------------------------------------------------

  DATALV_MONTH_HIGH TYPE N LENGTH 6.

  LV_MONTH_HIGH I_MONTH_LOW + 12.
  IF LV_MONTH_HIGH+4(212.
    IF LV_MONTH_HIGH+4(2EQ '13'.
      LV_MONTH_HIGH+4(2'12'.
    ELSE.
      LV_MONTH_HIGH(4LV_MONTH_HIGH(41.
      LV_MONTH_HIGH+4(2LV_MONTH_HIGH+4(213.
    ENDIF.

  ENDIF.

  O_RESULT LV_MONTH_HIGH.

ENDFUNCTION.