Advanced Usage of Map Chart¶
MapChart에서 국가를 클릭하면 해당 국가의 데이터를 기반으로 PieChart가 표시되도록 구성
결과 화면¶

<사진 1>MapChart에서 국가 클릭 시 PieChart가 표시되는 화면
주요 단계¶
1. Initial Data Setting¶
1.1. Global Type, Data Definition¶
"MapChart types
TYPES:
BEGIN OF TY_DATA,
KEY TYPE STRING, " Country Key
LATITUDE TYPE P LENGTH 10 DECIMALS 5, " Latitude
LONGITUDE TYPE P LENGTH 10 DECIMALS 5, " Longitude
END OF TY_DATA.
"Output Table types
TYPES:
BEGIN OF TY_OTAB,
LABEL TYPE STRING, " Label.
VAL01 TYPE INT4, " Jan Amount sold / Quantity sold.
VAL02 TYPE INT4, " Feb Amount sold / Quantity sold.
VAL03 TYPE INT4, " Mar Amount sold / Quantity sold.
VAL04 TYPE INT4, " Apr Amount sold / Quantity sold.
VAL05 TYPE INT4, " May Amount sold / Quantity sold.
VAL06 TYPE INT4, " Jun Amount sold / Quantity sold.
VAL07 TYPE INT4, " Jul Amount sold / Quantity sold.
VAL08 TYPE INT4, " Aug Amount sold / Quantity sold.
VAL09 TYPE INT4, " Sep Amount sold / Quantity sold.
VAL10 TYPE INT4, " Oct Amount sold / Quantity sold.
VAL11 TYPE INT4, " Nov Amount sold / Quantity sold.
VAL12 TYPE INT4, " Dec Amount sold / Quantity sold.
WAERS TYPE WAERS, " currency.
UNIT TYPE UNIT, " unit.
END OF TY_OTAB.
DATA:
"Business activity initial configuration internal table data
GT_DATA TYPE TABLE OF TY_DATA WITH NON-UNIQUE SORTED KEY K01 COMPONENTS KEY.
DATA:
"PieChart control / data structure.
BEGIN OF GS_PIE,
VISIBLE TYPE ABAP_BOOL, "PieChart visibility
CURR_MON_QUAN TYPE P LENGTH 13 DECIMALS 2,
WITHOUT_CURR_QUAN TYPE P LENGTH 13 DECIMALS 2,
PERCENT TYPE STRING.
INCLUDE TYPE TY_DATA.
DATA: END OF GS_PIE.
"Display Internal Table
DATA: GT_OTAB TYPE TABLE OF TY_OTAB.
1.2. Sample Initial Data Setting¶
DATA: LS_DATA LIKE LINE OF GT_DATA.
DATA: LV_INT TYPE INTEGER2.
DATA: LV_NUM TYPE N LENGTH 2.
*--------------------------------------------------------------------*
"KOREA
LS_DATA-KEY = 'KR'. "Country Key
LS_DATA-LATITUDE = '37'. "Latitude
LS_DATA-LONGITUDE = '127'. "Longitude
APPEND LS_DATA TO GT_DATA.
CLEAR LS_DATA.
"USA
LS_DATA-KEY = 'US'. "Country Key
LS_DATA-LATITUDE = '37'. "Latitude
LS_DATA-LONGITUDE = '-95'. "Longitude
APPEND LS_DATA TO GT_DATA.
CLEAR LS_DATA.
"CHINA
LS_DATA-KEY = 'CN'. "Country Key
LS_DATA-LATITUDE = '36'. "Latitude
LS_DATA-LONGITUDE = '104'. "Longitude
APPEND LS_DATA TO GT_DATA.
CLEAR LS_DATA.
"JAPAN
LS_DATA-KEY = 'JP'. "Country Key
LS_DATA-LATITUDE = '36'. "Latitude
LS_DATA-LONGITUDE = '138'. "Longitude
APPEND LS_DATA TO GT_DATA.
CLEAR LS_DATA.
"INDIA
LS_DATA-KEY = 'IN'. "Country Key
LS_DATA-LATITUDE = '20'. "Latitude
LS_DATA-LONGITUDE = '79'. "Longitude
APPEND LS_DATA TO GT_DATA.
CLEAR LS_DATA.
2. PAGE에서 UI Object 추가 버튼 클릭¶

