메뉴 건너뛰기

SAP 한국 커뮤니티

제가 책을 따라 제가 만든 테이블을 토대로 제구성한 프로그램입니다.


 


실행화면을 보시면 왼쪽에 트리가 있고 트리에서 이름을 클릭하면 오른쪽 텍스트 필드에 자료출력되고 alv에도 자료가 출력되야하는데요


 


소스가 잘못된건지 이름을 클릭하면 아무 반응이 없네요 전체 소스 첨부 할게요


 


에러가 안나서 머가 문제인지 모르겠네요 잘 좀 부탁드립니다.


 


소스가 좀 기네요. 초보라서 이제 막 알아가는 과정입니다.


 


 


메인 프로그램----------------------------------------------------------------------------------------------


 


 

INCLUDE ZDOC_TOP.
INCLUDE ZDOC_cl1.
INCLUDE ZDOC_o01.
INCLUDE ZDOC_i01.
INCLUDE ZDOC_f01.

START-OF-SELECTION.
CREATE OBJECT g_application.
set SCREEN 100.


 


TOP INCLUDE ----------------------------------------------------------------------------------------


 


 

PROGRAM ZDOC MESSAGE-id zq00.

TABLES: ZINPUT, ZOUTPUT.

CLASS LCL_APPLICATION DEFINITION DEFERRED.
CLASS CL_GUI_CFW DEFINITION LOAD.

TYPES: NODE_TABLE_TYPE LIKE STANDARD TABLE OF MTREESNODE WITH DEFAULT KEY.

DATA: NODE_TABLE TYPE NODE_TABLE_TYPE,
      NODE LIKE NODE_STR,
      EVENTS TYPE CNTL_SIMPLE_EVENTS,
      EVENT TYPE CNTL_SIMPLE_EVENT.

DATA: G_APPLICATION TYPE REF TO LCL_APPLICATION,
      CONTAINER_TREE TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      CONTAINER_ALV TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      TREE TYPE REF TO CL_GUI_SIMPLE_TREE,
      GRID TYPE REF TO CL_GUI_ALV_GRID,
      OK_CODE TYPE SY-UCOMM,
      gt_fieldcatalog TYPE lvc_t_fcat,
      gt_fieldcatalog_ln LIKE LINE OF gt_fieldcatalog.

DATA CONTAINER_TOOLBAR TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA MYTOOLBAR TYPE REF TO CL_GUI_TOOLBAR.
DATA BUTTONGROUP TYPE TTB_BUTTON.
DATA: EDPOSX TYPE i,
      EDPOSy type i,
      rdclick,
      rddrop,
      edoutput(20),
      myevent_tab type CNTL_SIMPLE_EVENTs,
      myevent type CNTL_SIMPLE_EVENT,
      menu_dynamic type REF TO cl_ctmenu.

data: x_save,
      g_repid like sy-repid,
      gs_variant type disvariant,
      gs_layout type lvc_s_layo.

data: g_event(30),
      g_node_key type tv_nodekey.

data: it_zoutput type table of zoutput.

data: p_docname like zoutput-docname,
      p_major  like ZINPUT-docmajor,
      name  like ZINPUT-name,
      repid type sy-repid.


 


CL1 INCLUDE ---------------------------------------------------------------------------------------------


 


 

CLASS LCL_MY_EVENT_HANDLER DEFINITION.
  PUBLIC SECTION.
  METHODS: on_function_selected
  FOR EVENT function_selected of cl_gui_toolbar
  IMPORTING fcode.

ENDCLASS.               "LCL_MY_EVENT_HANDLER


CLASS LCL_APPLICATION DEFINITION.
  PUBLIC SECTION.
  METHODS:
  handle_node_double_click
  for EVENT node_double_click
  of cl_gui_simple_tree
  IMPORTING node_key.

ENDCLASS.               "LCL_APPLICATION

CLASS lcl_my_event_handler IMPLEMENTATION.
  METHOD on_function_selected.
    edoutput = fcode.
    edposx = 0.
    edposy = 0.
    CLEAR rddrop.
    rdclick = 'X'.
    ENDMETHOD.

