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.
1 Comments
I have to enter the percentage value in pie chart kindly recommend any solution.
ReplyDelete