sap 导出系统所有的单位_导出SAP系统表结构及数据供HANA使用

该报告(ZERP_TO_HANA)由dikang于2013年创建,用于测试。它旨在导出SAP系统的表结构和数据,以便供HANA使用。程序定义了数据类型并执行SQL查询从DD03L和DD04L表中获取字段和域信息,并将数据转换为适合HANA的格式。
摘要由CSDN通过智能技术生成

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值