ABAP Implimentation (πŸ› οΈμ‹€λ¬΄)/ALV

|ALV| EDIT λͺ¨λ“œ

two_ssun 2022. 7. 25. 14:15

 

ALV의 Cell EDIT λͺ¨λ“œμ— κ΄€λ ¨λœ κΈ°λ³Έ 사항듀을 λͺ‡ 가지 μ μ–΄λ³ΌκΉŒ ν•œλ‹€.

 

 

1. ALV 쑰회 λͺ¨λ“œ  vs  ALV μˆ˜μ • λͺ¨λ“œ

< ALV Display Mode >
< ALV Edit Mode >

Edit λͺ¨λ“œ μ‹œ 데이터 μ œμ–΄μ— ν•„μš”ν•œ λ²„νŠΌλ“€μ΄ μΆ”κ°€λμœΌλ©°, Key Field 색상이 λ³€κ²½λœ 것을 확인할 수 μžˆλ‹€. 

 

μ‹€λ¬΄μ—μ„œλŠ” Edit λͺ¨λ“œ μ‹œμ— μΆ”κ°€λ‘œ λ³΄μ΄λŠ” Standard λ²„νŠΌλ“€μ€ 숨기고(μ œμ™Έ) μ‹€μ œ ν•„μš”ν•œ λ²„νŠΌλ§Œ μƒˆλ‘œ μΆ”κ°€ν•΄ μž‘μ—…ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€. μ œκ³΅λ˜λŠ” Standard λ²„νŠΌμœΌλ‘œ 데이터λ₯Ό κ°„λ‹¨νžˆ μ œμ–΄(μž…λ ₯/μˆ˜μ •/μ‚­μ œ)ν•˜κΈ°μ—” νŽΈν•  수 μžˆμ§€λ§Œ, 보톡 ν˜„μ—…μ€ μΆ”κ°€μ μœΌλ‘œ μž…λ ₯ν•œ λ°μ΄ν„°μ˜ μœ νš¨μ„± μ κ²€μ΄λ‚˜ λ‹€λ₯Έ ν•„λ“œμ—λ„ 값이 μžλ™μœΌλ‘œ μ±„μ›Œμ§€λ„λ‘ ν•˜λŠ” κΈ°λŠ₯듀이 ν•¨κ»˜ κ΅¬ν˜„λ˜κΈ°λ₯Ό μ›ν•˜κ³  , μ΄λŠ” Standard λ²„νŠΌμœΌλ‘œ μ»€λ²„ν•˜κΈ°μ—” νž˜λ“  뢀뢄이 있기 λ•Œλ¬Έμ΄λ‹€. λ˜ν•œ ALV ν–‰μ˜ μΆ”κ°€ 및 μ‚­μ œλŠ” ν›„μ†μœΌλ‘œ Database TABLE의 μ €μž₯ 및 μ‚­μ œλ‘œ μ΄μ–΄μ§€λ―€λ‘œ, μ œμ•½μ‚¬ν•­ 없이 μ‚¬μš© κ°€λŠ₯ν•œ Standard λ²„νŠΌλ³΄λ‹€λŠ” 별도 μΆ”κ°€/μ‚­μ œ λ²„νŠΌμ„ λ§Œλ“€μ–΄ νƒ€μ΄νŠΈν•˜κ²Œ κ΄€λ¦¬ν•˜κ³  μ œμ–΄ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.  

 


2. ALV Cell Edit λͺ¨λ“œ ν™œμ„±ν™” 

  • ALV 전체 Edit λͺ¨λ“œ ν™œμ„±ν™” μ‹œ LAYOUT의 EDIT ν•„λ“œ 'X' 적용  
  • ALV Column 레벨둜 Edit λͺ¨λ“œ ν™œμ„±ν™” μ‹œ FIELDCATALOG의 EDIT ν•„λ“œ 'X' 적용 

