:+:+: 사랑愛 - Ever after :+:+:

밋첼™'s Blog is powered by Tattertools

'SET_FRONTEND_LAYOUT'에 해당되는 글 1건

  1. 2012.03.22 SAP ALV : GET_CURRENT_CELL & Layout Other Method (21)

오늘의 글은... 이쪽 일을 하는 분들께만 참고가 될 수 있는 사항입니다~

무엇보다... 해놓고도 잊어버리는 저를 위해서 다시 메모하는 글이니 이웃분들께서는 과감히 닫아주시면 됩니다^^


보통 ALV 상에서 DATA_CHANGED를 하고 나면 셀의 이동이 고민 됩니다 - 고민할 필요도 없는 사항인가요? ^^;;
 

물론 실력이 좋은 분들께는 아무런 문제도 되지 않는 내용이지만~ 정리합니다. 



아시다시피  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 입니다.


 
GET_CURRENT_CELL에 대해 먼저 정리해보겠습니다.

GET_CURRENT_CELL는 ALV GRID 컨트롤에 커서가 놓인 위치의 값과 속성을 반환합니다.
 




예문으로 보여드리겠습니다.



*&---------------------------------------------------------------------*
*&      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_RESULTL_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_FRONTEND_LAYOUT - 현재 설정되어 있는 ALV GRID의 레이아웃 정보를 가져옵니다.

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시는 되어야 하는군요^^;;;

포스팅을 하고자 마음만 먹는다면 새벽에라도 하면 될 텐데... 게으름만 피우고 있습니다~

날씨가 이제 정말 봄이 다가오는 듯 합니다. 내일은 비 소식과 함께 서늘할 거란 일기예보가 있던데... 감기조심하세요~

행복으로 가득한 하루하루가 되시길 소망합니다^^ 

저작자 표시 비영리 변경 금지
신고

