ABAP數(shù)據(jù)批量導(dǎo)入庫表_第1頁
ABAP數(shù)據(jù)批量導(dǎo)入庫表_第2頁
ABAP數(shù)據(jù)批量導(dǎo)入庫表_第3頁
ABAP數(shù)據(jù)批量導(dǎo)入庫表_第4頁
ABAP數(shù)據(jù)批量導(dǎo)入庫表_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ABAP數(shù)據(jù)批量導(dǎo)入庫表

通用

1.需求說明

開發(fā)說明:在程序開發(fā)過程中,需要為Table準(zhǔn)備大量的測試數(shù)據(jù),手動(dòng)錄入效率低,

不專業(yè),我們可以采用其他的高級(jí)編輯工具(例如:EXCEL,EditPlus)按照Table數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

準(zhǔn)備好數(shù)據(jù),最后保存為ASC的文本文件,通過執(zhí)行下面開發(fā)的程序,下面的程序執(zhí)行的

功能就是把編輯好的文本文件上的數(shù)據(jù)上載到SAP對應(yīng)的Table中,小程序非常實(shí)用,也適

用于我們大量更新Table數(shù)據(jù)時(shí)使用,ABAPer們的手頭必備?。?/p>

2.開發(fā)步驟

>文本文件上載技術(shù)

>動(dòng)態(tài)程序代碼生成技術(shù)

>ABAP動(dòng)態(tài)程序執(zhí)行技術(shù)

ATXT文本文件對應(yīng)用Table字段編輯技術(shù)

3.代碼示例

REPORTzr_excel__to_db.

TABLES:dd03l,dd02t.

*內(nèi)表

DATA:BEGINOFtabOCCURS10t

fcode(4),

ENDOFtab.

DATA:BEGINOFitabOCCURS0,

chk(1)TYPEc,Checkbox

tabnameLIKEdd031-tabname,"TabIename

fieldnameLIKEdd031-fieIdname,nFeldName

positionLIKEdd031-position,wTable

keyfIagLIKEdd031-keyfIag,nPrimaryKey

datatypeLIKEdd031datatype,"DataType

intlenLIKEdd03l-leng,

ENDOFitab.

DATAitablLIKEitabOCCURSOWITHHEADERLINE.

DATA:BEGINOFuptabOCCURS0,

*text(72)TYPEc,

text(100)TYPEc,

ENDOFuptab.

DATA:BEGINOFerror_message,

linel(72),

Iine2(72),

Iine3(72),

ENDOFerror_message.

DATA:cnt1(8)TYPEc,

fcodeLIKEsyucomm,

changedLIKEs38ebuf__varied,

prog(8)TYPEc,

msg(120)TYPEc,

er_includeLIKEsy-repid,

er_lineLIKEsy-index,

er_offLIKEsytabix,

er_subrcLIKEsy-subrc.

**

*選擇畫面

PARAMETERS:tabnameLIKEdd031-tabname.

**

*START-OF-SELECTION*

START-OF-SELECTION.

IFtabnameISINITIAL

MESSAGE'請輸入數(shù)據(jù)表名稱!,TYPESDISPLAYLIKEE'.

EXIT.

ENDIF.

*上載Tab/e字段分析

SELECTSINGLE*FROMdd02tWHEREtabname=tabname.

IFsy-subrc<>0.

MESSAGE'請輸入正確的數(shù)據(jù)表名稱!'TYPE,S'DISPLAYLIKE'E'.

EXIT.

ENDIF.

SETPF-STATUS'STATUS1.

SELECT*INTOCORRESPONDINGFIELDSOFTABLEitabFROMdd031

WHEREtabname=tabname

ANDas4local="A'

ORDERBYposition.

itabchk='X,.

MODIFYitabINDEX1TRANSPORTINGchk.

*動(dòng)態(tài)上載程序代碼生成函數(shù)

PERFORMgenerate_upIoad_code.

PERFORMedit_generator_code.

ATUSER-COMMAND.

IFsy-ucomm='EDIT'.

PERFORMedit_generator_code.

ELSEIFsyucomm='EXEC*.

GENERATESUBROUTINEPOOLuptabNAMEprogMESSAGEmsg.

IFmsgISNOTINITIAL

MESSAGEmsgTYPE'S'DISPLAYLIKE'E'.

EXIT.

ENDIF.

*程序代碼語法檢測

PERFORMchcek_syntax_error.

*動(dòng)態(tài)程序代碼執(zhí)行

PERFORMdyn1INPROGRAM(prog).

ELSEIF(sy-ucomm=*EXIT'ORsyucomm='BACK'ORsyucomm='CANC*).

EXIT.

ENDIF.

*&

