1549 lines
51 KiB
ABAP
1549 lines
51 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Include ZCOPATD0030F01
|
|
*&---------------------------------------------------------------------*
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_data .
|
|
PERFORM get_target_variant(sapfztdpool) TABLES gt_variant
|
|
USING p_erkrs
|
|
p_perio.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form set_selection_item_info
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> P_PERIO
|
|
*& --> P_NODEKEY
|
|
*& --> P_
|
|
*&---------------------------------------------------------------------*
|
|
FORM set_selection_item_info USING VALUE(p_perio)
|
|
VALUE(p_nodekey)
|
|
VALUE(p_dist_id).
|
|
gs_sel_item-perio = p_perio.
|
|
gs_sel_item-variant = p_nodekey.
|
|
gs_sel_item-dist_id = p_dist_id.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form make_simple_tree_node
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM make_simple_tree_node .
|
|
DATA : ls_node TYPE mtreesnode.
|
|
DATA : l_text TYPE c LENGTH 30.
|
|
|
|
ls_node-node_key = root_node_key.
|
|
ls_node-text = p_erkrs.
|
|
ls_node-isfolder = 'X'.
|
|
APPEND ls_node TO gt_nodes.
|
|
|
|
|
|
LOOP AT gt_variant INTO DATA(ls_variant).
|
|
CLEAR : ls_node, l_text.
|
|
CONCATENATE ls_variant-variant ls_variant-vtext INTO l_text SEPARATED BY space.
|
|
ls_node-node_key = ls_variant-variant.
|
|
ls_node-relatkey = root_node_key.
|
|
ls_node-text = l_text.
|
|
ls_node-isfolder = ' '.
|
|
APPEND ls_node TO gt_nodes.
|
|
ENDLOOP.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form create_top_grid
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_top_grid .
|
|
DATA : lt_fcatalog TYPE TABLE OF dfies.
|
|
|
|
* 1. ALV Grid 생성
|
|
CREATE OBJECT g_grid_sender
|
|
EXPORTING
|
|
i_parent = g_docking_container_top.
|
|
|
|
PERFORM register_event_sender_alv.
|
|
|
|
PERFORM display_top_alv CHANGING lt_fcatalog.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form create_bottom_grid
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_RECEIVER_grid .
|
|
DATA : lt_fcatalog TYPE TABLE OF dfies.
|
|
|
|
IF g_grid_receiver IS INITIAL.
|
|
" Custom Container 생성(C_TAB1) 위에 ALV 표시
|
|
CREATE OBJECT c_tab1
|
|
EXPORTING
|
|
container_name = 'C_TAB1'.
|
|
|
|
* 1. ALV Grid 생성
|
|
CREATE OBJECT g_grid_receiver
|
|
EXPORTING
|
|
i_parent = c_tab1.
|
|
|
|
PERFORM register_event_tab1_alv.
|
|
|
|
|
|
PERFORM display_receiver_alv CHANGING lt_fcatalog.
|
|
|
|
|
|
ENDIF.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form set_field_catalog_top
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDCAT
|
|
*&---------------------------------------------------------------------*
|
|
FORM set_field_catalog_top CHANGING pt_fieldcat TYPE lvc_t_fcat
|
|
pt_fcatalog TYPE dfies_tab.
|
|
FIELD-SYMBOLS <ls_fcat> TYPE lvc_s_fcat.
|
|
* DATA : ls_fieldcat TYPE lvc_s_fcat.
|
|
|
|
* structure의 필드 얻기
|
|
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
|
|
EXPORTING
|
|
i_structure_name = 'ZSTOP_SENDER'
|
|
CHANGING
|
|
ct_fieldcat = pt_fieldcat[]
|
|
EXCEPTIONS
|
|
inconsistent_interface = 1
|
|
program_error = 2
|
|
OTHERS = 3.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
ENDIF.
|
|
|
|
LOOP AT pt_fieldcat ASSIGNING <ls_fcat>.
|
|
CASE <ls_fcat>-fieldname.
|
|
WHEN 'PERIO'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 1.
|
|
WHEN 'VARIANT'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 2.
|
|
WHEN 'DIST_ID'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-coltext = '배부키'.
|
|
<ls_fcat>-col_pos = 3.
|
|
ENDCASE.
|
|
|
|
IF pt_fcatalog[] IS NOT INITIAL. "variant에 정의된 field catalog가 있는 경우.
|
|
READ TABLE pt_fcatalog WITH KEY tabname = 'SENDER'
|
|
fieldname = <ls_fcat>-fieldname
|
|
TRANSPORTING NO FIELDS .
|
|
IF sy-subrc EQ 0 AND pt_fcatalog[ sy-tabix ]-inttype <> 'T'. "존재하지 않는 필드인 경우. 안보이게.
|
|
* IF pt_fcatalog[ sy-tabix ]-inttype = 'C' OR pt_fcatalog[ sy-tabix ]-inttype = 'T'. "value 필드이므로 참조 필드 지정.
|
|
* <ls_fcat>-ref_field = 'REC_WAERS'.
|
|
* ENDIF.
|
|
|
|
<ls_fcat>-no_out = ''.
|
|
ELSE.
|
|
<ls_fcat>-no_out = 'X'.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form set_field_catalog_bottom
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDCAT
|
|
*&---------------------------------------------------------------------*
|
|
FORM set_field_catalog_receiver CHANGING pt_fieldcat TYPE lvc_t_fcat
|
|
pt_fcatalog TYPE dfies_tab.
|
|
FIELD-SYMBOLS <ls_fcat> TYPE lvc_s_fcat.
|
|
* DATA : ls_fieldcat TYPE lvc_s_fcat.
|
|
|
|
* structure의 필드 얻기
|
|
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
|
|
EXPORTING
|
|
i_structure_name = 'ZSTOP_RECEIVER'
|
|
CHANGING
|
|
ct_fieldcat = pt_fieldcat[]
|
|
EXCEPTIONS
|
|
inconsistent_interface = 1
|
|
program_error = 2
|
|
OTHERS = 3.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
ENDIF.
|
|
|
|
LOOP AT pt_fieldcat ASSIGNING <ls_fcat>.
|
|
* <ls_fcat>-coltext = <ls_fcat>-reptext.
|
|
CASE <ls_fcat>-fieldname.
|
|
WHEN 'PERIO'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 1.
|
|
WHEN 'VARIANT'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 2.
|
|
WHEN 'DIST_ID'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-coltext = '배부키'.
|
|
<ls_fcat>-col_pos = 3.
|
|
ENDCASE.
|
|
|
|
IF pt_fcatalog[] IS NOT INITIAL. "variant에 정의된 field catalog가 있는 경우.
|
|
READ TABLE pt_fcatalog WITH KEY fieldname = <ls_fcat>-fieldname
|
|
TRANSPORTING NO FIELDS .
|
|
IF sy-subrc EQ 0 AND pt_fcatalog[ sy-tabix ]-inttype <> 'C'. "존재하지 않는 필드인 경우. 안보이게.
|
|
* IF pt_fcatalog[ sy-tabix ]-inttype = 'C' OR pt_fcatalog[ sy-tabix ]-inttype = 'T'. "value 필드이므로 참조 필드 지정.
|
|
* <ls_fcat>-ref_field = 'REC_WAERS'.
|
|
* ENDIF.
|
|
|
|
<ls_fcat>-no_out = ''.
|
|
ELSE.
|
|
<ls_fcat>-no_out = 'X'.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form register_events
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM register_events .
|
|
DATA: go_event_receiver TYPE REF TO lcl_event_receiver.
|
|
|
|
DATA: lt_events TYPE cntl_simple_events,
|
|
l_event TYPE cntl_simple_event.
|
|
|
|
* 현재 등록된 이벤트 가져오기
|
|
CALL METHOD g_simple_tree->get_registered_events
|
|
IMPORTING
|
|
events = lt_events.
|
|
|
|
* 노드 더블클릭 이벤트 추가
|
|
l_event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
|
|
l_event-appl_event = 'X'.
|
|
APPEND l_event TO lt_events.
|
|
|
|
* 이벤트 등록
|
|
CALL METHOD g_simple_tree->set_registered_events
|
|
EXPORTING
|
|
events = lt_events
|
|
EXCEPTIONS
|
|
cntl_error = 1
|
|
cntl_system_error = 2
|
|
illegal_event_combination = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
MESSAGE 'Error registering events' TYPE 'E'.
|
|
ENDIF.
|
|
|
|
CREATE OBJECT go_event_receiver.
|
|
|
|
SET HANDLER go_event_receiver->handle_node_double_click FOR g_simple_tree.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_sender_receiver_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> NODE_KEY
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_sender_receiver_data USING VALUE(p_nodekey).
|
|
DATA : lt_fieldcatalog TYPE STANDARD TABLE OF dfies WITH DEFAULT KEY.
|
|
DATA : l_result TYPE bapiret2,
|
|
l_variant TYPE covariant.
|
|
|
|
"선택 정보 key(perio, variant, node_id) 등록 - 주요 작업을 위해.
|
|
PERFORM set_selection_item_info USING p_perio p_nodekey ''.
|
|
|
|
PERFORM select_sender_data USING p_nodekey ''.
|
|
PERFORM select_receiver_data USING p_nodekey ''.
|
|
PERFORM select_result_data USING p_nodekey ''.
|
|
|
|
l_variant = p_nodekey.
|
|
|
|
CALL METHOD g_top_down->get_field_catalog
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
perio = p_perio
|
|
variant = l_variant
|
|
IMPORTING
|
|
fieldcatalog = lt_fieldcatalog
|
|
RECEIVING
|
|
result = l_result.
|
|
|
|
|
|
PERFORM display_top_alv CHANGING lt_fieldcatalog.
|
|
PERFORM display_receiver_alv CHANGING lt_fieldcatalog.
|
|
PERFORM display_result_alv CHANGING lt_fieldcatalog.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form refresh_table_display
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM refresh_table_display .
|
|
CALL METHOD g_grid_sender->refresh_table_display.
|
|
CALL METHOD g_grid_receiver->refresh_table_display.
|
|
CALL METHOD g_grid_result->refresh_table_display.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form refresh_PA_DOC_table_display
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM refresh_PA_DOC_table_display .
|
|
CALL METHOD g_grid_target->refresh_table_display.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_sender_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_sender_data USING VALUE(p_variant)
|
|
VALUE(p_dist_id).
|
|
|
|
DATA(lv_where) = |perio = @p_perio AND variant = @p_variant| .
|
|
IF p_dist_id IS NOT INITIAL.
|
|
lv_where = |{ lv_where } AND dist_id = @p_dist_id| .
|
|
ENDIF.
|
|
|
|
SELECT *
|
|
FROM (gv_sender)
|
|
WHERE (lv_where)
|
|
ORDER BY dist_id
|
|
INTO CORRESPONDING FIELDS OF TABLE @gt_sender.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_receiver_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_receiver_data USING VALUE(p_variant)
|
|
VALUE(p_dist_id).
|
|
|
|
DATA(lv_where) = |perio = @p_perio AND variant = @p_variant| .
|
|
IF p_dist_id IS NOT INITIAL.
|
|
lv_where = |{ lv_where } AND dist_id = @p_dist_id| .
|
|
ENDIF.
|
|
|
|
SELECT *
|
|
FROM (gv_receiver)
|
|
WHERE (lv_where)
|
|
ORDER BY dist_id
|
|
INTO CORRESPONDING FIELDS OF TABLE @gt_receiver.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_result_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> P_NODEKEY
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_result_data USING VALUE(p_variant)
|
|
VALUE(p_dist_id).
|
|
|
|
DATA(lv_where) = |perio = @p_perio AND variant = @p_variant| .
|
|
IF p_dist_id IS NOT INITIAL.
|
|
lv_where = |{ lv_where } AND dist_id = @p_dist_id| .
|
|
ENDIF.
|
|
|
|
SELECT *
|
|
FROM (gv_result)
|
|
WHERE (lv_where)
|
|
ORDER BY dist_id
|
|
INTO CORRESPONDING FIELDS OF TABLE @gt_result.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_TARGET_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> P_NODEKEY
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_TARGET_data USING VALUE(p_perio)
|
|
VALUE(p_variant)
|
|
VALUE(p_reverse).
|
|
DATA : ls_result TYPE bapiret2.
|
|
DATA lt_target TYPE zcl_copa_topdown=>target_tb.
|
|
|
|
CALL METHOD g_top_down->get_copa_doc_list
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
perio = gs_sel_item-perio
|
|
variant = gs_sel_item-variant
|
|
reverse = p_reverse
|
|
IMPORTING
|
|
copa_doc_list = lt_target
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
gt_target[] = lt_target[].
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form refresh_display_top
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDCAT
|
|
*&---------------------------------------------------------------------*
|
|
FORM refresh_display_top USING pt_fieldcat.
|
|
DATA : ls_layout TYPE lvc_s_layo.
|
|
ls_layout-cwidth_opt = 'X'.
|
|
|
|
CALL METHOD g_grid_sender->set_table_for_first_display
|
|
EXPORTING
|
|
is_layout = ls_layout
|
|
CHANGING
|
|
it_fieldcatalog = pt_fieldcat
|
|
it_outtab = gt_sender.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form refresh_display_bottom
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDCAT
|
|
*&---------------------------------------------------------------------*
|
|
FORM refresh_display_receiver USING pt_fieldcat.
|
|
DATA : ls_layout TYPE lvc_s_layo.
|
|
ls_layout-cwidth_opt = 'X'.
|
|
|
|
CALL METHOD g_grid_receiver->set_table_for_first_display
|
|
EXPORTING
|
|
is_layout = ls_layout
|
|
CHANGING
|
|
it_fieldcatalog = pt_fieldcat
|
|
it_outtab = gt_receiver.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form create_top_down_object
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_top_down_object .
|
|
CREATE OBJECT g_top_down.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form display_top_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FCATALOG
|
|
*&---------------------------------------------------------------------*
|
|
FORM display_top_alv CHANGING pt_fcatalog.
|
|
* 2. 필드카탈로그 생성
|
|
DATA: lt_fieldcat TYPE lvc_t_fcat.
|
|
PERFORM set_field_catalog_top CHANGING lt_fieldcat pt_fcatalog.
|
|
|
|
* 3. ALV Grid에 데이터와 필드카탈로그 전달하여 출력
|
|
PERFORM refresh_display_top USING lt_fieldcat.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form display_bottom_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FCATALOG
|
|
*&---------------------------------------------------------------------*
|
|
FORM display_receiver_alv CHANGING pt_fcatalog.
|
|
|
|
* 2. 필드카탈로그 생성
|
|
DATA: lt_fieldcat TYPE lvc_t_fcat.
|
|
PERFORM set_field_catalog_receiver CHANGING lt_fieldcat pt_fcatalog.
|
|
|
|
* 3. ALV Grid에 데이터와 필드카탈로그 전달하여 출력
|
|
PERFORM refresh_display_receiver USING lt_fieldcat.
|
|
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form create_display_object_0100
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_display_object_0100 .
|
|
|
|
CREATE OBJECT g_docking_container
|
|
EXPORTING
|
|
repid = g_repid
|
|
dynnr = g_dynnr
|
|
side = g_docking_container->dock_at_left
|
|
extension = 200
|
|
EXCEPTIONS
|
|
cntl_error = 1
|
|
cntl_system_error = 2
|
|
create_error = 3
|
|
lifetime_error = 4
|
|
lifetime_dynpro_dynpro_link = 5
|
|
OTHERS = 6.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
ENDIF.
|
|
|
|
CREATE OBJECT g_docking_container_top
|
|
EXPORTING
|
|
repid = g_repid
|
|
dynnr = g_dynnr
|
|
side = g_docking_container_top->dock_at_top
|
|
extension = 200
|
|
EXCEPTIONS
|
|
cntl_error = 1
|
|
cntl_system_error = 2
|
|
create_error = 3
|
|
lifetime_error = 4
|
|
lifetime_dynpro_dynpro_link = 5
|
|
OTHERS = 6.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
ENDIF.
|
|
|
|
CREATE OBJECT g_simple_tree
|
|
EXPORTING
|
|
parent = g_docking_container
|
|
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single.
|
|
|
|
CALL METHOD g_simple_tree->add_nodes
|
|
EXPORTING
|
|
table_structure_name = 'MTREEITM'
|
|
node_table = gt_nodes.
|
|
|
|
CALL METHOD g_simple_tree->expand_node
|
|
EXPORTING
|
|
node_key = root_node_key.
|
|
|
|
PERFORM create_top_grid. "센더
|
|
|
|
PERFORM register_events.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Module SET_TABS OUTPUT
|
|
*&---------------------------------------------------------------------*
|
|
*&
|
|
*&---------------------------------------------------------------------*
|
|
MODULE set_tabs OUTPUT.
|
|
c_tab-activetab = g_active_tab.
|
|
ENDMODULE.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form CREATE_ALV
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_alv_tab1 .
|
|
PERFORM create_RECEIVER_grid. "리시버/배부결과
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form CREATE_ALV_TAB2
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_alv_tab2 .
|
|
PERFORM create_result_grid. "리시버/배부결과
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form create_result_grid
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_result_grid .
|
|
DATA : lt_fcatalog TYPE TABLE OF dfies.
|
|
|
|
IF g_grid_result IS INITIAL.
|
|
" Custom Container 생성(C_TAB1) 위에 ALV 표시
|
|
CREATE OBJECT c_tab2
|
|
EXPORTING
|
|
container_name = 'C_TAB2'.
|
|
|
|
* 1. ALV Grid 생성
|
|
CREATE OBJECT g_grid_result
|
|
EXPORTING
|
|
i_parent = c_tab2.
|
|
|
|
PERFORM register_event_tab2_alv.
|
|
|
|
PERFORM display_result_alv CHANGING lt_fcatalog.
|
|
ENDIF.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form display_result_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& <-- LT_FIELDCATALOG
|
|
*&---------------------------------------------------------------------*
|
|
FORM display_result_alv CHANGING pt_fcatalog.
|
|
|
|
* 1. 필드카탈로그 생성
|
|
DATA: lt_fieldcat TYPE lvc_t_fcat.
|
|
PERFORM set_field_catalog_result CHANGING lt_fieldcat pt_fcatalog.
|
|
|
|
* 2. ALV Grid에 데이터와 필드카탈로그 전달하여 출력
|
|
PERFORM refresh_display_result USING lt_fieldcat.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form display_target_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& <-- LT_FIELDCATALOG
|
|
*&---------------------------------------------------------------------*
|
|
FORM display_target_alv CHANGING pt_fcatalog.
|
|
|
|
* 1. 필드카탈로그 생성
|
|
DATA: lt_fieldcat TYPE lvc_t_fcat.
|
|
PERFORM set_field_catalog_target CHANGING lt_fieldcat pt_fcatalog.
|
|
|
|
* 2. ALV Grid에 데이터와 필드카탈로그 전달하여 출력
|
|
PERFORM refresh_display_target USING lt_fieldcat.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form set_field_catalog_result
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& <-- LT_FIELDCAT
|
|
*& <-- PT_FCATALOG
|
|
*&---------------------------------------------------------------------*
|
|
FORM set_field_catalog_result CHANGING pt_fieldcat TYPE lvc_t_fcat
|
|
pt_fcatalog TYPE dfies_tab.
|
|
FIELD-SYMBOLS <ls_fcat> TYPE lvc_s_fcat.
|
|
* DATA : ls_fieldcat TYPE lvc_s_fcat.
|
|
|
|
* structure의 필드 얻기
|
|
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
|
|
EXPORTING
|
|
i_structure_name = 'ZSTOP_RESULT'
|
|
CHANGING
|
|
ct_fieldcat = pt_fieldcat[]
|
|
EXCEPTIONS
|
|
inconsistent_interface = 1
|
|
program_error = 2
|
|
OTHERS = 3.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
ENDIF.
|
|
|
|
LOOP AT pt_fieldcat ASSIGNING <ls_fcat>.
|
|
* <ls_fcat>-coltext = <ls_fcat>-reptext.
|
|
CASE <ls_fcat>-fieldname.
|
|
WHEN 'PERIO'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 1.
|
|
WHEN 'VARIANT'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 2.
|
|
WHEN 'DIST_ID'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-coltext = '배부키'.
|
|
<ls_fcat>-col_pos = 3.
|
|
ENDCASE.
|
|
|
|
IF pt_fcatalog[] IS NOT INITIAL. "variant에 정의된 field catalog가 있는 경우.
|
|
READ TABLE pt_fcatalog WITH KEY fieldname = <ls_fcat>-fieldname
|
|
TRANSPORTING NO FIELDS .
|
|
IF sy-subrc EQ 0 AND pt_fcatalog[ sy-tabix ]-inttype <> 'T'. "존재하지 않는 필드인 경우. 안보이게.
|
|
* IF pt_fcatalog[ sy-tabix ]-inttype = 'C' OR pt_fcatalog[ sy-tabix ]-inttype = 'T'. "value 필드이므로 참조 필드 지정.
|
|
* <ls_fcat>-ref_field = 'REC_WAERS'.
|
|
* ENDIF.
|
|
|
|
<ls_fcat>-no_out = ''.
|
|
ELSE.
|
|
<ls_fcat>-no_out = 'X'.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form set_field_catalog_target
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& <-- LT_FIELDCAT
|
|
*& <-- PT_FCATALOG
|
|
*&---------------------------------------------------------------------*
|
|
FORM set_field_catalog_target CHANGING pt_fieldcat TYPE lvc_t_fcat
|
|
pt_fcatalog TYPE dfies_tab.
|
|
FIELD-SYMBOLS <ls_fcat> TYPE lvc_s_fcat.
|
|
* DATA : ls_fieldcat TYPE lvc_s_fcat.
|
|
|
|
* structure의 필드 얻기
|
|
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
|
|
EXPORTING
|
|
i_structure_name = 'ZSTOP_TARGET'
|
|
CHANGING
|
|
ct_fieldcat = pt_fieldcat[]
|
|
EXCEPTIONS
|
|
inconsistent_interface = 1
|
|
program_error = 2
|
|
OTHERS = 3.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
|
|
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
|
|
ENDIF.
|
|
|
|
LOOP AT pt_fieldcat ASSIGNING <ls_fcat>.
|
|
* <ls_fcat>-coltext = <ls_fcat>-reptext.
|
|
CASE <ls_fcat>-fieldname.
|
|
WHEN 'PERIO'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 1.
|
|
WHEN 'VARIANT'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-col_pos = 2.
|
|
WHEN 'DIST_ID'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-coltext = '배부키'.
|
|
<ls_fcat>-col_pos = 3.
|
|
WHEN 'VRGAR'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-coltext = '레코드유형'.
|
|
<ls_fcat>-col_pos = 4.
|
|
WHEN 'BELNR'.
|
|
<ls_fcat>-key = 'X'.
|
|
<ls_fcat>-coltext = '전표번호'.
|
|
<ls_fcat>-col_pos = 5.
|
|
WHEN 'STO_BELNR'.
|
|
<ls_fcat>-coltext = '역분개 전표번호'.
|
|
<ls_fcat>-col_pos = 6.
|
|
|
|
ENDCASE.
|
|
|
|
IF pt_fcatalog[] IS NOT INITIAL. "variant에 정의된 field catalog가 있는 경우.
|
|
CHECK <ls_fcat>-fieldname NE 'BELNR' "필수 추가필드
|
|
AND <ls_fcat>-fieldname NE 'STO_BELNR'
|
|
AND <ls_fcat>-fieldname NE 'VRGAR'.
|
|
|
|
READ TABLE pt_fcatalog WITH KEY fieldname = <ls_fcat>-fieldname
|
|
TRANSPORTING NO FIELDS .
|
|
IF sy-subrc EQ 0 AND pt_fcatalog[ sy-tabix ]-inttype <> 'T'. "존재하지 않는 필드인 경우. 안보이게.
|
|
* IF pt_fcatalog[ sy-tabix ]-inttype = 'C' OR pt_fcatalog[ sy-tabix ]-inttype = 'T'. "value 필드이므로 참조 필드 지정.
|
|
* <ls_fcat>-ref_field = 'REC_WAERS'.
|
|
* ENDIF.
|
|
|
|
<ls_fcat>-no_out = ''.
|
|
ELSE.
|
|
<ls_fcat>-no_out = 'X'.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form refresh_display_result
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDCAT
|
|
*&---------------------------------------------------------------------*
|
|
FORM refresh_display_result USING pt_fieldcat.
|
|
DATA : ls_layout TYPE lvc_s_layo.
|
|
ls_layout-cwidth_opt = 'X'.
|
|
|
|
CALL METHOD g_grid_result->set_table_for_first_display
|
|
EXPORTING
|
|
is_layout = ls_layout
|
|
CHANGING
|
|
it_fieldcatalog = pt_fieldcat
|
|
it_outtab = gt_result.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form refresh_display_target
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDCAT
|
|
*&---------------------------------------------------------------------*
|
|
FORM refresh_display_target USING pt_fieldcat.
|
|
DATA : ls_layout TYPE lvc_s_layo.
|
|
ls_layout-sel_mode = 'A'. " 행 선택 버튼 활성화
|
|
ls_layout-cwidth_opt = 'X'.
|
|
|
|
CALL METHOD g_grid_target->set_table_for_first_display
|
|
EXPORTING
|
|
is_layout = ls_layout
|
|
CHANGING
|
|
it_fieldcatalog = pt_fieldcat
|
|
it_outtab = gt_target.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form register_event_tab1_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM register_event_tab1_alv .
|
|
DATA: gr_reciever1 TYPE REF TO lcl_event_receiver,
|
|
gr_event TYPE REF TO lcl_event_receiver.
|
|
|
|
CREATE OBJECT gr_reciever1.
|
|
SET HANDLER gr_reciever1->handle_toolbar FOR g_grid_receiver.
|
|
SET HANDLER gr_reciever1->handle_user_command FOR g_grid_receiver.
|
|
|
|
CREATE OBJECT gr_event.
|
|
SET HANDLER gr_event->handle_double_click FOR g_grid_receiver.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form register_event_tab2_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM register_event_tab2_alv .
|
|
DATA: gr_reciever2 TYPE REF TO lcl_event_receiver,
|
|
gr_event TYPE REF TO lcl_event_receiver.
|
|
|
|
CREATE OBJECT gr_reciever2.
|
|
SET HANDLER gr_reciever2->handle_toolbar FOR g_grid_result.
|
|
SET HANDLER gr_reciever2->handle_user_command FOR g_grid_result.
|
|
|
|
CREATE OBJECT gr_event.
|
|
SET HANDLER gr_event->handle_double_click FOR g_grid_result.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form register_event_sender_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM register_event_sender_alv .
|
|
DATA: gr_sender TYPE REF TO lcl_event_receiver,
|
|
gr_event TYPE REF TO lcl_event_receiver.
|
|
|
|
CREATE OBJECT gr_sender.
|
|
SET HANDLER gr_sender->handle_toolbar FOR g_grid_sender.
|
|
SET HANDLER gr_sender->handle_user_command FOR g_grid_sender.
|
|
|
|
CREATE OBJECT gr_event.
|
|
SET HANDLER gr_event->handle_double_click FOR g_grid_sender.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_data_display_only
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> GS_SEL_ITEM
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_data_display_only USING p_sel_item TYPE ty_sel_item.
|
|
PERFORM select_sender_data USING p_sel_item-variant p_sel_item-dist_id.
|
|
PERFORM select_receiver_data USING p_sel_item-variant p_sel_item-dist_id.
|
|
PERFORM select_result_data USING p_sel_item-variant p_sel_item-dist_id.
|
|
|
|
PERFORM refresh_table_display .
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_copa_doc_all
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> GS_SEL_ITEM
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_copa_doc_all USING p_sel_item TYPE ty_sel_item p_reverse.
|
|
PERFORM select_TARGET_data USING p_sel_item-perio p_sel_item-variant p_reverse.
|
|
|
|
PERFORM refresh_PA_DOC_table_display .
|
|
ENDFORM.
|
|
|
|
|
|
|
|
|
|
*&---------------------------------------------------------------------*
|
|
*& Form get_sender_receiver_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM get_sender_receiver_data .
|
|
|
|
DATA: lt_fields TYPE TABLE OF sval,
|
|
ls_fields TYPE sval,
|
|
lv_returncode TYPE c,
|
|
ls_result TYPE bapiret2.
|
|
|
|
DATA : ls_sel_item TYPE ty_sel_item.
|
|
|
|
PERFORM check_input_parameter TABLES lt_fields
|
|
CHANGING lv_returncode.
|
|
|
|
IF lv_returncode EQ 'A'.
|
|
MESSAGE s007 WITH '취소'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
* 센더 / 리시버 데이타 생성은 클래스 메소드에서..
|
|
LOOP AT lt_fields INTO ls_fields.
|
|
CASE ls_fields-fieldname.
|
|
WHEN 'PERIO'.
|
|
ls_sel_item-perio = ls_fields-value.
|
|
WHEN 'VARIANT'.
|
|
ls_sel_item-variant = ls_fields-value.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
CALL METHOD g_top_down->get_sender_receiver_data
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
variant = ls_sel_item-variant
|
|
perio = ls_sel_item-perio
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
IF ls_result-type = 'E'. "오류인경우.
|
|
MESSAGE s000 WITH ls_result-message.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
PERFORM set_selection_item_info USING ls_sel_item-perio
|
|
ls_sel_item-variant
|
|
' '.
|
|
|
|
MESSAGE s008 WITH '작업'.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form delete_topdown_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM delete_topdown_data .
|
|
DATA: lt_fields TYPE TABLE OF sval,
|
|
ls_fields TYPE sval,
|
|
lv_returncode TYPE c,
|
|
ls_result TYPE bapiret2.
|
|
|
|
DATA : ls_sel_item TYPE ty_sel_item,
|
|
l_type TYPE ztbls VALUE '2'.
|
|
|
|
PERFORM check_input_parameter TABLES lt_fields
|
|
CHANGING lv_returncode.
|
|
|
|
IF lv_returncode EQ 'A'.
|
|
MESSAGE s007 WITH '취소'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
* 센더 / 리시버 데이타 생성은 클래스 메소드에서..
|
|
LOOP AT lt_fields INTO ls_fields.
|
|
CASE ls_fields-fieldname.
|
|
WHEN 'PERIO'.
|
|
ls_sel_item-perio = ls_fields-value.
|
|
WHEN 'VARIANT'.
|
|
ls_sel_item-variant = ls_fields-value.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
DO 2 TIMES.
|
|
l_type = l_type + 1.
|
|
|
|
CALL METHOD g_top_down->delete_topdown_tb_data
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
variant = ls_sel_item-variant
|
|
perio = ls_sel_item-perio
|
|
type = l_type
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
ENDDO.
|
|
|
|
IF ls_result-type = 'E'. "오류인경우.
|
|
MESSAGE s000 WITH ls_result-message.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
PERFORM set_selection_item_info USING ls_sel_item-perio
|
|
ls_sel_item-variant
|
|
' '.
|
|
|
|
MESSAGE s008 WITH '작업'.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form check_input_parameter
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDS
|
|
*& <-- LV_RETURNCODE
|
|
*&---------------------------------------------------------------------*
|
|
FORM check_input_parameter TABLES pt_fields
|
|
CHANGING p_returncode.
|
|
|
|
DATA: ls_fields TYPE sval,
|
|
lv_returncode TYPE c.
|
|
|
|
"Perio 입력필드 추가
|
|
CLEAR ls_fields.
|
|
ls_fields-tabname = 'CEST1'.
|
|
ls_fields-fieldname = 'PERIO'.
|
|
ls_fields-fieldtext = '기간/년도'.
|
|
ls_fields-value = gs_sel_item-perio.
|
|
APPEND ls_fields TO pt_fields.
|
|
|
|
"Variant 입력필드 추가
|
|
CLEAR ls_fields.
|
|
ls_fields-tabname = 'COVA1'.
|
|
ls_fields-fieldname = 'VARIANT'.
|
|
ls_fields-fieldtext = 'Variant'.
|
|
ls_fields-value = gs_sel_item-variant.
|
|
APPEND ls_fields TO pt_fields.
|
|
|
|
CALL FUNCTION 'POPUP_GET_VALUES'
|
|
EXPORTING
|
|
popup_title = 'Perio/Variant 입력'
|
|
IMPORTING
|
|
returncode = p_returncode
|
|
TABLES
|
|
fields = pt_fields.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form check_input_parameter_post
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> LT_FIELDS
|
|
*& <-- LV_RETURNCODE
|
|
*&---------------------------------------------------------------------*
|
|
FORM check_input_parameter_post TABLES pt_fields
|
|
CHANGING p_returncode.
|
|
DATA: ls_fields TYPE sval,
|
|
lv_returncode TYPE c.
|
|
|
|
"Perio 입력필드 추가
|
|
CLEAR ls_fields.
|
|
ls_fields-tabname = 'CEST1'.
|
|
ls_fields-fieldname = 'PERIO'.
|
|
ls_fields-fieldtext = '기간/년도'.
|
|
ls_fields-value = gs_sel_item-perio.
|
|
APPEND ls_fields TO pt_fields.
|
|
|
|
"Variant 입력필드 추가
|
|
CLEAR ls_fields.
|
|
ls_fields-tabname = 'COVA1'.
|
|
ls_fields-fieldname = 'VARIANT'.
|
|
ls_fields-fieldtext = 'Variant'.
|
|
ls_fields-value = gs_sel_item-variant.
|
|
APPEND ls_fields TO pt_fields.
|
|
|
|
"VRGAR 입력필드 추가
|
|
CLEAR ls_fields.
|
|
ls_fields-tabname = 'CEST1'.
|
|
ls_fields-fieldname = 'VRGAR'.
|
|
ls_fields-fieldtext = '레코드유형'.
|
|
ls_fields-value = ''.
|
|
APPEND ls_fields TO pt_fields.
|
|
|
|
"TEST-RUN 입력필드 추가
|
|
CLEAR ls_fields.
|
|
ls_fields-tabname = 'BAPI0017'.
|
|
ls_fields-fieldname = 'TESTRUN'.
|
|
ls_fields-fieldtext = '테스트실행여부'.
|
|
ls_fields-value = 'X'.
|
|
APPEND ls_fields TO pt_fields.
|
|
|
|
CALL FUNCTION 'POPUP_GET_VALUES'
|
|
EXPORTING
|
|
popup_title = 'CO-PA 전표 발행'
|
|
IMPORTING
|
|
returncode = p_returncode
|
|
TABLES
|
|
fields = pt_fields.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form delete_dist_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM delete_dist_data .
|
|
DATA: lt_fields TYPE TABLE OF sval,
|
|
ls_fields TYPE sval,
|
|
lv_returncode TYPE c,
|
|
ls_result TYPE bapiret2.
|
|
|
|
DATA : ls_sel_item TYPE ty_sel_item,
|
|
l_type TYPE ztbls VALUE '5'. "배부결과테이블
|
|
|
|
PERFORM check_input_parameter TABLES lt_fields
|
|
CHANGING lv_returncode.
|
|
|
|
IF lv_returncode EQ 'A'.
|
|
MESSAGE s007 WITH '취소'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
* 배부 결과 데이타 삭제는 클래스 메소드에서..
|
|
LOOP AT lt_fields INTO ls_fields.
|
|
CASE ls_fields-fieldname.
|
|
WHEN 'PERIO'.
|
|
ls_sel_item-perio = ls_fields-value.
|
|
WHEN 'VARIANT'.
|
|
ls_sel_item-variant = ls_fields-value.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
CALL METHOD g_top_down->delete_topdown_tb_data
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
variant = ls_sel_item-variant
|
|
perio = ls_sel_item-perio
|
|
type = l_type
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
|
|
|
|
IF ls_result-type = 'E'. "오류인경우.
|
|
MESSAGE s000 WITH ls_result-message.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
PERFORM set_selection_item_info USING ls_sel_item-perio
|
|
ls_sel_item-variant
|
|
' '.
|
|
|
|
MESSAGE s008 WITH '작업'.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form execute_top_down_dist
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM execute_top_down_dist .
|
|
DATA: lt_fields TYPE TABLE OF sval,
|
|
ls_fields TYPE sval,
|
|
lv_returncode TYPE c,
|
|
ls_result TYPE bapiret2.
|
|
|
|
DATA : ls_sel_item TYPE ty_sel_item.
|
|
|
|
PERFORM check_input_parameter TABLES lt_fields
|
|
CHANGING lv_returncode.
|
|
|
|
IF lv_returncode EQ 'A'.
|
|
MESSAGE s007 WITH '취소'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
* 배부 결과 데이타 삭제는 클래스 메소드에서..
|
|
LOOP AT lt_fields INTO ls_fields.
|
|
CASE ls_fields-fieldname.
|
|
WHEN 'PERIO'.
|
|
ls_sel_item-perio = ls_fields-value.
|
|
WHEN 'VARIANT'.
|
|
ls_sel_item-variant = ls_fields-value.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
CALL METHOD g_top_down->execute_topdown_distribute
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
variant = ls_sel_item-variant
|
|
perio = ls_sel_item-perio
|
|
save_yn = 'X'
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
IF ls_result-type = 'E'. "오류인경우.
|
|
MESSAGE s000 WITH ls_result-message.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
PERFORM set_selection_item_info USING ls_sel_item-perio
|
|
ls_sel_item-variant
|
|
' '.
|
|
|
|
MESSAGE s008 WITH '작업'.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form post_copa_document
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM post_copa_document .
|
|
DATA: lt_fields TYPE TABLE OF sval,
|
|
ls_fields TYPE sval,
|
|
lv_returncode TYPE c,
|
|
lt_result TYPE TABLE OF bapiret2.
|
|
|
|
TYPES : BEGIN OF ty_sel_item_pa.
|
|
INCLUDE TYPE ty_sel_item.
|
|
TYPES : vrgar TYPE rke_vrgar,
|
|
testrun TYPE c,
|
|
END OF ty_sel_item_pa.
|
|
|
|
DATA : ls_sel_item TYPE ty_sel_item_pa.
|
|
|
|
PERFORM check_input_parameter_post TABLES lt_fields
|
|
CHANGING lv_returncode.
|
|
|
|
IF lv_returncode EQ 'A'.
|
|
MESSAGE s007 WITH '취소'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
* CO-PA 전표 발행은 클래스 메소드에서..
|
|
LOOP AT lt_fields INTO ls_fields.
|
|
CASE ls_fields-fieldname.
|
|
WHEN 'PERIO'.
|
|
ls_sel_item-perio = ls_fields-value.
|
|
WHEN 'VARIANT'.
|
|
ls_sel_item-variant = ls_fields-value.
|
|
WHEN 'VRGAR'.
|
|
ls_sel_item-vrgar = ls_fields-value.
|
|
WHEN 'TESTRUN'.
|
|
ls_sel_item-testrun = ls_fields-value.
|
|
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
|
|
CALL METHOD g_top_down->post_actual_topdown_documents
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
variant = ls_sel_item-variant
|
|
perio = ls_sel_item-perio
|
|
vrgar = ls_sel_item-vrgar
|
|
testrun = ls_sel_item-testrun
|
|
RECEIVING
|
|
result = lt_result.
|
|
|
|
IF lt_result IS NOT INITIAL. "return값이 있는 경우.
|
|
READ TABLE lt_result INTO DATA(ls_result) INDEX 1.
|
|
IF ls_result-type = 'E'.
|
|
MESSAGE s000 WITH ls_result-message.
|
|
RETURN.
|
|
ELSE.
|
|
MESSAGE s000 WITH ls_result-message.
|
|
ENDIF.
|
|
ELSE. "Return값이 없는 경우.
|
|
IF ls_sel_item-testrun = 'X'.
|
|
MESSAGE i009 WITH '오류내역'.
|
|
ENDIF.
|
|
ENDIF.
|
|
|
|
PERFORM set_selection_item_info USING ls_sel_item-perio
|
|
ls_sel_item-variant
|
|
' '.
|
|
|
|
MESSAGE s008 WITH '작업'.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form CREATE_ALV_TAB3
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_alv_tab3 .
|
|
PERFORM create_post_doc_grid. "리시버/배부결과
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form create_post_doc_grid
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM create_post_doc_grid .
|
|
DATA : lt_fcatalog TYPE TABLE OF dfies.
|
|
|
|
IF g_grid_target IS INITIAL.
|
|
" Custom Container 생성(C_TAB1) 위에 ALV 표시
|
|
CREATE OBJECT c_tab3
|
|
EXPORTING
|
|
container_name = 'C_TAB3'.
|
|
|
|
* 1. ALV Grid 생성
|
|
CREATE OBJECT g_grid_target
|
|
EXPORTING
|
|
i_parent = c_tab3.
|
|
|
|
PERFORM register_event_tab3_alv.
|
|
|
|
PERFORM display_target_alv CHANGING lt_fcatalog.
|
|
ENDIF.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form select_posting_doc_data
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM select_posting_doc_data USING p_reverse.
|
|
DATA : ls_result TYPE bapiret2.
|
|
DATA lt_target TYPE zcl_copa_topdown=>target_tb.
|
|
DATA : lt_fieldcatalog TYPE STANDARD TABLE OF dfies WITH DEFAULT KEY.
|
|
|
|
IF gs_sel_item IS INITIAL.
|
|
MESSAGE s010. "좌측 메뉴에서 원하는 변형을 더블클릭 한 후 사용하십시요.
|
|
g_active_tab = 'TAB1'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
PERFORM select_target_data USING gs_sel_item-perio
|
|
gs_sel_item-variant
|
|
p_reverse.
|
|
|
|
CALL METHOD g_top_down->get_field_catalog
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
perio = gs_sel_item-perio
|
|
variant = gs_sel_item-variant
|
|
IMPORTING
|
|
fieldcatalog = lt_fieldcatalog
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
|
|
PERFORM display_target_alv CHANGING lt_fieldcatalog.
|
|
|
|
|
|
g_active_tab = 'TAB3'.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form register_event_tab3_alv
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM register_event_tab3_alv .
|
|
DATA: gr_reciever3 TYPE REF TO lcl_event_receiver,
|
|
gr_event TYPE REF TO lcl_event_receiver.
|
|
|
|
CREATE OBJECT gr_reciever3.
|
|
SET HANDLER gr_reciever3->handle_toolbar FOR g_grid_target.
|
|
SET HANDLER gr_reciever3->handle_user_command FOR g_grid_target.
|
|
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form reverse_copa_document
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM reverse_copa_document .
|
|
DATA: lt_row TYPE lvc_t_roid,
|
|
ls_row TYPE lvc_s_roid,
|
|
ls_select TYPE ty_target.
|
|
DATA : ans TYPE c LENGTH 8.
|
|
DATA : lv_qas TYPE string.
|
|
|
|
DATA: lr_vrgar TYPE RANGE OF rke_vrgar,
|
|
lr_belnr TYPE RANGE OF rke_belnr,
|
|
lr_perio TYPE RANGE OF jahrper.
|
|
|
|
CALL METHOD g_grid_target->get_selected_rows
|
|
IMPORTING
|
|
et_row_no = lt_row.
|
|
|
|
DATA(lv_count) = lines( lt_row ).
|
|
IF lv_count = 0.
|
|
MESSAGE s005 WITH '지정할 대상'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
MESSAGE s011 WITH lv_count INTO lv_qas.
|
|
|
|
CALL FUNCTION 'POPUP_TO_CONFIRM'
|
|
EXPORTING
|
|
titlebar = 'POPUP_TO_CONFIRM'
|
|
text_question = lv_qas
|
|
text_button_1 = 'YES'
|
|
icon_button_1 = 'ICON_CHECKED'
|
|
text_button_2 = 'NO'
|
|
icon_button_2 = 'ICON_NO'
|
|
display_cancel_button = ' '
|
|
popup_type = 'ICON_MESSAGE_ERROR'
|
|
IMPORTING
|
|
answer = ans.
|
|
|
|
IF ans = 2.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
" 선택된 데이터 처리
|
|
LOOP AT lt_row INTO ls_row.
|
|
READ TABLE gt_target INTO DATA(ls_data) INDEX ls_row-row_id.
|
|
MOVE-CORRESPONDING ls_data TO ls_select.
|
|
|
|
"CO-PA 역분개 처리(KE4S00)
|
|
CLEAR lr_vrgar.
|
|
lr_vrgar = VALUE #( ( sign = 'I' option = 'EQ' low = ls_data-vrgar high = '' ) ).
|
|
|
|
CLEAR lr_belnr.
|
|
lr_belnr = VALUE #( ( sign = 'I' option = 'EQ' low = ls_data-belnr high = '' ) ).
|
|
|
|
CLEAR lr_perio.
|
|
lr_perio = VALUE #( ( sign = 'I' option = 'EQ' low = ls_data-perio high = '' ) ).
|
|
|
|
SUBMIT rkecadl1 WITH g_erkrs = p_erkrs
|
|
WITH vrgar IN lr_vrgar
|
|
WITH belnr IN lr_belnr
|
|
WITH perio IN lr_perio
|
|
WITH g_test = ' '
|
|
WITH g_log = ' '
|
|
AND RETURN.
|
|
|
|
ENDLOOP.
|
|
|
|
"해당월에 전기된 전표가 존재하지 않는 경우, 진행 상태값 초기화
|
|
DATA : ls_result TYPE bapiret2.
|
|
DATA lt_target TYPE zcl_copa_topdown=>target_tb.
|
|
|
|
CALL METHOD g_top_down->get_copa_doc_list
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
perio = gs_sel_item-perio
|
|
variant = gs_sel_item-variant
|
|
reverse = 'X'
|
|
IMPORTING
|
|
copa_doc_list = lt_target
|
|
RECEIVING
|
|
result = ls_result.
|
|
|
|
IF lt_target[] IS INITIAL.
|
|
UPDATE (gv_variant)
|
|
SET post = ''
|
|
WHERE perio = @gs_sel_item-perio
|
|
AND variant = @gs_sel_item-variant.
|
|
ENDIF.
|
|
|
|
PERFORM select_copa_doc_all USING gs_sel_item 'X'. "pa전표 조회 재실행.
|
|
|
|
MESSAGE s012 WITH lv_count.
|
|
ENDFORM.
|
|
*&---------------------------------------------------------------------*
|
|
*& Form SET_VARIANT_DESC
|
|
*&---------------------------------------------------------------------*
|
|
*& text
|
|
*&---------------------------------------------------------------------*
|
|
*& --> p1 text
|
|
*& <-- p2 text
|
|
*&---------------------------------------------------------------------*
|
|
FORM set_variant_desc .
|
|
DATA: lt_fields TYPE TABLE OF sval,
|
|
ls_fields TYPE sval,
|
|
lv_returncode TYPE c.
|
|
|
|
DATA : ls_sel_item TYPE ty_sel_item.
|
|
|
|
PERFORM check_input_parameter TABLES lt_fields
|
|
CHANGING lv_returncode.
|
|
|
|
IF lv_returncode EQ 'A'.
|
|
MESSAGE s007 WITH '취소'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
LOOP AT lt_fields INTO ls_fields.
|
|
CASE ls_fields-fieldname.
|
|
WHEN 'PERIO'.
|
|
ls_sel_item-perio = ls_fields-value.
|
|
WHEN 'VARIANT'.
|
|
ls_sel_item-variant = ls_fields-value.
|
|
ENDCASE.
|
|
ENDLOOP.
|
|
|
|
CALL METHOD g_top_down->set_variant_desc
|
|
EXPORTING
|
|
erkrs = p_erkrs
|
|
variant = ls_sel_item-variant
|
|
perio = ls_sel_item-perio.
|
|
|
|
ENDFORM.
|