ENDCLASS.               "lcl_my_event_handler

CLASS LCL_APPLICATION IMPLEMENTATION.
METHOD handle_node_double_click.
    select SINGLE docmajor docname name
      INTO (p_major, p_docname, name )
      from zinput
      where docname = node_key.
      ENDMETHOD.
ENDCLASS.               "LCL_APPLICATION


 


O01 INCLUDE-----------------------------------------------------------------------------------------


 


 

MODULE START OUTPUT.
SET PF-STATUS 'BASE'.

  if container_tree is initial or container_alv is INITIAL OR
    container_toolbar is INITIAL.
    PERFORM create_control.
    PERFORM register_toolbar_event.
    PERFORM build_toolbar.
    PERFORM register_tree_grid_event.
    PERFORM build_node_table USING node_table.
    PERFORM tree_nodes_create.

    CALL METHOD tree->expand_node
    EXPORTING
      node_key = 'MAJOR'.
    ENDIF.

    PERFORM DATA_SELECT.
    PERFORM WRITE_DATA.


ENDMODULE.                 " START  OUTPUT


 


I01 INCLUDE --------------------------------------------------------------------------------------------


 


 

MODULE USER_COMMAND_0100 INPUT.
  data: return_code type i.

  call METHOD cl_gui_cfw=>dispatch
  IMPORTING
    return_code = return_code.
  IF return_code <> cl_gui_cfw=>rc_noevent.
    clear ok_code.

  ENDIF.

  case ok_code.
    when 'EXIT'.
      IF NOT CONTAINER_TREE IS INITIAL.
        CALL METHOD CONTAINER_TREE->FREE
        EXCEPTIONS
          CNTL_SYSTEM_ERROR = 1
          CNTL_ERROR = 2.
        if sy-subrc <> 0.
          message w000.
        endif.
        call METHOD CONTAINER_alv->free
        EXCEPTIONS
          CNTL_SYSTEM_ERROR = 1
          CNTL_ERROR = 2.
        if sy-subrc <> 0.
          message w000.
        endif.
        call METHOD cl_gui_cfw=>flush
        EXCEPTIONS
          CNTL_SYSTEM_ERROR = 1
          CNTL_ERROR = 2.
        if sy-subrc <> 0.
          message w000.
        endif.
        clear CONTAINER_TREE.
        CLEAR tree.
        CLEAR CONTAINER_alv.
        CLEAR grid.
        endif.

        LEAVE PROGRAM.

        when others.
          if edoutput = 'FC1'.
            CALL METHOD tree->expand_root_nodes
            EXPORTING
              level_count  = 1
              expand_subtree = 'X'
              EXCEPTIONS
                failed = 1
                illegal_level_count = 2
                CNTL_SYSTEM_ERROR = 3.
            CLEAR edoutput.
            elseif edoutput = 'FC2'.
            CALL METHOD tree->COLLAPSE_ALL_nodes.
            CLEAR edoutput.
            ENDIF.
            ENDCASE.
            CLEAR OK_CODE.



ENDMODULE.                 " USER_COMMAND_0100  INPUT


 


F01 INCLUDE --------------------------------------------------------------------------------------------


 


 

FORM CREATE_CONTROL .
CREATE OBJECT CONTAINER_TOOLBAR
EXPORTING CONTAINER_NAME = 'CONTAINER_TOOLBAR'.
CREATE OBJECT CONTAINER_TREE
EXPORTING CONTAINER_NAME = 'CONTAINER_TREE'.
CREATE OBJECT CONTAINER_ALV
EXPORTING CONTAINER_NAME = 'CONTAINER_ALV'.
CREATE OBJECT MYTOOLBAR
EXPORTING PARENT = CONTAINER_TOOLBAR.

CREATE OBJECT TREE
EXPORTING
  PARENT = CONTAINER_TREE
  NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE
  EXCEPTIONS
    LIFETIME_ERROR  = 1
    CNTL_SYSTEM_ERROR = 2
    CREATE_ERROR = 3
    FAILED = 4
    ILLEGAL_NODE_SELECTION_MODE = 5.
   if sy-subrc <> 0.
     MESSAGE w000.
     endif.
     CREATE OBJECT grid
     EXPORTING i_parent = CONTAINER_alv.
