오늘의 글은... 이쪽 일을 하는 분들께만 참고가 될 수 있는 사항입니다~
무엇보다... 해놓고도 잊어버리는 저를 위해서 다시 메모하는 글이니 이웃분들께서는 과감히 닫아주시면 됩니다^^
물론 실력이 좋은 분들께는 아무런 문제도 되지 않는 내용이지만~ 정리합니다.
아시다시피 DATA_CHANGED 경우 두가지의 방법으로 적용이 가능합니다.
CALL METHOD
G_GRID1 ->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
상기 경우는 엔터를 눌렀을 때 적용되도록 하는 방법입니다.
그런데, ALV 상에서 데이터가 변경이 될 때~ 엔터키를 누르는 분이 있는가 하면, 탭(TAB) 키를 누르는 분도 있습니다.
CALL METHOD G_GRID1->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
이 경우는 셀을 벗어날 때 적용이 됩니다.
때문에 보통은 아래의 경우를 많이 사용합니다.
문제(?)는 FOCUS 입니다.
셀을 벗어난 뒤 데이터 값이 바뀌고, FOCUS를 주지 않거나 엉뚱하게 주면 다른 곳으로 날아가버리는데~
이 때 사용하기 좋은 방법이 GET_CURRENT_CELL 입니다.
예문으로 보여드리겠습니다.
*&---------------------------------------------------------------------*
*& Form DATA_CHANGED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM DATA_CHANGED USING P_ER_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL
P_UCOMM.
DATA : LS_MOD_CELLS TYPE LVC_S_MODI.
DATA : L_FNAME TYPE LVC_S_MODI-FIELDNAME,
L_VALUE(255).
DATA : S_ROW TYPE LVC_S_ROW,
S_COL TYPE LVC_S_COL,
L_INDEX TYPE SY-INDEX.
DATA : L_RESULT(1),
L_MSG(255).
DATA : L_ROW TYPE I,
L_VALUEC TYPE C,
L_COL TYPE I,
LS_ROW TYPE LVC_S_ROW,
LS_COL TYPE LVC_S_COL,
LS_ROID TYPE LVC_S_ROID.
*-- 이곳이 포인트1 입니다 (데이터가 변경 되기 전, -셀이 어디로 움직였는지- 셀의 현 위치를 확인 합니다)
CALL METHOD G_GRID1->GET_CURRENT_CELL
IMPORTING
E_ROW = L_ROW
E_VALUE = L_VALUEC
E_COL = L_COL
ES_ROW_ID = LS_ROW
ES_COL_ID = LS_COL
ES_ROW_NO = LS_ROID.
LOOP AT P_ER_DATA_CHANGED->MT_GOOD_CELLS INTO LS_MOD_CELLS.
READ TABLE GT_ITAB INDEX LS_MOD_CELLS-ROW_ID.
L_INDEX = LS_MOD_CELLS-ROW_ID."SY-TABIX.
CALL METHOD P_ER_DATA_CHANGED->GET_CELL_VALUE
EXPORTING
I_ROW_ID = LS_MOD_CELLS-ROW_ID
I_FIELDNAME = LS_MOD_CELLS-FIELDNAME
IMPORTING
E_VALUE = L_VALUE.
CLEAR : L_RESULT, L_MSG.
CASE LS_MOD_CELLS-FIELDNAME.
WHEN '필드명1'. "조건에 따른 내용1
WHEN '필드명2'. "조건에 따른 내용2
WHEN '필드명3'. "조건에 따른 내용3
WHEN OTHERS.
ENDCASE.
MODIFY GT_ITAB INDEX LS_MOD_CELLS-ROW_ID .
PERFORM BUILD_DATA. "<--- 이곳은 무시하시면 됩니다 CELLTAB의 적용을 위한 부분입니다
CALL METHOD G_GRID1->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = GS_STABLE
I_SOFT_REFRESH = ''.
*-- 아래에서 포커싱을 하고(하지 않아도 상관없습니다)
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID1.
*-- 이곳이 포인트2 입니다 (미리 파악해놓은 셀의 위치로 찾아갑니다)
CALL METHOD G_GRID1->SET_CURRENT_CELL_VIA_ID
EXPORTING
IS_ROW_ID = LS_ROW
IS_COLUMN_ID = LS_COL.
CLEAR : GT_ITAB.
ENDLOOP.
ENDFORM. "DATA_CHANGED
상기 예문처럼 적용한다면 셀의 이동은 이동대로, 변경 된 데이터는 데이터 대로 적용이 됩니다
글의 처음에 말씀드렸듯, 제가 이런 걸 만들 때 마다 생각해내는게 늦다보니 정리를 하는 것입니다^^;;
뭘 이런걸 글로 다 올려? 하는 분께서는 패스 하시면 되는 내용입니다~ㅋ
GET_SELECTED_CELLS - 현재 선택된 복수의 셀 정보를 LVC_T_CELL 타입의 테이블로 반환합니다.
(현재 선택된 셀들의 필드명, 인덱스 등의 정보를 가져옴)
GET_SELECTED_COLUMNS - 선택된 컬럼들의 정보를 LVC_T_COL 타입의 테이블로 반환합니다
GET_SELECTED_ROW - 선택된 멀티 라인의 정보를 LVC_T_ROW 타입의 테이블로 반환합니다
SET_FRONTEND_LAYOUT - ALV GRID LAYOUT을 변경.
이 메소드 호출한 후에 REFRESH_TABLE_DISPLAY 메소드를 호출하면 변경된 레이아웃이 적용됩니다.
일을 하며 시간에 쫒기다보니, 퇴근해서 들어가는 시간이 11시는 되어야 하는군요^^;;;
포스팅을 하고자 마음만 먹는다면 새벽에라도 하면 될 텐데... 게으름만 피우고 있습니다~
날씨가 이제 정말 봄이 다가오는 듯 합니다. 내일은 비 소식과 함께 서늘할 거란 일기예보가 있던데... 감기조심하세요~
행복으로 가득한 하루하루가 되시길 소망합니다^^
'개발자愛 > SAP' 카테고리의 다른 글
| SAP ALV : GET_CURRENT_CELL & Layout Other Method (19) | 2012/03/22 |
|---|---|
| [SAP] 개발서버 / QA / 운영 의 DB속도가 심하게 차이날 때 or 액세스 속도가 너무 오래 걸릴 때 (8) | 2012/02/22 |
| SAP/ABAP - BAdI 예제 (구매처 생성/변경/조회 시 기능확장) (11) | 2011/11/02 |
| SAP ERP / ABAP => CTS 이전 버전으로 돌리기 (프로그램 버전별 관리) (14) | 2011/09/06 |
| ABAP : SY- 변수 (6) | 2011/08/08 |
| SAPGUI windows7 에서 saplogon.ini 파일의 저장위치 (0) | 2010/09/26 |
iTunesSetup8.0.2.20.vol1.egg
LCDISOconverter.zip


