ABAP-1-会计凭证批量数据导入本地ACCESS

上一版本出现问题:

A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空。(Access单表最大容量2G)

B.数据量过大造成内存溢出,需要BASIS优化服务器内存容量。

经过反复测试,发现还是SQL语句的问题:

1.SQL问题

 insert into fan_tab(va1,va2....) select F1 as va1,F2 as va2... FROM [Text;FMT=Delimited;HDR=No;IMEX=1;DATABASE=C:\;].[A010#txt];

 上面语句中过多使用AS别名,insert into ... select ... FROM ...

2.调整思路

 A.TXT文件中第一行存放标题

 B.ID编号字段放在TXT文件中

 C.SQL语句调整为:select * into fan_tab FROM [Text;FMT=Delimited;HDR=No;IMEX=1;DATABASE=C:\;].[A010#txt];

  直接将TXT数据转换为ACCESS数据表。

3.测试

 

 

 上述400多万的记录执行时间大概4分钟

4.代码部分

 ZFIR0035_ACCOUNTDOC_EXPORT

  1. *&---------------------------------------------------------------------*
  2. *& Report ZFIR0035_ACCOUNTDOC_EXPORT
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. report zfir0035_accountdoc_export.
  10.  
  11. include zapi0001_prg_info.
  12.  
  13. include zfir0035_accountdoc_export_top. "define
  14.  
  15. include zfir0035_accountdoc_export_scr. "screen
  16.  
  17. include zfir0035_accountdoc_export_pro. "processing
  18.  
  19. include zfir0035_accountdoc_export_frm. "subroutine

 ZFIR0035_ACCOUNTDOC_EXPORT_TOP

  1. *&---------------------------------------------------------------------*
  2. *& 包含 ZFIR0035_ACCOUNTDOC_EXPORT_TOP
  3. *&---------------------------------------------------------------------*
  4.  
  5. include ole2incl.
  6.  
  7. tables:
  8. mkpf,
  9. mseg.
  10.  
  11. constants:
  12. gc_provider type string value 'Provider=Microsoft.Jet.OLEDB.4.0',
  13. gc_security type string value 'Persist Security Info=False',
  14. gc_datasour type string value 'Data Source='.
  15.  
  16. constants:
  17. gc_char type c value ',',
  18. gc_char3 type c value '''',
  19. gc_char1 type c value '_',
  20. gc_char2 type c value ';',
  21. gc_char4 type c value '.',
  22. gc_check type c value 'X'.
  23.  
  24. data:
  25. begin of wa_inf,
  26. count type i, "总记录数
  27. dburl type string, "数据库路径
  28. tabnm type string, "表名
  29. qydat type datum, "获取数据-日期
  30. qytim type uzeit, "获取数据-时间
  31. txdat type datum, "下载TXT-日期
  32. txtim type uzeit, "下载TXT-时间
  33. acdat type datum, "导入DB-日期
  34. actim type uzeit, "导入DB-时间
  35. fhdat type datum, "执行结束-日期
  36. fhtim type uzeit, "执行结束-时间
  37. ustim type uzeit, "总用时
  38. mod type i,
  39. div type string,
  40. end of wa_inf.
  41.  
  42. data:
  43. begin of wa_xsz,
  44. id type i.
  45. include structure zsfi0018_xsz.
  46. data:end of wa_xsz.
  47.  
  48. data:
  49. go_conn type ole2_object,
  50. go_rset type ole2_object,
  51. go_err type ole2_object,
  52. go_rtab type ole2_object.
  53.  
  54. data:
  55. gt_str type table of string,
  56. gt_imp type table of string,
  57. gt_data type table of zsfi0018_xsz,
  58. gt_xsz like table of wa_xsz,
  59. gt_inf like table of wa_inf.
  60.  
  61. data:
  62. gv_txurl type string,
  63. gv_tabnm type string,
  64. gv_zchar type c,
  65. gv_count type i,
  66. gv_datasour type string.
  67.  
  68. data:
  69. gs_inf like wa_inf.
  70.  
  71. field-symbols:
  72. <fs_str> type string,
  73. <fs_imp> type string,
  74. <fs_inf> like wa_inf,
  75. <fs_xsz> like wa_xsz,
  76. <fs_data> type zsfi0018_xsz.

ZFIR0035_ACCOUNTDOC_EXPORT_SCR

  1. *&---------------------------------------------------------------------*
  2. *& 包含 ZFIR0035_ACCOUNTDOC_EXPORT_SCR
  3. *&---------------------------------------------------------------------*
  4.  
  5. selection-screen begin of block block1 with frame title text-.
  6. parameter:
  7. p_bukrs type bukrs obligatory.
  8. select-options:
  9. s_budat for mkpf-budat obligatory.
  10. selection-screen end of block block1.
  11.  
  12. selection-screen begin of block block2 with frame title text-.
  13. parameters:
  14. p_dburl type rlgrap-filename obligatory.
  15.  
  16. selection-screen skip.
  17.  
  18. parameters:
  19. p_deltx as checkbox default 'X'.
  20. selection-screen end of block block2.

ZFIR0035_ACCOUNTDOC_EXPORT_PRO

  1. *&---------------------------------------------------------------------*
  2. *& 包含 ZFIR0035_ACCOUNTDOC_EXPORT_PRO
  3. *&---------------------------------------------------------------------*
  4.  
  5. initialization.
  6. "初始-公司代码
  7. perform frm_get_auth_bukrs using p_bukrs.
  8.  
  9. at selection-screen on value-request for p_dburl.
  10. "获取数据库(.MDB)路径
  11. perform frm_get_filepath_dburl.
  12.  
  13. start-of-selection.
  14. "权限检查
  15. perform frm_auth_check_bukrs.
  16. "获取数据
  17. perform frm_get_data.
  18. "下载TXT文件
  19. perform frm_txt_download.
  20. "导入数据库表
  21. perform frm_txt_to_access.
  22. "删除TXT文件
  23. if p_deltx is not initial.
  24. perform frm_txt_delete_file.
  25. endif.
  26.  
  27. end-of-selection.
  28. "输出执行信息
  29. perform frm_exec_info.

ZFIR0035_ACCOUNTDOC_EXPORT_FRM

  1. *&---------------------------------------------------------------------*
  2. *& 包含 ZFIR0035_ACCOUNTDOC_EXPORT_FRM
  3. *&---------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *& Form FRM_GET_FILEPATH_DBURL
  6. *&---------------------------------------------------------------------*
  7. * text
  8. *----------------------------------------------------------------------*
  9. * --> p1 text
  10. * <-- p2 text
  11. *----------------------------------------------------------------------*
  12. form frm_get_filepath_dburl .
  13. call function 'WS_FILENAME_GET'
  14. exporting
  15. def_filename = text-
  16. def_path = 'D:\'
  17. mask = ',*.mdb,.'
  18. mode = 'O'
  19. title = text-003
  20. importing
  21. filename = p_dburl
  22. exceptions
  23. inv_winsys = 1
  24. no_batch = 2
  25. selection_cancel = 3
  26. selection_error = 4
  27. others = 5.
  28. case sy-subrc.
  29. when 0.
  30. when others.
  31. exit.
  32. endcase.
  33. endform.
  34. *&---------------------------------------------------------------------*
  35. *& Form FRM_GET_DATA
  36. *&---------------------------------------------------------------------*
  37. * text
  38. *----------------------------------------------------------------------*
  39. * --> p1 text
  40. * <-- p2 text
  41. *----------------------------------------------------------------------*
  42. form frm_get_data .
  43. data:
  44. lv_index type string,
  45. lv_dmbtr type string,
  46. lv_wrbtr type string,
  47. lv_pswbt type string,
  48. gv_zchar type c.
  49.  
  50. call function 'SAPGUI_PROGRESS_INDICATOR'
  51. exporting
  52. percentage = 30
  53. text = text-005.
  54.  
  55. gs_inf-qydat = sy-datum.
  56. gs_inf-qytim = sy-uzeit.
  57. gs_inf-dburl = p_dburl.
  58.  
  59. select single zchar
  60. into gv_zchar
  61. from ztfi0034_char.
  62. if sy-subrc <> 0.
  63. message e001(00) with text-042.
  64. endif.
  65.  
  66. call function 'ZFI_01_ACCOUNTDOC_EXPORT'
  67. exporting
  68. p_bukrs = p_bukrs
  69. tables
  70. it_budat = s_budat
  71. et_data = gt_data.
  72.  
  73. do 4000000 times.
  74. read table gt_data assigning <fs_data> index 1.
  75. if sy-subrc = 0.
  76. append <fs_data> to gt_data.
  77. endif.
  78.  
  79. enddo.
  80.  
  81. "增加标题字符
  82. append initial line to gt_str assigning <fs_str>.
  83. concatenate
  84. gv_zchar 'ID' gv_zchar gc_char
  85. gv_zchar 'BUKRS' gv_zchar gc_char
  86. gv_zchar 'BELNR' gv_zchar gc_char
  87. gv_zchar 'GJAHR' gv_zchar gc_char
  88. gv_zchar 'MONAT' gv_zchar gc_char
  89. gv_zchar 'BLART' gv_zchar gc_char
  90. gv_zchar 'BLDAT' gv_zchar gc_char
  91. gv_zchar 'BUDAT' gv_zchar gc_char
  92. gv_zchar 'CPUDT' gv_zchar gc_char
  93. gv_zchar 'CPUTM' gv_zchar gc_char
  94. gv_zchar 'USNAM' gv_zchar gc_char
  95. gv_zchar 'TCODE' gv_zchar gc_char
  96. gv_zchar 'STBLG' gv_zchar gc_char
  97. gv_zchar 'STJAH' gv_zchar gc_char
  98. gv_zchar 'BKTXT' gv_zchar gc_char
  99. gv_zchar 'XSTOV' gv_zchar gc_char
  100. gv_zchar 'STGRD' gv_zchar gc_char
  101. gv_zchar 'PPNAM' gv_zchar gc_char
  102. gv_zchar 'UMSKZ' gv_zchar gc_char
  103. gv_zchar 'SHKZG' gv_zchar gc_char
  104. gv_zchar 'DMBTR' gv_zchar gc_char
  105. gv_zchar 'WRBTR' gv_zchar gc_char
  106. gv_zchar 'PSWBT' gv_zchar gc_char
  107. gv_zchar 'KOKRS' gv_zchar gc_char
  108. gv_zchar 'KOSTL' gv_zchar gc_char
  109. gv_zchar 'VBELN' gv_zchar gc_char
  110. gv_zchar 'VBEL2' gv_zchar gc_char
  111. gv_zchar 'HKONT' gv_zchar gc_char
  112. gv_zchar 'TXT20' gv_zchar gc_char
  113. gv_zchar 'XNEGP' gv_zchar gc_char
  114. into <fs_str>.
  115. unassign <fs_str>.
  116.  
  117. "增加标题文本
  118. append initial line to gt_str assigning <fs_str>.
  119. lv_index = lv_index + 1.
  120. concatenate
  121. gv_zchar lv_index gv_zchar gc_char
  122. gv_zchar text-011 gv_zchar gc_char
  123. gv_zchar text-012 gv_zchar gc_char
  124. gv_zchar text-013 gv_zchar gc_char
  125. gv_zchar text-014 gv_zchar gc_char
  126. gv_zchar text-015 gv_zchar gc_char
  127. gv_zchar text-016 gv_zchar gc_char
  128. gv_zchar text-017 gv_zchar gc_char
  129. gv_zchar text-018 gv_zchar gc_char
  130. gv_zchar text-019 gv_zchar gc_char
  131. gv_zchar text-020 gv_zchar gc_char
  132. gv_zchar text-021 gv_zchar gc_char
  133. gv_zchar text-022 gv_zchar gc_char
  134. gv_zchar text-023 gv_zchar gc_char
  135. gv_zchar text-024 gv_zchar gc_char
  136. gv_zchar text-025 gv_zchar gc_char
  137. gv_zchar text-026 gv_zchar gc_char
  138. gv_zchar text-027 gv_zchar gc_char
  139. gv_zchar text-028 gv_zchar gc_char
  140. gv_zchar text-029 gv_zchar gc_char
  141. gv_zchar text-030 gv_zchar gc_char
  142. gv_zchar text-031 gv_zchar gc_char
  143. gv_zchar text-032 gv_zchar gc_char
  144. gv_zchar text-033 gv_zchar gc_char
  145. gv_zchar text-034 gv_zchar gc_char
  146. gv_zchar text-035 gv_zchar gc_char
  147. gv_zchar text-036 gv_zchar gc_char
  148. gv_zchar text-037 gv_zchar gc_char
  149. gv_zchar text-038 gv_zchar gc_char
  150. gv_zchar text-039 gv_zchar
  151. into <fs_str>.
  152. unassign <fs_str>.
  153.  
  154. "数据明细
  155. loop at gt_data assigning <fs_data>.
  156. clear:lv_dmbtr,lv_wrbtr,lv_pswbt.
  157.  
  158. lv_index = lv_index + 1.
  159. lv_dmbtr = <fs_data>-dmbtr.
  160. lv_wrbtr = <fs_data>-wrbtr.
  161. lv_pswbt = <fs_data>-pswbt.
  162.  
  163. append initial line to gt_str assigning <fs_str>.
  164. concatenate
  165. gv_zchar lv_index gv_zchar gc_char
  166. gv_zchar <fs_data>-bukrs gv_zchar gc_char
  167. gv_zchar <fs_data>-belnr gv_zchar gc_char
  168. gv_zchar <fs_data>-gjahr gv_zchar gc_char
  169. gv_zchar <fs_data>-monat gv_zchar gc_char
  170. gv_zchar <fs_data>-blart gv_zchar gc_char
  171. gv_zchar <fs_data>-bldat gv_zchar gc_char
  172. gv_zchar <fs_data>-budat gv_zchar gc_char
  173. gv_zchar <fs_data>-cpudt gv_zchar gc_char
  174. gv_zchar <fs_data>-cputm gv_zchar gc_char
  175. gv_zchar <fs_data>-usnam gv_zchar gc_char
  176. gv_zchar <fs_data>-tcode gv_zchar gc_char
  177. gv_zchar <fs_data>-stblg gv_zchar gc_char
  178. gv_zchar <fs_data>-stjah gv_zchar gc_char
  179. gv_zchar <fs_data>-bktxt gv_zchar gc_char
  180. gv_zchar <fs_data>-xstov gv_zchar gc_char
  181. gv_zchar <fs_data>-stgrd gv_zchar gc_char
  182. gv_zchar <fs_data>-ppnam gv_zchar gc_char
  183. gv_zchar <fs_data>-umskz gv_zchar gc_char
  184. gv_zchar <fs_data>-shkzg gv_zchar gc_char
  185. gv_zchar lv_dmbtr gv_zchar gc_char
  186. gv_zchar lv_wrbtr gv_zchar gc_char
  187. gv_zchar lv_pswbt gv_zchar gc_char
  188. gv_zchar <fs_data>-kokrs gv_zchar gc_char
  189. gv_zchar <fs_data>-kostl gv_zchar gc_char
  190. gv_zchar <fs_data>-vbeln gv_zchar gc_char
  191. gv_zchar <fs_data>-vbel2 gv_zchar gc_char
  192. gv_zchar <fs_data>-hkont gv_zchar gc_char
  193. gv_zchar <fs_data>-txt20 gv_zchar gc_char
  194. gv_zchar <fs_data>-xnegp gv_zchar
  195. into <fs_str>.
  196. unassign <fs_str>.
  197. endloop.
  198.  
  199. describe table gt_str lines gs_inf-count.
  200. endform.
  201. *&---------------------------------------------------------------------*
  202. *& Form FRM_TXT_DOWNLOAD
  203. *&---------------------------------------------------------------------*
  204. * text
  205. *----------------------------------------------------------------------*
  206. * --> p1 text
  207. * <-- p2 text
  208. *----------------------------------------------------------------------*
  209. form frm_txt_download .
  210. data:
  211. lv_filetype type char10 value 'DAT', "DAT
  212. lv_codepage type abap_encoding value ''.
  213.  
  214. call function 'SAPGUI_PROGRESS_INDICATOR'
  215. exporting
  216. percentage = 60
  217. text = text-006.
  218.  
  219. gs_inf-txdat = sy-datum.
  220. gs_inf-txtim = sy-uzeit.
  221.  
  222. concatenate
  223. p_bukrs gc_char1
  224. s_budat-low gc_char1
  225. s_budat-high
  226. into gv_tabnm.
  227.  
  228. gs_inf-tabnm = gv_tabnm.
  229.  
  230. concatenate
  231. 'd:\'
  232. gv_tabnm
  233. '.TXT'
  234. into gv_txurl.
  235.  
  236. "内表数据保存本地
  237. call function 'GUI_DOWNLOAD'
  238. exporting
  239. confirm_overwrite = gc_check "如果文件存在 弹出是否覆盖文件的对话框
  240. write_field_separator = space "加入字段分隔符 TAB
  241. filename = gv_txurl "文件名 必须为 STRING 类型
  242. filetype = lv_filetype
  243. codepage = lv_codepage
  244. tables
  245. data_tab = gt_str "内表
  246. exceptions
  247. file_write_error = 1
  248. file_not_found = 2.
  249.  
  250. endform.
  251. *&---------------------------------------------------------------------*
  252. *& Form FRM_TXT_TO_ACCESS
  253. *&---------------------------------------------------------------------*
  254. * text
  255. *----------------------------------------------------------------------*
  256. * --> p1 text
  257. * <-- p2 text
  258. *----------------------------------------------------------------------*
  259. form frm_txt_to_access .
  260. data:
  261. lv_conn type string,
  262. lv_fild type string,
  263. lv_hstr type string,
  264. lv_sqlh type string,
  265. lv_sqli type string,
  266. lv_crtb type string,
  267. lv_detb type string,
  268. lv_qytb type string,
  269. lv_infd type string,
  270. lv_col type string,
  271. lv_txt type string,
  272. lv_cont type i.
  273.  
  274. call function 'SAPGUI_PROGRESS_INDICATOR'
  275. exporting
  276. percentage = 80
  277. text = text-007.
  278.  
  279. gs_inf-acdat = sy-datum.
  280. gs_inf-actim = sy-uzeit.
  281.  
  282. concatenate
  283. gc_datasour
  284. p_dburl
  285. into gv_datasour.
  286.  
  287. concatenate
  288. gc_provider gc_char2
  289. gc_security gc_char2
  290. gv_datasour
  291. into lv_conn.
  292.  
  293. "TXT文件
  294. concatenate
  295. 'FROM [Text;FMT=CSVDelimited;HDR=Yes;IMEX=;DATABASE=D:\;].['
  296. gv_tabnm
  297. '#txt];'
  298. into lv_txt.
  299.  
  300. "Excel文件
  301. * concatenate
  302. * 'FROM [Excel 8.0;DATABASE=C:\'
  303. * gv_tabnm
  304. * '.xls].[Sheet1]'
  305. * into lv_txt.
  306.  
  307. "删除表
  308. concatenate
  309. 'DROP TABLE'
  310. gv_tabnm
  311. into lv_detb separated by space.
  312.  
  313. concatenate
  314. 'VALUES ('
  315. gc_char3 text-011 gc_char3 gc_char
  316. gc_char3 text-012 gc_char3 gc_char
  317. gc_char3 text-013 gc_char3 gc_char
  318. gc_char3 text-014 gc_char3 gc_char
  319. gc_char3 text-015 gc_char3 gc_char
  320. gc_char3 text-016 gc_char3 gc_char
  321. gc_char3 text-017 gc_char3 gc_char
  322. gc_char3 text-018 gc_char3 gc_char
  323. gc_char3 text-019 gc_char3 gc_char
  324. gc_char3 text-020 gc_char3 gc_char
  325. gc_char3 text-021 gc_char3 gc_char
  326. gc_char3 text-022 gc_char3 gc_char
  327. gc_char3 text-023 gc_char3 gc_char
  328. gc_char3 text-024 gc_char3 gc_char
  329. gc_char3 text-025 gc_char3 gc_char
  330. gc_char3 text-026 gc_char3 gc_char
  331. gc_char3 text-027 gc_char3 gc_char
  332. gc_char3 text-028 gc_char3 gc_char
  333. gc_char3 text-029 gc_char3 gc_char
  334. gc_char3 text-030 gc_char3 gc_char
  335. gc_char3 text-031 gc_char3 gc_char
  336. gc_char3 text-032 gc_char3 gc_char
  337. gc_char3 text-033 gc_char3 gc_char
  338. gc_char3 text-034 gc_char3 gc_char
  339. gc_char3 text-035 gc_char3 gc_char
  340. gc_char3 text-036 gc_char3 gc_char
  341. gc_char3 text-037 gc_char3 gc_char
  342. gc_char3 text-038 gc_char3 gc_char
  343. gc_char3 text-039 gc_char3
  344. ')'
  345. into lv_hstr.
  346.  
  347. "创建数据表-SQL语句
  348. concatenate
  349. 'Create TABLE'
  350. gv_tabnm
  351. '('
  352. 'ID COUNTER NOT NULL,'
  353. 'BUKRS TEXT(),'
  354. 'BELNR TEXT(),'
  355. 'GJAHR TEXT(),'
  356. 'MONAT TEXT(),'
  357. 'BLART TEXT(),'
  358. 'BLDAT TEXT(),'
  359. 'BUDAT TEXT(),'
  360. 'CPUDT TEXT(),'
  361. 'CPUTM TEXT(),'
  362. 'USNAM TEXT(),'
  363. 'TCODE TEXT(),'
  364. 'STBLG TEXT(),'
  365. 'STJAH TEXT(),'
  366. 'BKTXT TEXT(),'
  367. 'XSTOV TEXT(),'
  368. 'STGRD TEXT(),'
  369. 'PPNAM TEXT(),'
  370. 'UMSKZ TEXT(),'
  371. 'SHKZG TEXT(),'
  372. 'DMBTR TEXT(),'
  373. 'WRBTR TEXT(),'
  374. 'PSWBT TEXT(),'
  375. 'KOKRS TEXT(),'
  376. 'KOSTL TEXT(),'
  377. 'VBELN TEXT(),'
  378. 'VBEL2 TEXT(),'
  379. 'HKONT TEXT(),'
  380. 'TXT20 TEXT(),'
  381. 'XNEGP TEXT()'
  382. ')'
  383. into lv_crtb separated by space.
  384.  
  385. "数据写入-SQL语句-Insert字段明细
  386. concatenate
  387. gv_tabnm
  388. '('
  389. 'BUKRS' gc_char
  390. 'BELNR' gc_char
  391. 'GJAHR' gc_char
  392. 'MONAT' gc_char
  393. 'BLART' gc_char
  394. 'BLDAT' gc_char
  395. 'BUDAT' gc_char
  396. 'CPUDT' gc_char
  397. 'CPUTM' gc_char
  398. 'USNAM' gc_char
  399. 'TCODE' gc_char
  400. 'STBLG' gc_char
  401. 'STJAH' gc_char
  402. 'BKTXT' gc_char
  403. 'XSTOV' gc_char
  404. 'STGRD' gc_char
  405. 'PPNAM' gc_char
  406. 'UMSKZ' gc_char
  407. 'SHKZG' gc_char
  408. 'DMBTR' gc_char
  409. 'WRBTR' gc_char
  410. 'PSWBT' gc_char
  411. 'KOKRS' gc_char
  412. 'KOSTL' gc_char
  413. 'VBELN' gc_char
  414. 'VBEL2' gc_char
  415. 'HKONT' gc_char
  416. 'TXT20' gc_char
  417. 'XNEGP'
  418. ')'
  419. into lv_infd.
  420.  
  421. "数据导入-SQL语句-Select字段明细
  422. concatenate
  423. 'F1 AS ID' gc_char
  424. 'F2 AS BUKRS' gc_char
  425. 'F3 AS BELNR' gc_char
  426. 'F4 AS GJAHR' gc_char
  427. 'F5 AS MONAT' gc_char
  428. 'F6 AS BLART' gc_char
  429. 'F7 AS BLDAT' gc_char
  430. 'F8 AS BUDAT' gc_char
  431. 'F9 AS CPUDT' gc_char
  432. 'F10 AS CPUTM' gc_char
  433. 'F11 AS USNAM' gc_char
  434. 'F12 AS TCODE' gc_char
  435. 'F13 AS STBLG' gc_char
  436. 'F14 AS STJAH' gc_char
  437. 'F15 AS BKTXT' gc_char
  438. 'F16 AS XSTOV' gc_char
  439. 'F17 AS STGRD' gc_char
  440. 'F18 AS PPNAM' gc_char
  441. 'F19 AS UMSKZ' gc_char
  442. 'F20 AS SHKZG' gc_char
  443. 'F21 AS DMBTR' gc_char
  444. 'F22 AS WRBTR' gc_char
  445. 'F23 AS PSWBT' gc_char
  446. 'F24 AS KOKRS' gc_char
  447. 'F25 AS KOSTL' gc_char
  448. 'F26 AS VBELN' gc_char
  449. 'F27 AS VBEL2' gc_char
  450. 'F28 AS HKONT' gc_char
  451. 'F29 AS TXT20' gc_char
  452. 'F30 AS XNEGP'
  453. into lv_fild.
  454.  
  455. "SQL语句-查询记录数
  456.  
  457. "SQL语句-导入已存在表记录-数据抬头
  458. concatenate
  459. 'INSERT INTO'
  460. lv_infd
  461. lv_hstr
  462. into lv_sqlh separated by space.
  463.  
  464. "SQL语句--创建表同时导入数据
  465. concatenate
  466. 'SELECT * '
  467. "lv_fild
  468. 'INTO'
  469. gv_tabnm
  470. lv_txt
  471. into lv_sqli separated by space.
  472.  
  473. "SQL语句--导入已存在表记录-数据明细
  474. * concatenate
  475. * 'INSERT INTO'
  476. * lv_infd
  477. * 'SELECT'
  478. * lv_fild
  479. * lv_txt
  480. * into lv_sqli separated by space.
  481.  
  482. "数据库连接
  483. create object go_conn 'ADODB.Connection'.
  484. set property of go_conn 'Provider' = gc_provider.
  485. set property of go_conn 'ConnectionString' = lv_conn.
  486. call method of go_conn 'Open'.
  487.  
  488. call method of go_conn 'BeginTrans' = lv_cont.
  489.  
  490. * "创建表
  491. * call method of go_conn 'Execute' = go_rset
  492. * exporting
  493. * #1 = lv_crtb.
  494. *
  495. * "写入标题数据
  496. * call method of go_conn 'Execute' = go_rset
  497. * exporting
  498. * #1 = lv_sqlh.
  499.  
  500. "写入明细数据
  501. call method of go_conn 'Execute' = go_rset
  502. exporting
  503. #1 = lv_sqli.
  504.  
  505. call method of go_conn 'CommitTrans' = lv_cont.
  506.  
  507. "关闭及释放
  508. call method of go_rset 'Close'.
  509. call method of go_conn 'Close'.
  510. call method of go_rtab 'Close'.
  511. free object go_rset.
  512. free object go_rtab.
  513. free object go_conn.
  514.  
  515. "完成时间
  516. gs_inf-fhdat = sy-datum.
  517. gs_inf-fhtim = sy-uzeit.
  518.  
  519. if gs_inf-fhdat = gs_inf-qydat.
  520. gs_inf-ustim = gs_inf-fhtim - gs_inf-qytim.
  521. else.
  522. gs_inf-ustim = ( gs_inf-fhdat - gs_inf-qydat ) * 240000 - gs_inf-fhtim + gs_inf-qytim.
  523. endif.
  524.  
  525. endform.
  526. *&---------------------------------------------------------------------*
  527. *& Form FRM_TXT_DELETE_FILE
  528. *&---------------------------------------------------------------------*
  529. * text
  530. *----------------------------------------------------------------------*
  531. * --> p1 text
  532. * <-- p2 text
  533. *----------------------------------------------------------------------*
  534. form frm_txt_delete_file .
  535. data:lv_rc type i.
  536.  
  537. call function 'SAPGUI_PROGRESS_INDICATOR'
  538. exporting
  539. percentage = 100
  540. text = text-008.
  541.  
  542. call method cl_gui_frontend_services=>file_delete
  543. exporting
  544. filename = gv_txurl
  545. changing
  546. rc = lv_rc.
  547.  
  548. endform.
  549. *&---------------------------------------------------------------------*
  550. *& Form FRM_EXEC_INFO
  551. *&---------------------------------------------------------------------*
  552. * text
  553. *----------------------------------------------------------------------*
  554. * --> p1 text
  555. * <-- p2 text
  556. *----------------------------------------------------------------------*
  557. form frm_exec_info .
  558. skip.
  559. write:/10 text-050.
  560. write:/10(60) sy-uline.
  561. write:/20 text-051,35 p_bukrs.
  562. write:/20 text-052,35 s_budat-low,50 s_budat-high.
  563. write:/20 text-053,35 p_dburl.
  564. write:/20 text-054,35 gs_inf-tabnm.
  565. write:/20 text-055,35 sy-uname.
  566. skip.
  567. write:/10 text-056.
  568. write:/10(60) sy-uline.
  569. write:/20 text-057,35 gs_inf-count.
  570. write:/20 text-058,35 gs_inf-qydat,50 gs_inf-qytim.
  571. write:/20 text-059,35 gs_inf-txdat,50 gs_inf-txtim.
  572. write:/20 text-060,35 gs_inf-acdat,50 gs_inf-actim.
  573. write:/20 text-061,35 gs_inf-fhdat,50 gs_inf-fhtim.
  574. write:/20 text-062,35 gs_inf-ustim.
  575.  
  576. endform.
  577. *&---------------------------------------------------------------------*
  578. *& Form FRM_GET_AUTH_BUKRS
  579. *&---------------------------------------------------------------------*
  580. * text
  581. *----------------------------------------------------------------------*
  582. * -->P_P_BUKRS text
  583. *----------------------------------------------------------------------*
  584. form frm_get_auth_bukrs using fv_bukrs.
  585. data:
  586. lt_value type table of usvalues.
  587. field-symbols:
  588. <fs_value> type usvalues.
  589.  
  590. call function 'SUSR_USER_AUTH_FOR_OBJ_GET'
  591. exporting
  592. user_name = sy-uname
  593. sel_object = 'F_BKPF_BUK'
  594. tables
  595. values = lt_value
  596. exceptions
  597. user_name_not_exist = 1
  598. not_authorized = 2
  599. internal_error = 3
  600. others = 4.
  601. if sy-subrc = 0 .
  602. loop at lt_value assigning <fs_value>
  603. where field = 'BUKRS'
  604. and von ne '*'.
  605. select single count(*)
  606. from t001
  607. where bukrs = <fs_value>-von.
  608. if sy-subrc = 0.
  609. fv_bukrs = <fs_value>-von.
  610. endif.
  611. endloop.
  612. endif.
  613.  
  614. endform.
  615. *&---------------------------------------------------------------------*
  616. *& Form FRM_AUTH_CHECK_BUKRS
  617. *&---------------------------------------------------------------------*
  618. * text
  619. *----------------------------------------------------------------------*
  620. * --> p1 text
  621. * <-- p2 text
  622. *----------------------------------------------------------------------*
  623. form frm_auth_check_bukrs .
  624. authority-check
  625. object 'F_BKPF_BUK'
  626. id 'BUKRS'
  627. field p_bukrs.
  628. if sy-subrc ne 0.
  629. message e001(00) with p_bukrs text-009.
  630. endif.
  631.  
  632. select single count(*)
  633. from t001
  634. where bukrs = p_bukrs.
  635. if sy-subrc <> 0.
  636. message e001(00) with p_bukrs text-040.
  637. endif.
  638.  
  639. if s_budat-low is initial
  640. or s_budat-high is initial.
  641. message e001(00) with text-041.
  642. endif.
  643. endform.

ABAP-2-会计凭证批量数据导入本地ACCESS的更多相关文章

  1. ABAP-1-会计凭证批量数据导入本地ACCESS

    公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...

  2. HBase(三): Azure HDInsigt HBase表数据导入本地HBase

    目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见  HDP2.4安装(五):集群及组件安装 , ...

  3. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  4. sql server之批量数据导入

    实际应用场景中,有时会需要把一批数据导入数据库.这批数据可能来源于另一个数据源.比较常规的做法是先读取到dataset,然后跑一个循环,每一行拼一句insert into语句,执行之.用过的人会知道, ...

  5. SQL Server Bulk Insert批量数据导入

    SQL Server的Bulk Insert语句可以将本地或远程的数据文件批量导入到数据库中,速度非常的快.远程文件必须共享才行,文件路径须使用通用约定(UNC)名称,即"\\服务器名或IP ...

  6. hbase批量数据导入报错:NotServingRegionException

    批量导入数据到hbase的时候,报错: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 ac ...

  7. Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    1.第一步,在本地数据库中建一个与服务器同名的数据库 2.第二步,右键源数据库,任务>导出数据,弹出导入导出提示框,点下一步继续 3.远程数据库操作,确认服务器名称(服务器地址).身份验证(输入 ...

  8. 继上篇后的Excel批量数据导入

    上篇Excel动态生成模板,此篇将借用此模板进行Excel数据的批量导入. 说明:由于数据库中部分数据储存的是编码或者Id,因此,这里就需要用到上篇中的全局数据,判断是否有数据,有数据直接使用,没有数 ...

  9. mysql批量数据导入探究

    最近工作碰到一个问题,如何将大量数据(100MB+)导入到远程的mysql server上. 尝试1: Statement执行executeBatch的方法.每次导入1000条记录.时间为12s/10 ...

随机推荐

  1. Java-Runoob-高级教程-实例-时间处理:03. Java 实例 - 获取年份、月份等

    ylbtech-Java-Runoob-高级教程-实例-时间处理:03. Java 实例 - 获取年份.月份等 1.返回顶部 1. Java 实例 - 获取年份.月份等  Java 实例 以下实例演示 ...

  2. [转][EasyUI]扩展 DateBox

    /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; (function ($) { var buttons = $.ext ...

  3. java中synchronized 用在实例方法和对象方法上面的区别

    https://bijian1013.iteye.com/blog/1836575 在Java中,synchronized 是用来表示同步的,我们可以synchronized 来修饰一个方法.也可以s ...

  4. 让android程序根据重力感应旋转屏幕(支持4个方向旋转)

    原文地址:http://blog.csdn.net/yixiaoqingyuz/article/details/6453798代码如下: ChangeOrientationHandler.java p ...

  5. SCCM2012 R2实战系列之七:软件分发(exe)

    在上一章节中,我们完成了SCCM 2012客户端代理软件的安装,现在就可以为客户端来部署应用程序了. SCCM2012增加了应用程序分发,同时保留了SCCM 2007里的包分发.应用程序分发可以直接对 ...

  6. MongoDB集群搭建之副本集模仿主从模式的行为

    #模拟主节点异常中断 [root@ba3b27d855f6 bin]# kill -9 199 [root@ba3b27d855f6 bin]#   #连接到其中一台备份节点 [root@ba3b27 ...

  7. plugin 看不到update按钮

    然后再按一下tab键,焦点就会在 update上了.然后再回车.

  8. echart力导向图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="GBK" ...

  9. browserify babel gulp 没有编译import的文件

    1.遇到坑的gulp配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel ...

  10. scrapy框架之CrawlSpider操作

    提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法二:基 ...