*&Formgenerate_up/oad_code

*&

FORMgenerate_upIoad_code.

REFRESHuptab.

uptab-text='REPORTZUPLOAD_TABLENOSTANDARDPAGEHEADING.a.

APPENDuptab.

CONCATENATE'TABLES:'tabname'INTOuptabtext

SEPARATEDBYspace.

APPENDuptab.

uptabtext=*TYPE-POOLS:truxs.

APPENDuptab.

uptab-text="DATA:wa_rowTYPEtruxs_t_text_data.

APPENDuptab.

uptabtext='DATA:BEGINOFUPTABOCCURS0,

APPENDuptab.

LOOPATitabWHEREchk=1

CLEARuptab.

CONCATENATE''itab-fieldname'('itab-intlen')''TYPEC,,

INTOuptabtext+10(80).

APPENDuptab.

ENDLOOP.

uptabtext+6(82)='ENDOFUPTAB.,.

APPENDuptab.

uptab-text='DATA:BEGINOFRESULTOCCURS0.

APPENDuptab.

CLEARuptab.

CONCATENATE'INCLUDESTRUCTURE'itab-tabname

INTOuptab-text+10(80)SEPARATEDBYspace.

APPENDuptab.

uptabtext='DATA:ENDOFRESULT.1.

APPENDuptab.

uptab-text='data:fiIenametyperIgrap-fiIename.'.

APPENDuptab.

uptab-text=T0RMDYN1.1.

APPENDuptab.

uptab-text=1CALLFUNCTION"WS_FILENAME_GET"'.

APPENDuptab.

uptab-text='EXPORTING'.

APPENDuptab.

uptab-text='def_fiIename='*'*'.

APPENDuptab.

uptabtext=1def_path='*D:\'*

APPENDuptab.

r1

uptab-text=MASK=',*xIs,*.xIs;f*.xIsx,*xIsx.

APPENDuptab.

uptab-text='MODE='f0'1\

APPENDuptab.

uptabtext=1TITLE=*'UPLOADfiIe'

APPENDuptab.

uptab-text=rIMPORTING,.

APPENDuptab.

uptab-text='fiIename=fiIename'.

APPENDuptab.

uptab-text='EXCEPTIONS'.

APPENDuptab.

uptab-text='inv_winsys=1

APPENDuptab.

uptabtext="no_batch=2'.

APPENDuptab.

uptab-text=*seIection_canceI=3'.

APPENDuptab.

uptabtext=1selection_error=4'.

APPENDuptab.

uptab-text='OTHERS=5.\

APPENDuptab.

CLEARuptab.

uptab-text+2(88)='CALLFUNCTION''TEXT.CONVERT.XLS.TO.SAP'''.

APPENDuptab.

CLEARuptab.

uptabtext+4(86)='EXPORTING,.

APPENDuptab.

CLEARuptab.

uptab-text+6(84)='i_fiIename=fiIename'.

APPENDuptab.

CLEARuptab.

uptab-text+6(84)='i_line_header=''X'''.

APPENDuptab.

uptab-text+6(84)='i_tab_raw__data=wa_row'.

APPENDuptab.

uptab-text+4(86)='TABLES'.

APPENDuptab.

CLEARuptab.

uptab-text+6(84)='i_tab_converted_data=UPTAB'.

APPENDuptab.

uptab-text='EXCEPTIONS

APPENDuptab.

uptab-text='conversion_faiIed=1'.

APPENDuptab.

uptab-text='OTHERS=2.r.

APPENDuptab.

uptab-text=1IFsy-subrc<>0.1.

APPENDuptab.

uptabtext='MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno".

APPENDuptab.

uptab-text='WITHsy-msgv1sy-msgv2sy-msgv3sy-msgv4.'.

APPENDuptab.

uptab-text=rENDIF.

APPENDuptab.

uptab-text+2(88)='LOOPATUPTAB.

APPENDuptab.

CLEARuptab.

uptabtext+4(86)='CLEARRESULT.f.

APPENDuptab.

uptab-text+4(86)='MOVE-CORRESPONDINGUPTABTORESULT.,.

APPENDuptab.

uptabtext+4(86)='APPENDRESULT.

APPENDuptab.

uptabtext+2(88)='ENDLOOP.f.

APPENDuptab.

CLEARuptab.

CONCATENATE'MODIFY'itabtabnameFROMTABLERESULT.,

INTOuptabtext+2(88)SEPARATEDBYspace.

APPENDuptab.

uptabtext=1DATA:LINETYPEstring.

APPENDuptab.

uptabtext='DATA:msgTYPEstring.

APPENDuptab.

uptab-text='LINE=LINES(resu11).'.

APPENDuptab.

