SAP/ABAP 코드

(ABAP 코드) 월별 동적 인터널테이블 구성

haramang 2022. 1. 21. 20:51

FORM create_dynamic_tab .
  DATAlv_month_diff TYPE i.
  DATAlv_month_high TYPE n LENGTH 6.
  DATAlv_month_low TYPE n LENGTH 6.
  DATAlv_col_pos TYPE VALUE 1.
  DATAlv_loop_cnt TYPE i.

  lv_month_low s_period-low.
  lv_month_high s_period-high.

  gs_fcat-col_pos lv_col_pos.
  gs_fcat-fieldname 'ZEDU'.
  gs_fcat-coltext '사원번호'.
  gs_fcat-ref_table 'ZED15_10'.
  gs_fcat-ref_field 'ZEDU'.
  APPEND gs_fcat TO gt_fcat.
  lv_col_pos lv_col_pos + 1.

  gs_fcat-col_pos lv_col_pos.
  gs_fcat-fieldname 'ZNAME2'.
  gs_fcat-coltext '프로젝트명'.
  gs_fcat-ref_table 'ZED15_20'.
  gs_fcat-ref_field 'ZNAME2'.
  APPEND gs_fcat TO gt_fcat.
  lv_col_pos lv_col_pos + 1.


  IF lv_month_high IS INITIAL.

    DO 12 TIMES.
      gs_fcat-col_pos lv_col_pos.
      gs_fcat-fieldname lv_month_low.
      gs_fcat-coltext lv_month_low.
      gs_fcat-intlen 'C'.
      gs_fcat-inttype '2'.
      APPEND gs_fcat TO gt_fcat.
      lv_col_pos lv_col_pos + 1.

      lv_month_low+4(2lv_month_low+4(21.

      IF lv_month_low+4(212.
        lv_month_low(4lv_month_low(41.
        lv_month_low+4(2lv_month_low+4(213.

        if lv_month_low+4(2eq '00'.
          lv_month_low+4(2'01'.
        endif.
      ENDIF.

    ENDDO.

  ELSE.
    lv_month_diff abslv_month_high(412 + lv_month_high+4(2lv_month_low(412 + lv_month_low+4(2).

    IF lv_month_diff > 11.
      lv_loop_cnt 12.
    ELSE.
      lv_loop_cnt lv_month_diff + 1.
    ENDIF.

    DO lv_loop_cnt TIMES.
      gs_fcat-col_pos lv_col_pos.
      gs_fcat-fieldname lv_month_low.
      gs_fcat-coltext lv_month_low.
      gs_fcat-intlen 'C'.
      gs_fcat-inttype '2'.
      APPEND gs_fcat TO gt_fcat.
      lv_col_pos lv_col_pos + 1.

      lv_month_low+4(2lv_month_low+4(21.

      IF lv_month_low+4(212.
        lv_month_low(4lv_month_low(41.
        lv_month_low+4(2lv_month_low+4(213.

        if lv_month_low+4(2eq '00'.
          lv_month_low+4(2'01'.
        endif.
      ENDIF.
    ENDDO.

  ENDIF.


ENDFORM.