*& *&---------------------------------------------------------------------* *& BETC Specs / Task No : BE83 *& Description : LAVA Service Center : TAT Report - New fields *& Developed by : BETC *&---------------------------------------------------------------------*
REPORT z_sc_tat_report_3.
TYPE-POOLS:slis. TYPES: BEGIN OF ty_output, cname TYPE char35, kunum TYPE char10, qmnum TYPE char20, call_type TYPE char25, valid TYPE char15,"Valid / Invalid doa_type TYPE char20, mapar TYPE char30, sernr TYPE char30, serge TYPE char30, remark TYPE char200, cust_name TYPE char35, cust_phone TYPE char25, erdat TYPE char25, req_id TYPE char20, req_id_on TYPE char25, req_id_at TYPE char25, fwd_req_id TYPE char20, fwd_req_id_on TYPE char20, warranty TYPE char10, model TYPE char25, branch TYPE char30, asm_name TYPE char35, busm TYPE char10, busm_name TYPE char45, spl_doa_no TYPE char20, spl_doa_on TYPE char30, doa_pgr_date TYPE char20, bucket_stat TYPE char_60, * sub_status TYPE char_60, age TYPE char10, s2rf_on TYPE char25, s2rf_at TYPE char25, ssd_id TYPE char20, ssd_name TYPE char35, bztxt TYPE char20, "District regio TYPE char10, "State bezei TYPE bezei20," State ort01 TYPE char35, "City rev_courier_id TYPE char25,"added by a.srinivasan rev_courier_name TYPE name1_gp, "added by a.srinivasan. rev_cour_pick_on TYPE char20,"reverse courier pick date "added by a .srinivasan. cour_pick_on TYPE char20,"courier pick at cour_pick_at TYPE char20," rev_cour_pick_at TYPE char20,"reverse courier pick at " added by a. srinivasan. rev_dock_no TYPE char20, "reverse document no "added by a.srinivasa n. rf_recv_on TYPE char25,"RF Received Date"ADDED by a.srinivasan. rf_recv_at TYPE char25,"RF Received At under_rr_on TYPE char25,"Under Repair Date under_rr_at TYPE char25, "Under Repair Time rd_dispatch_on TYPE char25,"Ready for Dispatch Date rd_dispatch_at TYPE char25, "Ready for Dispatch On fwd_created_on TYPE char25, "Forward Challan Date fwd_created_at TYPE char25, "Forward challan time fwd_courier_id TYPE name1_gp, "Forward courier ID fwd_courier_name TYPE name1_gp, "Forward courier name fwd_docket_no TYPE char30, "forward docket number ssd_recv_date TYPE char25, "Received at SSD Date cust_delv_date TYPE char30, "Delivered to Customer Date cust_delv_time TYPE char30, "Delivered to Customer Time fault_cod TYPE char20,"Fault code rf_fault_cod TYPE char20,"Fault code fault_txt TYPE char50,"Fault code stndby_issued TYPE char20, "standy by issued. stndby_model TYPE char25, "stand by model. stndby_imei TYPE char30, "stand by imei stndby_issued_on TYPE char30, "stand by issues on rf_tat TYPE char20,"RF Call - RF TAT lava_cust_tat TYPE char20, "LAVA Customer TAT repair_tat TYPE char20, "Repair TAT action_cod TYPE char20," action code rf_action_cod TYPE char20," action code action_txt TYPE qtxtcdgrfe," action taken rep_comp_dt TYPE char20, "Repair Complete Date ssd_tat TYPE char25,"RF Call - SSD TAT cour_rl_tat TYPE char25, "RF Call - Reverse TAT "RF_TAT type char5, "rf tat cour_fl_tat TYPE char25, "RF Call - Forward TAT bu TYPE char40,"business unit description part_code TYPE char30,"part code part_desc TYPE char50, "part descritpion pcba_req_on TYPE char25, "Part Requisition Date cfa_stock TYPE char20, "CFA Stock mnoi_stock TYPE char20, " Stock at MNOI asp_stock TYPE char20, " Stock at ASP part_consumed TYPE char140,"part consumed deviceid TYPE deviceid, rf_deviceid TYPE deviceid, afih_deviceid TYPE deviceid, curr_st TYPE char40, labst TYPE char30, courier_id TYPE char30, ssd_recv_time TYPE char20, kurztext TYPE kurztext, "Symptom sym_code TYPE char20, "Symptom Code cust_intm_dt TYPE char25, "Customer Intimation Date doa_remk TYPE char100,"Reason for DOA pcba_rep TYPE char20,"Replacement pcba_rep_model TYPE zmodel,"Replacement Model pcba_rep_imei TYPE mapar,"Replacement IMEI pcba_rep_date TYPE char20," Replacement Date rf_call TYPE char20, rf_pcba_rep TYPE char20,"Replacement rf_pcba_rep_model TYPE zmodel,"Replacement Model rf_pcba_rep_imei TYPE mapar,"Replacement IMEI rf_pcba_rep_date TYPE char25," Replacement Date els_status TYPE char25, "ELS STATUS END OF ty_output. TYPES: BEGIN OF tt_solisti1, line(3000) TYPE c, END OF tt_solisti1.
DATA:l_split VALUE ','.
DATA: gt_st_tat TYPE TABLE OF zs3n_st_tat_report, gs_st_tat TYPE zs3n_st_tat_report,
gt_output TYPE TABLE OF ty_output, gs_output TYPE ty_output,
gt_kunnr TYPE TABLE OF zla_rs_kunnr, gs_kunnr TYPE zla_rs_kunnr,
gv_date TYPE zs3n_t_notif_mas-created_on, gv_req_id TYPE zs3n_t_notif_mas-req_id, gv_fwd_req TYPE zs3n_t_notif_mas-fwd_req_id, gv_ssd_id TYPE zs3n_t_notif_mas-ssd_id, gv_qmnum TYPE zs3n_t_notif_mas-qmnum, gv_bu TYPE zbu_region-bu.
DATA:ls_fieldcat TYPE slis_t_fieldcat_alv, lt_fieldcat TYPE slis_fieldcat_alv.
DATA: wk_repid TYPE sy-repid, wk_layout TYPE slis_layout_alv.
DATA: gt_dd07t TYPE TABLE OF dd07t, gs_dd07t TYPE dd07t.
**Variable for the Email functionality DATA: gt_attachment TYPE TABLE OF tt_solisti1, gs_attachment TYPE tt_solisti1,
gt_message TYPE TABLE OF solisti1, gs_message TYPE solisti1,
gt_mess_att TYPE TABLE OF solisti1, gs_mess_att TYPE solisti1,
gt_mail TYPE TABLE OF zemail_1, gs_mail TYPE zemail_1,
gt_receivers TYPE TABLE OF somlreci1, gs_receivers TYPE somlreci1,
gt_packing_list TYPE TABLE OF sopcklsti1, gs_packing_list TYPE sopcklsti1,
gt_lines2 TYPE TABLE OF tline, gs_lines2 TYPE tline,
gt_contents TYPE TABLE OF solisti1, gs_contents TYPE solisti1,
gv_cnt TYPE i, gv_format(4) TYPE c ,"so_obj_tp , gv_attdescription(40) TYPE c , gv_attfilename TYPE so_obj_des , gv_name TYPE string, gv_attachment_desc(22) TYPE c, gc_cnt TYPE i, gv_sent_all(1) TYPE c, gv_doc_data LIKE sodocchgi1, gv_error TYPE sy-subrc, gv_buffer TYPE string.
CONSTANTS: gc_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab, gc_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf, gc_newline TYPE c VALUE cl_abap_char_utilities=>newline, gc_form_feed TYPE c VALUE cl_abap_char_utilities=>form_feed.
FIELD-SYMBOLS : <fs_st_tat> TYPE zs3n_st_tat_report.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_date FOR gv_date, s_del_dt FOR gv_date, s_req_id FOR gv_req_id NO-DISPLAY, s_fwd_rq FOR gv_fwd_req NO-DISPLAY, s_kunnr FOR gv_ssd_id NO-DISPLAY, s_qmnum FOR gv_qmnum. PARAMETERS: p_bu TYPE zbu_region-bu.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002. PARAMETERS: p_del TYPE char1 AS CHECKBOX DEFAULT 'X'. PARAMETERS: p_pen TYPE char1 AS CHECKBOX DEFAULT 'X'. PARAMETERS: p_doa TYPE char1 AS CHECKBOX. PARAMETERS: p_snd2rf TYPE char1 AS CHECKBOX. SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003. PARAMETERS: p_email TYPE char1 RADIOBUTTON GROUP g1. PARAMETERS: p_local TYPE char1 RADIOBUTTON GROUP g1 DEFAULT 'X'. PARAMETERS: p_server TYPE char1 RADIOBUTTON GROUP g1. PARAMETERS: p_folder TYPE char40 DEFAULT 'C:\Temp\'. PARAMETERS: p_file TYPE char40 . *SELECTION-SCREEN COMMENT /4(50) text-004. SELECTION-SCREEN END OF BLOCK b3.
PARAMETERS: p_old TYPE char1 AS CHECKBOX.
START-OF-SELECTION. PERFORM get_data. PERFORM build_excel_tat. IF p_email IS NOT INITIAL AND sy-batch IS NOT INITIAL. PERFORM send_email_tat. ELSE. PERFORM save_tat. ENDIF. * PERFORM build_excel. * IF p_email IS NOT INITIAL AND sy-batch IS NOT INITIAL. * PERFORM send_email. * ELSE. * PERFORM save_pc. * ENDIF. *&---------------------------------------------------------------------* *& Form get_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM get_data. DATA lv_skip TYPE xfeld. DATA lv_delivered TYPE char1. CLEAR lv_skip.
IF p_bu IS NOT INITIAL. PERFORM get_kunnr. ENDIF.
*Only delivered IF p_del = 'X' . lv_delivered = 'D'. ENDIF. *Only Pending IF p_pen = 'X' . lv_delivered = 'P'. ENDIF. *Both IF p_del = 'X' AND p_pen = 'X' . lv_delivered = 'B'. ENDIF.
SELECT * FROM dd07t INTO TABLE gt_dd07t WHERE domname = 'ZS3N_DOM_NOTIF_STATUS' AND ddlanguage = 'E'. IF sy-subrc NE 0. *No data found ENDIF.
ENDFORM. "get_data
*&---------------------------------------------------------------------* *& Form build_excel_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM build_excel_tat.
DATA: gt_output TYPE TABLE OF ty_output, gs_output TYPE ty_output. DATA: lv_date TYPE char8. DATA: lt_st_tat TYPE TABLE OF zs3n_st_tat_report. lt_st_tat[] = gt_st_tat[].
SORT lt_st_tat BY qmnum part_code. DELETE ADJACENT DUPLICATES FROM lt_st_tat COMPARING qmnum part_code.
CONCATENATE gs_output-qmnum gs_output-erdat gs_output-call_type gs_output-valid gs_output-doa_type gs_output-ssd_id gs_output-ssd_name gs_output-bu gs_output-branch gs_output-bezei gs_output-ort01 gs_output-asm_name gs_output-busm gs_output-busm_name gs_output-spl_doa_no gs_output-spl_doa_on gs_output-doa_pgr_date gs_output-warranty gs_output-cust_name gs_output-cust_phone gs_output-model gs_output-mapar gs_output-sernr gs_output-serge * Serial No gs_output-sym_code gs_output-kurztext gs_output-remark * gs_output-sub_status gs_output-bucket_stat gs_output-age gs_output-fault_cod gs_output-fault_txt gs_output-action_cod gs_output-action_txt gs_output-rep_comp_dt gs_output-cust_intm_dt gs_output-cust_delv_date gs_output-repair_tat gs_output-lava_cust_tat gs_output-deviceid gs_output-part_code gs_output-part_desc gs_output-pcba_req_on * CFA Dispatch Status * CFA Dispatch Date & Time gs_output-stndby_issued gs_output-stndby_model gs_output-stndby_imei gs_output-stndby_issued_on gs_output-pcba_rep gs_output-pcba_rep_model gs_output-pcba_rep_imei gs_output-pcba_rep_date gs_output-cfa_stock gs_output-mnoi_stock gs_output-asp_stock * DOA Type gs_output-doa_remk gs_output-rf_call gs_output-s2rf_on gs_output-s2rf_at gs_output-req_id gs_output-req_id_on gs_output-req_id_at gs_output-rev_courier_id gs_output-rev_courier_name gs_output-rev_dock_no gs_output-cour_pick_on gs_output-cour_pick_at gs_output-rf_recv_on gs_output-rf_recv_at gs_output-under_rr_on gs_output-under_rr_at gs_output-rd_dispatch_on gs_output-rd_dispatch_at gs_output-fwd_req_id gs_output-fwd_created_on gs_output-fwd_created_at gs_output-fwd_courier_id gs_output-fwd_courier_name gs_output-fwd_docket_no gs_output-ssd_recv_date gs_output-ssd_recv_time gs_output-ssd_recv_time gs_output-ssd_tat gs_output-cour_rl_tat gs_output-rf_tat gs_output-cour_fl_tat gs_output-rf_fault_cod gs_output-rf_action_cod gs_output-rf_deviceid gs_output-part_consumed gs_output-pcba_rep gs_output-rf_pcba_rep_model gs_output-rf_pcba_rep_imei gs_output-rf_pcba_rep_date gs_output-afih_deviceid gs_output-els_status * DOA Issued from RF * RF - Reason for DOA INTO gs_attachment SEPARATED BY gc_tab. IF p_email IS NOT INITIAL. CONCATENATE gc_cret gs_attachment INTO gs_attachment. ENDIF. APPEND gs_attachment TO gt_attachment.
CLEAR gs_attachment. CONCATENATE gc_cret gs_attachment INTO gs_attachment. APPEND gs_attachment TO gt_attachment.
APPEND gs_output TO gt_output.
CLEAR gs_attachment. SORT lt_st_tat BY qmnum part_code part_cons. DELETE ADJACENT DUPLICATES FROM lt_st_tat COMPARING qmnum part_code part_co ns. LOOP AT lt_st_tat INTO gs_st_tat. CLEAR gs_output. MOVE-CORRESPONDING gs_st_tat TO gs_output. WRITE gs_st_tat-cname TO gs_output-cname. WRITE gs_st_tat-kunum TO gs_output-kunum. WRITE gs_st_tat-qmnum TO gs_output-qmnum. WRITE gs_st_tat-call_type TO gs_output-call_type. WRITE gs_st_tat-valid TO gs_output-valid. WRITE gs_st_tat-doa_type TO gs_output-doa_type. WRITE gs_st_tat-mapar TO gs_output-mapar. WRITE gs_st_tat-sernr TO gs_output-sernr. WRITE gs_st_tat-cust_name TO gs_output-cust_name. WRITE gs_st_tat-cust_phone TO gs_output-cust_phone. WRITE gs_st_tat-erdat TO gs_output-erdat. WRITE gs_st_tat-req_id TO gs_output-req_id. WRITE gs_st_tat-req_id_on TO gs_output-req_id_on. WRITE gs_st_tat-req_id_at TO gs_output-req_id_at. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_req_id. WRITE gs_st_tat-fwd_created_on TO gs_output-fwd_req_id_on. WRITE gs_st_tat-warranty TO gs_output-warranty. WRITE gs_st_tat-model TO gs_output-model. WRITE gs_st_tat-branch TO gs_output-branch . WRITE gs_st_tat-asm_name TO gs_output-asm_name. WRITE gs_st_tat-busm TO gs_output-busm. WRITE gs_st_tat-busm_name TO gs_output-busm_name. WRITE gs_st_tat-spl_doa_no TO gs_output-spl_doa_no. WRITE gs_st_tat-spl_doa_on TO gs_output-spl_doa_on. WRITE gs_st_tat-doa_pgr_date TO gs_output-doa_pgr_date. WRITE gs_st_tat-bucket_stat TO gs_output-bucket_stat . WRITE gs_st_tat-s2rf_at TO gs_output-s2rf_at. WRITE gs_st_tat-ssd_id TO gs_output-ssd_id . WRITE gs_st_tat-ssd_name TO gs_output-ssd_name. WRITE gs_st_tat-bztxt TO gs_output-bztxt. WRITE gs_st_tat-regio TO gs_output-regio. WRITE gs_st_tat-bezei TO gs_output-bezei. WRITE gs_st_tat-ort01 TO gs_output-ort01.
WRITE gs_st_tat-bu TO gs_output-bu. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_req_id. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_created_on. WRITE gs_st_tat-fwd_created_at TO gs_output-fwd_created_at. WRITE gs_st_tat-courier_id TO gs_output-rev_courier_id. WRITE gs_st_tat-courier_name TO gs_output-rev_courier_name. WRITE gs_st_tat-docket_number TO gs_output-rev_dock_no. WRITE gs_st_tat-cour_pick_on TO gs_output-cour_pick_on. WRITE gs_st_tat-cour_pick_at TO gs_output-cour_pick_at. WRITE gs_st_tat-rf_recv_on TO gs_output-rf_recv_on. WRITE gs_st_tat-rf_recv_at TO gs_output-rf_recv_at. WRITE gs_st_tat-under_rr_on TO gs_output-under_rr_on. WRITE gs_st_tat-under_rr_at TO gs_output-under_rr_at. WRITE gs_st_tat-rd_dispatch_on TO gs_output-rd_dispatch_on. WRITE gs_st_tat-rd_dispatch_at TO gs_output-rd_dispatch_at. WRITE gs_st_tat-fwd_created_on TO gs_output-fwd_created_on. WRITE gs_st_tat-fwd_created_at TO gs_output-fwd_created_at. WRITE gs_st_tat-fwd_courier_id TO gs_output-fwd_courier_id. WRITE gs_st_tat-fwd_courier_name TO gs_output-fwd_courier_name. WRITE gs_st_tat-fwd_docket_no TO gs_output-fwd_docket_no. WRITE gs_st_tat-ssd_recv_date TO gs_output-ssd_recv_date. WRITE gs_st_tat-cust_delv_date TO gs_output-cust_delv_date. WRITE gs_st_tat-cust_delv_time TO gs_output-cust_delv_time. WRITE gs_st_tat-fault_cod TO gs_output-fault_cod. WRITE gs_st_tat-fault_cod TO gs_output-rf_fault_cod. WRITE gs_st_tat-action_txt TO gs_output-action_txt. WRITE gs_st_tat-ssd_tat TO gs_output-ssd_tat. WRITE gs_st_tat-cour_rl_tat TO gs_output-cour_rl_tat. WRITE gs_st_tat-rf_tat TO gs_output-rf_tat. WRITE gs_st_tat-cour_fl_tat TO gs_output-cour_fl_tat. WRITE gs_st_tat-stndby_issued TO gs_output-stndby_issued. IF gs_st_tat-stndby_issued IS INITIAL. gs_output-stndby_issued = 'No'. ELSE. gs_output-stndby_issued = 'Yes'. ENDIF.
WRITE gs_st_tat-stndby_model TO gs_output-stndby_model. WRITE gs_st_tat-stndby_imei TO gs_output-stndby_imei. WRITE gs_st_tat-lava_cust_tat TO gs_output-lava_cust_tat. WRITE gs_st_tat-part_code TO gs_output-part_code. WRITE gs_st_tat-part_desc TO gs_output-part_desc. WRITE gs_st_tat-cfa_stock TO gs_output-cfa_stock. WRITE gs_st_tat-mnoi_stock TO gs_output-mnoi_stock. WRITE gs_st_tat-asp_stock TO gs_output-asp_stock. WRITE gs_st_tat-part_cons TO gs_output-part_consumed. WRITE gs_st_tat-deviceid TO gs_output-deviceid. WRITE gs_st_tat-afih_deviceid TO gs_output-afih_deviceid. IF gs_st_tat-els_status = 'A'. gs_output-els_status = 'Pass'. ELSE. gs_output-els_status = 'Fail'. ENDIF.
WRITE gs_st_tat-kurztext TO gs_output-kurztext. WRITE gs_st_tat-s2rf_on TO gs_output-s2rf_on. WRITE gs_st_tat-cust_intm_dt TO gs_output-cust_intm_dt. WRITE gs_st_tat-rep_comp_dt TO gs_output-rep_comp_dt. WRITE gs_st_tat-pcba_req_on TO gs_output-pcba_req_on.
READ TABLE gt_dd07t INTO gs_dd07t WITH KEY domvalue_l = gs_st_tat- notifi_status. IF sy-subrc = 0. WRITE gs_dd07t-ddtext TO gs_output-curr_st. ENDIF. * WRITE gs_st_tat-notifi_status TO gs_output-curr_st. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_req_id. WRITE gs_st_tat-courier_id TO gs_output-courier_id. WRITE gs_st_tat-ssd_recv_time TO gs_output-ssd_recv_time. WRITE gs_st_tat-kurztext TO gs_output-kurztext. CLEAR lv_date. lv_date = gs_st_tat-s2rf_on. IF gs_st_tat-s2rf_on IS INITIAL OR lv_date IS INITIAL. gs_output-rf_call = 'No'. CLEAR: gs_output-s2rf_on, gs_output-s2rf_at, gs_output-req_id, gs_output-req_id_on, gs_output-req_id_at, gs_output-rev_courier_id, gs_output-rev_courier_name, gs_output-rev_dock_no, gs_output-cour_pick_on, gs_output-cour_pick_at, gs_output-rf_recv_on, gs_output-rf_recv_at, gs_output-under_rr_on, gs_output-under_rr_at, gs_output-rd_dispatch_on, gs_output-rd_dispatch_at, gs_output-fwd_req_id, gs_output-fwd_created_on, gs_output-fwd_created_at, gs_output-fwd_courier_id, gs_output-fwd_courier_name, gs_output-fwd_docket_no, gs_output-ssd_recv_date, gs_output-ssd_recv_time, gs_output-ssd_recv_time, gs_output-ssd_tat, gs_output-cour_rl_tat, gs_output-rf_tat, gs_output-cour_fl_tat, gs_output-rf_fault_cod, gs_output-rf_action_cod, gs_output-rf_deviceid, gs_output-part_consumed, gs_output-rf_pcba_rep, gs_output-rf_pcba_rep_model, gs_output-rf_pcba_rep_imei, gs_output-rf_pcba_rep_date, gs_output-afih_deviceid. ELSE. gs_output-rf_call = 'Yes'. gs_output-rf_fault_cod = gs_output-fault_cod. gs_output-rf_action_cod = gs_output-action_cod. gs_output-rf_deviceid = gs_output-deviceid. gs_output-rf_pcba_rep = gs_output-pcba_rep. gs_output-rf_pcba_rep_model = gs_output-pcba_rep_model. gs_output-rf_pcba_rep_imei = gs_output-pcba_rep_imei. gs_output-rf_pcba_rep_date = gs_output-pcba_rep_date. ENDIF.
REPLACE ALL OCCURRENCES OF gc_tab IN gs_output WITH ','. REPLACE ALL OCCURRENCES OF gc_cret IN gs_output WITH ','. REPLACE ALL OCCURRENCES OF gc_newline IN gs_output WITH ','. REPLACE ALL OCCURRENCES OF gc_form_feed IN gs_output WITH ','. CONCATENATE gs_output-qmnum gs_output-erdat gs_output-call_type gs_output-valid gs_output-doa_type gs_output-ssd_id gs_output-ssd_name gs_output-bu gs_output-branch gs_output-bezei gs_output-ort01 gs_output-asm_name gs_output-busm gs_output-busm_name gs_output-spl_doa_no gs_output-spl_doa_on gs_output-doa_pgr_date gs_output-warranty gs_output-cust_name gs_output-cust_phone gs_output-model gs_output-mapar gs_output-sernr gs_output-serge * Serial No gs_output-sym_code gs_output-kurztext gs_output-remark * gs_output-sub_status gs_output-bucket_stat gs_output-age gs_output-fault_cod gs_output-fault_txt gs_output-action_cod gs_output-action_txt gs_output-rep_comp_dt gs_output-cust_intm_dt gs_output-cust_delv_date gs_output-repair_tat gs_output-lava_cust_tat gs_output-deviceid gs_output-part_code gs_output-part_desc gs_output-pcba_req_on * CFA Dispatch Status * CFA Dispatch Date & Time gs_output-stndby_issued gs_output-stndby_model gs_output-stndby_imei gs_output-stndby_issued_on gs_output-pcba_rep gs_output-pcba_rep_model gs_output-pcba_rep_imei gs_output-pcba_rep_date gs_output-cfa_stock gs_output-mnoi_stock gs_output-asp_stock * DOA Type gs_output-doa_remk gs_output-rf_call gs_output-s2rf_on gs_output-s2rf_at gs_output-req_id gs_output-req_id_on gs_output-req_id_at gs_output-rev_courier_id gs_output-rev_courier_name gs_output-rev_dock_no gs_output-cour_pick_on gs_output-cour_pick_at gs_output-rf_recv_on gs_output-rf_recv_at gs_output-under_rr_on gs_output-under_rr_at gs_output-rd_dispatch_on gs_output-rd_dispatch_at gs_output-fwd_req_id gs_output-fwd_created_on gs_output-fwd_created_at gs_output-fwd_courier_id gs_output-fwd_courier_name gs_output-fwd_docket_no gs_output-ssd_recv_date gs_output-ssd_recv_time gs_output-ssd_recv_time gs_output-ssd_tat gs_output-cour_rl_tat gs_output-rf_tat gs_output-cour_fl_tat gs_output-rf_fault_cod gs_output-rf_action_cod gs_output-deviceid gs_output-part_consumed gs_output-pcba_rep gs_output-pcba_rep_model gs_output-pcba_rep_imei gs_output-pcba_rep_date gs_output-afih_deviceid gs_output-els_status * DOA Issued from RF * RF - Reason for DOA INTO gs_attachment SEPARATED BY gc_tab. IF p_email IS NOT INITIAL. CONCATENATE gc_cret gs_attachment INTO gs_attachment. ENDIF. APPEND gs_attachment TO gt_attachment. ENDLOOP.
LOOP AT gt_attachment INTO gs_attachment. CONCATENATE gv_buffer gs_attachment INTO gv_buffer. ENDLOOP.
DO. gs_mess_att = gv_buffer. APPEND gs_mess_att TO gt_mess_att. SHIFT gv_buffer LEFT BY 255 PLACES. IF gv_buffer IS INITIAL. EXIT. ENDIF. ENDDO. ENDFORM. "build_excel_tat
*&---------------------------------------------------------------------* *& Form send_email_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM send_email_tat. DATA lv_mtype TYPE zemail_1-mtype.
* IF p_bu IS NOT INITIAL. * CONCATENATE '1' p_bu(2) INTO lv_mtype. * ELSE. lv_mtype = 'SCT'. * ENDIF. IF p_snd2rf IS NOT INITIAL. lv_mtype = 'SRF'. ENDIF. SELECT * FROM zemail_1 INTO TABLE gt_mail WHERE mtype = lv_mtype .
PERFORM populate_message_table_tat. IF gt_mail[] IS NOT INITIAL. LOOP AT gt_mail INTO gs_mail. CLEAR gs_receivers. gs_receivers-receiver = gs_mail-mail. gs_receivers-rec_type = 'U'. gs_receivers-com_type = 'INT'. gs_receivers-notif_del = 'X'. gs_receivers-notif_ndel = 'X'. gs_receivers-express = 'X'. APPEND gs_receivers TO gt_receivers. ENDLOOP. ENDIF.
*&---------------------------------------------------------------------* *& Form populate_message_table_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM populate_message_table_tat. APPEND 'Dear All' TO gt_message. APPEND ' ' TO gt_message. APPEND 'Please find the SC TAT Analysis Report attached herewith.' TO gt_me ssage. APPEND ' ' TO gt_message. APPEND ' ' TO gt_message. APPEND 'Regards' TO gt_message. APPEND ' ' TO gt_message. APPEND 'LAVA ERP Team' TO gt_message. APPEND ' ' TO gt_message. APPEND 'N.B.: This is system generated mail and in case of any clarificatio n please contact SAP Team.' TO gt_message. ENDFORM. "populate_message_table_tat
*&---------------------------------------------------------------------* *& Form send_email_message_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM send_email_message_tat. gv_format = 'XLS'. gv_attdescription = 'Work Orders Analysis Report'.
* Fill the document data. READ TABLE gt_mess_att INTO gs_mess_att INDEX gv_cnt. gv_doc_data-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN( gs_mess_att ).
* Populate the subject/generic message attributes gv_doc_data-obj_langu = sy-langu. gv_doc_data-obj_name = 'SAPRPT'. WRITE sy-datum TO gv_doc_data-obj_descr.
gv_doc_data-sensitivty = 'F'. * IF p_bu IS INITIAL. IF p_snd2rf IS NOT INITIAL. CONCATENATE 'WO Ana. Rep. - ' gv_doc_data- obj_descr ' for Repair Factory' INTO gv_doc_data- obj_descr SEPARATED BY space. ELSE. CONCATENATE 'WO Ana. Rep. - ' gv_doc_data-obj_descr INTO gv_doc_data- obj_descr SEPARATED BY space. ENDIF. * ELSE. * CONCATENATE 'SC TAT Ana. Rep. - ' gv_doc_data- obj_descr ' for ' p_bu INTO gv_doc_data-obj_descr SEPARATED BY space. * ENDIF. IF gt_mess_att[] IS NOT INITIAL. CLEAR gs_mess_att. REFRESH gt_attachment. gt_attachment[] = gt_mess_att[]. ENDIF.
* Describe the body of the message CLEAR: gs_packing_list, gt_packing_list[]. gs_packing_list-transf_bin = space. gs_packing_list-head_start = 1. gs_packing_list-head_num = 0. gs_packing_list-body_start = 1. DESCRIBE TABLE gt_message LINES gs_packing_list-body_num. gs_packing_list-doc_type = 'RAW'. APPEND gs_packing_list TO gt_packing_list.
* Store function module return code gv_error = sy-subrc. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno WITH sy-msgv1. ELSE. cl_os_transaction_end_notifier=>raise_commit_requested( ). CALL FUNCTION 'DB_COMMIT'. cl_os_transaction_end_notifier=>raise_commit_finished( ). ENDIF.
ENDFORM. "send_email_message_tat
*&---------------------------------------------------------------------* *& Form initiate_mail_execute_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM initiate_mail_execute_tat. WAIT UP TO 1 SECONDS. IF gv_error EQ 0. SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. ENDIF. ENDFORM. "
*&---------------------------------------------------------------------* *& Form save_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM save_tat. DATA lv_date TYPE char10. DATA lv_filename TYPE string.
WRITE sy-datum TO lv_date. IF p_old IS INITIAL. IF p_file IS INITIAL. CONCATENATE p_folder 'WO Analysis report_' p_bu '_' lv_date '_' sy- uzeit '.XLS' INTO lv_filename . ELSE. CONCATENATE p_folder p_file p_bu '.XLS' INTO lv_filename . ENDIF. ELSE. IF p_file IS INITIAL. CONCATENATE p_folder 'WO Analysis report_old' p_bu '_' lv_date '_' sy- uzeit '.XLS' INTO lv_filename . ELSE. CONCATENATE p_folder p_file p_bu'.XLS' INTO lv_filename . ENDIF. ENDIF. IF p_server IS INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = lv_filename TABLES data_tab = gt_attachment EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 separator_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 OTHERS = 22. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ELSE. OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. IF sy-subrc = 0 . LOOP AT gt_attachment INTO gs_attachment. TRANSFER gs_attachment TO lv_filename. ENDLOOP. CLOSE DATASET lv_filename. ENDIF. ENDIF. ENDFORM. "save_tat
*&---------------------------------------------------------------------* *& Form save_pc *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* *FORM save_pc. * DATA lv_date TYPE char10. * DATA lv_filename TYPE string. * * WRITE sy-datum TO lv_date. * CONCATENATE p_folder 'Pending Calls' lv_date '.XLS' INTO lv_filename. * * IF p_server IS INITIAL. * * CALL FUNCTION 'GUI_DOWNLOAD' * EXPORTING * filename = lv_filename * TABLES * data_tab = gt_attachment * EXCEPTIONS * file_write_error = 1 * no_batch = 2 * gui_refuse_filetransfer = 3 * invalid_type = 4 * no_authority = 5 * unknown_error = 6 * header_not_allowed = 7 * separator_not_allowed = 8 * filesize_not_allowed = 9 * header_too_long = 10 * dp_error_create = 11 * dp_error_send = 12 * dp_error_write = 13 * unknown_dp_error = 14 * access_denied = 15 * dp_out_of_memory = 16 * disk_full = 17 * dp_timeout = 18 * file_not_found = 19 * dataprovider_exception = 20 * control_flush_error = 21 * OTHERS = 22. * IF sy-subrc <> 0. * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno * WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. * ENDIF. * ELSE. * OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. * IF sy-subrc = 0 . * LOOP AT gt_attachment INTO gs_attachment. * TRANSFER gs_attachment TO lv_filename. * ENDLOOP. * CLOSE DATASET lv_filename. * ENDIF. * ENDIF. *ENDFORM. "save_pc
FORM get_kunnr. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, bu TYPE zbu_region-bu, END OF ty_kna1. DATA: lt_kna1 TYPE TABLE OF ty_kna1, ls_kna1 TYPE ty_kna1.
IF p_bu IS NOT INITIAL. SELECT zdbranch~kunnr zbrtxt~bu INTO TABLE lt_kna1 FROM zdbranch INNER JOIN zbrtxt ON zbrtxt~zbcode = zdbranch~zbcode WHERE zbrtxt~bu = p_bu.
LOOP AT lt_kna1 INTO ls_kna1. gs_kunnr-option = 'EQ'. gs_kunnr-sign = 'I'. gs_kunnr-low = ls_kna1-kunnr. APPEND gs_kunnr TO gt_kunnr. ENDLOOP. ENDIF.
**&---------------------------------------------------------------------* *& Report Z_SC_TAT_REPORT_2 *& *&---------------------------------------------------------------------* *& BETC Specs / Task No : BE66 *& Description : LAVA Service Center : TAT Report - New fields *& Developed by : BETC *&---------------------------------------------------------------------*
REPORT z_sc_tat_report_2.
TYPE-POOLS:slis. TYPES: BEGIN OF ty_output, cname TYPE char35, kunum TYPE char10, qmnum TYPE char20, call_type TYPE char25, mapar TYPE char30, cust_name TYPE char35, cust_phone TYPE char20, erdat TYPE char25, req_id TYPE char20, req_id_on TYPE char25, req_id_at TYPE char25, fwd_req_id TYPE char20, fwd_req_id_on TYPE char20, warranty TYPE char10, model TYPE char25, branch TYPE char30, asm_name TYPE char35, bucket_stat TYPE char_60, s2rf_on TYPE char25, s2rf_at TYPE char25, ssd_id TYPE char10, ssd_name TYPE char35, bztxt TYPE char20, "District regio TYPE char10, "State bezei TYPE bezei20," State ort01 TYPE char35, "City rev_courier_id TYPE lifnr,"added by a.srinivasan rev_courier_name TYPE name1_gp, "added by a.srinivasan. rev_cour_pick_on TYPE char20,"reverse courier pick date "added by a .srinivasan. cour_pick_on TYPE char20,"courier pick at cour_pick_at TYPE char20," rev_cour_pick_at TYPE char20,"reverse courier pick at " added by a. srinivasan. rev_dock_no TYPE char20, "reverse document no "added by a.srinivasa n. rf_recv_on TYPE char25,"RF Received Date"ADDED by a.srinivasan. rf_recv_at TYPE char25,"RF Received At under_rr_on TYPE char25,"Under Repair Date under_rr_at TYPE char25, "Under Repair Time rd_dispatch_on TYPE char25,"Ready for Dispatch Date rd_dispatch_at TYPE char25, "Ready for Dispatch On fwd_created_on TYPE char25, "Forward Challan Date fwd_created_at TYPE char25, "Forward challan time fwd_courier_id TYPE name1_gp, "Forward courier ID fwd_courier_name TYPE name1_gp, "Forward courier name fwd_docket_no TYPE char30, "forward docket number ssd_recv_date TYPE char25, "Received at SSD Date cust_delv_date TYPE char30, "Delivered to Customer Date cust_delv_time TYPE char30, "Delivered to Customer Time fault_cod TYPE char20,"Fault code stndby_issued TYPE char5, "standy by issued. stndby_model TYPE char25, "stand by model. stndby_imei TYPE char30, "stand by imei rf_tat TYPE char10,"RF Call - RF TAT lava_cust_tat TYPE char20, "LAVA Customer TAT action_txt TYPE qtxtcdgrfe," action taken ssd_tat TYPE char25,"RF Call - SSD TAT cour_rl_tat TYPE char25, "RF Call - Reverse TAT "RF_TAT type char5, "rf tat cour_fl_tat TYPE char25, "RF Call - Forward TAT bu TYPE char40,"business unit description part_code TYPE char30,"part code part_desc TYPE char50, "part descritpion cfa_stock TYPE char20, "CFA Stock mnoi_stock TYPE char20, " Stock at MNOI asp_stock TYPE char20, " Stock at ASP part_consumed TYPE char140,"part consumed deviceid TYPE deviceid, curr_st TYPE char40, labst TYPE char30, courier_id TYPE char30, ssd_recv_time TYPE char20, kurztext TYPE kurztext, "Symptom pcba_req_on TYPE char20, END OF ty_output. TYPES: BEGIN OF tt_solisti1, line(3000) TYPE c, END OF tt_solisti1.
DATA:l_split VALUE ','.
DATA: gt_st_tat TYPE TABLE OF zs3n_st_tat_report, gs_st_tat TYPE zs3n_st_tat_report,
gt_output TYPE TABLE OF ty_output, gs_output TYPE ty_output,
gt_kunnr TYPE TABLE OF zla_rs_kunnr, gs_kunnr TYPE zla_rs_kunnr,
gv_date TYPE zs3n_t_notif_mas-created_on, gv_req_id TYPE zs3n_t_notif_mas-req_id, gv_fwd_req TYPE zs3n_t_notif_mas-fwd_req_id, gv_ssd_id TYPE zs3n_t_notif_mas-ssd_id, gv_qmnum TYPE zs3n_t_notif_mas-qmnum, gv_bu TYPE zbu_region-bu.
DATA:ls_fieldcat TYPE slis_t_fieldcat_alv, lt_fieldcat TYPE slis_fieldcat_alv.
DATA: wk_repid TYPE sy-repid, wk_layout TYPE slis_layout_alv.
DATA: gt_dd07t TYPE TABLE OF dd07t, gs_dd07t TYPE dd07t.
**Variable for the Email functionality DATA: gt_attachment TYPE TABLE OF tt_solisti1, gs_attachment TYPE tt_solisti1,
gt_message TYPE TABLE OF solisti1, gs_message TYPE solisti1,
gt_mess_att TYPE TABLE OF solisti1, gs_mess_att TYPE solisti1,
gt_mail TYPE TABLE OF zemail_1, gs_mail TYPE zemail_1,
gt_receivers TYPE TABLE OF somlreci1, gs_receivers TYPE somlreci1,
gt_packing_list TYPE TABLE OF sopcklsti1, gs_packing_list TYPE sopcklsti1,
gt_lines2 TYPE TABLE OF tline, gs_lines2 TYPE tline,
gt_contents TYPE TABLE OF solisti1, gs_contents TYPE solisti1,
gv_cnt TYPE i, gv_format(4) TYPE c ,"so_obj_tp , gv_attdescription(40) TYPE c , gv_attfilename TYPE so_obj_des , gv_name TYPE string, gv_attachment_desc(22) TYPE c, gc_cnt TYPE i, gv_sent_all(1) TYPE c, gv_doc_data LIKE sodocchgi1, gv_error TYPE sy-subrc, gv_buffer TYPE string.
CONSTANTS: gc_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab, gc_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
FIELD-SYMBOLS : <fs_st_tat> TYPE zs3n_st_tat_report.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_date FOR gv_date, s_req_id FOR gv_req_id, s_fwd_rq FOR gv_fwd_req, s_kunnr FOR gv_ssd_id, s_qmnum FOR gv_qmnum. PARAMETERS: p_bu TYPE zbu_region-bu.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002. PARAMETERS: p_del TYPE char1 AS CHECKBOX. PARAMETERS: p_doa TYPE char1 AS CHECKBOX. PARAMETERS: p_snd2rf TYPE char1 AS CHECKBOX. SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003. PARAMETERS: p_email TYPE char1 RADIOBUTTON GROUP g1. PARAMETERS: p_local TYPE char1 RADIOBUTTON GROUP g1 DEFAULT 'X'. PARAMETERS: p_server TYPE char1 RADIOBUTTON GROUP g1. PARAMETERS: p_folder TYPE char40 DEFAULT 'C:\Temp\'. *SELECTION-SCREEN COMMENT /4(50) text-004. SELECTION-SCREEN END OF BLOCK b3.
START-OF-SELECTION. PERFORM get_data. PERFORM build_excel_tat. IF p_email IS NOT INITIAL AND sy-batch IS NOT INITIAL. PERFORM send_email_tat. ELSE. PERFORM save_tat. ENDIF. PERFORM build_excel. IF p_email IS NOT INITIAL AND sy-batch IS NOT INITIAL. PERFORM send_email. ELSE. PERFORM save_pc. ENDIF. *&---------------------------------------------------------------------* *& Form get_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM get_data. DATA lv_skip TYPE xfeld. CLEAR lv_skip. IF p_bu IS NOT INITIAL. PERFORM get_kunnr. ENDIF. IF p_local IS NOT INITIAL. * lv_skip = 'X'. ENDIF.
SELECT * FROM dd07t INTO TABLE gt_dd07t WHERE domname = 'ZS3N_DOM_NOTIF_STATUS' AND ddlanguage = 'E'. IF sy-subrc NE 0. *No data found ENDIF.
ENDFORM. "get_data
*&---------------------------------------------------------------------* *& Form build_excel_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM build_excel_tat.
DATA: gt_output TYPE TABLE OF ty_output, gs_output TYPE ty_output.
DATA: lt_st_tat TYPE TABLE OF zs3n_st_tat_report. lt_st_tat[] = gt_st_tat[].
SORT lt_st_tat BY qmnum. DELETE ADJACENT DUPLICATES FROM lt_st_tat COMPARING qmnum.
CONCATENATE gs_output-qmnum gs_output-cust_name gs_output-cust_phone gs_output-erdat gs_output-ssd_id gs_output-s2rf_on gs_output-s2rf_at gs_output-req_id gs_output-req_id_on gs_output-req_id_at gs_output-rev_courier_id gs_output-rev_courier_name gs_output-rev_dock_no gs_output-cour_pick_on gs_output-cour_pick_at gs_output-rf_recv_on gs_output-rf_recv_at gs_output-under_rr_on gs_output-under_rr_at gs_output-rd_dispatch_on gs_output-rd_dispatch_at gs_output-fwd_req_id gs_output-fwd_created_on gs_output-fwd_created_at gs_output-fwd_courier_id gs_output-fwd_courier_name gs_output-fwd_docket_no gs_output-ssd_recv_date gs_output-ssd_recv_time gs_output-cust_delv_date gs_output-cust_delv_time gs_output-ssd_tat gs_output-cour_rl_tat gs_output-rf_tat gs_output-cour_fl_tat gs_output-fault_cod gs_output-action_txt gs_output-curr_st gs_output-kurztext gs_output-pcba_req_on INTO gs_attachment SEPARATED BY gc_tab. IF p_email IS NOT INITIAL. CONCATENATE gc_cret gs_attachment INTO gs_attachment. ENDIF. APPEND gs_attachment TO gt_attachment.
CLEAR gs_attachment. CONCATENATE gc_cret gs_attachment INTO gs_attachment. APPEND gs_attachment TO gt_attachment.
APPEND gs_output TO gt_output.
CLEAR gs_attachment. SORT lt_st_tat BY qmnum part_cons. DELETE ADJACENT DUPLICATES FROM lt_st_tat COMPARING qmnum part_cons. LOOP AT lt_st_tat INTO gs_st_tat. CLEAR gs_output. MOVE-CORRESPONDING gs_st_tat TO gs_output. WRITE gs_st_tat-cname TO gs_output-cname. WRITE gs_st_tat-kunum TO gs_output-kunum. WRITE gs_st_tat-qmnum TO gs_output-qmnum. WRITE gs_st_tat-call_type TO gs_output-call_type. WRITE gs_st_tat-mapar TO gs_output-mapar. WRITE gs_st_tat-cust_name TO gs_output-cust_name. WRITE gs_st_tat-cust_phone TO gs_output-cust_phone. WRITE gs_st_tat-erdat TO gs_output-erdat. WRITE gs_st_tat-req_id TO gs_output-req_id. WRITE gs_st_tat-req_id_on TO gs_output-req_id_on. WRITE gs_st_tat-req_id_at TO gs_output-req_id_at. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_req_id. WRITE gs_st_tat-fwd_created_on TO gs_output-fwd_req_id_on. WRITE gs_st_tat-warranty TO gs_output-warranty. WRITE gs_st_tat-model TO gs_output-model. WRITE gs_st_tat-call_type TO gs_output-call_type. WRITE gs_st_tat-branch TO gs_output-branch . WRITE gs_st_tat-asm_name TO gs_output-asm_name. WRITE gs_st_tat-bucket_stat TO gs_output-bucket_stat . WRITE gs_st_tat-s2rf_at TO gs_output-s2rf_at. WRITE gs_st_tat-ssd_id TO gs_output-ssd_id . WRITE gs_st_tat-ssd_name TO gs_output-ssd_name. WRITE gs_st_tat-bztxt TO gs_output-bztxt. WRITE gs_st_tat-regio TO gs_output-regio. WRITE gs_st_tat-bezei TO gs_output-bezei. WRITE gs_st_tat-ort01 TO gs_output-ort01.
WRITE gs_st_tat-bu TO gs_output-bu. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_req_id. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_created_on. WRITE gs_st_tat-fwd_created_at TO gs_output-fwd_created_at. WRITE gs_st_tat-courier_id TO gs_output-rev_courier_id. WRITE gs_st_tat-courier_name TO gs_output-rev_courier_name. WRITE gs_st_tat-docket_number TO gs_output-rev_dock_no. WRITE gs_st_tat-cour_pick_on TO gs_output-cour_pick_on. WRITE gs_st_tat-cour_pick_at TO gs_output-cour_pick_at. WRITE gs_st_tat-rf_recv_on TO gs_output-rf_recv_on. WRITE gs_st_tat-rf_recv_at TO gs_output-rf_recv_at. WRITE gs_st_tat-under_rr_on TO gs_output-under_rr_on. WRITE gs_st_tat-under_rr_at TO gs_output-under_rr_at. WRITE gs_st_tat-rd_dispatch_on TO gs_output-rd_dispatch_on. WRITE gs_st_tat-rd_dispatch_at TO gs_output-rd_dispatch_at. WRITE gs_st_tat-fwd_created_on TO gs_output-fwd_created_on. WRITE gs_st_tat-fwd_created_at TO gs_output-fwd_created_at. WRITE gs_st_tat-fwd_courier_id TO gs_output-fwd_courier_id. WRITE gs_st_tat-fwd_courier_name TO gs_output-fwd_courier_name. WRITE gs_st_tat-fwd_docket_no TO gs_output-fwd_docket_no. WRITE gs_st_tat-ssd_recv_date TO gs_output-ssd_recv_date. WRITE gs_st_tat-cust_delv_date TO gs_output-cust_delv_date. WRITE gs_st_tat-cust_delv_time TO gs_output-cust_delv_time. WRITE gs_st_tat-fault_cod TO gs_output-fault_cod. WRITE gs_st_tat-action_txt TO gs_output-action_txt. WRITE gs_st_tat-ssd_tat TO gs_output-ssd_tat. WRITE gs_st_tat-cour_rl_tat TO gs_output-cour_rl_tat. WRITE gs_st_tat-rf_tat TO gs_output-rf_tat. WRITE gs_st_tat-cour_fl_tat TO gs_output-cour_fl_tat. WRITE gs_st_tat-stndby_issued TO gs_output-stndby_issued. IF gs_st_tat-stndby_issued IS INITIAL. gs_output-stndby_issued = 'No'. ELSE. gs_output-stndby_issued = 'Yes'. ENDIF. WRITE gs_st_tat-stndby_model TO gs_output-stndby_model. WRITE gs_st_tat-stndby_imei TO gs_output-stndby_imei. WRITE gs_st_tat-lava_cust_tat TO gs_output-lava_cust_tat. WRITE gs_st_tat-part_code TO gs_output-part_code. WRITE gs_st_tat-part_desc TO gs_output-part_desc. WRITE gs_st_tat-cfa_stock TO gs_output-cfa_stock. WRITE gs_st_tat-mnoi_stock TO gs_output-mnoi_stock. WRITE gs_st_tat-asp_stock TO gs_output-asp_stock. WRITE gs_st_tat-part_cons TO gs_output-part_consumed. WRITE gs_st_tat-deviceid TO gs_output-deviceid. WRITE gs_st_tat-kurztext TO gs_output-kurztext. WRITE gs_st_tat-pcba_req_on TO gs_output-pcba_req_on. WRITE gs_st_tat-s2rf_on TO gs_output-s2rf_on.
READ TABLE gt_dd07t INTO gs_dd07t WITH KEY domvalue_l = gs_st_tat- notifi_status. IF sy-subrc = 0. WRITE gs_dd07t-ddtext TO gs_output-curr_st. ENDIF. * WRITE gs_st_tat-notifi_status TO gs_output-curr_st. WRITE gs_st_tat-fwd_req_id TO gs_output-fwd_req_id. WRITE gs_st_tat-courier_id TO gs_output-courier_id. WRITE gs_st_tat-ssd_recv_time TO gs_output-ssd_recv_time. WRITE gs_st_tat-kurztext TO gs_output-kurztext. WRITE gs_st_tat-pcba_req_on TO gs_output-pcba_req_on. CONCATENATE gs_output-qmnum gs_output-cust_name gs_output-cust_phone gs_output-erdat gs_output-ssd_id gs_output-s2rf_on gs_output-s2rf_at gs_output-req_id gs_output-req_id_on gs_output-req_id_at gs_output-rev_courier_id gs_output-rev_courier_name gs_output-rev_dock_no gs_output-cour_pick_on gs_output-cour_pick_at gs_output-rf_recv_on gs_output-rf_recv_at gs_output-under_rr_on gs_output-under_rr_at gs_output-rd_dispatch_on gs_output-rd_dispatch_at gs_output-fwd_req_id gs_output-fwd_created_on gs_output-fwd_created_at gs_output-fwd_courier_id gs_output-fwd_courier_name gs_output-fwd_docket_no gs_output-ssd_recv_date gs_output-ssd_recv_time gs_output-cust_delv_date gs_output-cust_delv_time gs_output-ssd_tat gs_output-cour_rl_tat gs_output-rf_tat gs_output-cour_fl_tat gs_output-fault_cod gs_output-action_txt gs_output-curr_st gs_output-kurztext gs_output-pcba_req_on INTO gs_attachment SEPARATED BY gc_tab. IF p_email IS NOT INITIAL. CONCATENATE gc_cret gs_attachment INTO gs_attachment. ENDIF. APPEND gs_attachment TO gt_attachment. ENDLOOP.
LOOP AT gt_attachment INTO gs_attachment. CONCATENATE gv_buffer gs_attachment INTO gv_buffer. ENDLOOP.
DO. gs_mess_att = gv_buffer. APPEND gs_mess_att TO gt_mess_att. SHIFT gv_buffer LEFT BY 255 PLACES. IF gv_buffer IS INITIAL. EXIT. ENDIF. ENDDO. ENDFORM. "build_excel_tat
*&---------------------------------------------------------------------* *& Form send_email_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM send_email_tat. DATA lv_mtype TYPE zemail_1-mtype.
IF p_bu IS NOT INITIAL. CONCATENATE '1' p_bu(2) INTO lv_mtype. ELSE. lv_mtype = 'SCT'. ENDIF. IF p_snd2rf IS NOT INITIAL. lv_mtype = 'SRF'. ENDIF. SELECT * FROM zemail_1 INTO TABLE gt_mail WHERE mtype = lv_mtype .
PERFORM populate_message_table_tat. IF gt_mail[] IS NOT INITIAL. LOOP AT gt_mail INTO gs_mail. CLEAR gs_receivers. gs_receivers-receiver = gs_mail-mail. gs_receivers-rec_type = 'U'. gs_receivers-com_type = 'INT'. gs_receivers-notif_del = 'X'. gs_receivers-notif_ndel = 'X'. gs_receivers-express = 'X'. APPEND gs_receivers TO gt_receivers. ENDLOOP. ENDIF.
*&---------------------------------------------------------------------* *& Form populate_message_table_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM populate_message_table_tat. APPEND 'Dear All' TO gt_message. APPEND ' ' TO gt_message. APPEND 'Please find the SC TAT Analysis Report attached herewith.' TO gt_me ssage. APPEND ' ' TO gt_message. APPEND ' ' TO gt_message. APPEND 'Regards' TO gt_message. APPEND ' ' TO gt_message. APPEND 'LAVA ERP Team' TO gt_message. APPEND ' ' TO gt_message. APPEND 'N.B.: This is system generated mail and in case of any clarificatio n please contact SAP Team.' TO gt_message. ENDFORM. "populate_message_table_tat
*&---------------------------------------------------------------------* *& Form send_email_message_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM send_email_message_tat. gv_format = 'XLS'. gv_attdescription = 'SC TAT Analysis Report'.
* Fill the document data. READ TABLE gt_mess_att INTO gs_mess_att INDEX gv_cnt. gv_doc_data-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN( gs_mess_att ).
* Populate the subject/generic message attributes gv_doc_data-obj_langu = sy-langu. gv_doc_data-obj_name = 'SAPRPT'. WRITE sy-datum TO gv_doc_data-obj_descr.
gv_doc_data-sensitivty = 'F'. IF p_bu IS INITIAL. IF p_snd2rf IS NOT INITIAL. CONCATENATE 'SC TAT Ana. Rep. - ' gv_doc_data- obj_descr ' for Repair Factory' INTO gv_doc_data- obj_descr SEPARATED BY space. ELSE. CONCATENATE 'SC TAT Ana. Rep. - ' gv_doc_data- obj_descr INTO gv_doc_data-obj_descr SEPARATED BY space. ENDIF. ELSE. CONCATENATE 'SC TAT Ana. Rep. - ' gv_doc_data- obj_descr ' for ' p_bu INTO gv_doc_data-obj_descr SEPARATED BY space. ENDIF. IF gt_mess_att[] IS NOT INITIAL. CLEAR gs_mess_att. REFRESH gt_attachment. gt_attachment[] = gt_mess_att[]. ENDIF.
* Describe the body of the message CLEAR: gs_packing_list, gt_packing_list[]. gs_packing_list-transf_bin = space. gs_packing_list-head_start = 1. gs_packing_list-head_num = 0. gs_packing_list-body_start = 1. DESCRIBE TABLE gt_message LINES gs_packing_list-body_num. gs_packing_list-doc_type = 'RAW'. APPEND gs_packing_list TO gt_packing_list.
* Store function module return code gv_error = sy-subrc. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno WITH sy-msgv1. ELSE. cl_os_transaction_end_notifier=>raise_commit_requested( ). CALL FUNCTION 'DB_COMMIT'. cl_os_transaction_end_notifier=>raise_commit_finished( ). ENDIF.
ENDFORM. "send_email_message_tat
*&---------------------------------------------------------------------* *& Form initiate_mail_execute_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM initiate_mail_execute_tat. WAIT UP TO 1 SECONDS. IF gv_error EQ 0. SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. ENDIF. ENDFORM. "
*&---------------------------------------------------------------------* *& Form build_excel *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM build_excel. DATA: gt_output TYPE TABLE OF ty_output, gs_output TYPE ty_output. CLEAR: gt_attachment[],gv_buffer, gt_mess_att.
SORT gt_st_tat BY qmnum part_code. DELETE ADJACENT DUPLICATES FROM gt_st_tat COMPARING qmnum part_code.
INTO gs_attachment SEPARATED BY gc_tab. IF p_email IS NOT INITIAL. CONCATENATE gc_cret gs_attachment INTO gs_attachment. ENDIF. APPEND gs_attachment TO gt_attachment.
CLEAR gs_attachment. CONCATENATE gc_cret gs_attachment INTO gs_attachment. APPEND gs_attachment TO gt_attachment.
APPEND gs_output TO gt_output.
CLEAR: gs_attachment, gs_st_tat. LOOP AT gt_st_tat INTO gs_st_tat. CLEAR gs_output. WRITE gs_st_tat-cname TO gs_output-cname. WRITE gs_st_tat-kunum TO gs_output-kunum. WRITE gs_st_tat-qmnum TO gs_output-qmnum. WRITE gs_st_tat-call_type TO gs_output-call_type. WRITE gs_st_tat-mapar TO gs_output-mapar. WRITE gs_st_tat-erdat TO gs_output-erdat. WRITE gs_st_tat-warranty TO gs_output-warranty. WRITE gs_st_tat-model TO gs_output-model. WRITE gs_st_tat-branch TO gs_output-branch . WRITE gs_st_tat-asm_name TO gs_output-asm_name. WRITE gs_st_tat-bucket_stat TO gs_output-bucket_stat. * *****************code added by vaibhav for adding new status "Send to RF" o n 8.8.2014************************** * PERFORM new_status. * data it_mas TYPE ZS3N_T_NOTIF_MAS. *select single * from ZS3N_T_NOTIF_MAS into it_mas where * QMNUM eq gs_output-QMNUM. * if sy-subrc eq 0 and it_mas-req_id is INITIAL and it_mas-s2rf = 'X' . * WRITE 'Send to RF' TO gs_output-bucket_stat . * ELSEIF it_mas-req_id is not INITIAL and it_mas-s2rf = 'X' . * WRITE 'Pickup Requested' TO gs_output-bucket_stat . * endif. * ************************************************************************ **************************
WRITE gs_st_tat-bu TO gs_output-bu. WRITE gs_st_tat-fault_cod TO gs_output-fault_cod. WRITE gs_st_tat-action_txt TO gs_output-action_txt. WRITE gs_st_tat-ssd_tat TO gs_output-ssd_tat.
IF gs_st_tat-stndby_issued IS INITIAL. gs_output-stndby_issued = 'No'. ELSE. gs_output-stndby_issued = 'Yes'. ENDIF. WRITE gs_st_tat-stndby_model TO gs_output-stndby_model. WRITE gs_st_tat-stndby_imei TO gs_output-stndby_imei. WRITE gs_st_tat-lava_cust_tat TO gs_output-lava_cust_tat. WRITE gs_st_tat-part_code TO gs_output-part_code. WRITE gs_st_tat-part_desc TO gs_output-part_desc. WRITE gs_st_tat-cfa_stock TO gs_output-cfa_stock. WRITE gs_st_tat-mnoi_stock TO gs_output-mnoi_stock. WRITE gs_st_tat-asp_stock TO gs_output-asp_stock. WRITE gs_st_tat-part_cons TO gs_output-part_consumed. WRITE gs_st_tat-deviceid TO gs_output-deviceid. WRITE gs_st_tat-kurztext TO gs_output-kurztext. WRITE gs_st_tat-pcba_req_on TO gs_output-pcba_req_on.
CONCATENATE gs_output-cname gs_output-kunum gs_output-qmnum gs_output-call_type gs_output-mapar gs_output-erdat gs_output-warranty gs_output-model gs_output-branch gs_output-asm_name gs_output-bucket_stat gs_output-bu gs_output-fault_cod gs_output-action_txt gs_output-stndby_issued gs_output-stndby_model gs_output-stndby_imei gs_output-lava_cust_tat gs_output-part_code gs_output-part_desc gs_output-cfa_stock gs_output-mnoi_stock gs_output-asp_stock gs_output-part_consumed gs_output-deviceid gs_output-kurztext gs_output-pcba_req_on INTO gs_attachment SEPARATED BY gc_tab. IF p_email IS NOT INITIAL. CONCATENATE gc_cret gs_attachment INTO gs_attachment. ENDIF. APPEND gs_attachment TO gt_attachment. ENDLOOP.
LOOP AT gt_attachment INTO gs_attachment. CONCATENATE gv_buffer gs_attachment INTO gv_buffer. ENDLOOP.
CLEAR: gs_mess_att, gt_mess_att[]. DO. gs_mess_att = gv_buffer. APPEND gs_mess_att TO gt_mess_att. SHIFT gv_buffer LEFT BY 255 PLACES. IF gv_buffer IS INITIAL. EXIT. ENDIF. ENDDO. ENDFORM. "build_excel
*&---------------------------------------------------------------------* *& Form send_email *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM send_email. DATA lv_mtype TYPE zemail_1-mtype.
IF p_bu IS NOT INITIAL. CONCATENATE '1' p_bu(2) INTO lv_mtype. ELSE. lv_mtype = 'SCT'. ENDIF. IF p_snd2rf IS NOT INITIAL. lv_mtype = 'SRF'. ENDIF.
CLEAR gt_mail[]. SELECT * FROM zemail_1 INTO TABLE gt_mail WHERE mtype = lv_mtype.
PERFORM populate_message_table. IF gt_mail[] IS NOT INITIAL. LOOP AT gt_mail INTO gs_mail. CLEAR gs_receivers. gs_receivers-receiver = gs_mail-mail. gs_receivers-rec_type = 'U'. gs_receivers-com_type = 'INT'. gs_receivers-notif_del = 'X'. gs_receivers-notif_ndel = 'X'. gs_receivers-express = 'X'. APPEND gs_receivers TO gt_receivers. ENDLOOP. ENDIF.
*&---------------------------------------------------------------------* *& Form populate_message_table *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM populate_message_table. CLEAR gt_message[]. APPEND 'Dear All' TO gt_message. APPEND ' ' TO gt_message. APPEND 'Please find the Pending Call Analysis Report attached herewith.' TO gt_message. APPEND ' ' TO gt_message. APPEND ' ' TO gt_message. APPEND 'Regards' TO gt_message. APPEND ' ' TO gt_message. APPEND 'LAVA ERP Team' TO gt_message. APPEND ' ' TO gt_message. APPEND 'N.B.: This is system generated mail and in case of any clarificatio n please contact SAP Team.' TO gt_message. ENDFORM. "populate_message_table
*&---------------------------------------------------------------------* *& Form send_email_message *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM send_email_message. gv_format = 'XLS'. gv_attdescription = 'Pending Call Analysis Report'.
CLEAR gv_doc_data. * Fill the document data. READ TABLE gt_mess_att INTO gs_mess_att INDEX gv_cnt. gv_doc_data-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN( gs_mess_att ).
* Populate the subject/generic message attributes gv_doc_data-obj_langu = sy-langu. gv_doc_data-obj_name = 'SAPRPT'. WRITE sy-datum TO gv_doc_data-obj_descr. * CONCATENATE 'Pending Call Analysis Report - ' gv_doc_data- obj_descr INTO gv_doc_data-obj_descr. gv_doc_data-sensitivty = 'F'. IF p_bu IS INITIAL. IF p_snd2rf IS NOT INITIAL. CONCATENATE 'Pend. Call Ana. Rep. - ' gv_doc_data- obj_descr ' for Repair Factory' INTO gv_doc_data- obj_descr SEPARATED BY space. ELSE. CONCATENATE 'Pend. Call Ana. Rep. - ' gv_doc_data- obj_descr INTO gv_doc_data-obj_descr SEPARATED BY space. ENDIF. ELSE. CONCATENATE 'Pend. Call Ana. Rep. - ' gv_doc_data- obj_descr ' for ' p_bu INTO gv_doc_data-obj_descr SEPARATED BY space. ENDIF. IF gt_mess_att[] IS NOT INITIAL. CLEAR gs_mess_att. REFRESH gt_attachment. gt_attachment[] = gt_mess_att[]. ENDIF.
* Describe the body of the message CLEAR: gs_packing_list, gt_packing_list[]. gs_packing_list-transf_bin = space. gs_packing_list-head_start = 1. gs_packing_list-head_num = 0. gs_packing_list-body_start = 1. DESCRIBE TABLE gt_message LINES gs_packing_list-body_num. gs_packing_list-doc_type = 'RAW'. APPEND gs_packing_list TO gt_packing_list.
* Store function module return code gv_error = sy-subrc. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno WITH sy-msgv1. ELSE. cl_os_transaction_end_notifier=>raise_commit_requested( ). CALL FUNCTION 'DB_COMMIT'. cl_os_transaction_end_notifier=>raise_commit_finished( ). ENDIF.
ENDFORM. "send_email_message
*&---------------------------------------------------------------------* *& Form initiate_mail_execute_program *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM initiate_mail_execute_program. WAIT UP TO 1 SECONDS. IF gv_error EQ 0. SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. ENDIF. ENDFORM. "initiate_mail_execute_program
*&---------------------------------------------------------------------* *& Form get_kunnr *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM get_kunnr. TYPES: BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, regio TYPE kna1-regio, bu TYPE zbu_region-bu, END OF ty_kna1. DATA: lt_kna1 TYPE TABLE OF ty_kna1, ls_kna1 TYPE ty_kna1.
IF p_bu IS NOT INITIAL. SELECT kn~kunnr kn~regio 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 WHERE tt~spras EQ sy-langu AND tt~land1 EQ kn~land1 AND bu~bu = p_bu. IF sy-subrc NE 0. *No data found ENDIF.
LOOP AT lt_kna1 INTO ls_kna1. gs_kunnr-option = 'EQ'. gs_kunnr-sign = 'I'. gs_kunnr-low = ls_kna1-kunnr. APPEND gs_kunnr TO gt_kunnr. ENDLOOP. ENDIF.
ENDFORM. "get_kunnr
*&---------------------------------------------------------------------* *& Form save_tat *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM save_tat. DATA lv_date TYPE char10. DATA lv_time TYPE char10. DATA lv_filename TYPE string.
WRITE sy-datum TO lv_date. lv_time = sy-uzeit . CONCATENATE p_folder 'SC TAT' lv_date '_' lv_time '.XLS' INTO lv_filename. IF p_server IS INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = lv_filename TABLES data_tab = gt_attachment EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 separator_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 OTHERS = 22. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ELSE. OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. IF sy-subrc = 0 . LOOP AT gt_attachment INTO gs_attachment. TRANSFER gs_attachment TO lv_filename. ENDLOOP. CLOSE DATASET lv_filename. ENDIF. ENDIF. ENDFORM. "save_tat
*&---------------------------------------------------------------------* *& Form save_pc *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM save_pc. DATA lv_date TYPE char10. DATA lv_time TYPE char10.
DATA lv_filename TYPE string.
WRITE sy-datum TO lv_date. lv_time = sy-uzeit . CONCATENATE p_folder 'Pending Calls' lv_date '_' lv_time '.XLS' INTO lv_fil ename.
IF p_server IS INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = lv_filename TABLES data_tab = gt_attachment EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 separator_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 OTHERS = 22. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ELSE. OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. IF sy-subrc = 0 . LOOP AT gt_attachment INTO gs_attachment. TRANSFER gs_attachment TO lv_filename. ENDLOOP. CLOSE DATASET lv_filename. ENDIF. ENDIF. ENDFORM. "save_pc *&---------------------------------------------------------------------* *& Form NEW_STATUS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* *FORM NEW_STATUS . * *ENDFORM. " NEW_STATUS