You are on page 1of 19

Report :

01FEB2014_01052014total
pgm nae: Z_sc_tat_report_2
Z_sc_tat_report_3
table name: zs3n_st_tat_report
zs3n_t_notif_mas,
zla_rs_kunnr, ZS3N_T_CUST_DET,QMEL,zget_material
FM : ZS3N_FM_GET_TAT_DETAIL2
**********Function module for *************
FUNCTION zs3n_fm_get_tat_detail2.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IM_DELIVERED) TYPE XFELD
*" REFERENCE(IM_DOA_CALL) TYPE XFELD
*" REFERENCE(IM_SEND_2_RF) TYPE XFELD
*" REFERENCE(IM_SKIP) TYPE XFELD
*" TABLES
*" ET_OUTPUT_DATA STRUCTURE ZS3N_ST_TAT_REPORT
*" IT_DATES STRUCTURE ZS3N_ST_RAN_DATE
*" IT_REQ_ID STRUCTURE ZS3_ST_RAN_REQ_ID
*" IT_FWD_REQ_ID STRUCTURE ZS3_ST_RAN_REQ_ID
*" IT_KUNNR STRUCTURE ZLA_RS_KUNNR
*" IT_QMNUM STRUCTURE ZS3N_ST_RAN_QMNUM OPTIONAL
*"----------------------------------------------------------------------
CREATE OBJECT lcl_cl_sevice_center.
CLEAR: ls_delivered, lr_delivered.
ls_delivered-option = 'EQ'.
ls_delivered-sign = 'I'.
ls_delivered-low = ''.
APPEND ls_delivered TO lr_delivered.
ls_delivered-option = 'EQ'.
ls_delivered-sign = 'I'.
ls_delivered-low = im_delivered.
APPEND ls_delivered TO lr_delivered.
SORT lr_delivered.
DELETE ADJACENT DUPLICATES FROM lr_delivered COMPARING ALL FIELDS.
CLEAR: ls_spl_doa, lr_spl_doa.
ls_spl_doa-option = 'EQ'.
ls_spl_doa-sign = 'I'.
ls_spl_doa-low = ''.
APPEND ls_spl_doa TO lr_spl_doa.
ls_spl_doa-option = 'EQ'.
ls_spl_doa-sign = 'I'.
ls_spl_doa-low = im_doa_call.
APPEND ls_spl_doa TO lr_spl_doa.
SORT lr_spl_doa.
DELETE ADJACENT DUPLICATES FROM lr_spl_doa COMPARING ALL FIELDS.
CLEAR: ls_qmart, lr_qmart.
ls_qmart-option = 'EQ'.
ls_qmart-sign = 'I'.
ls_qmart-low = 'Z3'.
APPEND ls_qmart TO lr_qmart.
ls_qmart-option = 'EQ'.
ls_qmart-sign = 'I'.
ls_qmart-low = 'Z4'.
APPEND ls_qmart TO lr_qmart.
ls_qmart-option = 'EQ'.
ls_qmart-sign = 'I'.
ls_qmart-low = 'Z5'.
APPEND ls_qmart TO lr_qmart.
ls_qmart-option = 'EQ'.
ls_qmart-sign = 'I'.
ls_qmart-low = 'Z6'.
APPEND ls_qmart TO lr_qmart.
ls_qmart-option = 'EQ'.
ls_qmart-sign = 'I'.
ls_qmart-low = 'Z7'.
APPEND ls_qmart TO lr_qmart.
********************************************************************************
*****
* Changed By Mayank on 28.05.2014 for part code maintain in pending call report
********************************************************************************
*****
***** fetch data
* SELECT notif~qmnum
* notif~imei_no
* notif~req_id
* notif~fwd_req_id
* notif~rcvd_frm_ssd_on
* notif~rcvd_frm_ssd_at
* notif~s2rf_on
* notif~s2rf_at
* notif~rcvd_frm_rf_on
* notif~rcvd_frm_rf_at
* notif~delivered_on
* notif~delivered_at
* notif~qmart
* notif~ssd_id
* notif~stndby_issued
* notif~stndby_model
* notif~stndby_imei
* notif~delivered
* notif~spl_doa
* notif~rcvd_frm_rf
* notif~s2rf
* notif~inbd_delevery
* cust_det~name
* cust_det~phone1
* notif~pcba_matnr
* INTO TABLE lt_notif_mas
* FROM zs3n_t_notif_mas AS notif
* LEFT OUTER JOIN zs3n_t_cust_det AS cust_det ON cust_det~imei = notif~imei_
no
* WHERE notif~qmart IN lr_qmart AND
* notif~spl_doa IN lr_spl_doa AND
* notif~ssd_id IN it_kunnr AND
* notif~req_id IN it_req_id AND
* notif~fwd_req_id IN it_fwd_req_id AND
* notif~delivered IN lr_delivered AND
* notif~created_on IN it_dates AND
* notif~qmnum IN it_qmnum.
**** fetch data
SELECT notif~qmnum
notif~imei_no
notif~req_id
notif~fwd_req_id
notif~rcvd_frm_ssd_on
notif~rcvd_frm_ssd_at
notif~s2rf_on
notif~s2rf_at
notif~rcvd_frm_rf_on
notif~rcvd_frm_rf_at
notif~delivered_on
notif~delivered_at
notif~qmart
notif~ssd_id
notif~stndby_issued
notif~stndby_model
notif~stndby_imei
notif~delivered
notif~spl_doa
notif~rcvd_frm_rf
notif~s2rf
notif~inbd_delevery
cust_det~name
cust_det~phone1
notif~pcba_matnr " New Line Added
INTO TABLE lt_notif_mas
FROM zs3n_t_notif_mas AS notif
LEFT OUTER JOIN zs3n_t_cust_det AS cust_det ON cust_det~imei = notif~imei_n
o
WHERE notif~qmart IN lr_qmart AND
notif~spl_doa IN lr_spl_doa AND
notif~ssd_id IN it_kunnr AND
notif~req_id IN it_req_id AND
notif~fwd_req_id IN it_fwd_req_id AND
notif~delivered IN lr_delivered AND
notif~created_on IN it_dates AND
notif~qmnum IN it_qmnum.
********************************************************************************
*****
* Changed By Mayank on 28.05.2014 for part code maintain in pending call report
********************************************************************************
*****
********************************************************************************
***********
* Delete Notification for QMART = "Z7" Added By Mayank on 27.05.2014
********************************************************************************
***********
DELETE lt_notif_mas WHERE qmart EQ 'Z7'.
********************************************************************************
***********
* Delete Notification for QMART = "Z7" Added By Mayank on 27.05.2014
********************************************************************************
***********
SORT lt_notif_mas BY inbd_delevery.
* DELETE lt_notif_mas WHERE inbd_delevery IS INITIAL AND qmart = 'Z3'.
SORT lt_notif_mas BY qmnum.
*Only those notifications which are Send to RF is requested.
*Delete rest of them.
IF im_send_2_rf IS NOT INITIAL.
DELETE lt_notif_mas WHERE s2rf_on IS INITIAL.
ENDIF.
IF lt_notif_mas[] IS INITIAL.
RETURN.
ENDIF.
IF lt_notif_mas IS NOT INITIAL.
SELECT zs3n_t_part_req~qmnum zs3n_t_part_req~matnr zs3n_t_part_req~created_o
n zs3n_t_part_req~ssd_id makt~maktx
FROM zs3n_t_part_req
INNER JOIN makt ON makt~matnr = zs3n_t_part_req~matnr AND
makt~spras = 'EN'
INTO TABLE lt_part_pend
WHERE qmnum IN it_qmnum.
IF sy-subrc NE 0.
*No data found.
ENDIF.
SELECT *
FROM qpct
INTO TABLE lt_qpct
WHERE katalogart IN ('S', 'R', 'T') AND
sprache = 'E'.
IF sy-subrc NE 0.
*No data found
ENDIF.
SELECT qmnum urgrp urcod
INTO TABLE lt_qmur
FROM qmur
FOR ALL ENTRIES IN lt_notif_mas
WHERE qmnum = lt_notif_mas-qmnum.
IF sy-subrc NE 0.
*No data found
ENDIF.
SORT lt_qmur BY qmnum.
SELECT qmnum fegrp fecod
INTO TABLE lt_qmfe
FROM qmfe
FOR ALL ENTRIES IN lt_notif_mas
WHERE qmnum = lt_notif_mas-qmnum.
IF sy-subrc NE 0.
*No data found
ENDIF.
SORT lt_qmfe BY qmnum.
SELECT imei
qmnum
sl_no
type
exp_delivery_dat
status
handset_warranty
wc_status
FROM zs3n_t_els INTO TABLE lt_zs3n_t_els
FOR ALL ENTRIES IN lt_notif_mas WHERE imei = lt_notif_mas-imei_no
AND qmnum = lt_notif_mas-qmnum
AND type = '1'.
SELECT pr~req_id
pr~courier_id
pr~docket_number " added By a.srinivasan(altimetrik)14/10/2013
lf~name1
pr~created_on
pr~created_at
pr~docket_date
pr~docket_time
FROM zs3n_t_pick_req AS pr
INNER JOIN lfa1 AS lf ON pr~courier_id EQ lf~lifnr
INTO TABLE lt_pick_req
FOR ALL ENTRIES IN lt_notif_mas
WHERE pr~req_id EQ lt_notif_mas-req_id OR
pr~req_id EQ lt_notif_mas-fwd_req_id.
SELECT qm~qmnum
qm~kunum
qm~erdat
qm~matnr
qm~aufnr
gm~model
qm~deviceid
qm~qmgrp
qm~qmcod
FROM qmel AS qm
LEFT OUTER JOIN zget_material AS gm ON qm~matnr EQ gm~mat_code
INTO TABLE lt_qmel
FOR ALL ENTRIES IN lt_notif_mas
WHERE qmnum EQ lt_notif_mas-qmnum.
SELECT kn~kunnr
kn~name1
kn~regio
tt~bezei
kn~ort01
bu~bu
FROM kna1 AS kn
INNER JOIN t005u AS tt ON kn~regio EQ tt~bland
INNER JOIN zbu_region AS bu ON bu~bland EQ kn~regio
INTO TABLE lt_kna1
FOR ALL ENTRIES IN lt_notif_mas
WHERE kn~kunnr EQ lt_notif_mas-ssd_id AND
tt~spras EQ sy-langu AND
tt~land1 EQ kn~land1.
SELECT kv~kunnr
kv~bzirk
tt~bztxt
FROM knvv AS kv
INNER JOIN t171t AS tt ON kv~bzirk EQ tt~bzirk
INTO TABLE lt_knvv
FOR ALL ENTRIES IN lt_notif_mas
WHERE kv~kunnr EQ lt_notif_mas-ssd_id AND
kv~vkorg EQ '1000' AND
kv~vtweg EQ '10' AND
kv~spart EQ '60' AND
tt~spras EQ sy-langu.
IF lt_qmel IS NOT INITIAL.
SELECT kn~kunnr
kn~name1
kn~regio
tt~bezei
kn~ort01
bu~bu
FROM kna1 AS kn
INNER JOIN t005u AS tt ON kn~regio EQ tt~bland
INNER JOIN zbu_region AS bu ON bu~bland EQ kn~regio
APPENDING TABLE lt_kna1
FOR ALL ENTRIES IN lt_notif_mas
WHERE kn~kunnr EQ lt_notif_mas-ssd_id AND
tt~spras EQ sy-langu AND
tt~land1 EQ kn~land1.
SELECT kv~kunnr
kv~bzirk
tt~bztxt
FROM knvv AS kv
INNER JOIN t171t AS tt ON kv~bzirk EQ tt~bzirk
APPENDING TABLE lt_knvv
FOR ALL ENTRIES IN lt_notif_mas
WHERE kv~kunnr EQ lt_notif_mas-ssd_id AND
kv~vkorg EQ '1000' AND
kv~vtweg EQ '10' AND
kv~spart EQ '60' AND
tt~spras EQ sy-langu.
SELECT knvv~kunnr t001w~name1
INTO TABLE lt_knvv_br
FROM knvv
INNER JOIN t001w ON t001w~werks = knvv~vwerk
FOR ALL entries IN lt_notif_mas
WHERE knvv~kunnr EQ lt_notif_mas-ssd_id AND
knvv~vkorg EQ '1000' AND
knvv~vtweg EQ '10' AND
knvv~spart EQ '60'.
SELECT knvp~kunnr lfa1~name1
INTO TABLE lt_knvp_asm
FROM knvp
INNER JOIN lfa1 ON lfa1~lifnr = knvp~lifnr
FOR ALL entries IN lt_notif_mas
WHERE knvp~kunnr EQ lt_notif_mas-ssd_id AND
knvp~vkorg EQ '1000' AND
knvp~vtweg EQ '10' AND
knvp~spart EQ '10' AND
knvp~parvw = 'AM'.
SELECT au~aufnr
au~objnr
au~erdat
au~erfzeit
FROM aufk AS au
INTO TABLE lt_aufk
FOR ALL ENTRIES IN lt_qmel
WHERE au~aufnr EQ lt_qmel-aufnr.
SELECT au~aufnr
au~objnr
jc~udate
jc~utime
FROM jcds AS jc
INNER JOIN aufk AS au ON jc~objnr EQ au~objnr
INTO TABLE lt_teco
FOR ALL ENTRIES IN lt_qmel
WHERE au~aufnr EQ lt_qmel-aufnr AND
jc~stat EQ 'I0045' AND
jc~inact NE 'X'.
ENDIF.
SELECT zxolo_srv_parts~notification zxolo_srv_parts~matnr makt~maktx
INTO TABLE lt_srv_parts
FROM zxolo_srv_parts
INNER JOIN makt ON makt~matnr = zxolo_srv_parts~matnr
FOR ALL entries IN lt_notif_mas
WHERE notification = lt_notif_mas-qmnum AND
spras = sy-langu.
ENDIF.
SORT lt_qmel BY qmnum.
LOOP AT lt_notif_mas INTO ls_notif_mas.
ls_notif_status-qmnum = ls_notif_mas-qmnum.
APPEND ls_notif_status TO lt_notif_status.
IF im_skip IS NOT INITIAL.
IF ls_notif_mas-delivered IS INITIAL AND
ls_notif_mas-s2rf IS INITIAL AND
ls_notif_mas-rcvd_frm_rf IS INITIAL AND
ls_notif_mas-qmart = 'Z3' AND
ls_notif_mas-spl_doa IS INITIAL.
CLEAR: ls_pc_notif_mas, ls_qmel.
ls_pc_notif_mas-qmnum = ls_notif_mas-qmnum.
ls_pc_notif_mas-kunnr = ls_notif_mas-ssd_id.
READ TABLE lt_qmel INTO ls_qmel WITH KEY qmnum = ls_notif_mas-qmnum BINA
RY SEARCH.
ls_pc_notif_mas-aufnr = ls_qmel-aufnr.
IF ls_pc_notif_mas-aufnr IS NOT INITIAL.
APPEND ls_pc_notif_mas TO lt_pc_notif_mas.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
CALL METHOD lcl_cl_sevice_center->get_notif_current_status_old
EXPORTING
it_notification = lt_notif_status
IMPORTING
et_notif_status = lt_notif_status.
CLEAR:rg_kunnr[],rg_matnr[],it_pending_list[],it_return[], lt_stock_details_cu
st[].
*Only those notifications which are Send to RF is requested.
*So need not check for part
IF im_send_2_rf IS INITIAL.
IMPORT p_1 TO it_pending_list FROM MEMORY ID 'PEND_CALLS'.
IMPORT p_2 TO lt_stock_details_cust FROM MEMORY ID 'STK_DET'.
IF it_pending_list[] IS INITIAL.
CALL FUNCTION 'ZS3N_FM_PENDING_CALL'
EXPORTING
im_pc_t_notif_mas = lt_pc_notif_mas
TABLES
rt_kunnr = rg_kunnr
rt_matnr = rg_matnr
et_pending_calls = it_pending_list
et_return = it_return
et_stock_details_cust = lt_stock_details_cust.
ENDIF.
ENDIF.
SORT it_pending_list BY qmnum.
IF it_pending_list[] IS NOT INITIAL.
SELECT matnr werks lgort labst
INTO TABLE lt_mard
FROM mard
FOR ALL ENTRIES IN it_pending_list
WHERE matnr = it_pending_list-matnr AND
werks = 'MNOI' AND
lgort = '1121'.
IF sy-subrc NE 0.
*No data found.
ENDIF.
SORT lt_mard BY matnr.
SELECT matnr ship_party received_qty
FROM zxolo_component
INTO TABLE lt_comp_det
FOR ALL ENTRIES IN it_pending_list
WHERE matnr = it_pending_list-matnr AND
ship_party = it_pending_list-kunnr AND
received = 'X'.
IF sy-subrc NE 0.
*No data found.
ENDIF.
SORT lt_comp_det BY matnr ship_party.
LOOP AT lt_comp_det INTO ls_comp.
COLLECT ls_comp INTO lt_comp.
ENDLOOP.
SORT lt_comp BY matnr ship_party.
SELECT zxolo_srv_parts~matnr zs3n_t_notif_mas~ssd_id zxolo_srv_parts~qty
INTO TABLE lt_serv_det
FROM zxolo_srv_parts
INNER JOIN zs3n_t_notif_mas ON zs3n_t_notif_mas~qmnum = zxolo_srv_parts~not
ification
FOR ALL entries IN it_pending_list
WHERE zxolo_srv_parts~matnr = it_pending_list-matnr AND
zs3n_t_notif_mas~ssd_id = it_pending_list-kunnr .
LOOP AT lt_serv_det INTO ls_serv.
COLLECT ls_serv INTO lt_serv.
ENDLOOP.
SORT lt_serv BY matnr ship_party.
ENDIF.
SORT lt_srv_parts BY notification.
SORT lt_qmel BY qmnum.
SORT lt_zs3n_t_els BY imei qmnum.
SORT lt_kna1 BY kunnr.
SORT lt_knvv BY kunnr.
SORT lt_knvv_br BY kunnr.
SORT lt_knvp_asm BY kunnr.
SORT lt_notif_status BY qmnum.
SORT lt_pick_req BY req_id.
SORT lt_aufk BY aufnr.
SORT lt_teco BY aufnr.
SORT it_pending_list BY qmnum.
SORT lt_stock_details_cust BY kunnr matnr.
IF lt_notif_mas IS NOT INITIAL.
SELECT qmnum stndb
FROM zs3n_t_stdby_sts
INTO TABLE lt_stdby_sts
FOR ALL ENTRIES IN lt_notif_mas
WHERE qmnum = lt_notif_mas-qmnum.
SELECT qmnum invoice_no rp_recieved
FROM zs3n_t_rp_stock
INTO TABLE lt_stock
FOR ALL ENTRIES IN lt_notif_mas
WHERE qmnum = lt_notif_mas-qmnum.
LOOP AT lt_notif_mas INTO ls_notif_mas.
READ TABLE lt_srv_parts INTO ls_srv_parts WITH KEY notification = ls_notif
_mas-qmnum BINARY SEARCH.
IF sy-subrc = 0.
lv_tabix = sy-tabix.
ENDIF.
LOOP AT lt_srv_parts INTO ls_srv_parts FROM lv_tabix.
IF ls_srv_parts-notification NE ls_notif_mas-qmnum..
CLEAR ls_srv_parts.
EXIT.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_srv_parts-matnr
IMPORTING
output = ls_srv_parts-matnr.
CONCATENATE ls_srv_parts-matnr ',' ls_srv_parts-maktx INTO ls_output_dat
a-part_cons." added by srinivasan.a
ENDLOOP.
READ TABLE lt_qmel
INTO ls_qmel
WITH KEY qmnum = ls_notif_mas-qmnum BINARY SEARCH.
READ TABLE lt_qpct INTO ls_qpct_s WITH KEY katalogart = 'S'
codegruppe = ls_qmel-qmgrp
code = ls_qmel-qmcod.
READ TABLE lt_zs3n_t_els
INTO ls_zs3n_t_els
WITH KEY imei = ls_notif_mas-imei_no
qmnum = ls_notif_mas-qmnum BINARY SEARCH.
READ TABLE lt_kna1
INTO ls_kna1
WITH KEY kunnr = ls_notif_mas-ssd_id BINARY SEARCH.
READ TABLE lt_knvv
INTO ls_knvv
WITH KEY kunnr = ls_notif_mas-ssd_id BINARY SEARCH.
READ TABLE lt_knvv_br
INTO ls_knvv_br
WITH KEY kunnr = ls_notif_mas-ssd_id BINARY SEARCH.
READ TABLE lt_knvp_asm
INTO ls_knvp_asm
WITH KEY kunnr = ls_notif_mas-ssd_id BINARY SEARCH.
READ TABLE lt_notif_status
INTO ls_notif_status
WITH KEY qmnum = ls_notif_mas-qmnum BINARY SEARCH.
READ TABLE lt_pick_req
INTO ls_pick_req
WITH KEY req_id = ls_notif_mas-req_id BINARY SEARCH.
READ TABLE lt_pick_req
INTO ls_fwd_pick_req
WITH KEY req_id = ls_notif_mas-fwd_req_id BINARY SEARCH.
READ TABLE lt_aufk
INTO ls_aufk
WITH KEY aufnr = ls_qmel-aufnr BINARY SEARCH.
READ TABLE lt_teco
INTO ls_teco
WITH KEY aufnr = ls_qmel-aufnr BINARY SEARCH.
IF NOT ls_teco-udate IS NOT INITIAL.
IF ls_teco-udate LT ls_notif_mas-rcvd_frm_rf_on.
MOVE ls_notif_mas-rcvd_frm_rf_on TO ls_teco-udate.
MOVE ls_notif_mas-rcvd_frm_rf_at TO ls_teco-utime.
ENDIF.
ENDIF.
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = ls_notif_mas-s2rf_on
date2 = ls_qmel-erdat
IMPORTING
datediff = lv_ssd_tat
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = ls_notif_mas-rcvd_frm_ssd_on
date2 = ls_pick_req-docket_date
IMPORTING
datediff = lv_cour_rl_tat
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = ls_teco-udate
date2 = ls_notif_mas-rcvd_frm_ssd_on
IMPORTING
datediff = lv_rf_tat
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = ls_notif_mas-rcvd_frm_rf_on
date2 = ls_fwd_pick_req-docket_date
IMPORTING
datediff = lv_cour_fl_tat
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = ls_notif_mas-delivered_on
date2 = ls_aufk-udate
IMPORTING
datediff = lv_cust_await_tat
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = ls_notif_mas-delivered_on
date2 = ls_qmel-erdat
IMPORTING
datediff = lv_lava_cust_tat
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
MOVE ls_notif_mas-qmnum TO ls_output_data-qmnum.
MOVE ls_qmel-erdat TO ls_output_data-erdat.
MOVE ls_notif_mas-ssd_id TO ls_output_data-kunum.
MOVE ls_kna1-name1 TO ls_output_data-cname.
MOVE ls_kna1-bu TO ls_output_data-bu.
MOVE ls_knvv-bzirk TO ls_output_data-bzirk.
MOVE ls_knvv-bztxt TO ls_output_data-bztxt.
MOVE ls_kna1-regio TO ls_output_data-regio.
MOVE ls_kna1-bezei TO ls_output_data-bezei.
MOVE ls_kna1-ort01 TO ls_output_data-ort01.
MOVE ls_notif_mas-imei_no TO ls_output_data-mapar.
MOVE ls_qmel-model TO ls_output_data-model.
MOVE ls_zs3n_t_els-exp_delivery_dat TO ls_output_data-exp_delivery_dat
.
MOVE ls_pick_req-courier_id TO ls_output_data-courier_id.
MOVE ls_pick_req-courier_name TO ls_output_data-courier_name.
MOVE ls_notif_mas-s2rf_on TO ls_output_data-s2rf_on.
MOVE ls_pick_req-created_on TO ls_output_data-req_id_on.
MOVE ls_pick_req-created_at TO ls_output_data-req_id_at.
MOVE ls_pick_req-docket_date TO ls_output_data-cour_pick_on.
MOVE ls_pick_req-docket_time TO ls_output_data-cour_pick_at.
MOVE ls_pick_req-docket_number TO ls_output_data-docket_number."a
dded by srinivasan.a
MOVE ls_notif_mas-rcvd_frm_ssd_on TO ls_output_data-rf_recv_on.
MOVE ls_notif_mas-rcvd_frm_ssd_at TO ls_output_data-rf_recv_at.
MOVE ls_aufk-udate TO ls_output_data-under_rr_on.
MOVE ls_aufk-utime TO ls_output_data-under_rr_at.
MOVE '' TO ls_output_data-pend_qc_on. "Don
t Know!!!
MOVE '' TO ls_output_data-pend_qc_at. "Don
t Know!!!
MOVE ls_teco-udate TO ls_output_data-rd_dispatch_on.
MOVE ls_teco-utime TO ls_output_data-rd_dispatch_at.
MOVE ls_fwd_pick_req-docket_date TO ls_output_data-cour_pick_on_ssd
.
MOVE ls_fwd_pick_req-docket_time TO ls_output_data-cour_pick_at_ssd
.
MOVE ls_notif_mas-rcvd_frm_rf_on TO ls_output_data-ssd_recv_date.
MOVE ls_notif_mas-rcvd_frm_rf_at TO ls_output_data-ssd_recv_time.
MOVE ls_notif_mas-delivered_on TO ls_output_data-cust_delv_date.
MOVE lv_ssd_tat TO ls_output_data-ssd_tat.
MOVE lv_cour_rl_tat TO ls_output_data-cour_rl_tat.
MOVE lv_rf_tat TO ls_output_data-rf_tat.
MOVE lv_cour_fl_tat TO ls_output_data-cour_fl_tat.
MOVE lv_cust_await_tat TO ls_output_data-cust_await_tat.
MOVE lv_lava_cust_tat TO ls_output_data-lava_cust_tat.
MOVE ls_notif_mas-req_id TO ls_output_data-req_id.
MOVE ls_fwd_pick_req-docket_number TO ls_output_data-fwd_docket_no."a
dded by srinivasan.a
MOVE ls_fwd_pick_req-created_on TO ls_output_data-fwd_created_on."adde
d by srinivasan.a
MOVE ls_fwd_pick_req-created_at TO ls_output_data-fwd_created_at."adde
d by a.srinivasan.
MOVE ls_fwd_pick_req-courier_id TO ls_output_data-fwd_courier_id.
MOVE ls_fwd_pick_req-courier_name TO ls_output_data-fwd_courier_name."ad
ded by a.srinivasan.
MOVE ls_notif_mas-delivered_at TO ls_output_data-cust_delv_time." add
ed by a.srinivasan.
MOVE ls_notif_mas-stndby_issued TO ls_output_data-stndby_issued."added
by a.srinivasan.
MOVE ls_notif_mas-stndby_model TO ls_output_data-stndby_model."added
by a.srinivasan.
MOVE ls_notif_mas-stndby_imei TO ls_output_data-stndby_imei."added by
a.srinivasan.
MOVE ls_notif_mas-cust_name TO ls_output_data-cust_name.
MOVE ls_notif_mas-cust_phone TO ls_output_data-cust_phone.
MOVE ls_qmel-deviceid TO ls_output_data-deviceid."added by a.
srinivasan.
MOVE ls_qmel-qmgrp TO ls_output_data-qmgrp.
MOVE ls_qmel-qmcod TO ls_output_data-qmcod.
MOVE ls_qpct_s-kurztext TO ls_output_data-kurztext.
MOVE ls_notif_status-status TO ls_output_data-notifi_status.
MOVE ls_notif_mas-fwd_req_id TO ls_output_data-fwd_req_id.
MOVE ls_notif_mas-qmart TO ls_output_data-qmart.
MOVE ls_knvv_br-name1 TO ls_output_data-branch.
MOVE ls_knvp_asm-name1 TO ls_output_data-asm_name.
MOVE ls_notif_mas-s2rf_on TO ls_output_data-s2rf_on.
MOVE ls_notif_mas-s2rf_at TO ls_output_data-s2rf_at.
MOVE ls_notif_mas-ssd_id TO ls_output_data-ssd_id.
* MOVE ls_notif_status-description TO ls_output_data-bucket_stat.
********************************************************************************
**************
* Changed By Mayank for replacement status mismatch in pending call report o
n 26.05.2014
********************************************************************************
**************
CLEAR: ls_stdby_sts,ls_stock.
READ TABLE lt_stdby_sts INTO ls_stdby_sts
WITH KEY qmnum = ls_notif_mas-qmnum
stndb = 'R' BINARY SEARCH.
IF sy-subrc IS INITIAL. "Repalcement App
roced
READ TABLE lt_stock INTO ls_stock
WITH KEY qmnum = ls_notif_mas-qmnum BINARY SEARCH.
IF sy-subrc IS INITIAL. "Check for Repla
cement Dispatch/Recieved
IF ls_stock-invoice_no IS NOT INITIAL "Replacement Rec
ieved by ASP
AND ls_stock-rp_recieved IS NOT INITIAL.
ls_output_data-bucket_stat = 'Replacement Recieved By ASP'.
ELSEIF ls_stock-invoice_no IS NOT INITIAL "Replacement Dis
patched to ASP
AND ls_stock-rp_recieved IS INITIAL.
ls_output_data-bucket_stat = 'Replacement Dispatched To ASP'.
ELSEIF ls_stock-invoice_no IS INITIAL "Replacement App
roved
AND ls_stock-rp_recieved IS INITIAL.
ls_output_data-bucket_stat = 'Replacement Approved'.
ENDIF.
ELSE. "Only Replacemen
t Approved, Not Dispatched or Recieved
ls_output_data-bucket_stat = 'Replacement Approved'.
ENDIF.
ELSE. "Same status as
it is coming before
MOVE ls_notif_status-description TO ls_output_data-bucket_stat.
ENDIF.
********************************************************************************
**************
* Changed By Mayank for replacement status mismatch in pending call report o
n 26.05.2014
********************************************************************************
**************
READ TABLE lt_kna1 INTO ls_kna1 WITH KEY kunnr = ls_notif_mas-ssd_id BINAR
Y SEARCH.
IF sy-subrc = 0.
MOVE ls_kna1-name1 TO ls_output_data-ssd_name.
ENDIF.
CASE ls_notif_mas-qmart.
WHEN 'Z3'.
ls_output_data-call_type = 'Service call'.
WHEN 'Z4'.
ls_output_data-call_type = 'Inquiry'.
WHEN 'Z5'.
ls_output_data-call_type = 'Normal DOA'.
WHEN 'Z6'.
ls_output_data-call_type = 'Duration DOA'.
ENDCASE.
IF ( ls_zs3n_t_els-handset_warranty = 'X' AND
ls_zs3n_t_els-status = 'A') OR
( ls_zs3n_t_els-wc_status = 'A' ).
ls_output_data-warranty = 'Yes '.
ELSE.
ls_output_data-warranty = 'No'.
ENDIF.
CLEAR:ls_partcode,ls_partdesc.
CLEAR:wa_pending_list.
CLEAR lv_tabix.
CLEAR lv_tabix.
READ TABLE it_pending_list INTO wa_pending_list WITH KEY qmnum = ls_output
_data-qmnum BINARY SEARCH.
IF sy-subrc = 0.
lv_tabix = sy-tabix.
ENDIF.
LOOP AT it_pending_list INTO wa_pending_list FROM lv_tabix.
IF wa_pending_list-qmnum NE ls_output_data-qmnum.
CLEAR wa_pending_list.
EXIT.
ENDIF.
IF ls_notif_status-description = 'Work In Progress'.
IF wa_pending_list-matkl = '811201' OR
wa_pending_list-matkl = '811701' OR
wa_pending_list-matkl = '811602' OR
wa_pending_list-matkl = '810206' OR
wa_pending_list-matkl = '811702'." PCBA
ls_output_data-bucket_stat = 'Pending for PCBA'.
ELSE.
ls_output_data-bucket_stat = 'Pending for parts'.
ENDIF.
ENDIF.
CLEAR ls_stock_details_cust.
READ TABLE lt_stock_details_cust INTO ls_stock_details_cust WITH KEY kun
nr = ls_notif_mas-ssd_id
mat
nr = wa_pending_list-matnr BINARY SEARCH.
IF sy-subrc = 0.
ls_output_data-cfa_stock = ls_stock_details_cust-labst.
ENDIF.
CLEAR ls_mard.
READ TABLE lt_mard INTO ls_mard WITH KEY matnr = wa_pending_list-matnr B
INARY SEARCH.
IF sy-subrc = 0.
ls_output_data-mnoi_stock = ls_mard-labst.
ENDIF.
CLEAR: ls_comp, ls_serv.
READ TABLE lt_comp INTO ls_comp WITH KEY matnr = wa_pending_list-matnr s
hip_party = wa_pending_list-kunnr BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE lt_serv INTO ls_serv WITH KEY matnr = wa_pending_list-matnr
ship_party = wa_pending_list-kunnr BINARY SEARCH.
IF sy-subrc = 0.
ls_output_data-asp_stock = ls_comp-qty - ls_serv-qty.
ENDIF.
ENDIF.
IF wa_pending_list-matnr IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = wa_pending_list-matnr
IMPORTING
output = wa_pending_list-matnr.
MOVE wa_pending_list-matnr TO ls_output_data-part_code.
MOVE wa_pending_list-maktx TO ls_output_data-part_desc.
ELSE.
IF ls_output_data-bucket_stat EQ 'Pending for PCBA'
AND ls_notif_mas-pcba_matnr IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_notif_mas-pcba_matnr
IMPORTING
output = ls_notif_mas-pcba_matnr.
MOVE ls_notif_mas-pcba_matnr TO ls_output_data-part_code.
ELSEIF ls_output_data-bucket_stat EQ 'Pending for PCBA'
AND ls_notif_mas-pcba_matnr IS INITIAL.
ls_output_data-bucket_stat = 'Work In Progress'.
ENDIF.
ENDIF.
CLEAR ls_part_pend.
READ TABLE lt_part_pend INTO ls_part_pend WITH KEY qmnum = ls_output_dat
a-qmnum BINARY SEARCH.
MOVE ls_part_pend-created_on TO ls_output_data-pcba_req_on.
APPEND ls_output_data TO et_output_data.
ENDLOOP.
IF wa_pending_list-matnr IS INITIAL.
IF ls_output_data-bucket_stat EQ 'Pending for PCBA'
AND ls_notif_mas-pcba_matnr IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_notif_mas-pcba_matnr
IMPORTING
output = ls_notif_mas-pcba_matnr.
MOVE ls_notif_mas-pcba_matnr TO ls_output_data-part_code.
ELSEIF ls_output_data-bucket_stat EQ 'Pending for PCBA'
AND ls_notif_mas-pcba_matnr IS INITIAL.
ls_output_data-bucket_stat = 'Work In Progress'.
ENDIF.
CLEAR ls_part_pend.
READ TABLE lt_part_pend INTO ls_part_pend WITH KEY qmnum = ls_output_dat
a-qmnum BINARY SEARCH.
MOVE ls_part_pend-created_on TO ls_output_data-pcba_req_on.
APPEND ls_output_data TO et_output_data.
ENDIF.
CLEAR : ls_notif_mas,
ls_qmel,
ls_qpct_t,
ls_qpct_s,
ls_qpct_r,
ls_kna1,
ls_knvv,
ls_knvv_br,
ls_knvp_asm,
ls_notif_status,
ls_pick_req,
ls_fwd_pick_req,
ls_aufk,
ls_teco,
lv_ssd_tat,
lv_cour_rl_tat,
lv_rf_tat,
lv_cour_fl_tat,
lv_cust_await_tat,
lv_lava_cust_tat,
ls_output_data,
ls_partcode,
ls_partdesc,
ls_zs3n_t_els,
ls_stock_details_cust.
ENDLOOP.
ENDIF.
IF im_send_2_rf IS NOT INITIAL.
DELETE et_output_data WHERE bucket_stat = 'Ready For Dispatch to Customer'.
ENDIF.
************ GET ACTION AND FAULT DETAIL
LOOP AT et_output_data ASSIGNING <fs_tat_report>.
CLEAR: ls_qmur, ls_qpct_t, ls_qmfe, ls_qpct_r.
READ TABLE lt_qmur INTO ls_qmur WITH KEY qmnum = <fs_tat_report>-qmnum BINAR
Y SEARCH.
IF sy-subrc = 0.
READ TABLE lt_qpct INTO ls_qpct_t WITH KEY katalogart = 'T'
codegruppe = ls_qmur-urgrp
code = ls_qmur-urcod.
IF sy-subrc = 0.
<fs_tat_report>-fault_txt = ls_qpct_t-kurztext.
<fs_tat_report>-fault_cod = ls_qmur-urcod.
ENDIF.
ENDIF.
READ TABLE lt_qmfe INTO ls_qmfe WITH KEY qmnum = <fs_tat_report>-qmnum BINAR
Y SEARCH.
IF sy-subrc = 0.
READ TABLE lt_qpct INTO ls_qpct_r WITH KEY katalogart = 'R'
codegruppe = ls_qmfe-fegrp
code = ls_qmfe-fecod.
IF sy-subrc = 0.
<fs_tat_report>-action_txt = ls_qpct_r-kurztext.
ENDIF.
ENDIF.
* CALL FUNCTION 'BAPI_ALM_NOTIF_GET_DETAIL'
* EXPORTING
* number = <fs_tat_report>-qmnum
* IMPORTING
* notifhdtext = ls_notifhdtext
* TABLES
* notitem = lt_notitem
* notifcaus = lt_notifcaus.
* " action
* READ TABLE lt_notitem INTO ls_notitem INDEX 1.
* <fs_tat_report>-action_txt = ls_notitem-txt_probcd.
** "symptom
** <fs_history>-symptom = ls_notifhdtext-code_text.
* "fault
* READ TABLE lt_notifcaus INTO ls_notifcaus INDEX 1.
* <fs_tat_report>-fault_txt = ls_notifcaus-txt_causecd.
* <fs_tat_report>-fault_cod = ls_notifcaus-cause_code.
* CLEAR : ls_notitem,lt_notitem[],lt_notifcaus[],ls_notifcaus.
ENDLOOP.
************
*************************************************************************
* Added By Mayank on 28.05.2014 for deleting duplicate enteries
*************************************************************************
SORT et_output_data.
DELETE ADJACENT DUPLICATES FROM et_output_data COMPARING ALL FIELDS.
* APPEND LINES OF et_output_data TO lt_output_data.
ENDFUNCTION.

You might also like