FORM dsp_excel_graph USING p_mptyp.
*> Variables of Excel open
DATA: lo_factory TYPE REF TO i_oi_document_factory,
lo_link_server TYPE REF TO i_oi_link_server,
lo_document TYPE REF TO i_oi_document_proxy,
lo_retcode TYPE t_oi_ret_string.
DATA: lv_doc_size TYPE i,
lv_doc_format(80) TYPE c,
lv_doc_type(80) VALUE soi_doctype_excel97_sheet, " Excel
lt_doc_table LIKE w3mime OCCURS 0.
DATA: BEGIN OF lt_title OCCURS 0,
title(20),
END OF lt_title.
DATA: l_app_name(30).
DATA: lc_obj_workseet(50) TYPE c.
DATA: lv_index TYPE i.
LOOP AT gt_month1.
IF gt_month1-psort IS INITIAL.
CLEAR lv_index.
lv_index = sy-tabix.
DELETE gt_month1 INDEX lv_index.
ENDIF.
ENDLOOP.
CHECK gt_month1[] IS NOT INITIAL.
" ABAP05 수정.
DATA: BEGIN OF lt_month1 OCCURS 0,
01day(10),
02day(10),
03day(10),
04day(10),
05day(10),
06day(10),
07day(10),
08day(10),
09day(10),
10day(10),
11day(10),
12day(10),
13day(10),
14day(10),
15day(10),
16day(10),
17day(10),
18day(10),
19day(10),
20day(10),
21day(10),
22day(10),
23day(10),
24day(10),
25day(10),
26day(10),
27day(10),
28day(10),
29day(10),
30day(10),
31day(10),
zploc(20), "공장구분.
pdtype(20), "생산구분.
psort(20), "위치번호.
mpoint(20), "계량기번호.
pttxt(20), "내역.
mpgrp(20), "집계그룹.
sum_value1(10), " 합계-공통.
sum_value2(10), "합계-1공장.
sum_value3(10), "합계-2공장.
sum_value4(10), "합계-3공장.
value11(10), "HT-공통
value12(10), "HT-1공장.
value13(10), "HT-2공장.
value14(10), "HT-3공장.
value21(10), "PH-공통
value22(10), "PH-1공장.
value23(10), "PH-2공장.
value24(10), "PH-3공장.
value31(10), "SB-공통
value32(10), "SB-1공장.
value33(10), "SB-2공장.
value34(10), "SB-3공장.
value41(10), "WB-공통
value42(10), "WB-1공장.
value43(10), "WB-2공장.
value44(10), "WB-3공장.
value51(10), "R-공통
value52(10), "R-1공장.
value53(10), "R-2공장.
value54(10), "R-3공장.
value61(10), "TB-공통
value62(10), "TB-1공장.
value63(10), "TB-2공장.
value64(10), "TB-3공장.
END OF lt_month1.
"Summanry.
DATA: BEGIN OF lt_summary OCCURS 0,
zploc(20), "공장구분.
mpgrp(20), "집계그룹.
sum_value1(10), " 합계-공통.
sum_value2(10), "합계-1공장.
sum_value3(10), "합계-2공장.
sum_value4(10), "합계-3공장.
value11(10), "HT-공통
value12(10), "HT-1공장.
value13(10), "HT-2공장.
value14(10), "HT-3공장.
value21(10), "PH-공통
value22(10), "PH-1공장.
value23(10), "PH-2공장.
value24(10), "PH-3공장.
value31(10), "SB-공통
value32(10), "SB-1공장.
value33(10), "SB-2공장.
value34(10), "SB-3공장.
value41(10), "WB-공통
value42(10), "WB-1공장.
value43(10), "WB-2공장.
value44(10), "WB-3공장.
value51(10), "R-공통
value52(10), "R-1공장.
value53(10), "R-2공장.
value54(10), "R-3공장.
value61(10), "TB-공통
value62(10), "TB-1공장.
value63(10), "TB-2공장.
value64(10), "TB-3공장.
END OF lt_summary.
DATA: BEGIN OF lt_month1_sum OCCURS 0,
zploc LIKE zpbpmt7005-zploc,
mpgrp LIKE zpbpmt7005-mpgrp,
value TYPE i,
END OF lt_month1_sum.
"공장 & 집계그룹별 합계.
IF p_mptyp EQ 'G'.
LOOP AT gt_month1.
lt_month1_sum-value = gt_month1-01day +
gt_month1-02day + gt_month1-03day +
gt_month1-04day + gt_month1-05day +
gt_month1-06day + gt_month1-07day +
gt_month1-08day + gt_month1-09day +
gt_month1-10day + gt_month1-11day +
gt_month1-12day + gt_month1-13day +
gt_month1-14day + gt_month1-15day +
gt_month1-16day + gt_month1-17day +
gt_month1-18day + gt_month1-19day +
gt_month1-20day + gt_month1-21day +
gt_month1-22day + gt_month1-23day +
gt_month1-24day + gt_month1-25day +
gt_month1-26day + gt_month1-27day +
gt_month1-28day + gt_month1-29day +
gt_month1-30day + gt_month1-31day .
SELECT SINGLE mpgrp INTO lt_month1_sum-mpgrp FROM zpbpmt7005
WHERE mpoint EQ gt_month1-mpoint.
lt_month1_sum-zploc = gt_month1-zploc.
COLLECT lt_month1_sum.
ENDLOOP.
"공장 & 집계그룹별 합계 itab.
LOOP AT lt_month1_sum.
IF lt_month1_sum-zploc EQ '1'.
IF lt_month1_sum-mpgrp EQ 'G1'.
lt_summary-value12 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G2'.
lt_summary-value22 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G3'.
lt_summary-value32 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G4'.
lt_summary-value42 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G5'.
lt_summary-value52 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G6'.
lt_summary-value62 = lt_month1_sum-value.
ENDIF.
lt_summary-sum_value2 = lt_summary-value12 +
lt_summary-value22 + lt_summary-value32 + lt_summary-value42 +
lt_summary-value52 + lt_summary-value62.
ELSEIF lt_month1_sum-zploc EQ '2'.
IF lt_month1_sum-mpgrp EQ 'G1'.
lt_summary-value13 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G2'.
lt_summary-value23 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G3'.
lt_summary-value33 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G4'.
lt_summary-value43 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G5'.
lt_summary-value53 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G6'.
lt_summary-value63 = lt_month1_sum-value.
ENDIF.
lt_summary-sum_value3 = lt_summary-value13 +
lt_summary-value23 + lt_summary-value33 + lt_summary-value43 +
lt_summary-value53 + lt_summary-value63.
ELSEIF lt_month1_sum-zploc EQ '3'.
IF lt_month1_sum-mpgrp EQ 'G1'.
lt_summary-value14 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G2'.
lt_summary-value24 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G3'.
lt_summary-value34 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G4'.
lt_summary-value44 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G5'.
lt_summary-value54 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G6'.
lt_summary-value64 = lt_month1_sum-value.
ENDIF.
lt_summary-sum_value4 = lt_summary-value14 +
lt_summary-value24 + lt_summary-value34 + lt_summary-value44 +
lt_summary-value54 + lt_summary-value64.
ELSEIF lt_month1_sum-zploc EQ '0'.
IF lt_month1_sum-mpgrp EQ 'G1'.
lt_summary-value11 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G2'.
lt_summary-value21 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G3'.
lt_summary-value31 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G4'.
lt_summary-value41 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G5'.
lt_summary-value51 = lt_month1_sum-value.
ELSEIF lt_month1_sum-mpgrp EQ 'G6'.
lt_summary-value61 = lt_month1_sum-value.
ENDIF.
lt_summary-sum_value1 = lt_summary-value11 +
lt_summary-value21 + lt_summary-value31 + lt_summary-value41 +
lt_summary-value51 + lt_summary-value61.
ENDIF.
IF lt_summary[] IS INITIAL.
APPEND lt_summary.
ELSE.
MODIFY lt_summary INDEX 1.
ENDIF.
ENDLOOP.
ENDIF.
DATA: lv_check1(1).
CLEAR lv_check1.
DATA: lv_dat LIKE i_dat1.
IF p_mptyp EQ 'G'.
lv_dat = i_dat1.
ELSEIF p_mptyp EQ 'W'.
lv_dat = i_dat3 .
ENDIF.
LOOP AT gt_month1.
IF lv_check1 IS INITIAL.
lv_check1 = 'X'.
lt_month1-psort = '계량기번호'(t51).
lt_month1-pttxt = '내역'(t52).
CONCATENATE lv_dat+4(2) '/01' INTO lt_month1-01day.
CONCATENATE lv_dat+4(2) '/02' INTO lt_month1-02day.
CONCATENATE lv_dat+4(2) '/03' INTO lt_month1-03day.
CONCATENATE lv_dat+4(2) '/04' INTO lt_month1-04day.
CONCATENATE lv_dat+4(2) '/05' INTO lt_month1-05day.
CONCATENATE lv_dat+4(2) '/06' INTO lt_month1-06day.
CONCATENATE lv_dat+4(2) '/07' INTO lt_month1-07day.
CONCATENATE lv_dat+4(2) '/08' INTO lt_month1-08day.
CONCATENATE lv_dat+4(2) '/09' INTO lt_month1-09day.
CONCATENATE lv_dat+4(2) '/10' INTO lt_month1-10day.
CONCATENATE lv_dat+4(2) '/11' INTO lt_month1-11day.
CONCATENATE lv_dat+4(2) '/12' INTO lt_month1-12day.
CONCATENATE lv_dat+4(2) '/13' INTO lt_month1-13day.
CONCATENATE lv_dat+4(2) '/14' INTO lt_month1-14day.
CONCATENATE lv_dat+4(2) '/15' INTO lt_month1-15day.
CONCATENATE lv_dat+4(2) '/16' INTO lt_month1-16day.
CONCATENATE lv_dat+4(2) '/17' INTO lt_month1-17day.
CONCATENATE lv_dat+4(2) '/18' INTO lt_month1-18day.
CONCATENATE lv_dat+4(2) '/19' INTO lt_month1-19day.
CONCATENATE lv_dat+4(2) '/20' INTO lt_month1-20day.
CONCATENATE lv_dat+4(2) '/21' INTO lt_month1-21day.
CONCATENATE lv_dat+4(2) '/22' INTO lt_month1-22day.
CONCATENATE lv_dat+4(2) '/23' INTO lt_month1-23day.
CONCATENATE lv_dat+4(2) '/24' INTO lt_month1-24day.
CONCATENATE lv_dat+4(2) '/25' INTO lt_month1-25day.
CONCATENATE lv_dat+4(2) '/26' INTO lt_month1-26day.
CONCATENATE lv_dat+4(2) '/27' INTO lt_month1-27day.
CONCATENATE lv_dat+4(2) '/28' INTO lt_month1-28day.
CONCATENATE lv_dat+4(2) '/29' INTO lt_month1-29day.
CONCATENATE lv_dat+4(2) '/30' INTO lt_month1-30day.
CONCATENATE lv_dat+4(2) '/31' INTO lt_month1-31day.
IF p_mptyp EQ 'G'.
READ TABLE lt_summary INDEX 1.
MOVE-CORRESPONDING lt_summary TO lt_month1.
ENDIF.
APPEND lt_month1.
ENDIF.
MOVE-CORRESPONDING gt_month1 TO lt_month1.
SELECT SINGLE mpgrp INTO lt_month1-mpgrp FROM zpbpmt7005
WHERE mpoint EQ gt_month1-mpoint.
* read table lt_summary index 1.
* MOVE-CORRESPONDING lt_summary to lt_month1.
APPEND lt_month1.
ENDLOOP.
"ㅡㅡㅡㅡ 여기까지 수정.
CASE p_mptyp.
WHEN 'G'. "Gas
lc_obj_workseet ='ZPBPM7005_G'.
l_app_name = 'Utility Usage - Gas'.
WHEN 'W'. "Water
lc_obj_workseet ='ZPBPM7005_W'.
l_app_name = 'Utility Usage - Water'.
ENDCASE.
*> Create Control
CALL METHOD c_oi_factory_creator=>get_document_factory
IMPORTING
factory = lo_factory
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
CALL METHOD lo_factory->start_factory
EXPORTING
r3_application_name = l_app_name
IMPORTING
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
CALL METHOD lo_factory->get_link_server
IMPORTING
link_server = lo_link_server
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
*> LINK_SERVER_MODE: 1(STANDARD NAME) DEFAULT
*> 0(INACTIVE)
*> 2(CUSTOMER NAME)
*> 3(UNIQUE NAME)
CALL METHOD lo_link_server->start_link_server
EXPORTING
link_server_mode = 3
IMPORTING
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
*> Connecting of Excel display Itab
IF lt_month1[] IS NOT INITIAL.
CALL METHOD lo_link_server->add_table_item2
EXPORTING
item_name = 'ITAB' " MACRO definition
IMPORTING
retcode = lo_retcode
CHANGING
* data_table = gt_month1[]. " Table
"ABAP05 수정.
data_table = lt_month1[]. " Table
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
ENDIF.
*> Get definition Document in T-code "SMW0"
CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
EXPORTING
object_id = lc_obj_workseet " Doc.
IMPORTING
data_size = lv_doc_size
document_format = lv_doc_format
document_type = lv_doc_type
TABLES
data_table = lt_doc_table
EXCEPTIONS
object_not_found = 1
internalv_error = 2
OTHERS = 3.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
*> Connecting Factory and Document
CALL METHOD lo_factory->get_document_proxy
EXPORTING
document_type = lv_doc_type
IMPORTING
document_proxy = lo_document
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
*> Display of downloading excle file
CALL METHOD lo_document->open_document_from_table
EXPORTING
document_table = lt_doc_table[]
document_size = lv_doc_size
IMPORTING
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
*> Call macro
CALL METHOD lo_document->execute_macro
EXPORTING
macro_string = 'WORK' "Macro name to be executed
param_count = 0
IMPORTING
retcode = lo_retcode.
CALL METHOD c_oi_errors=>show_message
EXPORTING
type = 'E'.
ENDFORM. " DSP_EXCEL_GRAPH
'Abap' 카테고리의 다른 글
[Abap-TabStrip] Screen Tab strip (0) | 2013.09.24 |
---|---|
[Abap-Excel] 엑셀에 데이터 넘기기 2 (매크로) - 엑셀부분 (0) | 2013.09.16 |
[Abap-ALV] 각각의 alv에 variant 줄때 (0) | 2013.09.09 |
[Abap] Progress bar(진행 바) 나 타내기 (0) | 2013.09.02 |
[Abap-Report] 숫자 사이에 쓸데없는 ',' 등 삭제 (0) | 2013.09.02 |