ENDFORM.                    " CREATE_CONTROL
*&---------------------------------------------------------------------*
*&      Form  REGISTER_TOOLBAR_EVENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM REGISTER_TOOLBAR_EVENT .
  myevent-eventid = cl_gui_toolbar=>m_id_function_selected.
  myevent-appl_event = 'X'.
  APPEND myevent to myevent_tab.

data: evt_receiver type REF TO lcl_my_event_handler.
  CREATE OBJECT evt_receiver.
  call METHOD MYTOOLBAR->set_registered_events
  EXPORTING
    events = myevent_tab.
  set HANDLER evt_receiver->on_function_selected for MYTOOLBAR.

ENDFORM.                    " REGISTER_TOOLBAR_EVENT
*&---------------------------------------------------------------------*
*&      Form  REGISTER_TREE_GRID_EVENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM REGISTER_TREE_GRID_EVENT .
  "node double click
  event-eventid = CL_GUI_SIMPLE_TREE=>eventid_node_double_click.
  event-appl_event = 'X'.

  APPEND event to events.

  call METHOD tree->set_registered_events
  EXPORTING
    events  = events
    EXCEPTIONS
      cntl_error = 1
      CNTL_SYSTEM_ERROR = 2
      illegal_event_combination = 3.
  if sy-subrc <> 0.
    MESSAGE w000.
    endif.
    set HANDLER g_application->handle_node_double_click for tree.


ENDFORM.                    " REGISTER_TREE_GRID_EVENT

*&---------------------------------------------------------------------*
*&      Form  DATA_SELECT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DATA_SELECT .
  SELECT * FROM zOUTput INTO TABLE IT_zOUTput
    WHERE docname = p_docname.

ENDFORM.                    " DATA_SELECT
*&---------------------------------------------------------------------*
*&      Form  WRITE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM WRITE_DATA .

gs_layout-grid_title = text-101.
g_repid = sy-repid.
gs_variant-report = g_repid.
x_save = 'A'.

CLEAR gt_fieldcatalog.  refresh gt_fieldcatalog.

CLEAR gt_fieldcatalog_ln.
gt_fieldcatalog_ln-fieldname = 'CHART'.
gt_fieldcatalog_ln-row_pos = '1'. gt_fieldcatalog_ln-col_pos = '1'.
gt_fieldcatalog_ln-coltext = '차트번호'.
gt_fieldcatalog_ln-just = 'R'.
APPEND gt_fieldcatalog_ln to gt_fieldcatalog.

clear gt_fieldcatalog_ln.
gt_fieldcatalog_ln-fieldname = 'DOCNAME'.
gt_fieldcatalog_ln-row_pos = '1'. gt_fieldcatalog_ln-col_pos = '2'.
gt_fieldcatalog_ln-coltext = '진료의사'.
gt_fieldcatalog_ln-just = 'R'.
APPEND gt_fieldcatalog_ln to gt_fieldcatalog.

clear gt_fieldcatalog_ln.
gt_fieldcatalog_ln-fieldname = 'ZDTIN'.
gt_fieldcatalog_ln-row_pos = '1'. gt_fieldcatalog_ln-col_pos = '5'.
gt_fieldcatalog_ln-coltext = '입원여부'.
gt_fieldcatalog_ln-just = 'R'.
APPEND gt_fieldcatalog_ln to gt_fieldcatalog.

clear gt_fieldcatalog_ln.
gt_fieldcatalog_ln-fieldname = 'INDATE'.
gt_fieldcatalog_ln-row_pos = '1'. gt_fieldcatalog_ln-col_pos = '3'.
gt_fieldcatalog_ln-coltext = '입원일'.
gt_fieldcatalog_ln-just = 'R'.
APPEND gt_fieldcatalog_ln to gt_fieldcatalog.

