ABAP Program to create PIE chart

 

Source Code of the program



REPORT ZCALL_DASHBOARD.

TABLES : ZCALL_LOGS, ZCRM_CALL_RES.

DATA : GT_CALL_LOGS TYPE STANDARD TABLE OF ZCALL_LOGS,

GS_CALL_LOGS TYPE ZCALL_LOGS,

GT_CALL_LOGS1 TYPE STANDARD TABLE OF ZCALL_LOGS,

GS_CALL_LOGS1 TYPE ZCALL_LOGS,

GT_CALL_RES TYPE STANDARD TABLE OF ZCRM_CALL_RES,

GS_CALL_RES TYPE ZCRM_CALL_RES.

DATA : GV_TOTAL_CALL TYPE I,

GV_INCOMING TYPE I,

GV_INCOMING_ANS TYPE I, "answred call

GV_INCOMING_UANS TYPE I, "un-answred

GV_OUTGOING TYPE I,

GV_OUTGOING_ANS TYPE I,

GV_OUTGOING_UANS TYPE I.

RANGES : R_UCID FOR ZCALL_LOGS-UCID.

DATA : GV_CURSOR(50),

GV_CONDITION TYPE STRING,

GV_TYPE TYPE ZCALL_LOGS-TYPE,

GV_TYPE1 TYPE ZCALL_LOGS-TYPE,

GV_STATUS TYPE ZCALL_LOGS-STATUS,

GV_STATUS1 TYPE ZCALL_LOGS-STATUS.

DATA: Y_VALUES TYPE TABLE OF GPRVAL WITH HEADER LINE,

           X_TEXTS TYPE TABLE OF GPRTXT WITH HEADER LINE.

*SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

*SELECT-OPTIONS : S_AGENT FOR ZCALL_LOGSAGENT

MATCHCODE OBJECT ZUSER_MASTER,

* S_CDATE FOR ZCALL_LOGS-ZZSTARTDATE,

* S_SKILL FOR ZCALL_LOGS-SKILL.


*SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF SCREEN 0300 AS SUBSCREEN.

SELECT-OPTIONS : S_AGENT1 FOR ZCALL_LOGSAGENT

MATCHCODE OBJECT ZUSER_MASTER,

S_CDATE1 FOR ZCALL_LOGS-ZZSTARTDATE.

* S_SKILL1 FOR ZCALL_LOGS-SKILL.

SELECTION-SCREEN END OF SCREEN 0300.

INITIALIZATION.

S_AGENT1-SIGN = 'I'.

S_AGENT1-OPTION = 'EQ'.

S_AGENT1-LOW = SY-UNAME.

APPEND S_AGENT1.

S_CDATE1-SIGN = 'I'.

S_CDATE1-OPTION = 'BT'.

S_CDATE1-LOW = SY-DATUM - 3.

S_CDATE1-HIGH = SY-DATUM.

APPEND S_CDATE1.

START-OF-SELECTION.

PERFORM GET_DATA.

CALL SCREEN 100.

END-OF-SELECTION.

*&---------------------------------------------------------------------*

*& Form GET_DATA

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM GET_DATA .

clear : GT_CALL_LOGS[].

SELECT * FROM ZCALL_LOGS INTO CORRESPONDING FIELDS OF TABLE GT_CALL_LOGS

WHERE AGENT IN S_AGENT1

AND ZZSTARTDATE IN S_CDATE1.

CLEAR : GV_TOTAL_CALL, GV_INCOMING, GV_OUTGOING, GV_INCOMING_ANS, GV_INCO

MING_UANS,

GV_OUTGOING_ANS, GV_OUTGOING_UANS.

DESCRIBE TABLE GT_CALL_LOGS LINES GV_TOTAL_CALL.

SORT GT_CALL_LOGS BY ZZSTARTDATE ZZSTARTTIME.

GT_CALL_LOGS1[] = GT_CALL_LOGS[].

loop at GT_CALL_LOGS into GS_CALL_LOGS where ( STATUS+0(1) ne 'A' and STA

TUS+0(1) ne 'a' ).

"check if any success call is done after un-ansrweed call

loop at GT_CALL_LOGS1 into GS_CALL_LOGS1 WHERE CALLERID = GS_CALL_LOGSCALLERID

and ( STATUS+0(1) = 'A' or STA

TUS+0(1) = 'a')

and STARTTIME gt GS_CALL_LOGSSTARTTIME.

GS_CALL_LOGS-STATUS = 'ANSWERED'.

clear : GS_CALL_LOGS1.

endloop.

modify GT_CALL_LOGS from GS_CALL_LOGS TRANSPORTING STATUS.

clear : GS_CALL_LOGS.

endloop.

"for incoming call details

LOOP AT GT_CALL_LOGS INTO GS_CALL_LOGS WHERE ( TYPE = 'INBOUND' OR TYPE =

'inbound' ).

GV_INCOMING = GV_INCOMING + 1.

TRANSLATE GS_CALL_LOGS-STATUS TO UPPER CASE.

IF GS_CALL_LOGS-STATUS+0(1) = 'A'.

GV_INCOMING_ANS = GV_INCOMING_ANS + 1.

ELSE.

GV_INCOMING_UANS = GV_INCOMING_UANS + 1.

ENDIF.

CLEAR : GS_CALL_LOGS.

ENDLOOP.

"FOR OUTGOING CALL