<사진 2>
3. item 선택 메뉴에서 MapChart 입력 후 선택¶

<사진 3>
4. MAPCHART1의 Property height 700px을 입력¶

<사진 4>
5. MAPCHART1 우측 마우스 클릭 후, UP을 눌러 MAPCHART1의 위치를 TABLE1 위로 변경¶

<사진 5> MapChart 위치 변경 전 화면

<사진 6> MapChart 위치 변경 후 화면
6. MAPCHART1에서 UI Object 추가 버튼 클릭¶

<사진 7>
7. mapPolygonSeries 선택 메뉴에서 MapPolygonSeries 입력 후 선택¶

<사진 8>
8. MAPPOLYGONSERIES1의 click Event에서 "EV_CLICK"을 선택¶

<사진 9>
8.1. EV_CLICK sourceCode Sample¶
DATA: LS_FORM_DATA LIKE LINE OF IT_FORM_DATA,
LS_DATA LIKE LINE OF GT_DATA.
*--------------------------------------------------------------------*
"Clear PieChart Setting.
CLEAR GS_PIE.
*-- Read Country ID
"Read Clicked Country ID
READ TABLE IT_FORM_DATA INTO LS_FORM_DATA WITH KEY NAME = 'click|areaId'.
CHECK SY-SUBRC EQ 0.
"Get country data.
READ TABLE GT_DATA INTO LS_DATA WITH TABLE KEY K01 COMPONENTS KEY = LS_FORM_DATA-VALUE.
"No country data.
IF SY-SUBRC NE 0.
CALL METHOD /U4A/CL_UTILITIES=>M_MESSAGETOAST
EXPORTING
IO_VIEW = AR_VIEW " [U4A] UI Element Super Class.
I_MSGTX = 'Unregistered Area'. " MESSAGE TEXT.
EXIT.
ENDIF.
*--Setting PieChart.
GS_PIE-KEY = LS_DATA-KEY. " Country ID.
GS_PIE-LATITUDE = LS_DATA-LATITUDE. " Latitude.
GS_PIE-LONGITUDE = LS_DATA-LONGITUDE. " Longitude.
GS_PIE-VISIBLE = ABAP_TRUE. " PieChart Visibility.
*-- Setting Display Internal Table data.
CALL METHOD SET_OTAB.
9. MAPCHART1에서 UI Object 추가 버튼 클릭¶

<사진 10>
10. chartContents 선택 메뉴에서 ChartContent 입력 후 선택¶

<사진 11>
11. CHARTCONTENT1의 latitude Binding¶
11.1. latitude 옆 binding Button을 클릭¶

<사진 12>
11.2. binding 팝업창 실행됨¶
11.3. GS_PIE-LATITUDE 를 선택¶
11.4. Bind 버튼을 클릭¶

<사진 13>
12. CHARTCONTENT1의 longitude Binding¶
12.1. longitude 옆 binding Button을 클릭¶

<사진 14>
12.2. binding 팝업창이 실행됨¶
12.3. GS_PIE-LONGITUDE 를 선택¶
12.4. Bind 버튼을 클릭¶

<사진 15>
13. CHARTCONTENT1에서 UI Object 추가 버튼 클릭¶

<사진 16>
14. chart 선택 메뉴에서 PieChart 입력 후 선택¶

<사진 17>
15. PIECHART1의 visible binding¶
15.1. visible 옆 binding Button을 클릭¶

<사진 18>
15.2. binding 팝업창이 실행¶
15.3. GS_PIE-VISIBLE 을 선택¶
15.4. Bind 버튼을 클릭¶

<사진 19>
16. PIECHART1의 Property 설정¶
16.1. width에 200px을 입력¶

<사진 20>
16.2. centerX에 50%를 입력¶

<사진 21>
16.3. centerY에 50%를 입력¶