clear gt_fieldcatalog_ln.
gt_fieldcatalog_ln-fieldname = 'OUTDATE'.
gt_fieldcatalog_ln-row_pos = '1'. gt_fieldcatalog_ln-col_pos = '4'.
gt_fieldcatalog_ln-coltext = '퇴원일'.
gt_fieldcatalog_ln-just = 'R'.
APPEND gt_fieldcatalog_ln to gt_fieldcatalog.

clear gt_fieldcatalog_ln.
gt_fieldcatalog_ln-fieldname = 'QUIZ'.
gt_fieldcatalog_ln-row_pos = '1'. gt_fieldcatalog_ln-col_pos = '6'.
gt_fieldcatalog_ln-coltext = '수술여부'.
gt_fieldcatalog_ln-just = 'R'.
APPEND gt_fieldcatalog_ln to gt_fieldcatalog.

CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'zoutput'
is_variant = gs_variant
i_save = x_save
CHANGING
it_outtab = it_zoutput
it_fieldcatalog = gt_fieldcatalog.





ENDFORM.                    " WRITE_DATA
*&---------------------------------------------------------------------*
*&      Form  BUILD_TOOLBAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_TOOLBAR .
  CLEAR buttongroup.
  PERFORM fill_data_table USING:
        'fc1' '@68@' cntb_btype_button '늘이기'     'Expand All',
        'fc2' '@69@' cntb_btype_button '줄이기' 'Collapse All'.

  call METHOD MYTOOLBAR->add_button_group
  EXPORTING
    data_table = buttongroup.

ENDFORM.                    " BUILD_TOOLBAR
*&---------------------------------------------------------------------*
*&      Form  FILL_DATA_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0360   text
*      -->P_0361   text
*      -->P_CNTB_BTYPE_BUTTON  text
*      -->P_0363   text
*      -->P_0364   text
*----------------------------------------------------------------------*
FORM FILL_DATA_TABLE  USING fcode type ui_func
  icon type iconname
  type type tb_btype
  text type text40
  tip type iconquick.
  call METHOD MYTOOLBAR->fill_buttons_data_table
  EXPORTING
    fcode = fcode
    icon = icon
    butn_type = type
    text = text
    quickinfo = tip
    CHANGING
      data_table = buttongroup.

ENDFORM.                    " FILL_DATA_TABLE
*&---------------------------------------------------------------------*
*&      Form  TREE_NODES_CREATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM TREE_NODES_CREATE .
CALL METHOD TREE->ADD_NODES
  EXPORTING
    TABLE_STRUCTURE_NAME = 'MTREESNODE'
    NODE_TABLE = node_table
    EXCEPTIONS
      FAILED  = 1
      ERROR_IN_NODE_TABLE = 2
      DP_ERROR = 3
      TABLE_STRUCTURE_NAME_NOT_FOUND = 4
      OTHERS = 5.
      if sy-subrc <> 0.
        MESSAGE w000.
        endif.
        call METHOD tree->expand_node
        EXPORTING
          node_key = 'MAJOR'.
          ENDFORM.                    " TREE_NODES_CREATE
*&---------------------------------------------------------------------*
*&      Form  BUILD_NODE_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_NODE_TABLE  text
*----------------------------------------------------------------------*
FORM BUILD_NODE_TABLE  USING    P_NODE_TABLE.
data: node like mtreesnode.
  data: t_major like ZINPUT-DOCMAJOR,
        T_DOCNAME LIKE ZINPUT-DOCNAME.
  CLEAR: T_MAJOR, T_DOCNAME.

  node-node_key = 'MAJOR'.
  CLEAR NODE-RELATKEY.
  CLEAR NODE-RELATSHIP.

  NODE-hidden = ' '.
  node-disabled = ' '.
  node-isfolder = 'X'.
  CLEAR node-n_image.
  CLEAR node-exp_image.
  CLEAR node-expander.
  node-text = '진료과'.
    APPEND node to node_table.
  select DISTINCT docmajor into t_major
    FROM ZINPUT.

  CLEAR node.
    node-node_key = t_major.
    node-RELATKEY = 'MAJOR'.
    node-RELATSHIP = cl_gui_list_tree=>relat_last_child.
    node-isfolder = 'X'.
    node-text = t_major.
    APPEND node to node_table.

    select DISTINCT docname into t_docname
    FROM zinput
    WHERE docmajor = t_major.

  CLEAR node.
    node-node_key = t_docname.
    node-RELATKEY = t_major.
    node-RELATSHIP = cl_gui_list_tree=>relat_last_child.
    node-text = t_docname.
    APPEND node to node_table.

    CLEAR t_docname.
    ENDSELECT.
    CLEAR t_major.
    ENDSELECT.