댓글을 달아 주세요

  1. Favicon of http://jongamk.tistory.com BlogIcon 핑구야 날자  댓글주소  수정/삭제  댓글쓰기

    예전 COBOL과 비슷한 느낌이 들기도 하고,,,늦은밤까지 고생하셨네요

    2012.03.22 18:39 신고
    • Favicon of http://sarange.net BlogIcon 밋첼™  댓글주소  수정/삭제

      일 하다말고 생각나서 메모해놓은 거랍니다^^;;;
      퇴근은 먼 이후의 이야기라죠? ㅎㅎ
      내일은 오후에 비도오고 서늘할 분위깁니다. 건강조심하세요~

      2012.03.22 18:43 신고
  2.  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    2012.03.22 18:40
    • Favicon of http://sarange.net BlogIcon 밋첼™  댓글주소  수정/삭제

      저도 여러가지 언어로 일을 했지만.. ABAP 은 일반적으론 접할 수 없는 언어랍니다~
      이런 글에도 댓글 주셔서 감사합니다 ㅎㅎ 좋은 밤 되세요~

      2012.03.22 18:44 신고
  3. Favicon of http://whiteink.kr BlogIcon 하얀잉크  댓글주소  수정/삭제  댓글쓰기

    블로그의 좋은 점이 메모의 기능도 훌륭히 소화한다는 것이죠 ^^
    내용을 보니 제 눈이 핑핑 도네요 헤헤

    2012.03.23 04:51 신고
    • Favicon of http://sarange.net BlogIcon 밋첼™  댓글주소  수정/삭제

      맞습니다^^ 개인적으로 필요한 내용까지도 메모기능을 훌륭히 해낸다는게 블로그의 장점중 하나란 생각입니다~
      내용은 그냥 무시하시면 됩니다~ㅎㅎ

      비오는 금요일입니다. 비가 그치고 나면 황사가 온다고 하네요~
      건강한 주말 보내시길 바랍니다

      2012.03.23 12:55 신고
  4. Favicon of http://love111.tistory.com BlogIcon 바닐라로맨스  댓글주소  수정/삭제  댓글쓰기

    오늘은 살짝...;;; ㅎㅎㅎ

    2012.03.23 09:15 신고
  5. Favicon of http://40nons.tistory.com BlogIcon 쩡전  댓글주소  수정/삭제  댓글쓰기

    무슨 언어인가요?

    2012.03.23 09:52 신고
  6. Favicon of http://boksuni.tistory.com BlogIcon 복돌이^^  댓글주소  수정/삭제  댓글쓰기

    아앗...머리가 지끈...^^ ~~ ㅎㅎ
    프로그래머 이신가봐요? ^^

    다녀갑니다.
    행복한 하루 되세요~

    2012.03.23 12:27 신고
    • Favicon of http://sarange.net BlogIcon 밋첼™  댓글주소  수정/삭제

      ^^;; 뭐 이런 내용을 올리나 싶으시죠? ㅋ
      스스로의 메모를 위해서랍니다..ㅠ.ㅠ
      비가 제법 내리네요. 이 비가 그치면 황사가 온다고 합니다.
      건강 조심하시고 행복한 주말 되세요^^

      2012.03.23 13:06 신고
  7. Favicon of http://iconiron.tistory.com BlogIcon 레오 ™  댓글주소  수정/삭제  댓글쓰기

    자 ...... 감기 조심하겠습니다 ! ㅎㅎ;;

    2012.03.23 20:12 신고
  8. Favicon of http://dragonphoto.tistory.com BlogIcon 드래곤포토  댓글주소  수정/삭제  댓글쓰기

    즐거운 주말되세요 ^^

    2012.03.24 10:19 신고
  9.  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    2012.05.11 13:52
    • Favicon of http://sarange.net BlogIcon 밋첼™  댓글주소  수정/삭제

      비밀 댓글로 달 수가 없군요^^
      메일주소와 함께 남겨주시면 메일로도 답변 드리겠습니다.

      전 정규직이었습니다. 그렇다 해도 프로젝트 참여를 위해 제출한 이력과 플젝 경력을 H사에서 확인 후 PASS 해야 갈 수 있었습니다.
      영어는 기본적인 회화 정도는 가능하셔야 좋지만 개발만 하신다면 그리 큰 문제는 되지 않습니다.(생활하시기에 불편한 점이 있겠군요)
      개발자가 아닌 컨이시라면 업무소통은 원활하셔야 하겠네요.
      OPIc으로 따지자면 최소 IM 정도는 되어야 편하실 듯 합니다

      플젝 경력이 없으시다면 최소한 서티는 있으셔야 할 거고, 아밥은 초급이나 중급/고급의 차이가 크게 나지 않다지만 2~3년 정도의 경력은 있으신게 좋습니다.
      (경력이 없으시다면 업체쪽에서 아밥서티 만으로는 PASS를 안하는 경우가 많기에 원해도 못가는 경우가 있습니다)
      또한 SD경우는 국가마다 차이가 많이 나기에 역시나 다양한 경험이 있는게 좋습니다.
      컨으로 해외를 나가고자 하신다면, 서티만으로는 많이 힘듭니다

      당장 뭘 더 말씀드려야할 지 떠오르지 않네요~
      궁금한 점이 있으시다면 또 남겨주시기 바랍니다^^

      2012.05.11 14:54 신고
  10.  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    2012.05.22 08:58
  11. ATRIGGER  댓글주소  수정/삭제  댓글쓰기

    감사합니다..초보 아밥퍼에게 많은 도움이 되었습니다 감사합니다!!

    2016.07.14 09:42 신고
1 
BLOG main image
:+:+: 사랑愛 - Ever after :+:+:
제 사진은 예술이 아닌 추억의 부분입니다. 방법도 이론도 없으며, 즐겁게 담고 기록으로 남길뿐입니다 <Facebook> Mitchell Jung
by 밋첼™

카테고리

분류 전체보기 (541)
사랑愛 (177)
사진愛_Photo (99)
가족愛 (0)
개발자愛 (63)
음악愛 (15)
그외愛 (179)
리뷰愛 (8)

달력

«   2017/11   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
textcubeDesignMyselfget rss