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

[SAP ABAP] sy-tabix와 sy-index의 차이점

by Jay Din 2023. 12. 5.
728x90
λ°˜μ‘ν˜•

` sy-tabix ` 와 ` sy-index ` λŠ” SAP ABAPμ—μ„œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ λ³€μˆ˜λ‘œμ„œ λ°˜λ³΅λ¬Έμ—μ„œ ν˜„μž¬ 처리 쀑인 ν–‰μ˜ 인덱슀λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 이 λ‘˜μ€ μ‚¬μš©λ˜λŠ” λ¬Έλ§₯κ³Ό μ˜λ―Έμ— 차이가 μžˆμŠ΅λ‹ˆλ‹€.

 

μš”μ•½

` sy-tabix ` μ™€ ` sy-index ` λž€ 무엇인지 μš”μ•½ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

sy-tabix ` LOOP AT ` κ΅¬λ¬Έμ—μ„œ ν˜„μž¬ 처리 쀑인 ν…Œμ΄λΈ” ν–‰μ˜ 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ‹œμŠ€ν…œ λ³€μˆ˜
sy-index ` DO n TIMES ` λ˜λŠ” ` WHILE ` κ΅¬λ¬Έμ—μ„œ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ 횟수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ‹œμŠ€ν…œ λ³€μˆ˜

 

sy-tabix

` sy-tabix ` λŠ” SAP ABAP ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ λ³€μˆ˜ 쀑 ν•˜λ‚˜λ‘œμ„œ,

LOOP ATλ¬Έ λ‚΄μ—μ„œ ν˜„μž¬ 처리 쀑인 ν…Œμ΄λΈ”μ˜ ν–‰ 번호(인덱슀)λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

이 λ³€μˆ˜λŠ” ` sy `λΌλŠ” μ‹œμŠ€ν…œ λ³€μˆ˜μ˜ μΌλΆ€λ‘œ ` sy-tabix ` 둜 μ°Έμ‘°λ©λ‹ˆλ‹€.

 

μ‚¬μš© λͺ©μ 

  • ` LOOP AT ` λ¬Έμ—μ„œ μ‚¬μš©λ˜μ–΄ ν˜„μž¬ 처리 쀑인 ν…Œμ΄λΈ” ν–‰μ˜ 인덱슀(ν–‰ 번호)λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • 주둜 반볡문 λ‚΄μ—μ„œ ν˜„μž¬ 처리 쀑인 ν–‰μ˜ μœ„μΉ˜λ₯Ό μΆ”μ ν•˜κ±°λ‚˜ νŠΉμ • 쑰건에 따라 μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

ꡬ문

` LOOP AT ` λ¬Έ λ‚΄μ—μ„œ ` sy-tabix ` λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ 처리 쀑인 ν…Œμ΄λΈ” ν–‰μ˜ μΈλ±μŠ€μ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

LOOP AT internal_table INTO work_area.
  " ν˜„μž¬ 처리 쀑인 ν–‰μ˜ 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜
  WRITE: / 'Index:', sy-tabix, 'Value:', work_area-field.
ENDLOOP.

예제

DATA: lt_data TYPE TABLE OF i,
      lv_sum  TYPE i.

" ν…Œμ΄λΈ”μ— 데이터 μ±„μš°κΈ°
DO 5 TIMES.
  APPEND sy-index TO lt_data.
ENDDO.

" 각 ν–‰μ˜ 값을 λ”ν•˜κΈ°
lv_sum = 0. " λˆ„μ  값을 μ΄ˆκΈ°ν™”
LOOP AT lt_data INTO DATA(lv_row_value).
  " ν˜„μž¬ 처리 쀑인 ν–‰μ˜ 값을 좜λ ₯
  WRITE: / 'Index:', sy-tabix,
         / 'Value:', lv_row_value.

  " 각 ν–‰μ˜ 값을 λˆ„μ 
  lv_sum = lv_sum + lv_row_value.
ENDLOOP.

