본문 바로가기

SAP/ABAP

[SAP ABAP] HEADER LINE

HEADER LINE 실무 개념 정리


✅ HEADER LINE

  • 개요

    • ABAP에서 WITH HEADER LINE은 내부 테이블 선언 시 한 줄짜리 구조체(워크 에어리어)를 함께 생성하는 구식 문법이다.
      이로 인해 내부 테이블과 해당 구조체를 동일한 변수명으로 접근하게 되어, 코드가 암묵적으로 동작하고 유지보수 시 혼란이 발생할 수 있다.
  • SAP ABAP Style Guide에서는 WITH HEADER LINE비권장(deprecated) 문법으로 분류함

    • 구조체인지 테이블인지 명확하지 않아 가독성 저하
    • 객체지향 개발 방식과 호환되지 않으며, 최근 SAP 시스템에서는 사용 자체가 제한됨
    • 표준 함수, 메서드, 클래스 내에서는 대부분 사용 불가
  • HEADER LINE의 정의

    DATA: it_customer TYPE STANDARD TABLE OF zcustomer WITH HEADER LINE.
    
    " 1. it_customer[] → 내부 테이블 (Body), 실제 데이터 저장소
    " 2. it_customer → 한 줄짜리 구조체 (Header)
  • HEADER LINE 방식(구식)

    DATA: it_customer TYPE STANDARD TABLE OF zcustomer WITH HEADER LINE.
    
    READ TABLE it_customer WITH KEY customer_id = 'C001'.
    WRITE: it_customer-name.  "구조체처럼 바로 사용"
  • 명시적 워크에어리어 방식(현대적)

    DATA: lt_customer TYPE STANDARD TABLE OF zcustomer,
          ls_customer TYPE zcustomer.
    
    READ TABLE lt_customer INTO ls_customer WITH KEY customer_id = 'C001'.
    WRITE: ls_customer-name.

✅ 정리 요약표

구분 HEADER LINE 방식 명시적 워크에어리어 방식
구조체 명시 여부 ❌ 암묵적 ✅ 명시적
코드 가독성 ❌ 낮음 ✅ 높음
디버깅/유지보수 용이성 ❌ 어려움 ✅ 쉬움
객체지향 사용 가능 여부 ❌ 불가 ✅ 가능
SAP Style Guide 권장 여부 ❌ 비권장 ✅ 권장

*잘못된 부분이 있다면 댓글 부탁드려요~