λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ§‘‍πŸ’Ό SAP/ABAP

[SAP ABAP] WITH HEADER LINE μ΄λž€?

by Jay Din 2024. 1. 5.
728x90
λ°˜μ‘ν˜•

WITH HEADER LINE μ΄λž€?

ABAPμ—μ„œ λ‚΄λΆ€ ν…Œμ΄λΈ”μ„ λ‹€λ£° λ•Œ, κ°œλ°œμžλ“€μ€ μ’…μ’… `WITH HEADER LINE` μ΄λΌλŠ” κ°œλ…μ„ 마주치게 λ©λ‹ˆλ‹€.

이 λ¬Έμž₯은 λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 첫번째 행을 ν—€λ”λ‘œ μ‚¬μš©ν•˜λŠ” μž‘μ—…μ„ κ°„μ†Œν™”ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

κ°œλ…λ§Œ 보면 μ΄ν•΄ν•˜κΈ° μ–΄λ €μš°λ‹ˆ μ˜ˆμ œμ™€ ν•¨κ»˜ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

1. `WITH HEADER LINE`을 μ‚¬μš©ν•˜λŠ” 경우:

REPORT ZABAP001 .

DATA: LT_TABLE TYPE TABLE OF STRING WITH HEADER LINE.

APPEND 'Row 1' TO LT_TABLE.
APPEND 'Row 2' TO LT_TABLE.
APPEND 'Row 3' TO LT_TABLE.

WRITE: 'WITH HEADER LINE`을 μ‚¬μš©ν•˜λŠ” 경우'.

* λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 첫 번째 행이 ν—€λ”λ‘œ μ‚¬μš©λ˜λ©° 
* λ³„λ„μ˜ ꡬ쑰체λ₯Ό μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ 직접 이 ν–‰μ˜ ν•„λ“œμ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
LOOP AT LT_TABLE.
  WRITE: / 'Row:', SY-TABIX,
         / 'Value:', LT_TABLE.
ENDLOOP.

μ‹€ν–‰ν™”λ©΄

  • `lt_table`은 λ‚΄λΆ€ ν…Œμ΄λΈ”λ‘œ μ„ μ–Έλ˜μ—ˆκ³  `WITH HEADER LINE`을 μ‚¬μš©ν•˜μ—¬ μ„ μ–Έλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • `WITH HEADER LINE`을 μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— λ³„λ„μ˜ 헀더 ꡬ쑰체λ₯Ό μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.
  • `sy-tabix`λŠ” ν˜„μž¬ 루프 λ°˜λ³΅μ—μ„œμ˜ ν–‰ 번호λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  • λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 첫 번째 행이 μžλ™μœΌλ‘œ μƒμ„±λœ 헀더 역할을 ν•©λ‹ˆλ‹€

2. `WITH HEADER LINE`을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우:(ꢌμž₯)

REPORT ZABAP001 .

DATA: LT_TABLE TYPE TABLE OF STRING,
      LS_TABLE_LINE TYPE STRING.

APPEND 'Row 1' TO LT_TABLE.
APPEND 'Row 2' TO LT_TABLE.
APPEND 'Row 3' TO LT_TABLE.

WRITE: 'WITH HEADER LINE`을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우'.

LOOP AT LT_TABLE INTO LS_TABLE_LINE.
  WRITE: / 'Row:', SY-TABIX,
         / 'Value:', LS_TABLE_LINE.
ENDLOOP.

μ‹€ν–‰ν™”λ©΄

  • `lt_table`은 λ‚΄λΆ€ ν…Œμ΄λΈ”λ‘œ μ„ μ–Έλ˜μ—ˆμ§€λ§Œ `WITH HEADER LINE`을 μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
  • `LOOP AT lt_table INTO ls_table_line`λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 각 행에 μ ‘κ·Όν•©λ‹ˆλ‹€.
  • `ls_table_line`κ³Ό 같은 λ³„λ„μ˜ ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 각 행을 μ²˜λ¦¬ν•©λ‹ˆλ‹€.
  • `sy-tabix`λŠ” μ—¬μ „νžˆ ν˜„μž¬ 루프 λ°˜λ³΅μ—μ„œμ˜ ν–‰ 번호λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

차이점 정리

DATAλ₯Ό μ–΄λ–»κ²Œ μ„ μ–Έν•˜λƒμ™€ LOOPμ—μ„œ ν…Œμ΄λΈ” 값에 μ–΄λ–€ λ°©λ²•μœΌλ‘œ μ ‘κ·Όν•  것인가가 핡심 κ°™μŠ΅λ‹ˆλ‹€.

* 1. WITH HEADER LINE을 μ‚¬μš©ν•˜λŠ” 경우
DATA: lt_table TYPE TABLE OF string WITH HEADER LINE.

LOOP AT lt_table.
  WRITE: / 'Row:', sy-tabix,
         / 'Value:', lt_table.
ENDLOOP.


* 2. WITH HEADER LINE을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우:
DATA: lt_table TYPE TABLE OF string,
      ls_table_line TYPE string.
      
LOOP AT lt_table INTO ls_table_line.
  WRITE: / 'Row:', sy-tabix,
         / 'Value:', ls_table_line.
ENDLOOP.

 

728x90

 

WITH HEADER LINE ꢌμž₯ν•˜μ§€ μ•ŠλŠ” 이유:

