tat program

55
**&---------------------------------------------------------------------* *& Report Z_SC_TAT_REPORT_3 *& *&---------------------------------------------------------------------* *& 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 ,

Upload: deveshbabu

Post on 18-Jan-2016

16 views

Category:

Documents


1 download

DESCRIPTION

Tat

TRANSCRIPT

Page 1: TAT Program

**&---------------------------------------------------------------------**& Report  Z_SC_TAT_REPORT_3*&*&---------------------------------------------------------------------**& 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

Page 2: TAT Program

          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.srinivasan.          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,

Page 3: TAT Program

          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.

Page 4: TAT Program

**Variable for the Email functionalityDATA: 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.

Page 5: TAT Program

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' .

Page 6: TAT Program

    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.

  APPEND LINES OF s_kunnr TO gt_kunnr.

  CALL FUNCTION 'ZS3N_FM_GET_TAT_DETAIL3'    EXPORTING      im_delivered   = lv_delivered      im_doa_call    = p_doa      im_send_2_rf   = p_snd2rf      im_skip        = lv_skip      im_old         = p_old    TABLES      et_output_data = gt_st_tat      it_dates       = s_date      it_del_dt      = s_del_dt      it_req_id      = s_req_id      it_fwd_req_id  = s_fwd_rq      it_kunnr       = gt_kunnr      it_qmnum       = s_qmnum.

  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.

Page 7: TAT Program

  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.

  gs_output-rep_comp_dt = 'Repair Complete Date'.  gs_output-cust_intm_dt = 'Customer Intimation Date'.  gs_output-doa_remk = 'Reason for DOA'.  gs_output-action_txt = 'Action Code Desc'.  gs_output-action_cod = 'Action Code'.  gs_output-rf_action_cod = 'RF - Action Code'.  gs_output-asm_name = 'ASO/ASM Name'.  gs_output-busm = 'BUSM'.  gs_output-busm_name = 'BUSM Name'.  gs_output-spl_doa_no = 'Special DOA Number'.  gs_output-spl_doa_on = 'Special DOA Approved On'.  gs_output-doa_pgr_date = 'DOA PGR Date'.  gs_output-asp_stock = 'Service Center Stock'.  gs_output-bezei = 'State'.  gs_output-branch = 'Branch Name'.  gs_output-bu = 'BU Name'.  gs_output-bucket_stat = 'Workorder Status'.*  gs_output-sub_status = 'Workorder Sub Status'.  gs_output-age = 'Ageing'.  gs_output-bztxt = 'District'.  gs_output-call_type = 'Call Type'.  gs_output-valid = 'Valid/Invalid'.  gs_output-doa_type = 'DOA Type'.  gs_output-cfa_stock = 'CFA Stock'.  gs_output-cname = 'ASP Name'.  gs_output-cour_fl_tat = 'RF Call - Forward TAT'.  gs_output-cour_pick_at = 'Courier Picked Time'.  gs_output-cour_pick_on = 'Courier Picked Date'.  gs_output-cour_rl_tat = 'RF Call - Reverse TAT'.  gs_output-courier_id = 'Forward Courier Id'.  gs_output-curr_st = 'Current Status'.  gs_output-cust_delv_date = 'Delivery Date'.  gs_output-cust_delv_time = 'Delivered to Customer Time'.  gs_output-cust_name = 'Customer Name'.  gs_output-cust_phone = 'Customer Contact Number'.  gs_output-deviceid = 'Engineer Remarks'.  gs_output-rf_deviceid = 'RF - Engineer Remarks'.  gs_output-afih_deviceid = 'Device Id'.  gs_output-erdat = 'Creation Date'.  gs_output-fault_cod = 'Fault Code'.  gs_output-rf_fault_cod = 'Fault Code'.  gs_output-fault_txt = 'Fault Code Desc'.  gs_output-fwd_courier_id = 'Forward courier ID'.  gs_output-fwd_courier_name = 'Forward courier name'.  gs_output-fwd_created_at = 'Forward Challan TIme'.

