*&---------------------------------------------------------------------*
*& Report ZERP_TO_HANA
*&
*&---------------------------------------------------------------------*
*&-created by dikang 2013.06.24
*&测试用
*&---------------------------------------------------------------------*
REPORTZERP_TO_HANA.
TYPES:BEGINOFTY_DD03L,
FIELDNAME TYPEDD03L-FIELDNAME,
POSITIONTYPEDD03L-POSITION,
KEYFLAG TYPEDD03L-KEYFLAG,
ROLLNAME TYPEDD03L-ROLLNAME,
DATATYPE TYPEDD03L-DATATYPE,
LENG TYPEDD03L-LENG,
DECIMALSTYPEDD03L-DECIMALS,
DOMNAME TYPEDD03L-DOMNAME,
ENDOFTY_DD03L.
TYPES:BEGINOFTY_DD04L,
ROLLNAME TYPEDD04L-ROLLNAME,
DOMNAME TYPEDD04L-DOMNAME,
OUTPUTLEN TYPEDD04L-OUTPUTLEN,
ENDOFTY_DD04L.
TYPES:BEGINOFTY_LINES,
LINETYPESTRING,
ENDOFTY_LINES.
TYPES:BEGINOFTY_TYPES,
ERP TYPESTRING,
HANA TYPESTRING,
ENDOFTY_TYPES.
DATA:T_DD03L TYPETABLEOFTY_DD03L,
T_DD04L TYPETABLEOFTY_DD04L,
T_LINES TYPETABLEOFTY_LINES,
T_TYPES TYPETABLEOFTY_TYPES.
DATA:V_FILENAME TYPESTRING.
FIELD-SYMBOLS: LIKELINEOFT_DD03L,
LIKELINEOFT_DD04L,
LIKELINEOFT_LINES,
LIKELINEOFT_TYPES.
SELECTION-SCREENBEGINOFBLOCKB1 WITHFRAMETITLETEXT-T01.
PARAMETERS:
P_SCHEMA(12)TYPECOBLIGATORY,
P_TABLE TYPEDATABROWSE-TABLENAME OBLIGATORY,
P_FOLDER TYPESTRING OBLIGATORY,
P_STRUC RADIOBUTTONGROUPRDN DEFAULT'X',
P_DATA RADIOBUTTONGROUPRDN.
SELECTION-SCREENENDOFBLOCKB1.
ATSELECTION-SCREENONVALUE-REQUESTFORP_FOLDER.
CALLMETHODCL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
EXPORTING
WINDOW_TITLE ='Select a Folder'
INITIAL_FOLDER ='C:\'
CHANGING
SELECTED_FOLDER =P_FOLDER.
START-OF-SELECTION.
PERFORMGET_TYPES.
IFP_STRUC EQ'X'.
PERFORMGET_STRUCTURE USINGP_TABLE.
ELSE.
PERFORMGET_DATA USINGP_TABLE.
ENDIF.
FORMGET_TYPES.
SELECTFIELDNAME POSITIONKEYFLAG ROLLNAME
DATATYPE LENG DECIMALSDOMNAME
INTOTABLET_DD03L
FROMDD03L
WHERETABNAME EQP_TABLE.
SORTT_DD03L BYPOSITIONASCENDING.
SELECTROLLNAME DOMNAME OUTPUTLEN
INTOTABLET_DD04L
FROMDD04L
FORALLENTRIES INT_DD03L
WHEREROLLNAME EQT_DD03L-ROLLNAME
ANDDOMNAME EQT_DD03L-DOMNAME.
"NVARCHAR
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='CLNT'.
-HANA ='NVARCHAR'.
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='CHAR'.
-HANA ='NVARCHAR'.
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='NUMC'.
-HANA ='NVARCHAR'.
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='UNIT'.
-HANA ='NVARCHAR'.
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='CUKY'.
-HANA ='NVARCHAR'.
"INTEGER
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='INT4'.
-HANA ='INTEGER'.
"DECIMAL
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='QUAN'.
-HANA ='DECIMAL'.
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='DEC'.
-HANA ='DECIMAL'.
"FLOAT
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='FLTP'.
-HANA ='FLOAT'.
"TINYINT
APPENDINITIALLINETOT_TYPES ASSIGNING.
-ERP ='INT1'.
-HANA ='TINYINT'.
ENDFORM." GET_TYPES
FORMGET_STRUCTURE USINGP_TABLE.
DATA:PKEY TYPESTRING,
L_TYPE TYPESTRING.
CONCATENATEP_FOLDER '\'P_TABLE '_STRUCT.txt'
INTOV_FILENAME.
APPENDINITIALLINETOT_LINES ASSIGNING.
CONCATENATE'CREATE COLUMN TABLE'P_SCHEMA
INTO-LINESEPARATEDBYSPACE.
CONCATENATE-LINE'."'P_TABLE '" ('INTO-LINE.
LOOPATT_DD03L ASSIGNING.
FINDREGEX '\.'IN-FIELDNAME.
IFSY-SUBRC EQ0.
CONTINUE.
ENDIF.
APPENDINITIALLINETOT_LINES ASSIGNING.
READTABLET_TYPES ASSIGNING
WITHKEYERP =-DATATYPE.
L_TYPE =-HANA.
PERFORMDELETE_ZEROS CHANGING-LENG.
READTABLET_DD04L ASSIGNING
WITHKEYROLLNAME =-ROLLNAME
DOMNAME =-DOMNAME.
IFSY-SUBRC EQ0ANDNOT ISINITIAL.
PERFORMDELETE_ZEROS CHANGING-OUTPUTLEN.
IF-OUTPUTLEN GT-LENG.
-LENG =-OUTPUTLEN.
ENDIF.
ENDIF.
PERFORMDELETE_ZEROS CHANGING-DECIMALS.
CASEL_TYPE.
WHEN'NVARCHAR'OR'FLOAT'OR'TINYINT'.
CONCATENATEL_TYPE '('-LENG ')'
INTOL_TYPE.
WHEN'DECIMAL'.
CONCATENATEL_TYPE '('-LENG ','-DECIMALS')'
INTOL_TYPE.
ENDCASE.
FINDREGEX '\/'IN-FIELDNAME.
IFSY-SUBRC EQ0.
CONCATENATE'"'-FIELDNAME '"'
INTO-FIELDNAME.
ENDIF.
CONCATENATE-FIELDNAME L_TYPE
INTO-LINESEPARATEDBYSPACE.
CONCATENATE-LINE','INTO-LINE.
IF-KEYFLAG EQ'X'.
CONCATENATEPKEY '"'-FIELDNAME '",'
INTOPKEY.
ENDIF.
ENDLOOP.
REPLACEREGEX ',\Z'INPKEY WITHSPACE.
APPENDINITIALLINETOT_LINES ASSIGNING.
CONCATENATE'PRIMARY KEY ('PKEY '));'
INTO-LINE.
PERFORMDOWNLOAD_FILE USINGV_FILENAME T_LINES.
ENDFORM." GET_STRUCTURE
FORMGET_DATA USINGP_TABLE.
DATA:L_TABLE TYPEREFTODATA,
L_LINE TYPESTRING,
L_LINEAUX TYPESTRING,
L_WHERE TYPESTRING,
L_TYPE TYPESTRING.
FIELD-SYMBOLS: TYPEANYTABLE,
TYPEANY,
.
CONCATENATEP_FOLDER '\'P_TABLE '_DATA.txt'
INTOV_FILENAME.
CREATEDATAL_TABLE TYPETABLEOF(P_TABLE).
ASSIGNL_TABLE->* TO.
readtablet_dd03l ASSIGNING
withkeydomname ='SPRAS'.
IFSY-SUBrC EQ0.
CONCATENATE-FIELDNAME 'EQ ''E'''INTOL_WHERE
SEPARATEDBYSPACE.
SELECT*
FROM(P_TABLE)
INTOTABLE
WHERE(L_WHERE).
ELSE.
SELECT*
FROM(P_TABLE)
INTOTABLE.
ENDIF.
LOOPAT ASSIGNING.
APPENDINITIALLINETOT_LINES ASSIGNING.
CONCATENATE'insert into "'P_SCHEMA '"."'P_TABLE '" values('into-LINE.
LOOPATT_DD03L ASSIGNING.
FINDREGEX '\.'IN-FIELDNAME.
IFSY-SUBRC EQ0.
CONTINUE.
DELETET_LINES FROM.
ENDIF.
CONCATENATE'-'-FIELDNAME
INTOL_LINE.
ASSIGN(L_LINE)TO.
MOVE TOL_LINEAUX.
CONDENSEL_LINEAUX NO-GAPS.
READTABLET_TYPES ASSIGNING
WITHKEYERP =-DATATYPE.
L_TYPE =-HANA.
CASEL_TYPE.
WHEN'NVARCHAR'.
CONCATENATE-LINE''''L_LINEAUX ''','into-LINE.
WHEN'DECIMAL'OR'INTEGER'OR'TINYINT'OR'FLOAT'.
CONDENSEL_LINEAUX NO-GAPS.
CONCATENATE-LINEL_LINEAUX ','into-LINE.
ENDCASE.
ENDLOOP.
REPLACEREGEX ',\Z'IN-LINEWITH');'.
ENDLOOP.
PERFORMDOWNLOAD_FILE USINGV_FILENAME
T_LINES.
ENDFORM." GET_DATA
FORMDOWNLOAD_FILE USINGP_FILENAME P_TABLE.
DATA:SIZETYPEI.
CALLMETHODCL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE =SIZE
FILENAME =P_FILENAME
FILETYPE ='ASC'
CHANGING
DATA_TAB =P_TABLE.
ENDFORM."download_file
FORMDELETE_ZEROS CHANGINGP_VALUE.
CALLFUNCTION'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT=P_VALUE
IMPORTING
OUTPUT=P_VALUE.
ENDFORM."DELETE_ZEROS