댓글을 달아 주세요
예전 COBOL과 비슷한 느낌이 들기도 하고,,,늦은밤까지 고생하셨네요
2012/03/22 18:39일 하다말고 생각나서 메모해놓은 거랍니다^^;;;
2012/03/22 18:43퇴근은 먼 이후의 이야기라죠? ㅎㅎ
내일은 오후에 비도오고 서늘할 분위깁니다. 건강조심하세요~
비밀댓글입니다
2012/03/22 18:40저도 여러가지 언어로 일을 했지만.. ABAP 은 일반적으론 접할 수 없는 언어랍니다~
2012/03/22 18:44이런 글에도 댓글 주셔서 감사합니다 ㅎㅎ 좋은 밤 되세요~
블로그의 좋은 점이 메모의 기능도 훌륭히 소화한다는 것이죠 ^^
2012/03/23 04:51내용을 보니 제 눈이 핑핑 도네요 헤헤
맞습니다^^ 개인적으로 필요한 내용까지도 메모기능을 훌륭히 해낸다는게 블로그의 장점중 하나란 생각입니다~
2012/03/23 12:55내용은 그냥 무시하시면 됩니다~ㅎㅎ
비오는 금요일입니다. 비가 그치고 나면 황사가 온다고 하네요~
건강한 주말 보내시길 바랍니다
오늘은 살짝...;;; ㅎㅎㅎ
2012/03/23 09:15이런 글은 그냥 무시하시면 됩니다ㅎㅎ
2012/03/23 12:56건강한 주말 보내세요~
무슨 언어인가요?
2012/03/23 09:52ABAP 이라는 언어입니다. SAP ERP 에서만 사용하는 언어인지라 일반적인 개발자들도 접할 일이 잘 없는 언어네요^^
2012/03/23 13:01아앗...머리가 지끈...^^ ~~ ㅎㅎ
2012/03/23 12:27프로그래머 이신가봐요? ^^
다녀갑니다.
행복한 하루 되세요~
^^;; 뭐 이런 내용을 올리나 싶으시죠? ㅋ
2012/03/23 13:06스스로의 메모를 위해서랍니다..ㅠ.ㅠ
비가 제법 내리네요. 이 비가 그치면 황사가 온다고 합니다.
건강 조심하시고 행복한 주말 되세요^^
자 ...... 감기 조심하겠습니다 ! ㅎㅎ;;
2012/03/23 20:12ㅎㅎ 넵! 비가 그쳤는데 기온은 떨어졌네요~
2012/03/24 13:17감기 조심하시고 행복한 주말 되세요^^ 전 열심히 일하겠습니다~ㅋ
즐거운 주말되세요 ^^
2012/03/24 10:19감사합니다~ 행복 가득한 주말 되세요^^
2012/03/24 13:20비밀댓글입니다
2012/05/11 13:52비밀 댓글로 달 수가 없군요^^
2012/05/11 14:54메일주소와 함께 남겨주시면 메일로도 답변 드리겠습니다.
전 정규직이었습니다. 그렇다 해도 프로젝트 참여를 위해 제출한 이력과 플젝 경력을 H사에서 확인 후 PASS 해야 갈 수 있었습니다.
영어는 기본적인 회화 정도는 가능하셔야 좋지만 개발만 하신다면 그리 큰 문제는 되지 않습니다.(생활하시기에 불편한 점이 있겠군요)
개발자가 아닌 컨이시라면 업무소통은 원활하셔야 하겠네요.
OPIc으로 따지자면 IL 이나 IM 정도는 되어야 편하실 듯 합니다
플젝 경력이 없으시다면 최소한 서티는 있으셔야 할 거고, 아밥은 초급이나 중급/고급의 차이가 크게 나지 않다지만 2~3년 정도의 경력은 있으신게 좋습니다.
(경력이 없으시다면 업체쪽에서 아밥서티 만으로는 PASS를 안하는 경우가 많기에 원해도 못가는 경우가 있습니다)
또한 SD경우는 국가마다 차이가 많이 나기에 역시나 다양한 경험이 있는게 좋습니다.
컨으로 해외를 나가고자 하신다면, 서티만으로는 많이 힘듭니다
당장 뭘 더 말씀드려야할 지 떠오르지 않네요~
궁금한 점이 있으시다면 또 남겨주시기 바랍니다^^
비밀댓글입니다
2012/05/15 13:08