Page 8: TAT Program

  gs_output-fwd_created_on = 'Forward Challan Date'.  gs_output-fwd_docket_no = 'Forward Docket No.'.  gs_output-fwd_req_id = 'Forward Challan No.'.  gs_output-fwd_req_id_on = 'FWD Pick Req.Date'.  gs_output-kunum = 'ASP Code'.  gs_output-kurztext = 'Symptom Code Description'.  gs_output-sym_code = 'Symptom Code'.  gs_output-lava_cust_tat = 'Customer TAT'.  gs_output-repair_tat = 'Repair TAT'.  gs_output-mapar = 'IMEI Number'.  gs_output-sernr = 'Serial Number'.  gs_output-serge = 'Secondary IMEI'.  gs_output-remark = 'Problem Reported By Customer'.  gs_output-mnoi_stock = 'MNOI Stock'.  gs_output-model = 'Model'.  gs_output-ort01 = 'City'.  gs_output-part_code = 'Part Code'.  gs_output-part_desc = 'Part Description'.  gs_output-part_consumed = 'RF - Part Consumed'.  gs_output-part_desc = 'Part Description'.  gs_output-pcba_req_on = 'Part Requisition Date'.  gs_output-qmnum = 'Workorder Number'.  gs_output-rd_dispatch_at = 'Ready for Dispatch Time'.  gs_output-rd_dispatch_on = 'Ready for Dispatch Date'.  gs_output-regio = 'State'.  gs_output-req_id = 'Reverse Challan No.'.  gs_output-req_id_at = 'Reverse Challan Time'.  gs_output-req_id_on = 'Reverse Challan Date'.  gs_output-rev_courier_id = 'Reverse Courier ID'.  gs_output-rev_courier_name = 'Reverse Courier Name'.  gs_output-rev_dock_no = 'Reverse Docket No'.  gs_output-rf_recv_at = 'RF Received Time'.  gs_output-rf_recv_on = 'RF Received Date'.  gs_output-rf_tat = 'RF Call - RF TAT'.  gs_output-rf_call = 'RF Call'.  gs_output-s2rf_at = 'Sent To RF Time'.  gs_output-s2rf_on = 'Send To RF Date'.  gs_output-ssd_id = 'Service Centre Code'.  gs_output-ssd_name = 'Service Centre Name'.  gs_output-ssd_recv_date = 'Received at SSD Date'.  gs_output-ssd_recv_time = 'Received at SSD Time'.  gs_output-ssd_tat = 'RF Call SSD TAT'.  gs_output-stndby_imei = 'Issued IMEI'.  gs_output-stndby_issued = 'Standy by issued'.  gs_output-stndby_model = 'Issued model'.  gs_output-stndby_issued_on = 'Standy by issued On'.  gs_output-under_rr_at = ' Under Repair Time'.  gs_output-under_rr_on = 'Under Repair Date'.  gs_output-warranty = 'Warranty'.  gs_output-pcba_rep = 'Replacement'.  gs_output-rf_pcba_rep = 'RF - Replacement'.  gs_output-pcba_rep_model = 'Replacement Model'.

Page 9: TAT Program

  gs_output-rf_pcba_rep_model = 'RF - Replacement Model'.  gs_output-pcba_rep_imei = 'Replacement IMEI'.  gs_output-rf_pcba_rep_imei = 'RF - Replacement IMEI'.  gs_output-pcba_rep_date = 'Replacement Date'.  gs_output-rf_pcba_rep_date = 'RF - Replacement Date'.  gs_output-els_status = 'ELS Status'.

  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

Page 10: TAT Program

              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

Page 11: TAT Program

              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_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-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.

Page 12: TAT Program

    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.

Page 13: TAT Program

    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,

Page 14: TAT Program

              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

Page 15: TAT Program

                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

Page 16: TAT Program

                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

Page 17: TAT Program

*----------------------------------------------------------------------*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.

  PERFORM send_email_message_tat.  PERFORM initiate_mail_execute_tat.ENDFORM.                    "send_email_tat

*&---------------------------------------------------------------------**&      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_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 clarification 

Page 18: TAT Program

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.