ENDFORM.                    " BUILD_NODE_TABLE

번호 제목 글쓴이 날짜 조회 수
5212 <img src=2.gif>객체지향 프로그램에서 인터널 테이블 해더가 없는걸 사용하는 이유가 무엇인가요? [1] 처음처럼 2010.08.26 1309
5211 <img src=2.gif>[재질문입니다]필드카탈로그에서 OUTPUTLEN를 40자리로 고정 -> 입력값시는 200자리로 입력하는 방법 ? [5] 아밥콩` 2010.08.24 3140
5210 <img src=1.gif>팝업과 이벤트에 관한 질문입니다. file 유정a 2010.08.25 1258
5209 [re] <img src=1.gif>팝업과 이벤트에 관한 질문입니다. [5] 맑은하늘 2010.08.26 1447
5208 <img src=2.gif>GUI720 바로가기에서 비밀번호가 활성화가 안되는데 혹시 방법 아시는분 계신가요? [5] jake 2010.08.25 1888
5207 <img src=2.gif>ALV 출력화면에서 필트 더블클릭 이벤트에 관한 질문입니다 . [2] file 유정a 2010.08.25 1488
5206 <img src=2.gif>테이블 필드관련 질문좀 드릴께요.. [2] hsh1002 2010.08.25 1411
5205 <img src=2.gif>동적 where절에서 따옴표의 갯수를 어떻게 쓰는지 부탁드려요. [7] 폭풍질주 2010.08.25 2495
5204 <img src=2.gif>펑션 alv 에서 end_of_page 이벤트 문의 [2] 짭군 2010.08.24 1401
5203 <img src=3.gif>data가 internal table에 담기지 않아요. 이럴땐 어떻게 하나요. 도움좀 부탁드립니다. [9] 쭈니 2010.08.24 2064
5202 <img src=3.gif>insert 안될때 인터널테이블 몇번째 라인 때문에 안되는지 알 수 있나요? [2] 남산밑 2010.08.24 1540
5201 <img src=3.gif>SNRO 범위오브젝트 활용 질문.................................... [1] 돌맹이 2010.08.24 2093
5200 <img src=3.gif>ALV 질문좀 드리고 싶습니다. 화면에 선택된 아이템외에는 안보이도록 하고 싶은데.. 잘 안되네요 [2] 쭈니 2010.08.24 1319
5199 <img src=3.gif>cluster table 복사 후 안지워지는 경우 해결책 알려주세요.. [2] 해보자보자 2010.08.24 1282
5198 <img src=3.gif>활성화(Active)의 의미에 대해서 프로세스적으로 설명 부탁드립니다. [5] 대장군 2010.08.24 1529
» <img src=3.gif>책을 따라 만든 간단한 프로그램 소스인데요 문제점 지적 좀 부탁드려요 [7] file 유정a 2010.08.24 2169
5196 <img src=3.gif>alv화면이 안나와서 그러는데요 질문좀 드릴께요 [7] 쭈니 2010.08.24 2095
5195 <img src=3.gif>alv 필드 오른쪽 정렬에 대해서 질문 좀 드릴게요 [3] file 유정a 2010.08.24 4887
5194 <img src=3.gif>ALV 값이 제대로 뿌려지지 않고 중복해서 나올 때 [2] file 맨날초보 2010.08.23 1572
5193 <img src=3.gif>안녕하세요 alv쪽이 계속 막혀서 질문드립니다. [2] file 유정a 2010.08.23 1405