" λˆ„μ λœ κ²°κ³Ό 좜λ ₯
WRITE: / 'Total Sum:', lv_sum.

 

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” ` DO ` 문을 μ‚¬μš©ν•˜μ—¬ ` lt_data ` λΌλŠ” ν…Œμ΄λΈ”μ— 1λΆ€ν„° 5κΉŒμ§€μ˜ 값을 κ°–λŠ” 행을 μΆ”κ°€ν•˜κ³ ,

` LOOP AT ` 문을 μ‚¬μš©ν•˜μ—¬ 각 ν–‰μ˜ 값을 λ”ν•˜κ³  좜λ ₯ν•©λ‹ˆλ‹€.

` sy-tabix ` λŠ” ν˜„μž¬ 처리 쀑인 ν…Œμ΄λΈ”ν–‰μ˜ 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ”λ°, 이 값은 λ£¨ν”„μ˜ 각 λ°˜λ³΅μ—μ„œ 1λΆ€ν„° 5κΉŒμ§€ λ³€ν•©λ‹ˆλ‹€.

 

` lv_sum ` 은 각 ν–‰μ˜ 값을 λˆ„μ ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. ` LOOP AT ` 문의 ` INTO ` μ ˆμ„ 톡해 ν˜„μž¬ ν–‰μ˜ 값을 ` lv_row_value `에 ν• λ‹Ήν•˜κ³ , 이 값을 λˆ„μ ν•˜μ—¬ μ΅œμ’…μ μœΌλ‘œ ` lv_sum ` 에 총합이 μ €μž₯λ©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ ` WRITE ` 문을 μ‚¬μš©ν•˜μ—¬ λˆ„μ λœ κ²°κ³Όλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

 

sy-index

` sy-index ` λŠ” SAP ABAPμ—μ„œ μ‚¬μš©λ˜λŠ” μ‹œμŠ€ν…œ λ³€μˆ˜ 쀑 ν•˜λ‚˜λ‘œ,

λ°˜λ³΅λ¬Έμ—μ„œ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ 횟수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

` sy ` λΌλŠ” μ‹œμŠ€ν…œ λ³€μˆ˜μ˜ μΌλΆ€λ‘œ ` sy-index ` 둜 μ°Έμ‘°λ©λ‹ˆλ‹€.

 

μ‚¬μš© λͺ©μ 

  • ` DO n TIMES ` λ‚˜ ` WHILE ` κ³Ό 같은 λ°˜λ³΅λ¬Έμ—μ„œ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ 횟수λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • 주둜 반볡문 λ‚΄μ—μ„œ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ 횟수λ₯Ό μΆ”μ ν•˜κ±°λ‚˜ νŠΉμ • 쑰건에 따라 μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

ꡬ문

` DO n TIMES ` λ‚˜ ` WHILE ` λ¬Έ λ‚΄μ—μ„œ ` sy-index ` λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ νšŸμˆ˜μ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

DO n TIMES.
  " ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ 횟수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜
  WRITE: / 'Loop Count:', sy-index.
ENDDO.

예제

DATA: lv_sum TYPE i.

" 5번 λ°˜λ³΅ν•˜λŠ” 루프
DO 5 TIMES.
  " ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ νšŸμˆ˜μ™€ 값을 좜λ ₯
  WRITE: / 'Loop Count:', sy-index,
         / 'Value:', lv_sum.

  " μ‹€ν–‰ 횟수λ₯Ό 값을 λˆ„μ 
  lv_sum = lv_sum + sy-index.
ENDDO.

" μ΅œμ’… κ²°κ³Ό 좜λ ₯
WRITE: / 'Final Result:', lv_sum.

 

μœ„μ˜ μ˜ˆμ œμ—μ„œλŠ” ` DO 5 TIMES ` λ₯Ό μ‚¬μš©ν•˜μ—¬ 5번 λ°˜λ³΅ν•˜λŠ” 루프λ₯Ό μƒμ„±ν•˜κ³ , ` sy-index ` λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰ 횟수λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

루프 λ‚΄μ—μ„œλŠ” ` sy-index `λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜„μž¬ λ£¨ν”„μ˜ μ‹€ν–‰νšŸμˆ˜λ₯Ό λˆ„μ ν•˜μ—¬ μ΅œμ’…κ²°κ³Όλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

 

728x90
λ°˜μ‘ν˜•