아이고 힘들어 ^^
제가 한다고 하는데 잘 안되네요..
질문 몇개 좀 드릴께요.
1. 제가 클래스로 select all 버튼을 만들었거든요 delect all 버튼도 같이..
그런데 버튼을 누르면 앞을 버튼에 모두 체크가 되어야 하는데 되지가 않네요 ㅡㅡㅋ
화면 한번 깜빡하고 그래도예요..
버튼만들어 주면 알아서 체크 되는 줄 알았는데 아닌가요?
생성한 버튼에 대한 로직을 적어야 하는건가요??
2. zmark라는 인터널 테이블에 필드를 많이 사용하는거 같던데 그건 언제 사용하는건가요??
꼭 있어야 하는건가요? 어떤 프로그램은 있고 어떤 프로그램은 없고 헷갈리네요..
3. 마지막 질문은 제가 copy해서 썼는데 정확하게 어떤 의미인지 모르겠어요
저의 이해를 조금만 더해주세요
CALL METHOD cl_gui_cfw=>flush.
CALL METHOD er_data_changed->display_protocol.
CALL METHOD REF_ALV_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
CALL METHOD sender->set_visible
EXPORTING
visible = space.
CALL METHOD cl_gui_cfw=>set_new_ok_code
CALL METHOD REF_ALV_GRID->FREE.
CALL METHOD REF_CUST_CON->FREE.
포인트를 드릴수만 있다면 드리고 싶은데..ㅎㅎ
아님 네이버 내공이라도 걸어야 할까요??
댓글 5
-
activeman
2009.02.16 22:57
-
아이쿠!
2009.02.17 21:24
activeman님 죄송하지만 하나만 더 여쭤 볼께요..
mark 에 x를 박아 주고 리프레쉬 만 하면 전체 선택이 되는 건가요?
inter테이블에는 X 가 박히는데..화면에는...
화면이 세번 정도 깜박이는거 같은데 그것 때문인지.ㅡㅡ
아~~어제 부터 못하고 있어요..
alv펑션할때는 누르면 전체선택이 되어 버튼도 눌러진 상태이고 색깔도 진한 주황색으로 바끼잖아요..
그런 코딩까지도 해야 하는건가요??
아 ~ 혹시 관련 소스 있으면 부탁 드려도 될까요?
-
activeman
2009.02.18 03:25
화면이 있는 곳의 PBO에 CALL METHOD GRID->REFRESH_TABLE_DISPLAY.
가 있어야 화면이 갱신이 됩니다.
그리고 인터널테이블의 mark에 'X'만 넣어 주십시요..그리고 CALL METHOD GRID->REFRESH_TABLE_DISPLAY을 나타내 주시면
선택색상(주황색)으로 변하는것은 자동입니다..
다만 LAYOUT설정 시에 GS_LAYOUT-BOX_FNAME = 'MARK' 표시를 해주셔야 합니다.
즐밥하세요..
-
아이쿠!
2009.02.18 20:02
그 코딩은 다 되어 있는데 이상하게 안되네요..아직도 하고 있어요..^^
인터널 테이블에 100개가 넘는 필드들이 있고 variant 에 따라 layout을 다르게 보여 주는데
혹시 .....
===============================
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = LV_TABNAME
I_CLIENT_NEVER_DISPLAY = GC_MARK
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER = GC_MARK
CHANGING
CT_FIELDCAT = LT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
=================
CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA'
EXPORTING
IT_FIELDCAT = PT_FIELDCAT
IMPORTING
ET_FIELDCAT = LT_FIELDCAT.
CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO'
EXPORTING
IT_FIELDCAT_KKBLO = LT_FIELDCAT
IMPORTING
ET_FIELDCAT_LVC = PT_FCAT.
================
LOOP AT GT_FCAT INTO LS_FCAT.
CLEAR : LS_FCAT-COL_POS,
LS_FCAT-NO_OUT,
LS_FCAT-KEY.
CASE LS_FCAT-FIELDNAME .
WHEN 'MARK'.
LS_FCAT-COLTEXT = 'Supplier name'.
LS_FCAT-TOOLTIP = 'Supplier name'.
LS_FCAT-KEY = GC_MARK.
LS_FCAT-OUTPUTLEN = 13.
LS_FCAT-COL_POS = 1.
WHEN 'NAME1'.
LS_FCAT-COLTEXT = 'Supplier name'.
LS_FCAT-TOOLTIP = 'Supplier name'.
LS_FCAT-KEY = GC_MARK.
LS_FCAT-OUTPUTLEN = 13.
LS_FCAT-COL_POS = 2.
WHEN 'LIFNR'.
LS_FCAT-COLTEXT = 'Parma'.
LS_FCAT-TOOLTIP = 'Supplier code'.
LS_FCAT-KEY = GC_MARK.
LS_FCAT-OUTPUTLEN = 10.
LS_FCAT-COL_POS = 3.
WHEN 'MODEL'.
LS_FCAT-COLTEXT = 'Model'.
LS_FCAT-KEY = GC_MARK.
LS_FCAT-OUTPUTLEN = 10.
LS_FCAT-COL_POS = 4.
WHEN 'MATNR'.
LS_FCAT-COLTEXT = 'Part No.'.
LS_FCAT-TOOLTIP = 'Material Number'.
LS_FCAT-KEY = GC_MARK.
LS_FCAT-OUTPUTLEN = 10.
LS_FCAT-COL_POS = 5.
WHEN 'REVISION'.
LS_FCAT-COLTEXT = 'Revision'.
LS_FCAT-KEY = GC_MARK.
LS_FCAT-COL_POS = 6.
WHEN 'DFILE'.
LS_FCAT-COLTEXT = 'Dwg'.
LS_FCAT-ICON = GC_MARK.
LS_FCAT-OUTPUTLEN = 2.
LS_FCAT-COL_POS = 7.
WHEN 'ZRPQAPNO'.
LS_FCAT-COLTEXT = 'Rep. PQAP NO'.
LS_FCAT-TOOLTIP = 'Representative PQAP Number'.
LS_FCAT-COL_POS = 8.
WHEN 'MAKTX'.
LS_FCAT-COLTEXT = 'Part Name.'.
LS_FCAT-TOOLTIP = 'Material text'.
LS_FCAT-OUTPUTLEN = 20.
LS_FCAT-COL_POS = 9.
WHEN 'RDATE'.
LS_FCAT-COLTEXT = 'Dwg. Date'.
LS_FCAT-TOOLTIP = 'Drawing receipt date'.
LS_FCAT-COL_POS = 10.
WHEN 'ACTW01'.
LS_FCAT-COLTEXT = '1'.
LS_FCAT-TOOLTIP = 'RTS'.
LS_FCAT-COL_POS = 11.
WHEN 'ACTW02'.
LS_FCAT-COLTEXT = '2'.
LS_FCAT-TOOLTIP = 'Flow chart'.
LS_FCAT-COL_POS = 12.
WHEN 'ACTW03'.
LS_FCAT-COLTEXT = '3'.
LS_FCAT-TOOLTIP = 'Project Plan'.
LS_FCAT-COL_POS = 13.
WHEN 'ACTWINT'.
LS_FCAT-COLTEXT = 'INF'.
LS_FCAT-TOOLTIP = 'RFA Status(Y: Completed)'.
LS_FCAT-COL_POS = 14.
WHEN 'ACTW04'.
LS_FCAT-COLTEXT = '4'.
LS_FCAT-TOOLTIP = 'RTS Action and closure'.
LS_FCAT-COL_POS = 15.
WHEN 'ACTW05'.
LS_FCAT-COLTEXT = '5'.
LS_FCAT-TOOLTIP = 'FMEA(Design & Process)'.
LS_FCAT-COL_POS = 16.
WHEN 'ACTW06'.
LS_FCAT-COLTEXT = '6'.
LS_FCAT-TOOLTIP = 'Control plan'.
LS_FCAT-COL_POS = 17.
WHEN 'ACTW07'.
LS_FCAT-COLTEXT = '7'.
LS_FCAT-TOOLTIP = 'Quality Assurance of Sub-supplier'.
LS_FCAT-COL_POS = 18.
WHEN 'ACTW08'.
LS_FCAT-COLTEXT = '8'.
LS_FCAT-TOOLTIP = 'Initial sample Approval'.
LS_FCAT-COL_POS = 19.
WHEN 'ACTWQA'.
LS_FCAT-COLTEXT = 'QA'.
LS_FCAT-TOOLTIP = 'Initial Sample Approval Status'.
LS_FCAT-COL_POS = 20.
WHEN 'ACTW09'.
LS_FCAT-COLTEXT = '9'.
LS_FCAT-TOOLTIP = 'Process control Confirmation'.
LS_FCAT-COL_POS = 21.
WHEN 'ACTW10'.
LS_FCAT-COLTEXT = '10'.
LS_FCAT-TOOLTIP = 'PTR (Production Test Run)'.
LS_FCAT-COL_POS = 22.
WHEN 'ACTW11'.
LS_FCAT-COLTEXT = '11'.
LS_FCAT-TOOLTIP = 'Product Audit '.
LS_FCAT-COL_POS = 23.
WHEN 'TSTATUS'.
LS_FCAT-COLTEXT = 'PQAP Status'.
LS_FCAT-TOOLTIP = 'PQAP Status'.
LS_FCAT-OUTPUTLEN = 10.
LS_FCAT-COL_POS = 24.
WHEN 'BYRMK'.
LS_FCAT-COLTEXT = 'Buyer Comment'.
LS_FCAT-TOOLTIP = 'Buyer Comment'.
LS_FCAT-OUTPUTLEN = 5.
LS_FCAT-COL_POS = 25.
WHEN 'FSTSDTXT'.
LS_FCAT-COLTEXT = 'SD Comment'.
LS_FCAT-TOOLTIP = 'SD Comment'.
LS_FCAT-OUTPUTLEN = 5.
LS_FCAT-COL_POS = 26.
WHEN 'INPRMK'.
LS_FCAT-COLTEXT = 'QA Comment'.
LS_FCAT-TOOLTIP = 'QA Comment'.
LS_FCAT-OUTPUTLEN = 5.
LS_FCAT-COL_POS = 27.
WHEN 'APVRMK'.
LS_FCAT-COLTEXT = 'Approval Comment'.
LS_FCAT-TOOLTIP = 'Approval Comment'.
LS_FCAT-OUTPUTLEN = 5.
LS_FCAT-COL_POS = 28.
WHEN 'ZMATNR'.
LS_FCAT-COLTEXT = 'Part No.(Old)'.
LS_FCAT-OUTPUTLEN = 10.
LS_FCAT-COL_POS = 29.
WHEN 'ZREVISION'.
LS_FCAT-COLTEXT = 'Rev.(Old)'.
LS_FCAT-COL_POS = 30.
WHEN 'GUBUN'.
LS_FCAT-COLTEXT = 'ECN Type'.
LS_FCAT-TOOLTIP = 'R: Proto, L: Pilot'.
LS_FCAT-COL_POS = 31.
WHEN 'LIFNR'.
LS_FCAT-COLTEXT = 'Parma'.
LS_FCAT-TOOLTIP = 'Supplier code'.
LS_FCAT-OUTPUTLEN = 10.
LS_FCAT-COL_POS = 32.
WHEN OTHERS.
LS_FCAT-NO_OUT = GC_MARK.
ENDCASE.
MODIFY GT_FCAT FROM LS_FCAT.
ENDLOOP.
==================
IF P_R7 = 'X'. "Standard
CLEAR GS_VARIANT2.
ENDIF.
*// Head Grid
CALL METHOD P_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_VARIANT = GS_VARIANT2
IS_LAYOUT = GS_LAYOUT
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
I_SAVE = 'A' " 전체가능유형.
I_DEFAULT = ' '
CHANGING
IT_SORT = GT_SORT[]
IT_OUTTAB = ITAB[]
IT_FIELDCATALOG = GT_FCAT[].
이런 로직하고는 상관이없을까요?
==================
CALL METHOD REF_ALV_GRID->REFRESH_TABLE_DISPLAY
EXPORTING
I_SOFT_REFRESH = 'X'
IS_STABLE = GS_STBL.
혹 분에 보이시면... 알려주세요^^
CALL METHOD GRID->REFRESH_TABLE_DISPLAY 에서 f5눌러서 CT_FIELDCAT 을면 알수가 없어요
인터널 테이블 순서도 아니고 위의 카탈로드 순서도 아니고..
1 1 | 1 |NAME1 |ITAB <
2 1 | 141|MARK |ITAB <
3 1 | 2 |LIFNR |ITAB <
4 1 | 3 |MODEL |ITAB <
5 1 | 4 |MATNR |ITAB <
6 1 | 5 |REVISION |ITAB <
7 1 | 1 |PQAPNO |ITAB <
8 1 | 2 |ATTACHNO1 |ITAB <
이거때문에 안먹히는건가요?? 상관이 없을려나??
아 죽겠네요..오기도 생기고 아~~
-
아이쿠!
2009.02.18 20:08
CALL METHOD REF_ALV_GRID->REFRESH_TABLE_DISPLAY
들어가기전에 itab을 보면 mark에 X는 모두 박혀 있어요 ㅡㅡ
1. 당연히 버튼클릭할때 user_command event에서 버튼의 function code에 대한 수행내역을 코딩해 주셔야 합니다.
user_command event에 대한 샘플프로그램은 "BCALV_GRID_08"을 참조 하시면 되겠습니다.
2. 보통 "mark"를 많이 사용합니다.(zmark, mark나 같겠지만요...ㅋㅋ). alv에서 row선택하는 필드의 이름으로 사용합니다.
없는 프로그램 보시면 alv에서 앞에 선택하는 칸이 없습니다. 참고 하세요..
3. 번은 class에서 내용보시면 금방 이해 하실 수 있을 겁니다..
대표적으로 set_read_for_input 은 alv에서 입력가능하게 하는 메소드 입니다.
즐밥하세요..