Page 19: TAT Program

  gs_packing_list-transf_bin = 'X'.  gs_packing_list-head_start = 1.  gs_packing_list-head_num   = 1.  gs_packing_list-body_start = 1.  DESCRIBE TABLE gt_attachment LINES gs_packing_list-body_num.  gs_packing_list-doc_type   =  gv_format.  gs_packing_list-obj_descr  =  gv_attdescription.  gs_packing_list-obj_name   =  gv_attfilename.  gs_packing_list-doc_size   =  gs_packing_list-body_num * 255 * 2.  APPEND gs_packing_list TO gt_packing_list.

* Call the FM to post the message to SAPMAIL

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'    EXPORTING      document_data              = gv_doc_data      put_in_outbox              = 'X'      sender_address             = '[email protected]'      sender_address_type        = 'INT'      commit_work                = 'X'    IMPORTING      sent_to_all                = gv_sent_all    TABLES      packing_list               = gt_packing_list[]      contents_bin               = gt_attachment[]      contents_txt               = gt_message[]      receivers                  = gt_receivers[]    EXCEPTIONS      too_many_receivers         = 1      document_not_sent          = 2      document_type_not_exist    = 3      operation_no_authorization = 4      parameter_error            = 5      x_error                    = 6      enqueue_error              = 7      OTHERS                     = 8.

* 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

Page 20: TAT Program

*&---------------------------------------------------------------------**       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

Page 21: TAT Program

        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

Page 22: TAT Program

*        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'.

Page 23: TAT Program

      gs_kunnr-low = ls_kna1-kunnr.      APPEND gs_kunnr TO gt_kunnr.    ENDLOOP.  ENDIF.

ENDFORM.                    "get_kunnr

*********************Second program*************************

**&---------------------------------------------------------------------**& 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,

Page 24: TAT Program

          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.srinivasan.          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

Page 25: TAT Program

          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 functionalityDATA: 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,

Page 26: TAT Program

      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.

Page 27: TAT Program

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.

  APPEND LINES OF s_kunnr TO gt_kunnr.

  CALL FUNCTION 'ZS3N_FM_GET_TAT_DETAIL2'    EXPORTING      im_delivered   = p_del      im_doa_call    = p_doa      im_send_2_rf   = p_snd2rf      im_skip        = lv_skip    TABLES      et_output_data = gt_st_tat      it_dates       = s_date      it_req_id      = s_req_id      it_fwd_req_id  = s_fwd_rq      it_kunnr       = gt_kunnr      it_qmnum       = s_qmnum.

Page 28: TAT Program

  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.

  gs_output-cname     = 'ASP Name'.  gs_output-kunum     = 'ASP Code'.  gs_output-qmnum     = 'Workorder Number'.  gs_output-call_type = 'Call Type'.  gs_output-mapar     = 'IMEI Number'.  gs_output-cust_name = 'Customer Name'.  gs_output-cust_phone = 'Phone Number'.  gs_output-erdat     = 'Creation Date'.  gs_output-req_id = 'Pick Req.'.  gs_output-req_id_on = 'Pick Req. Date'.  gs_output-fwd_req_id = 'FWD Pick Req.'.  gs_output-fwd_req_id_on = 'FWD Pick Req. Date'.  gs_output-warranty    = 'Warranty'.  gs_output-model       = 'Model'.  gs_output-call_type = 'Call Type'.  gs_output-branch      = 'Branch'.  gs_output-asm_name    = 'ASM Name'.  gs_output-bucket_stat = 'Bucket Status'.  gs_output-s2rf_on = 'Send To RF Date'.  gs_output-s2rf_at = 'Sent to RF Time'.  gs_output-ssd_id = 'SSD ID'.  gs_output-ssd_name = 'SSD Name'.  gs_output-bztxt  = 'District'.  gs_output-regio  = 'State'.