`WITH HEADER LINE`이 ꢌμž₯λ˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” 주둜 μ½”λ“œμ˜ 가독성, μœ μ§€λ³΄μˆ˜μ„±, 그리고 μ„±λŠ₯ μΈ‘λ©΄μ—μ„œ λ°œμƒν•˜λŠ” λ‹€μ–‘ν•œ 문제 λ•Œλ¬Έμž…λ‹ˆλ‹€.

  1. 가독성과 μœ μ§€λ³΄μˆ˜μ„±:
    • `WITH HEADER LINE`을 μ‚¬μš©ν•˜λ©΄ λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 첫 번째 행이 μžλ™μœΌλ‘œ μ„ μ–Έλœ ν—€λ”λ‘œ κ°„μ£Όλ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이 ν—€λ”λŠ” λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έλ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ½”λ“œμ˜ 가독성이 λ–¨μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ κ°œλ°œμžλ‚˜ μœ μ§€λ³΄μˆ˜λ₯Ό λ‹΄λ‹Ήν•˜λŠ” 이듀이 ν—€λ”μ˜ ꡬ쑰λ₯Ό λͺ…ν™•νžˆ μ΄ν•΄ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. ꡬ버전 ν˜Έν™˜μ„±:
    • `WITH HEADER LINE`은 κ΅¬λ²„μ „μ˜ ABAP μ½”λ“œμ—μ„œ μ‚¬μš©λ˜λ˜ λ°©μ‹μœΌλ‘œ, SAP S/4 HANA 버전 λΆ€ν„°λŠ” μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ ABAP λ²„μ „μ—μ„œλŠ” μ΄λŸ¬ν•œ ꡬ문의 μ‚¬μš©μ„ μ§€μ–‘ν•˜κ³  더 효과적인 방법을 ꢌμž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ―Έλž˜μ— ABAP μ–Έμ–΄κ°€ λ°œμ „ν•¨μ— 따라 μ΄λŸ¬ν•œ ꡬ문이 더 이상 μ§€μ›λ˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. ν”„λ‘œκ·Έλž˜λ° λͺ¨λ²” 사둀:
    • ν˜„λŒ€μ μΈ ν”„λ‘œκ·Έλž˜λ° λͺ¨λ²” μ‚¬λ‘€μ—μ„œλŠ” λͺ…μ‹œμ μœΌλ‘œ 헀더 ꡬ도체λ₯Ό μ„ μ–Έν•˜κ³ , `LOOP AT`κ³Ό 'REFERENCE INTO`λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 각 행에 μ ‘κ·Όν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. λͺ…μ‹œμ μΈ 선언은 μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€λ©°, μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.
  4. μ„±λŠ₯ 이슈:
    1. `WITH HEADER LINE`을 μ‚¬μš©ν•˜λ©΄ λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 각 행에 μ ‘κ·Όν•  λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ μƒμ„±λœ 헀더λ₯Ό 톡해 데이터에 μ ‘κ·Όν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” μΌμ’…μ˜ μ˜€λ²„ν—€λ“œλ₯Ό μ΄ˆλž˜ν•  수 μžˆμ–΄ μ„œλŠ₯ 이슈λ₯Ό μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ°˜λ©΄μ— λͺ…μ‹œμ μΈ 헀더 ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜, 더 ν˜„λŒ€μ μΈ λ°©λ²•μœΌλ‘œ 행에 μ ‘κ·Όν•˜λŠ” 것이 효율적일 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ •λ¦¬ν•˜λ©΄

μ •λ¦¬ν•˜λ©΄, `WITH HEADER LINE`은 μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ μ €ν•˜μ‹œν‚¬ 수 있으며, 미래 ν˜Έν™˜μ„± 및 μ„±λŠ₯ μΈ‘λ©΄μ—μ„œλ„ ꢌμž₯λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λŒ€μ‹ μ— λͺ…μ‹œμ μΈ 헀더 ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜, `LOOP AT`κ³Ό `REFERENCE INTO`λ₯Ό ν™œμš©ν•˜μ—¬ 더 ν˜„λŒ€μ μ΄κ³  효율적인 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

 

λŒ€μ•ˆ: LOOP AT 및 REFERENCE INTO

μœ„μ˜ `2. `WITH HEADER LINE`을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우` 와 κ°™μŠ΅λ‹ˆλ‹€.

`WITH HEADER LINE` λŒ€μ‹  ꢌμž₯λ˜λŠ” λŒ€μ•ˆμ€ `LOOP AT`κ³Ό `REFERENCE INTO`λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚΄λΆ€ ν…Œμ΄λΈ”μ˜ 각 행에 직접 μ•‘μ„ΈμŠ€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

DATA: lt_table TYPE TABLE OF string,
      ls_table_line TYPE string.

APPEND 'Row 1' TO lt_table.
APPEND 'Row 2' TO lt_table.
APPEND 'Row 3' TO lt_table.

LOOP AT lt_table INTO ls_table_line.
  WRITE: / 'Row:', sy-tabix,
         / 'Value:', ls_table_line.
ENDLOOP.

 

이 방식은 μ½”λ“œ 가독성을 ν–₯μƒμ‹œν‚€κ³  ν˜„λŒ€μ μΈ ABAP μ΅œμƒμ˜ μ‹€μ²œ 방법과 μΌμΉ˜ν•©λ‹ˆλ‹€.

κ°œλ°œμžλ“€μ€ `WITH HEADER LINE`μ—μ„œ λ²—μ–΄λ‚˜ μ΄λŸ¬ν•œ 더 μœ μ—°ν•˜κ³  가독성 μžˆλŠ” λŒ€μ•ˆμ„ 채택할 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

 

결둠적으둜 `WITH HEADER LINE`의 μ œν•œ 사항을 μ΄ν•΄ν•˜κ³  ν˜„λŒ€μ μΈ 기법을 받아듀이면 보닀 κΉ¨λ—ν•˜κ³  μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ ABAP μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•