데이터 μ‹ κ·œ μΆ”κ°€λ³΄λ‹€λŠ” κΈ°μ‘΄ 데이터 μˆ˜μ •μ΄ λ§Žμ•„ μ „μ²΄λ³΄λ‹€λŠ” Column λ˜λŠ” Cell 레벨둜 Edit λͺ¨λ“œλ₯Ό ν™œμ„±ν™”ν•˜λŠ” νŽΈμ΄λ‹€. μ‹ κ·œ 라인 μΆ”κ°€ μ‹œμ—λ„ μ•žμ—μ„œ μ–ΈκΈ‰ν•œ 것과 같이 데이터 μž…λ ₯ μ΅œμ†Œν™” 및 μžλ™ν™”λ‘œ 전체 Cell을 Edit λͺ¨λ“œλ‘œλŠ” μ‚¬μš©ν•˜μ§„ μ•ŠλŠ” νŽΈμ΄λ‹€. 

 

Method "SET_READY_FOR_INPUT"λ₯Ό 톡해 EDIT Cell을 input ν™œμ„±ν™”( 1 )/ input λΉ„ν™œμ„±ν™”( 0 ) μ œμ–΄κ°€ κ°€λŠ₯ν•˜λ‹€. 

< SET_READY_FOR_INPUT Method 호좜 예제 >

μΆ”κ°€λ‘œ STYLE ν•„λ“œ( Type LVC_T_STYL )λ₯Ό μ‚¬μš©ν•˜μ—¬ Cell κ°œλ³„λ‘œλ„ Edit λͺ¨λ“œλ₯Ό ON/OFF μ œμ–΄κ°€ κ°€λŠ₯ν•˜λ‹€.

 

STYLE ν•„λ“œμ— λŒ€ν•΄μ„œλŠ” ν•˜μœ„ ν¬μŠ€νŠΈμ— μ μ–΄λ†“μ•˜μœΌλ‹ˆ μ°Έκ³ ν•˜λ„λ‘ ν•˜μž.

[ABAP Working Lv./ALV] - |ALV| κ°œλ³„ Cell μ œμ–΄ ( feat. STYLE ν•„λ“œ )

 

|ALV| κ°œλ³„ Cell μ œμ–΄ ( feat. STYLE ν•„λ“œ )

STYLE ν•„λ“œλŠ” ALVμ—μ„œ Cell κ°œλ³„λ‘œ 효과λ₯Ό μ£ΌκΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν•„λ“œ 쀑 ν•˜λ‚˜μ΄λ‹€. Strucutre Type은 "LVC_S_STYLE", Table TypeμœΌλ‘œλŠ” "LVC_T_STYLE" λ₯Ό μ‚¬μš©ν•œλ‹€. κ΅¬ν˜„ 방법은 λ‹€μŒκ³Ό κ°™λ‹€. ALV output 인터널 ν…Œμ΄λΈ”μ—

twossun.tistory.com

 

 

 


3. λ³€κ²½ 데이터λ₯Ό ALV 인터널 ν…Œμ΄λΈ”μ— 반영

ALV Edit λͺ¨λ“œμ—μ„œ 데이터 λ³€κ²½ μ‹œ λ°”λ‘œ 인터널 ν…Œμ΄λΈ”μ— λ°˜μ˜λ˜μ§„ μ•ŠλŠ”λ‹€. 예λ₯Ό λ“€μ–΄  ALV ν™”λ©΄μ˜ μ–΄λŠ Cell 값을  'A'λ₯Ό 'B'둜 바꾸어도 인터널 ν…Œμ΄λΈ”μ—μ„œλŠ” μ—¬μ „νžˆ 'A' 값을 가지고 μžˆλŠ”λ‹€. λ‹€μ‹œ 말해 화면에 λ³΄μ΄λŠ” ALV ν™”λ©΄ 데이터( Presentation Level )와 ALV 인터널 ν…Œμ΄λΈ” 데이터( Application Level )λŠ” λΆ„λ¦¬λœ μ˜μ—­μ΄λ©°, λ™κΈ°ν™”ν•˜λŠ” μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€. κ·Έ μž‘μ—…μ€ λ‹€μŒκ³Ό 같은 Methodλ₯Ό ν™œμš©ν•΄ λ³Ό 수 μžˆλ‹€. 

 

ν˜„μž¬κΉŒμ§€ λ³€κ²½λœ 데이터λ₯Ό 인터널 ν…Œμ΄λΈ”μ— λ°˜μ˜ν•˜λ €λ©΄ Method "CHECK_CHANGED_DATA"λ₯Ό μ‚¬μš©ν•œλ‹€.

< CHECK_CHANGED_DATA Method 호좜 예제 >

