본문 바로가기
ABAP/Syntax

[Syntax] Internal Table 레코드 수 및 Read table 구문

by name_text 2023. 7. 18.

Internal Table 레코드 수

Read Table

 

ABAP New syntax를 이용하여 좀더 간결하게 개발이 가능합니다

 

# 사용예시

DATA: LT_T001 TYPE SORTED TABLE OF T001 WITH UNIQUE KEY BUKRS,
        LS_T001 LIKE LINE OF LT_T001,
        LV_BUKRS TYPE T001-BUKRS,
        LV_TABIX TYPE SY-TABIX.

  SELECT
    *
  FROM T001
  INTO CORRESPONDING FIELDS OF TABLE @LT_T001.
  IF SY-SUBRC NE 0.
    EXIT.
  ENDIF.

** Internal table 레코드 수 -------------------------------------------------

  "Old Syntax
  DESCRIBE TABLE LT_T001 LINES LV_TABIX.

  "New Syntax
  LV_TABIX = LINES( LT_T001 ).

  WRITE:/ LV_TABIX.


** Read Table - Index -------------------------------------------------------
  LV_TABIX = 3.

  "Old Syntax
  READ TABLE LT_T001 INTO LS_T001 INDEX LV_TABIX.

  "New Syntax
  LS_T001 = LT_T001[ LV_TABIX ].

  IF SY-SUBRC EQ 0.
    WRITE:/ LS_T001.
  ENDIF.


** Read Table - With Key ----------------------------------------------------
  LV_BUKRS = 'AR01'.

  "Old Syntax
  READ TABLE LT_T001 INTO LS_T001 WITH TABLE KEY BUKRS = LV_BUKRS.

  "New Syntax
  LS_T001 = LT_T001[ BUKRS = LV_BUKRS ].

  IF SY-SUBRC EQ 0.
    WRITE:/ SY-TABIX.
  ENDIF.


** Read Table - 레코드 존재 여부 체크 ---------------------------------------
  LV_BUKRS = 'AR02'.

  "Old Syntax
  READ TABLE LT_T001 WITH TABLE KEY BUKRS = LV_BUKRS TRANSPORTING NO FIELDS.
  IF SY-SUBRC EQ 0.

  ENDIF.

  "New Syntax
  IF LINE_EXISTS( LT_T001[ BUKRS = LV_BUKRS ] ).
    WRITE:/ 'OK'.
  ELSE.
    WRITE:/ 'NO'.
  ENDIF.


** Read Table - Table index 찾기 --------------------------------------------
  LV_BUKRS = 'BE01'.

  "Old Syntax
  READ TABLE LT_T001 WITH TABLE KEY BUKRS = LV_BUKRS TRANSPORTING NO FIELDS.
  IF SY-SUBRC EQ 0.
    LV_TABIX = SY-TABIX.
  ENDIF.

  "New Syntax
  LV_TABIX = LINE_INDEX( LT_T001[ BUKRS = LV_BUKRS ] ).

  WRITE:/ LV_TABIX.

댓글