REPORT ZAL_ABAP message-id 26 line-size 255 no standard page heading. * Z_CARS4GIS_PROG. PARAMETER DOWNLOAD(1) DEFAULT 'N' lower case. "N-svr,Y-clnt PARAMETER EXECMODE(1) DEFAULT 'B' lower case. "D-dlg,B-btch PARAMETER OUT_DIR(48) DEFAULT "output file dir '/interface/dnw/ads' lower case. PARAMETER IN_DIR(48) DEFAULT "input file dir '/interface/dnw/ads' lower case. PARAMETER $PARAM1 TYPE D. PARAMETER P_DF_VK(40) DEFAULT "ABAP data flow object key '' lower case. PARAMETER P_DI_GEN(40) DEFAULT "DI version that generated ABAP '' lower case. *** Machine generated ABAP. Do not modify. *** *** © Copyright Business Objects S.A. All rights reserved. *** * * Date Time: * 10/25/11 10:16:21 * SAP used for generated this ABAP: * Release: 701 * Host : r3dmisd1.rdc.local * * ABAP Dataflow Name: * ADF_C4G_Extract_ECC_ABAP * ABAP program name in SAP: * Z_CARS4GIS_PROG * Generated ABAP file name: * /interface/dnw/ads/Z_CARS4GIS_ABAP TABLES EUITRANS. TABLES EUIINSTLN. TABLES EANL. TABLES EASTS. TABLES ETDZ. TABLES EZUZ. TABLES EASTL. TABLES EGERH. TABLES EGERS. TABLES TE345. DATA: begin of ITAB10 occurs 0, EAN_ID(50) TYPE C, GAS_METERCODE(15) TYPE C, PRESSURE_LEVEL_METER(16) TYPE P DECIMALS 4, GAS_PRS_AR(8) TYPE C, MANDT(3) TYPE C, EUIINSTLN_DATEFROM TYPE D, EUIINSTLN_DATETO TYPE D, EUIINSTLN_TIMEFROM(24) TYPE C, EUIINSTLN_TIMETO(24) TYPE C, EUITRANS_DATEFROM TYPE D, EUITRANS_DATETO TYPE D, EUITRANS_TIMEFROM(24) TYPE C, EUITRANS_TIMETO(24) TYPE C. DATA: end of ITAB10. DATA: begin of ITAB12 occurs 0, EAN_ID(50) TYPE C, GAS_METERCODE(15) TYPE C, PRESSURE_LEVEL_METER(16) TYPE P DECIMALS 4, PRESSURE_LEVEL_NET(16) TYPE P DECIMALS 4, MANDT(3) TYPE C, EUIINSTLN_DATEFROM TYPE D, EUIINSTLN_DATETO TYPE D, EUIINSTLN_TIMEFROM(24) TYPE C, EUIINSTLN_TIMETO(24) TYPE C, EUITRANS_DATEFROM TYPE D, EUITRANS_DATETO TYPE D, EUITRANS_TIMEFROM(24) TYPE C, EUITRANS_TIMETO(24) TYPE C. DATA: end of ITAB12. data: append_flag(1) value ' ', cntbuf type i, delimleng type i. CONSTANTS C_DF_VK(40) VALUE '1014'. CONSTANTS C_DI_GEN(40) VALUE '12.2.3.0'. DATA WARN_MSG(50). start-of-selection. PERFORM FORM10. PERFORM FORM12. FREE ITAB10. PERFORM FORM13. FREE ITAB12. end-of-selection. CLEAR WARN_MSG. IF NOT P_DF_VK IS INITIAL. IF P_DF_VK <> C_DF_VK. CONCATENATE '$$Warning$' C_DF_VK '$' INTO WARN_MSG. ENDIF. ENDIF. IF NOT P_DI_GEN IS INITIAL. IF P_DI_GEN <> C_DI_GEN. IF WARN_MSG IS INITIAL. CONCATENATE '$$Warning$$' C_DI_GEN INTO WARN_MSG. ELSE. CONCATENATE WARN_MSG C_DI_GEN INTO WARN_MSG. ENDIF. ENDIF. ENDIF. IF NOT WARN_MSG IS INITIAL. IF EXECMODE = 'D'. WRITE WARN_MSG. NEW-LINE. ELSE. MESSAGE S000 with WARN_MSG. ENDIF. ENDIF. write '* Program Complete *'. write '© Copyright Business Objects S.A. All rights reserved.'. FORM FORM10. DATA ALTMP1(50) TYPE C. DATA ALTMP2(15) TYPE C. DATA ALTMP3(16) TYPE P DECIMALS 4. DATA ALTMP4(8) TYPE C. DATA ALTMP5(3) TYPE C. DATA ALTMP6 TYPE D. DATA ALTMP7 TYPE D. DATA ALTMP8 TYPE T. DATA ALTMP9 TYPE T. DATA ALTMP10 TYPE D. DATA ALTMP11 TYPE D. DATA ALTMP12 TYPE T. DATA ALTMP13 TYPE T. DATA EUITRANS9EXT_UI LIKE EUITRANS-EXT_UI. DATA EGERS9APPROVALNR LIKE EGERS-APPROVALNR. DATA EZUZ9MESSDRCK LIKE EZUZ-MESSDRCK. DATA ETDZ9GAS_PRS_AR LIKE ETDZ-GAS_PRS_AR. DATA EUITRANS9MANDT LIKE EUITRANS-MANDT. DATA EUIINSTLN9DATEFROM LIKE EUIINSTLN-DATEFROM. DATA EUIINSTLN9DATETO LIKE EUIINSTLN-DATETO. DATA EUIINSTLN9TIMEFROM LIKE EUIINSTLN-TIMEFROM. DATA EUIINSTLN9TIMETO LIKE EUIINSTLN-TIMETO. DATA EUITRANS9DATEFROM LIKE EUITRANS-DATEFROM. DATA EUITRANS9DATETO LIKE EUITRANS-DATETO. DATA EUITRANS9TIMEFROM LIKE EUITRANS-TIMEFROM. DATA EUITRANS9TIMETO LIKE EUITRANS-TIMETO. DATA EUIINSTLN9INT_UI LIKE EUIINSTLN-INT_UI. DATA EUITRANS9INT_UI LIKE EUITRANS-INT_UI. DATA EANL9ANLAGE LIKE EANL-ANLAGE. DATA EUIINSTLN9ANLAGE LIKE EUIINSTLN-ANLAGE. DATA EASTS9ANLAGE LIKE EASTS-ANLAGE. DATA EASTL9ANLAGE LIKE EASTL-ANLAGE. DATA EGERH9LOGIKNR LIKE EGERH-LOGIKNR. DATA EASTL9LOGIKNR LIKE EASTL-LOGIKNR. DATA EGERS9EQUNR LIKE EGERS-EQUNR. DATA EGERH9EQUNR LIKE EGERH-EQUNR. DATA EZUZ9LOGIKZW LIKE EZUZ-LOGIKZW. DATA EASTS9LOGIKZW LIKE EASTS-LOGIKZW. DATA ETDZ9LOGIKZW LIKE ETDZ-LOGIKZW. DATA EASTS9AB LIKE EASTS-AB. DATA EASTS9BIS LIKE EASTS-BIS. DATA EZUZ9AB LIKE EZUZ-AB. DATA EZUZ9BIS LIKE EZUZ-BIS. DATA EASTL9AB LIKE EASTL-AB. DATA EASTL9BIS LIKE EASTL-BIS. DATA EGERH9AB LIKE EGERH-AB. DATA EGERH9BIS LIKE EGERH-BIS. DATA EANL9SPARTE LIKE EANL-SPARTE. DATA EZUZ9ZUART LIKE EZUZ-ZUART. DATA EASTS9ZWNABR LIKE EASTS-ZWNABR. DATA EUIINSTLN9MANDT LIKE EUIINSTLN-MANDT. DATA EANL9MANDT LIKE EANL-MANDT. DATA EASTS9MANDT LIKE EASTS-MANDT. DATA EZUZ9MANDT LIKE EZUZ-MANDT. DATA EASTL9MANDT LIKE EASTL-MANDT. DATA EGERH9MANDT LIKE EGERH-MANDT. DATA EGERS9MANDT LIKE EGERS-MANDT. SELECT EUITRANS9~EXT_UI EGERS9~APPROVALNR EZUZ9~MESSDRCK ETDZ9~GAS_PRS_AR EUITRANS9~MANDT EUIINSTLN9~DATEFROM EUIINSTLN9~DATETO EUIINSTLN9~TIMEFROM EUIINSTLN9~TIMETO EUITRANS9~DATEFROM EUITRANS9~DATETO EUITRANS9~TIMEFROM EUITRANS9~TIMETO EUIINSTLN9~INT_UI EUITRANS9~INT_UI EANL9~ANLAGE EUIINSTLN9~ANLAGE EASTS9~ANLAGE EASTL9~ANLAGE EGERH9~LOGIKNR EASTL9~LOGIKNR EGERS9~EQUNR EGERH9~EQUNR EZUZ9~LOGIKZW EASTS9~LOGIKZW ETDZ9~LOGIKZW EASTS9~AB EASTS9~BIS EZUZ9~AB EZUZ9~BIS EASTL9~AB EASTL9~BIS EGERH9~AB EGERH9~BIS EANL9~SPARTE EZUZ9~ZUART EASTS9~ZWNABR EUIINSTLN9~MANDT EANL9~MANDT EASTS9~MANDT EZUZ9~MANDT EASTL9~MANDT EGERH9~MANDT EGERS9~MANDT into (EUITRANS9EXT_UI, EGERS9APPROVALNR, EZUZ9MESSDRCK, ETDZ9GAS_PRS_AR, EUITRANS9MANDT, EUIINSTLN9DATEFROM, EUIINSTLN9DATETO, EUIINSTLN9TIMEFROM, EUIINSTLN9TIMETO, EUITRANS9DATEFROM, EUITRANS9DATETO, EUITRANS9TIMEFROM, EUITRANS9TIMETO, EUIINSTLN9INT_UI, EUITRANS9INT_UI, EANL9ANLAGE, EUIINSTLN9ANLAGE, EASTS9ANLAGE, EASTL9ANLAGE, EGERH9LOGIKNR, EASTL9LOGIKNR, EGERS9EQUNR, EGERH9EQUNR, EZUZ9LOGIKZW, EASTS9LOGIKZW, ETDZ9LOGIKZW, EASTS9AB, EASTS9BIS, EZUZ9AB, EZUZ9BIS, EASTL9AB, EASTL9BIS, EGERH9AB, EGERH9BIS, EANL9SPARTE, EZUZ9ZUART, EASTS9ZWNABR, EUIINSTLN9MANDT, EANL9MANDT, EASTS9MANDT, EZUZ9MANDT, EASTL9MANDT, EGERH9MANDT, EGERS9MANDT) FROM EZUZ AS EZUZ9 INNER JOIN EASTS AS EASTS9 ON ( ( EASTS9~MANDT = EZUZ9~MANDT ) AND ( EZUZ9~LOGIKZW = EASTS9~LOGIKZW ) ) INNER JOIN ETDZ AS ETDZ9 ON ( EZUZ9~LOGIKZW = ETDZ9~LOGIKZW ) INNER JOIN EUIINSTLN AS EUIINSTLN9 ON ( EASTS9~ANLAGE = EUIINSTLN9~ANLAGE ) INNER JOIN EANL AS EANL9 ON ( ( EANL9~ANLAGE = EUIINSTLN9~ANLAGE ) AND ( ( EUIINSTLN9~MANDT = EANL9~MANDT ) AND ( EASTS9~MANDT = EANL9~MANDT ) ) ) INNER JOIN EASTL AS EASTL9 ON ( ( EASTL9~MANDT = EANL9~MANDT ) AND ( EASTL9~ANLAGE = EUIINSTLN9~ANLAGE ) ) INNER JOIN EUITRANS AS EUITRANS9 ON ( ( EUIINSTLN9~MANDT = EUITRANS9~MANDT ) AND ( EUIINSTLN9~INT_UI = EUITRANS9~INT_UI ) ) INNER JOIN EGERH AS EGERH9 ON ( ( EGERH9~MANDT = EASTL9~MANDT ) AND ( EGERH9~LOGIKNR = EASTL9~LOGIKNR ) ) INNER JOIN EGERS AS EGERS9 ON ( ( EGERS9~MANDT = EGERH9~MANDT ) AND ( EGERS9~EQUNR = EGERH9~EQUNR ) ) WHERE ( ( EASTS9~ZWNABR = ' ' ) AND ( ( EZUZ9~ZUART = 3 ) AND ( ( EANL9~SPARTE = 'NG' ) AND ( ( EGERH9~BIS >= $PARAM1 ) AND ( ( EGERH9~AB <= $PARAM1 ) AND ( ( EASTL9~BIS >= $PARAM1 ) AND ( ( EASTL9~AB <= $PARAM1 ) AND ( ( EZUZ9~BIS >= $PARAM1 ) AND ( ( EZUZ9~AB <= $PARAM1 ) AND ( ( EASTS9~BIS >= $PARAM1 ) AND ( ( EASTS9~AB <= $PARAM1 ) AND ( ( EUIINSTLN9~DATETO >= $PARAM1 ) AND ( ( EUIINSTLN9~DATEFROM <= $PARAM1 ) AND ( ( EUITRANS9~DATETO >= $PARAM1 ) AND ( EUITRANS9~DATEFROM <= $PARAM1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ). ALTMP1 = EUITRANS9EXT_UI. ALTMP2 = EGERS9APPROVALNR. ALTMP3 = EZUZ9MESSDRCK. ALTMP4 = ETDZ9GAS_PRS_AR. ALTMP5 = EUITRANS9MANDT. ALTMP6 = EUIINSTLN9DATEFROM. ALTMP7 = EUIINSTLN9DATETO. ALTMP8 = EUIINSTLN9TIMEFROM. ALTMP9 = EUIINSTLN9TIMETO. ALTMP10 = EUITRANS9DATEFROM. ALTMP11 = EUITRANS9DATETO. ALTMP12 = EUITRANS9TIMEFROM. ALTMP13 = EUITRANS9TIMETO. move ALTMP1 to ITAB10-EAN_ID. move ALTMP2 to ITAB10-GAS_METERCODE. move ALTMP3 to ITAB10-PRESSURE_LEVEL_METER. move ALTMP4 to ITAB10-GAS_PRS_AR. move ALTMP5 to ITAB10-MANDT. move ALTMP6 to ITAB10-EUIINSTLN_DATEFROM. move ALTMP7 to ITAB10-EUIINSTLN_DATETO. move ALTMP8 to ITAB10-EUIINSTLN_TIMEFROM. move ALTMP9 to ITAB10-EUIINSTLN_TIMETO. move ALTMP10 to ITAB10-EUITRANS_DATEFROM. move ALTMP11 to ITAB10-EUITRANS_DATETO. move ALTMP12 to ITAB10-EUITRANS_TIMEFROM. move ALTMP13 to ITAB10-EUITRANS_TIMETO. append ITAB10. ENDSELECT. ENDFORM. FORM FORM12. DATA ALTMP14(50) TYPE C. DATA ALTMP15(15) TYPE C. DATA ALTMP16(16) TYPE P DECIMALS 4. DATA ALTMP17(16) TYPE P DECIMALS 4. DATA ALTMP18(3) TYPE C. DATA ALTMP19 TYPE D. DATA ALTMP20 TYPE D. DATA ALTMP21(24) TYPE C. DATA ALTMP22(24) TYPE C. DATA ALTMP23 TYPE D. DATA ALTMP24 TYPE D. DATA ALTMP25(24) TYPE C. DATA ALTMP26(24) TYPE C. DATA ALOJF0 TYPE C. DATA ALOJF1 TYPE C. LOOP AT ITAB10. ALTMP14 = ITAB10-EAN_ID. ALTMP15 = ITAB10-GAS_METERCODE. ALTMP16 = ITAB10-PRESSURE_LEVEL_METER. ALTMP18 = ITAB10-MANDT. ALTMP19 = ITAB10-EUIINSTLN_DATEFROM. ALTMP20 = ITAB10-EUIINSTLN_DATETO. ALTMP21 = ITAB10-EUIINSTLN_TIMEFROM. ALTMP22 = ITAB10-EUIINSTLN_TIMETO. ALTMP23 = ITAB10-EUITRANS_DATEFROM. ALTMP24 = ITAB10-EUITRANS_DATETO. ALTMP25 = ITAB10-EUITRANS_TIMEFROM. ALTMP26 = ITAB10-EUITRANS_TIMETO. ALOJF0 = 'Y'. ALOJF1 = 'N'. IF ( ALOJF0 = 'Y' ). SELECT GASPRESS GAS_PRS_AR MANDT INTO CORRESPONDING FIELDS OF TE345 FROM TE345 CLIENT SPECIFIED WHERE ( ( MANDT = ITAB10-MANDT ) AND ( GAS_PRS_AR = ITAB10-GAS_PRS_AR ) ). ALTMP17 = TE345-GASPRESS. ALOJF1 = 'Y'. move ALTMP14 to ITAB12-EAN_ID. move ALTMP15 to ITAB12-GAS_METERCODE. move ALTMP16 to ITAB12-PRESSURE_LEVEL_METER. move ALTMP17 to ITAB12-PRESSURE_LEVEL_NET. move ALTMP18 to ITAB12-MANDT. move ALTMP19 to ITAB12-EUIINSTLN_DATEFROM. move ALTMP20 to ITAB12-EUIINSTLN_DATETO. move ALTMP21 to ITAB12-EUIINSTLN_TIMEFROM. move ALTMP22 to ITAB12-EUIINSTLN_TIMETO. move ALTMP23 to ITAB12-EUITRANS_DATEFROM. move ALTMP24 to ITAB12-EUITRANS_DATETO. move ALTMP25 to ITAB12-EUITRANS_TIMEFROM. move ALTMP26 to ITAB12-EUITRANS_TIMETO. append ITAB12. cntbuf = cntbuf + 1. if download = 'N'. if cntbuf > 5000. perform FORM13. clear cntbuf. refresh ITAB12. append_flag = 'A'. endif. endif. ENDSELECT. ENDIF. IF ( ALOJF1 = 'N' ). clear TE345-GASPRESS. clear TE345-GAS_PRS_AR. clear TE345-MANDT. clear ALTMP17. move ALTMP14 to ITAB12-EAN_ID. move ALTMP15 to ITAB12-GAS_METERCODE. move ALTMP16 to ITAB12-PRESSURE_LEVEL_METER. move ALTMP17 to ITAB12-PRESSURE_LEVEL_NET. move ALTMP18 to ITAB12-MANDT. move ALTMP19 to ITAB12-EUIINSTLN_DATEFROM. move ALTMP20 to ITAB12-EUIINSTLN_DATETO. move ALTMP21 to ITAB12-EUIINSTLN_TIMEFROM. move ALTMP22 to ITAB12-EUIINSTLN_TIMETO. move ALTMP23 to ITAB12-EUITRANS_DATEFROM. move ALTMP24 to ITAB12-EUITRANS_DATETO. move ALTMP25 to ITAB12-EUITRANS_TIMEFROM. move ALTMP26 to ITAB12-EUITRANS_TIMETO. append ITAB12. cntbuf = cntbuf + 1. if download = 'N'. if cntbuf > 5000. perform FORM13. clear cntbuf. refresh ITAB12. append_flag = 'A'. endif. endif. ENDIF. ENDLOOP. ENDFORM. FORM FORM13. data: outfile(128), ldfile(50). ldfile = 'Z_CARS4GIS_DATA.CSV'. concatenate out_dir ldfile into outfile separated by '/'. data dlmtlen type i value '1'. data xdlmtlen type i value '1'. data: ht(1) type c, xht(1) type x, conv type ref to cl_abap_conv_in_ce. xht = '7F'. conv = cl_abap_conv_in_ce=>create( encoding = '1100' input = xht ). call method conv->read( exporting n = xdlmtlen importing data = ht len = dlmtlen ). data return_code type i. perform write_delimited_file tables ITAB12 using outfile append_flag ht dlmtlen download changing return_code. case return_code. when 1. IF EXECMODE = 'D'. WRITE: /5 'No line selected'. ELSE. MESSAGE E098. ENDIF. when 2. IF EXECMODE = 'D'. WRITE: /5 'Open File Error -- ', 25 OUTFILE. ELSE. MESSAGE E107 WITH OUTFILE. ENDIF. when 3. IF EXECMODE = 'D'. WRITE: /5 'Data exceed length limit (8192) '. ELSE. MESSAGE E000 WITH 'Data exceed length limit (8192) '. ENDIF. when 4. IF EXECMODE = 'D'. WRITE: /5 'Call function WS_DOWNLOAD error'. ELSE. MESSAGE E000 WITH 'Call function WS_DOWNLOAD error'. ENDIF. endcase. ENDFORM. FORM SUBSTRING USING SRC BEG LEN CHANGING RET. DATA: VA1 TYPE I. DATA: VA2 TYPE I. DATA: VA3 TYPE I. VA3 = STRLEN( SRC ). IF BEG = 0. VA1 = 0. ELSE. IF BEG < 0. VA1 = VA3 + BEG. IF VA1 < 0. VA1 = 0. ENDIF. ELSE. VA1 = BEG - 1. ENDIF. ENDIF. IF LEN < 0. VA2 = 0. ELSE. VA2 = VA3 - VA1. ENDIF. IF VA2 > LEN. VA2 = LEN. ENDIF. IF VA2 < 1. MOVE '' TO RET. ELSE. MOVE SRC+VA1(VA2) TO RET. ENDIF. ENDFORM. form write_delimited_file tables datatab using file append delimit dlength dwnload changing rc. data: type1, appd(1), temp(32), time1(8), date1(10), output(8192), rcount type i, offset type i, tablen type i, maxlen type i value '8192'. data: begin of clientab occurs 0, output(8192), end of clientab. field-symbols: . field-symbols . data delim2(16). data l_filename type string. appd = append. if appd is not initial. appd = 'X'. endif. move file to l_filename. describe table datatab lines tablen. if dwnload = 'Y'. clear clientab. refresh clientab. rcount = 0. else. if appd = space. open dataset file for output in text mode ENCODING DEFAULT. else. open dataset file for appending in text mode ENCODING DEFAULT. endif. if sy-subrc <> 0. rc = 2. exit. endif. endif. loop at datatab. clear: tablen, offset, output. do. assign component sy-index of structure datatab to . if sy-subrc <> 0. exit. endif. if sy-index > 1. assign delimit(dlength) TO CASTING TYPE C. delim2 = . write delim2(dlength) to output+offset(dlength). add dlength to offset. endif. describe field type type1. if type1 = 'I' or type1 = 'N'. type1 = 'P'. endif. case type1. when 'D'. if = '00000000'. = ' '. else. move to time1. assign time1 to . endif. when 'F'. if = '0.0'. temp = '0.0'. else. write to temp exponent 0. endif. condense temp no-gaps. translate temp using ',.'. assign temp to . when 'P'. if < 0. write '-' to output+offset(1). add 1 to offset. = * ( -1 ). endif. move to temp. condense temp no-gaps. translate temp using ',.'. assign temp to . endcase. sy-fdpos = strlen( ). tablen = offset + sy-fdpos. if tablen > maxlen. rc = 3. exit. endif. write to output+offset(sy-fdpos). add sy-fdpos to offset. enddo. if dwnload = 'Y'. clientab-output = output. append clientab. rcount = rcount + 1. if rcount >= 50. SY-BATCH = SPACE. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING FILENAME = l_filename FILETYPE = 'ASC' CODEPAGE = '4110' APPEND = appd WRITE_FIELD_SEPARATOR = 'X' * IMPORTING * FILELENGTH = TABLES DATA_TAB = clientab EXCEPTIONS OTHERS = 1. if sy-subrc <> 0. rc = 4. endif. clear clientab. refresh clientab. rcount = 0. appd = 'A'. endif. else. transfer output to file. endif. endloop. if dwnload = 'Y'. SY-BATCH = SPACE. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING FILENAME = l_filename FILETYPE = 'ASC' CODEPAGE = '4110' APPEND = appd WRITE_FIELD_SEPARATOR = 'X' * IMPORTING * FILELENGTH = TABLES DATA_TAB = clientab EXCEPTIONS OTHERS = 1. if sy-subrc <> 0. rc = 4. endif. else. close dataset file. endif. endform.