필드카탈로그는
*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fieldcat_init .
DATA: lv_inclname LIKE trdir-name.
SET PARAMETER ID 'ALVBUFFER' FIELD sy-datum.
lv_inclname = sy-repid.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = g_repid
i_inclname = lv_inclname
i_internal_tabname = 'GT_ALV'
i_bypassing_buffer = ' '
i_buffer_active = 'X'
CHANGING
ct_fieldcat = gt_fieldcat[].
LOOP AT gt_fieldcat.
CASE gt_fieldcat-fieldname.
WHEN 'ICON'.
gt_fieldcat-seltext_l = '상태'.
gt_fieldcat-outputlen = '8'.
gt_fieldcat-hotspot = ' '.
WHEN 'KSTAR'.
gt_fieldcat-seltext_l = '코드'.
gt_fieldcat-outputlen = '15'.
gt_fieldcat-hotspot = 'X '.
WHEN 'KTEXT'.
gt_fieldcat-seltext_l = '이름'.
gt_fieldcat-outputlen = '23'.
gt_fieldcat-hotspot = ' '.
WHEN 'KATYP'.
gt_fieldcat-seltext_l = '범주'.
gt_fieldcat-outputlen = '5'.
gt_fieldcat-hotspot = ' '.
WHEN 'FUNC_AREA'.
gt_fieldcat-seltext_l = '기능영역'.
gt_fieldcat-outputlen = '10'.
gt_fieldcat-hotspot = ' '.
WHEN 'MSGLOG'.
gt_fieldcat-seltext_l = '처리결과'.
gt_fieldcat-outputlen = '70'.
gt_fieldcat-hotspot = ' '.
WHEN OTHERS.
gt_fieldcat-tech = 'X'.
ENDCASE.
MODIFY gt_fieldcat.
ENDLOOP.
ENDFORM. " FIELDCAT_INIT
이렇게 해주었습니다. USER_COMMAND는
*&--------------------------------------------------------------------*
*& Form ALV_USER_COMMAND
*&--------------------------------------------------------------------*
form user_command using pv_ucomm like sy-ucomm
ps_selfield type slis_selfield.
read table gt_alv index ps_selfield-tabindex.
if gt_alv-icon = icon_green_light.
check not gt_alv-kstar is initial.
set parameter id 'KAT' field gt_alv-kstar.
call transaction 'KA03' and skip first screen.
elseif pv_ucomm = '&DATA_SAVE'.
if g_okcode = space.
perform bdc_kstar_process.
g_okcode = 'SAVE'.
endif.
ps_selfield-refresh = 'X'.
else.
*MESSAGE e002 WITH '잘못된 데이터 입니다.'.
endif.
endform. "user_command
이렇게 해주었는데
그린아이콘되어진 라인중에서 필드를 정해서 그 필드를 클릭시에만 KA03을 타게 하고 싶어서
필드카탈로그에 HOTSPOT을 추가해준다음
user_command에 로직을 어떻게 해줘야 할지를 모르겠습니다.
한번클릭시는 위의 로직대로 해도 상관없는데 더블클릭시는 다른필드도 KA03을 타버려서염 이 부분을 해결하고 싶습니다.
참고할 만한 로직이 있으시면 좀 알려 주시면 감사하겠습니다.
다른 필드를 더블클릭시 KA03을 타지 않게 하고 싶습니다.
댓글 4
-
버미!
2010.11.25 01:44
-
버미!
2010.11.25 01:49
그리고 참고할 만한 로직은 패키지 SLIS에 많습니다
한번 훑어보시는 것도 좋습니다. 제가 방금 찾아봤는데, User Command 로직이 있는 프로그램이 있으니
어떤 프로그램이 있는지 살펴볼 겸 한번 찾아보세요..^^
-
오늘도 역시
2010.11.25 02:04
네 감사합니다. 첨에 CASE ~ WHEN으로 했다가 업로드 프로그램이라서 저장키까지 바로 타버리고 성공적으로 업데이트 된거만 타지게 할려고 하니 안되어서 그거 해결할려고 IF문 했는데 이상해진거 같습니다. -
Tester
2010.11.25 19:46
보통이런식을 많이 사용합니다.
case p_ucomm.
when '&IC1'.
if p_selfield-value ne space and p_selfield-fieldname = 'AUFNR'.
set parameter id 'ANR' field p_selfield-value.
call transaction 'KO03' and skip first screen.
endif.
endcase.
전체적으로 로직이 이상하네요..
User Command에 Case~When으로 Command를 분리하시고
즉, Save인지 더블클릭인지..
그 다음 더블클릭시 필드명이 무엇인지에 따라 Call T-Code 하는 로직으로 변경하도록 변경해주세요..