Page 29: TAT Program

  gs_output-bezei  = 'State'.  gs_output-ort01  = 'City'.  gs_output-bu = 'BU Name'.  gs_output-req_id = 'Reverse Challan No.'.  gs_output-req_id_on = 'Rev. Cha Date'.  gs_output-req_id_at = 'Rev. Cha Time'.  gs_output-rev_courier_id     = 'Reverse Courier ID'.  gs_output-rev_courier_name = 'Reverse Courier Name'.  gs_output-rev_dock_no      = 'Reverse Docket No'.  gs_output-cour_pick_on     = 'Courier Pick on'.  gs_output-cour_pick_at     = 'Courier Pick At'.  gs_output-rf_recv_on       = 'RF Received on'.  gs_output-rf_recv_at       = 'RF Received Time'.  gs_output-under_rr_on      = 'Under Repair Date'.  gs_output-under_rr_at      = ' Under Repair Time'.  gs_output-rd_dispatch_on = 'Ready for Dispatch Date'.  gs_output-rd_dispatch_at = 'Ready for Dispatch on'.  gs_output-fwd_created_on = 'Forward Challan Date'.  gs_output-fwd_created_at = 'Forward Challan TIme'.  gs_output-fwd_courier_id   = 'Forward courier ID'.  gs_output-fwd_courier_name = 'Forward courier name'.  gs_output-fwd_docket_no    = 'Forward Docket No.'.  gs_output-ssd_recv_date    = 'Received at SSD Date'.  gs_output-cust_delv_date   = 'Delivered to Customer Date'.  gs_output-cust_delv_time   = 'Delivered to Customer Time'.  gs_output-fault_cod        = 'Fault Code'.  gs_output-action_txt       = 'Action Taken'.  gs_output-ssd_tat = 'RF Call SSD TAT'.  gs_output-cour_rl_tat = 'RF Call Reverse TAT'.  gs_output-rf_tat      = 'RF TAT'.  gs_output-cour_fl_tat = 'RF Call Forward TAT'.  gs_output-stndby_issued = 'Standy by issued'.  gs_output-stndby_model  = 'stand by model'.  gs_output-stndby_imei   = 'stand by imei'.  gs_output-lava_cust_tat = 'Lava Customer TAT'.  gs_output-part_code     = 'Part Code'.  gs_output-part_desc     = 'Part Description'.  gs_output-cfa_stock     = 'CFA Stock'.  gs_output-mnoi_stock    = 'MNOI Stock'.  gs_output-asp_stock    = 'ASP Stock'.  gs_output-part_consumed = 'Part Consumed'.  gs_output-deviceid      = 'Engineer Remarks'.  gs_output-curr_st  = 'Current Status'.  gs_output-courier_id = 'Forward Courier Id'.  gs_output-ssd_recv_time = 'Received at SSD Time'.  gs_output-kurztext      = 'Symptom Code'.  gs_output-pcba_req_on      = 'Spare Part Requested Date'.

  CONCATENATE gs_output-qmnum              gs_output-cust_name              gs_output-cust_phone              gs_output-erdat

Page 30: TAT Program

              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.

Page 31: TAT Program

    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.

Page 32: TAT Program

    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

Page 33: TAT Program

                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.

Page 34: TAT Program

  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.

  PERFORM send_email_message_tat.  PERFORM initiate_mail_execute_tat.ENDFORM.                    "send_email_tat

*&---------------------------------------------------------------------**&      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_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 clarification please contact SAP Team.' TO gt_message.ENDFORM.                    "populate_message_table_tat

Page 35: TAT Program

*&---------------------------------------------------------------------**&      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.

  gs_packing_list-transf_bin = 'X'.  gs_packing_list-head_start = 1.

Page 36: TAT Program

  gs_packing_list-head_num   = 1.  gs_packing_list-body_start = 1.  DESCRIBE TABLE gt_attachment LINES gs_packing_list-body_num.  gs_packing_list-doc_type   =  gv_format.  gs_packing_list-obj_descr  =  gv_attdescription.  gs_packing_list-obj_name   =  gv_attfilename.  gs_packing_list-doc_size   =  gs_packing_list-body_num * 255 * 2.  APPEND gs_packing_list TO gt_packing_list.

* Call the FM to post the message to SAPMAIL

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'    EXPORTING      document_data              = gv_doc_data      put_in_outbox              = 'X'      sender_address             = '[email protected]'      sender_address_type        = 'INT'      commit_work                = 'X'    IMPORTING      sent_to_all                = gv_sent_all    TABLES      packing_list               = gt_packing_list[]      contents_bin               = gt_attachment[]      contents_txt               = gt_message[]      receivers                  = gt_receivers[]    EXCEPTIONS      too_many_receivers         = 1      document_not_sent          = 2      document_type_not_exist    = 3      operation_no_authorization = 4      parameter_error            = 5      x_error                    = 6      enqueue_error              = 7      OTHERS                     = 8.