uptabtext=1CONCATENATE一成功導(dǎo)入…LINE條數(shù)據(jù)!''INTOmsg」.

APPENDuptab.

uptab-text='MESSAGEmsgTYPE,,l".\

APPENDuptab.

uptab-text=1ENDFORM.,.

APPENDuptab.

CLEARuptab.

ENDFORM."generate_upload_code

*

*&Formedit_generator_code

*&*

FORMedit_generator_code.

*&注意:此句話如果要顯示代碼編輯界面,ECC可以不加此句,如果是S47.5以上版本,必需

加上此句

EXPORTbuffer=uptab[]TODATABASEindx(bf)ID'SourceCode

CALLFUNCTION'EDITOR.APPLICATION'

EXPORTING

appIication='BF'

display=1*

name='SourceCode'

IMPORTING

fcode=fcode

changed=changed

TABLES

content=uptab[].

LOOPATuptab.

WRITE:/1uptabtext.

ENDLOOP.

ENDFORM."PRINT_GENERATOR_CODE

*&

*&Formchcek_syntax_error

*&

FORMchcek_syntax_error.

CALLFUNCTION'EDITOR_SYNTAX_CHECK'

EXPORTING

i_global_check=sy-caIId

i_gIobaI_program=sy-repid

ijjrogram=1ZUPLOAD_TABLE'

*i_r2_check-''

*i_r2_destination=''

*i_trdir-z7

IMPORTING

o_error_include=er_include

o_error_line=er_line

o_error_message=error_message

o_error__offset=er_off

o_error_subrc=er_subrc

TABLES

i_source=uptab.

IFer_subrc<>0.

er_line=er_line-2.

WRITE:/1'ErrorLine:*,er_line.

WRITE:/1error_message-line1,error_messageIine2,

error_message-line3.

STOP.

ENDIF.

ENDFORM.“chcek_syntax_error

4.界面執(zhí)行步驟

4.1程序初始界面,輸入U(xiǎn)pload的table名.

ABAP動(dòng)態(tài)生成-Table數(shù)據(jù)Upload程序

數(shù)據(jù)表名稱ZTETS02

4.2程序運(yùn)行第一界面,顯示程序自動(dòng)生成的上載程序代碼

緩沖電旦)編輯(或轉(zhuǎn)到叵)實(shí)用程序乜)系統(tǒng)(工)幫助也)

。a目fa圈i?的心的國團(tuán)

___干

EditingBufferSourceCode?????

由刷新

REPORTZUPLOAD.TABLE.

TABLES:ZTETS02.

TYPE-POOLS:truxs.

DATA:wa_rowTYPEtruxs_t_text_data.

□DATA:BEGINOFUPTABOCCURS0「

ZCHAR(000020)TYPEC,

ZDATS(000016)TYPEC,

ZTIME'000012)TYPEC,

ZINT(000004)TYPEC,

ioZCURRi000007)TYPEC,

iiZQUAN(000007)TYPEC,

12ENDOFUPTAB.

13□DATA:BEGINOFRESULTOCCURS0.

1-4INCLUDESTRUCTUREZTETS02.

15LDATA:ENDOFRESULT,

16data:filenametyperlgrap-filename.

17□FORMDYN1.

18CALLFUNCTION'WS_FILENAME_GET,

19EXPORTING

20def_filename=''

21def-path='D:\'

22MASK=J,*.Xis,*.xls*.xlsx,*.xlsx.

23MODE='O'

24TITLE='UPLOADfill

25IMPORTING

26filename=filename

27EXCEPTIONS

28inv_winsys=1

29no_batch=2

30selection_cancel=3

31selection_error=4

32OTHERS=5.

4.3程序運(yùn)行第二界面,確認(rèn)程序自動(dòng)生成的上載程序代碼,

執(zhí)行

ABAP動(dòng)數(shù)據(jù)Upload程序

展上傳

夕好|

ABAP動(dòng)態(tài)生成-Table數(shù)據(jù)Upload程序

REPORTZUPLOAD_TABLE.

TABLES:ZTETS02.

TYPE-POOLS:truxs.

DATA:wa_rowTYPEtruxs_t_text_data.

DATA:BEGINOFUPTABOCCURS0,

ZCHAR(000020)TYPEC,

ZDATS(000016)TYPEC,

ZTIME(000012)TYPEC,

ZINT(000004)TYPEC,

ZCURR(000007)TYPEC,

ZQUAN(000007)TYPEC,

ENDOFUPTAB.

4.程序運(yùn)行第三界面中小界面,程序執(zhí)行提示輸入上在數(shù)據(jù)具體路徑

UPLOADfils團(tuán)0

查找范圍豆):廠工

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論