<사진 22>
16.4. forceinactive를 true로 설정¶

<사진 23>
16.5. height에 200px을 입력¶

<사진 24>
17. PIECHART1에서 UI Object 추가 버튼 클릭¶

<사진 25>
18. pieChartContent 선택 메뉴에서 PieChartContent 입력 후 선택¶

<사진 26>
19. PIECHARTCONTENT1의 Property 설정¶
19.1. innerRadius에 50%를 입력¶

<사진 27>
19.2. radius에 70%를 입력¶

<사진 28>
20. PIECHARTCONTENT1에서 UI Object 추가 버튼 클릭¶

<사진 29>
21. pieSeries 선택 메뉴에서 PieSeries 입력 후 선택¶

<사진 30>
22. PIESERIES1의 Property 설정¶
22.1. opacity에 0.5를 입력¶

<사진 31>
22.2. fill에 green을 입력¶

<사진 32>
23. PIESERIES1의 value binding¶
23.1. value 옆 binding Button을 클릭¶

<사진 33>
23.2. binding 팝업창이 실행¶
23.3. GS_PIE-CURR_MON_QUAN 을 선택¶
23.4. Bind 버튼을 클릭¶

<사진 34>
24. categoryText에 This Month Quantity를 입력¶

<사진 35>
25. PIESERIES1에서 UI Object 추가 버튼 클릭¶

<사진 36>
26. labelStyle 선택 메뉴에서 PieSeriesLabelStyle 입력 후 선택¶

<사진 37>
27. PIESERIESLABELSTYLE1의 text binding¶
27.1. text 옆 binding Button을 클릭¶

<사진 38>
27.2. binding 팝업창이 실행¶
27.3. GS_PIE-KEY 을 선택¶
27.4. Bind 버튼을 클릭¶

<사진 39>
28. PIESERIESLABELSTYLE1의 Property 설정¶
28.1. radius에 adjusted를 입력¶

<사진 40>
28.2. inside에 true를 입력¶

<사진 41>
29. PIECHARTCONTENT1에서 UI Object 추가 버튼 클릭¶

<사진 42>
30. pieSeries 선택 메뉴에서 PieSeries 입력 후 선택¶

<사진 43>
31. PIESERIES2의 Property 설정¶
31.1. opacity에 0.1을 입력¶

<사진 44>
31.2. fill에 red을 입력¶

<사진 45>
32. PIESERIES2의 value binding¶
32.1. value 옆 binding Button을 클릭¶

<사진 46>
32.2. binding 팝업창이 실행¶
32.3. GS_PIE-WITHOUT_CURR_QUAN 을 선택¶
32.4. Bind 버튼을 클릭¶

<사진 47>
33. categoryText에 without를 입력¶

<사진 48>
34. PIESERIES2에서 UI Object 추가 버튼 클릭¶

<사진 49>
35. labelStyle 선택 메뉴에서 PieSeriesLabelStyle 입력 후 선택¶

<사진 50>
36. PIESERIESLABELSTYLE2의 Property 설정¶
36.1. textType에 circular를 입력¶

<사진 51>
36.2. visible에 false를 입력¶

<사진 52>
37. PIECHART1에서 UI Object 추가 버튼 클릭¶

<사진 53>
38. title 선택 메뉴에서 Title 입력 후 선택¶

<사진 54>
39. TITLE1의 Property 설정¶
39.1. centerX에 50%을 입력¶

<사진 55>
39.2. x에 50%을 입력¶

<사진 56>
39.3. y에 50%을 입력¶

<사진 57>
39.4. fontWeight에 bold을 입력¶

<사진 58>
40. TITLE1의 text binding¶
40.1. text 옆 binding Button을 클릭¶

<사진 59>
40.2. binding 팝업창이 실행¶
40.3. GS_PIE-PERCENT 을 선택¶
40.4. Bind 버튼을 클릭¶

<사진 60>
41. Application Activate¶

<사진 61>
42. Application Execution¶

<사진 62>
43. 결과 화면 확인¶

<사진 63>