Vous êtes sur la page 1sur 4

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

*& Report ZEXTRACT_TCS_AUSWERTUNG


*&---------------------------------------------------------------------*
* Program : ZEXTRACT_TCS_AUSWERTUNG
* Version : 1.00
* Developer : Vasudha Gandla (DVM32888)
* CRF : Digital Project
* Charm: 7000004576
* Transport : LI1K9C0UQJ
* Date : 16-May-2018
*----------------------------------------------------------------------*
* Title : Extract data from query - TCS_AUSWERTUNG
* Description : To extract data from query TCS_AUSWERTUNG and download
* the data on to the application server (AL11)
*&---------------------------------------------------------------------*

REPORT zextract_tcs_auswertung.

**& Type declarations


TYPES: BEGIN OF ty_output,
c1(45) TYPE c,
c2(45) TYPE c,
c3(45) TYPE c,
c4(45) TYPE c,
c5(45) TYPE c,
c6(45) TYPE c,
c7(45) TYPE c,
c8(45) TYPE c,
c9(45) TYPE c,
c10(45) TYPE c,
c11(45) TYPE c,
c12(45) TYPE c,
c13(45) TYPE c,
c14(45) TYPE c,
c15(45) TYPE c,
c16(45) TYPE c,
c17(45) TYPE c,
c18(45) TYPE c,
c19(45) TYPE c,
c20(45) TYPE c,
c21(45) TYPE c,
c22(45) TYPE c,
c23(45) TYPE c,
c24(45) TYPE c,
c25(45) TYPE c,
c26(45) TYPE c,
c27(45) TYPE c,
c28(45) TYPE c,
END OF ty_output.

**& Data declarations


DATA: ta_output TYPE TABLE OF ty_output,
wa_output TYPE ty_output,
tp_sysid TYPE sy-sysid,
tp_date TYPE dats.

**& Selection screen


SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
PARAMETER: rb_initl RADIOBUTTON GROUP rg1.
PARAMETER: rb_delta RADIOBUTTON GROUP rg1.
PARAMETER: rb_other RADIOBUTTON GROUP rg1.
SELECT-OPTIONS: so_datum FOR sy-datum NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK blk1.

INITIALIZATION.
*** Store the Name of the SAP System
tp_sysid = sy-sysid.

**& Selection screen validations


AT SELECTION-SCREEN.
IF rb_other EQ 'X' AND so_datum[] IS INITIAL.
MESSAGE 'Please specify required other dates'(001) TYPE 'E'.
ENDIF.

START-OF-SELECTION.
*** Initial run : Extract data for last 1 year
IF rb_initl EQ abap_true.
CLEAR : tp_date.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = sy-datum
days = '00'
months = '00'
signum = '-'
years = '01'
IMPORTING
calc_date = tp_date.

ELSEIF rb_delta EQ abap_true.


*** Fetch data for last one day - Delta extract
tp_date = sy-datum - 1.

ELSEIF rb_other EQ abap_true.


*** Others : Extract data as per user selection
ENDIF.

**& Execute query and get data


PERFORM get_data.
**& Prepare data for output on AL11
PERFORM data_output.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* Subroutine to execute query and get data
*----------------------------------------------------------------------*
FORM get_data.

DATA : ta_listobj TYPE abaplist OCCURS 0 WITH HEADER LINE.


DATA: BEGIN OF ta_ascilist OCCURS 0,
line(2000).
DATA: END OF ta_ascilist.

IF rb_other NE 'X'.
so_datum-sign = 'I'.
so_datum-option = 'BT'.
so_datum-low = tp_date.
so_datum-high = sy-datum.
APPEND so_datum.
ENDIF.

CALL FUNCTION 'LIST_FREE_MEMORY'.

SUBMIT aqcsch_tcs======tcs_auswertung
WITH sp$00005 IN so_datum[]
EXPORTING LIST TO MEMORY AND RETURN.

CALL FUNCTION 'LIST_FROM_MEMORY'


TABLES
listobject = ta_listobj
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc NE 0.
*** Do nothing
ENDIF.

CALL FUNCTION 'LIST_TO_ASCI'


TABLES
listasci = ta_ascilist
listobject = ta_listobj
EXCEPTIONS
empty_list = 1
list_index_invalid = 2
OTHERS = 3.
IF sy-subrc NE 0.
*** Do nothing
ENDIF.

CHECK ta_ascilist[] IS NOT INITIAL.


DELETE ta_ascilist WHERE LINE CS '---'.
CHECK ta_ascilist[] IS NOT INITIAL.
DELETE ta_ascilist INDEX 1.

IF ta_ascilist[] IS NOT INITIAL.


LOOP AT ta_ascilist.
SPLIT ta_ascilist AT '|' INTO
wa_output-c1 wa_output-c2 wa_output-c3 wa_output-c4
wa_output-c5 wa_output-c6 wa_output-c7 wa_output-c8
wa_output-c9 wa_output-c10 wa_output-c11 wa_output-c12
wa_output-c13 wa_output-c14 wa_output-c15 wa_output-c16
wa_output-c17 wa_output-c18 wa_output-c19 wa_output-c20
wa_output-c21 wa_output-c22 wa_output-c23 wa_output-c24
wa_output-c25 wa_output-c26 wa_output-c27 wa_output-c28.
APPEND wa_output TO ta_output.
CLEAR: wa_output,
ta_ascilist.
ENDLOOP.
ELSE.
WRITE : / 'No data exists for given selection'(002).
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DATA_OUTPUT
*&---------------------------------------------------------------------*
* Prepare and write data on the application server
*----------------------------------------------------------------------*
FORM data_output.
DATA : ltp_filename TYPE rlgrap-filename,
ltp_string(512) TYPE c.

IF ta_output[] IS NOT INITIAL.


**& Download the output data on to the application server
IF tp_sysid = 'LI2'.
CONCATENATE '/home/li2adm/digital/Download/AUSWERTUNG_'
sy-datum '_' sy-uzeit '.csv' INTO ltp_filename.
ELSEIF tp_sysid = 'LI3'.
CONCATENATE '/home/li3adm/digital/Download/AUSWERTUNG_'
sy-datum '_' sy-uzeit '.csv' INTO ltp_filename.
ENDIF.

OPEN DATASET ltp_filename FOR APPENDING IN TEXT MODE ENCODING UTF-8.


IF sy-subrc <> 0.
MESSAGE 'File open error'(003) TYPE 'E'.
ENDIF.

LOOP AT ta_output INTO wa_output.


CONCATENATE
wa_output-c11 wa_output-c12 wa_output-c13 wa_output-c14
wa_output-c15 wa_output-c2 wa_output-c16 wa_output-c3
wa_output-c17 wa_output-c18 wa_output-c19 wa_output-c20
wa_output-c21 wa_output-c4 wa_output-c22 wa_output-c5
wa_output-c23 wa_output-c6 wa_output-c24 wa_output-c25
wa_output-c7 wa_output-c26 wa_output-c8 wa_output-c27
wa_output-c28
INTO ltp_string SEPARATED BY '|'.
TRANSFER ltp_string TO ltp_filename.
CLEAR : wa_output, ltp_string.
ENDLOOP.
CLOSE DATASET ltp_filename.

WRITE: / 'Auswertung data downloaded successfully'(004).


CLEAR : ltp_filename.

ELSE.
WRITE:/ 'No data exists for given selection'(002).
ENDIF.
ENDFORM. " DATA_OUTPUT

Vous aimerez peut-être aussi