콘텐츠로 이동

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>