Files
abap-topdown_sample/src/zcopatd0030f01.prog.abap
T
2026-08-28 00:31:38 +00:00

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.