데이터 λ³€κ²½μ‹œλ§ˆλ‹€ λ°”λ‘œ 인터널 ν…Œμ΄λΈ”μ— λ°˜μ˜ν•˜κ²Œ ν•˜λ €λ©΄ Method "REGISTER_EDIT_EVENT"  μ‚¬μš©ν•œλ‹€.

< REGISTER_EDIT_EVENT Method 호좜 예제 >

ν•΄λ‹Ή MethodλŠ” ALV κ΅¬ν˜„ μ‹œ ν•œ 번만 호좜(등둝)ν•˜λ©΄ λ˜λŠ” Method둜 Exporting Parameter "i_event_id"의 값에 따라 ν•΄λ‹Ή μ‹œμ μ— λ³€κ²½ 값이 ALV output 인터널 ν…Œμ΄λΈ”μ— λ°˜μ˜λœλ‹€. λ¬Όλ‘  λ³€κ²½ 값은 데이터 νƒ€μž… 체크 같은 기본적인 Standard μœ νš¨μ„± 점검에 λ¬Έμ œκ°€ 없을 μ‹œμ—λ§Œ 반영이 λœλ‹€. 

 

Exporting Parameter  "i_event_id" Trigger μ‹œμ 
CL_GUI_ALV_GRID=>MC_EVT_ENTER Cell 에 "Enter Key" λ₯Ό 쳀을 λ•Œ
CL_GUI_ALV_GRID=>MC_MVT_MODIFIED Cell λ³€κ²½ ν›„ Cell(μ»€μ„œ)을 μ΄λ™ν–ˆμ„ λ•Œ

Event "DATA_CHANGED"κ°€ ν™œμ„±ν™”λ˜μ–΄ μžˆλ‹€λ©΄ 동기화 μ‹œμ , 즉 λ³€κ²½ 값이 ALV output 인터널 ν…Œμ΄λΈ”μ— 반영되기 μ „ μ‹œμ μ— μˆ˜ν–‰λœλ‹€. 

 


Edit modeμ‹œ ALV Toolbar에 μΆ”κ°€λ˜μ–΄ λ³΄μ΄λŠ” Standard μˆ˜μ • λ²„νŠΌλ“€μ€ μΆ”κ°€ 둜직 κ΅¬ν˜„μ— λ²ˆκ±°λ‘œμ›€μ΄ μžˆμ–΄ ν•΄λ‹Ή λ²„νŠΌλ“€μ€ 숨기고 ν•„μš”ν•œ λ²„νŠΌλ§Œ 별도 κ΅¬ν˜„ν•œλ‹€κ³  μ•žμ—μ„œ 잠깐 μ–ΈκΈ‰ν•˜μ˜€λ‹€. μ—¬κΈ°μ„œ μœ μ˜ν•  점은 ν•΄λ‹Ή Standard λ²„νŠΌμ„ Toolbarμ—μ„œ μˆ¨κΈ°μ–΄λ„ μ‹€μ œ "Ctrl+C", "Ctrl+V",  "Delete" λ“± 단좕킀λ₯Ό μ΄μš©ν•˜λ©΄ μ—¬μ „νžˆ μž‘λ™ν•œλ‹€λŠ” 것이닀. κ·Έλ ‡κ²Œ 되면 라인 μ œμ–΄( ν–‰μ˜ 좔가와 μ‚­μ œ )에 μžˆμ–΄ μΆ”κ°€λ‘œ 체크해야 ν•  뢀뢄이 λ§Žμ•„μ Έ 둜직 κ΅¬ν˜„μ— λ²ˆκ±°λ‘œμ›€μ΄ μžˆλ‹€. μ΄λ•Œ, LAYOUT의 "NO_ROWINS"ν•„λ“œμ— 'X' 값을 μ£Όλ©΄, μ• μ΄ˆμ— Standard 라인 μ œμ–΄ κΈ°λŠ₯을 λ§‰μŒμœΌλ‘œμ¨ μΆ”κ°€λ‘œ μœ νš¨μ„± 체크 λ‘œμ§μ„ λ„£μ–΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ 쀄일 수 μžˆλ‹€.

< LAYOUT 의 "NO_ROWINS" ν•„λ“œμ— 'X' 값을 μ£Όμ—ˆμ„ λ•Œ Toolbar >