LOOP AT GT_CALL_LOGS INTO GS_CALL_LOGS WHERE ( TYPE NE 'INBOUND' AND TYPE

NE 'inbound' ).

GV_OUTGOING = GV_OUTGOING + 1.

TRANSLATE GS_CALL_LOGS-STATUS TO UPPER CASE.

IF GS_CALL_LOGS-STATUS+0(1) = 'A'.

GV_OUTGOING_ANS = GV_OUTGOING_ANS + 1.

ELSE.

GV_OUTGOING_UANS = GV_OUTGOING_UANS + 1.

ENDIF.

CLEAR : GS_CALL_LOGS.

ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*

*& Module STATUS_0100 OUTPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'PF1'.

SET TITLEBAR 'T1'.


REFRESH Y_VALUES.

REFRESH X_TEXTS.

X_TEXTS-COLTXT = 'Total Call'.

APPEND X_TEXTS.

X_TEXTS-COLTXT = 'Incoming'.

APPEND X_TEXTS.

X_TEXTS-COLTXT = 'Incoming Ans.'.

APPEND X_TEXTS.

X_TEXTS-COLTXT = 'Incoming Unans.'.

APPEND X_TEXTS.

X_TEXTS-COLTXT = 'Outgoing'.

APPEND X_TEXTS.

X_TEXTS-COLTXT = 'Outgoing Ans.'.

APPEND X_TEXTS.

X_TEXTS-COLTXT = 'Outgoing Unans.'.

APPEND X_TEXTS.

Y_VALUES-VAL1 = GV_TOTAL_CALL.

Y_VALUES-VAL2 = GV_INCOMING.

Y_VALUES-VAL3 = GV_INCOMING_ANS.

Y_VALUES-VAL4 = GV_INCOMING_UANS.

Y_VALUES-VAL5 = GV_OUTGOING.

Y_VALUES-VAL6 = GV_OUTGOING_ANS.

Y_VALUES-VAL7 = GV_OUTGOING_UANS.

APPEND Y_VALUES.

CALL FUNCTION 'GFW_PRES_SHOW'

EXPORTING

CONTAINER = 'CNT'

PRESENTATION_TYPE = GFW_PRESTYPE_PIE_CHART

HEADER = 'Call Dashboard'

TABLES

VALUES = Y_VALUES

COLUMN_TEXTS = X_TEXTS

EXCEPTIONS

ERROR_OCCURRED = 1

OTHERS = 2.

ENDMODULE.

*&---------------------------------------------------------------------*

*& Module EXIT INPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE EXIT INPUT.

SET SCREEN 0.

ENDMODULE.

*&---------------------------------------------------------------------*

*& Module USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE USER_COMMAND_0100 INPUT.


CASE SY-UCOMM.

WHEN 'PICK'.

CLEAR : r_ucid[], r_ucid.

GET CURSOR FIELD GV_CURSOR.

IF GV_CURSOR = 'GV_TOTAL_CALL'.

* GV_CONDITION = 'AGENT IN S_AGENT.'.

loop at gt_call_logs into gs_call_logs.

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.

ELSEIF GV_CURSOR = 'GV_INCOMING'.

* GV_TYPE = 'INBOUND'.

* GV_TYPE1 = 'inbound'.

* GV_CONDITION = '( TYPE = GV_TYPE OR TYPE = GV_TYPE1 ).'.

loop at gt_call_logs into gs_call_logs where ( type = 'INBOUND' or ty

pe = 'inbound' ).

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.

ELSEIF GV_CURSOR = 'GV_INCOMING_ANS'.

loop at gt_call_logs into gs_call_logs where ( type = 'INBOUND' or ty

pe = 'inbound' )

and ( STATUS+0(1) = 'A' or S

TATUS+0(1) = 'a' ).

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.

ELSEIF GV_CURSOR = 'GV_INCOMING_UANS'.

loop at gt_call_logs into gs_call_logs where ( type = 'INBOUND' or ty

pe = 'inbound' )

and ( STATUS+0(1) ne 'A' and

STATUS+0(1) ne 'a' ).

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.


ELSEIF GV_CURSOR = 'GV_OUTGOING'.

loop at gt_call_logs into gs_call_logs where ( type ne 'INBOUND' and

type ne 'inbound' ).

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.

ELSEIF GV_CURSOR = 'GV_OUTGOING_ANS'.

loop at gt_call_logs into gs_call_logs where ( type ne 'INBOUND' and

type ne 'inbound' )

and ( STATUS+0(1) = 'A' or S

TATUS+0(1) = 'a' ).

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.

ELSEIF GV_CURSOR = 'GV_OUTGOING_UANS'.

loop at gt_call_logs into gs_call_logs where ( type ne 'INBOUND' and

type ne 'inbound' )

and ( STATUS+0(1) ne 'A' and

STATUS+0(1) ne 'a' ).

r_ucid-sign = 'I'.

r_ucid-option = 'EQ'.

r_ucid-low = gs_call_logs-ucid.

append r_ucid.

clear : gs_call_logs.

endloop.

ENDIF.

if r_ucid[] is NOT INITIAL.

SUBMIT ZCRM_CALL_LOGS_REPORT with s_ucid in r_ucid AND RETURN.

endif.

when 'PB1'.

perform GET_DATA.

ENDCASE.

CLEAR : SY-UCOMM.

ENDMODULE.

Post a Comment

1 Comments

  1. I have to enter the percentage value in pie chart kindly recommend any solution.

    ReplyDelete

Total Pageviews