* 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

Page 37: TAT Program

*----------------------------------------------------------------------*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.

  gs_output-cname     = 'ASP Name'.  gs_output-kunum     = 'ASP Code'.  gs_output-qmnum     = 'Workorder Number'.  gs_output-call_type = 'Call Type'.  gs_output-mapar     = 'IMEI Number'.  gs_output-erdat     = 'Creation Date'.  gs_output-warranty    = 'Warranty'.  gs_output-model       = 'Model'.  gs_output-branch      = 'Branch'.  gs_output-asm_name    = 'ASM Name'.  gs_output-bucket_stat = 'Bucket Status'.  gs_output-bu = 'BU Name'.  gs_output-fault_cod        = 'Fault Code'.  gs_output-action_txt       = 'Action Taken'.  gs_output-stndby_issued = 'Standy by issued'.  gs_output-stndby_model  = 'stand by model'.  gs_output-stndby_imei   = 'stand by imei'.  gs_output-lava_cust_tat = 'Lava Customer TAT'.  gs_output-part_code     = 'Part Code'.  gs_output-part_desc     = 'Part Description'.  gs_output-cfa_stock     = 'CFA Stock'.  gs_output-mnoi_stock    = 'MNOI Stock'.  gs_output-asp_stock     = 'ASP Stock'.  gs_output-part_consumed = 'Part Consumed'.  gs_output-deviceid      = 'Engineer Remarks'.  gs_output-kurztext      = 'Symptom Code'.  gs_output-pcba_req_on      = 'Spare Part Requested Date'.

  CLEAR gs_attachment.

Page 38: TAT Program

  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.

  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 .

Page 39: TAT Program

    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" on 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

Page 40: TAT Program

     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.

Page 41: TAT Program

  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.

  PERFORM send_email_message.  PERFORM initiate_mail_execute_program.ENDFORM.                    "send_email

*&---------------------------------------------------------------------**&      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 clarification please contact SAP Team.' TO gt_message.ENDFORM.                    "populate_message_table

*&---------------------------------------------------------------------**&      Form  send_email_message*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM send_email_message.

Page 42: TAT Program

  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.

  gs_packing_list-transf_bin = 'X'.  gs_packing_list-head_start = 1.  gs_packing_list-head_num   = 1.  gs_packing_list-body_start = 1.  DESCRIBE TABLE gt_attachment LINES gs_packing_list-body_num.  gs_packing_list-doc_type   =  gv_format.  gs_packing_list-obj_descr  =  gv_attdescription.

Page 43: TAT Program

  gs_packing_list-obj_name   =  gv_attfilename.  gs_packing_list-doc_size   =  gs_packing_list-body_num * 255 * 2.  APPEND gs_packing_list TO gt_packing_list.

* Call the FM to post the message to SAPMAIL

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'    EXPORTING      document_data              = gv_doc_data      put_in_outbox              = 'X'      sender_address             = '[email protected]'      sender_address_type        = 'INT'      commit_work                = 'X'    IMPORTING      sent_to_all                = gv_sent_all    TABLES      packing_list               = gt_packing_list[]      contents_bin               = gt_attachment[]      contents_txt               = gt_message[]      receivers                  = gt_receivers[]    EXCEPTIONS      too_many_receivers         = 1      document_not_sent          = 2      document_type_not_exist    = 3      operation_no_authorization = 4      parameter_error            = 5      x_error                    = 6      enqueue_error              = 7      OTHERS                     = 8.

* 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.

Page 44: TAT Program

  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.

Page 45: TAT Program

  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*&---------------------------------------------------------------------*

Page 46: TAT Program

*       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_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.

Page 47: TAT Program

      ENDLOOP.      CLOSE DATASET lv_filename.    ENDIF.  ENDIF.ENDFORM.                    "save_pc*&---------------------------------------------------------------------**&      Form  NEW_STATUS*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------**FORM NEW_STATUS .**ENDFORM.                    " NEW_STATUS