QID            用表 APQD 里的ID 
REPORT    Z001

去年6月花了一周的成果,可是玩了一周就没玩了,

现在想来:

研究下程序共性 ,这个总结的多,一定会提高效率

这个用起来程序, 2s 完成程序框架部分,
报表 打印 bdc 单据创建, 都行,

  1. REPORT zrsbdcrec_1 MESSAGE-ID zdemo.
  2. *MESSAGE-ID ms.
  3.  
  4. TABLES:progdir,
  5. trdir.
  6.  
  7. *---------------------------------------------------------------------*
  8. * SELECTION SCREEN
  9. *---------------------------------------------------------------------*
  10. PARAMETERS: qid LIKE apqd-qid,
  11. report LIKE trdir-name.
  12. * testdata AS CHECKBOX,
  13. * dsn(132) LOWER CASE,
  14. * file AS CHECKBOX.
  15. * selections of generated program because of texts
  16.  
  17. *---------------------------------------------------------------------*
  18. * DATA
  19. *---------------------------------------------------------------------*
  20. DATA: BEGIN OF source OCCURS ,
  21. line1(),
  22. line2(),
  23. END OF source.
  24.  
  25. DATA: dynprotab LIKE bdcdata OCCURS WITH HEADER LINE.
  26.  
  27. DATA: tcode LIKE tstc-tcode.
  28. DATA: text_tab LIKE textpool OCCURS WITH HEADER LINE,
  29. text_tab_2 LIKE textpool OCCURS WITH HEADER LINE.
  30. DATA: dynpro_fields LIKE bdcdf OCCURS WITH HEADER LINE.
  31. DATA: dynpro_fields_index LIKE sy-tabix,
  32. tree_name().
  33.  
  34. **用 FIELDNAME FIELDTEXT
  35. DATA:gt_field LIKE STANDARD TABLE OF dfies,
  36. gs_field LIKE dfies.
  37. *---------------------------------------------------------------------*
  38. * CONSTANTS
  39. *---------------------------------------------------------------------*
  40. CONSTANTS: c_flg1edt TYPE x VALUE ''.
  41.  
  42. *---------------------------------------------------------------------*
  43. * start-of-selection
  44. *---------------------------------------------------------------------*
  45. START-OF-SELECTION.
  46.  
  47. PERFORM frm_check_prog.
  48.  
  49. ** get bdc records
  50. CALL FUNCTION 'BDC_OBJECT_READ'
  51. EXPORTING
  52. queue_id = qid
  53. TABLES
  54. dynprotab = dynprotab
  55. EXCEPTIONS
  56. not_found =
  57. system_failure =
  58. invalid_datatype =
  59. OTHERS = .
  60. IF sy-subrc >< .
  61. MESSAGE s627 WITH qid.
  62. EXIT.
  63. ENDIF.
  64.  
  65. **get field
  66. CALL FUNCTION 'BDC_DYNPROTAB_GET_FIELDS'
  67. TABLES
  68. dynprotab = dynprotab
  69. dynprofields = dynpro_fields.
  70.  
  71. ** generate source lines of report
  72. IF report = space.
  73. STOP.
  74. ENDIF.
  75. * same lines for all records
  76.  
  77. PERFORM frm_set_top.
  78.  
  79. *&s4.TYPES
  80. PERFORM frm_get_table.
  81.  
  82. *&s5.DATA
  83. PERFORM frm_set_data.
  84.  
  85. *&s6.SELECTION SCREEN
  86. source = '*---------------------------------------------------------------------*'.
  87. APPEND source. CLEAR source.
  88. source = '* SELECTION SCREEN'.
  89. APPEND source. CLEAR source.
  90. source = '*---------------------------------------------------------------------*'.
  91. APPEND source. CLEAR source.
  92. source-line1 = 'PARAMETERS: p_file LIKE rlgrap-filename MEMORY ID ws MODIF ID r01,'.
  93. APPEND source. CLEAR source.
  94. source-line1 = 'p_mode LIKE ctu_params-dismode DEFAULT ''N''.'.
  95. APPEND source. CLEAR source.
  96. APPEND source.
  97. **PARAMETERS: p_file LIKE rlgrap-filename MEMORY ID ws MODIF ID r01.
  98.  
  99. *&s7.set f4
  100. PERFORM frm_set_f4.
  101.  
  102. *&s8.START-OF-SELECTION.
  103. PERFORM frm_set_main.
  104.  
  105. PERFORM frm_f4.
  106. PERFORM frm_upload_data.
  107. PERFORM frm_alv_upload.
  108.  
  109. *&s9.USER-COMMAND.
  110. PERFORM frm_pf_statu.
  111. PERFORM frm_use_command.
  112.  
  113. *&s10.FORM frm_bdc_save .
  114. PERFORM frm_bdc_save .
  115.  
  116. *&s11.BDC-top
  117. PERFORM frm_dynpro.
  118.  
  119. **code generate
  120. PERFORM frm_close_prog.
  121.  
  122. *---------------------------------------------------------------------*
  123. * end-of-selection
  124. *---------------------------------------------------------------------*
  125.  
  126. *&---------------------------------------------------------------------*
  127. *& Form FRM_GET_TABLE
  128. *&---------------------------------------------------------------------*
  129. * text
  130. *----------------------------------------------------------------------*
  131. * --> p1 text
  132. * <-- p2 text
  133. *----------------------------------------------------------------------*
  134. FORM frm_get_table .
  135. DATA: l_dfies LIKE dfies,
  136. l_tabname LIKE dcobjdef-name,
  137. l_fieldname LIKE dfies-lfieldname,
  138. l_dummy LIKE dfies-lfieldname.
  139.  
  140. source = '*---------------------------------------------------------------------*'.
  141. APPEND source. CLEAR source.
  142. source = '* TABLE'.
  143. APPEND source. CLEAR source.
  144. source = '*---------------------------------------------------------------------*'.
  145. APPEND source. CLEAR source.
  146. source-line1 = 'TYPES:BEGIN OF ty_data,'.
  147. APPEND source. CLEAR source. APPEND source.
  148.  
  149. **
  150. LOOP AT dynpro_fields.
  151. * *** <field_n>(<length>)
  152. CLEAR l_dfies.
  153. IF dynpro_fields-fieldname CA '-'.
  154. * create dataelement comment line
  155. SPLIT dynpro_fields-fieldname AT '-'
  156. INTO l_tabname
  157. l_fieldname.
  158. SPLIT l_fieldname AT '('
  159. INTO l_fieldname
  160. l_dummy.
  161. CALL FUNCTION 'DDIF_FIELDINFO_GET'
  162. EXPORTING
  163. tabname = l_tabname
  164. * fieldname = l_fieldname
  165. * LANGU = SY-LANGU
  166. lfieldname = l_fieldname
  167. * ALL_TYPES = ' '
  168. IMPORTING
  169. * X030L_WA =
  170. * DDOBJTYPE =
  171. dfies_wa = l_dfies
  172. * TABLES
  173. * DFIES_TAB =
  174. EXCEPTIONS
  175. not_found =
  176. internal_error =
  177. OTHERS = .
  178. IF sy-subrc <> .
  179. CLEAR l_dfies.
  180. ELSE.
  181. * APPEND l_dfies TO gt_field.
  182. MOVE l_dfies TO gs_field.
  183. gs_field-fieldname = dynpro_fields-recfield.
  184. APPEND gs_field TO gt_field.
  185.  
  186. ENDIF.
  187. ENDIF.
  188. source = '* data element: '.
  189. source+ = l_dfies-rollname.
  190. APPEND source. CLEAR source.
  191. CONCATENATE dynpro_fields-recfield
  192. '(' dynpro_fields-length ')' ','
  193. INTO source+.
  194. APPEND source. CLEAR source.
  195. ENDLOOP.
  196.  
  197. source = ' SEL TYPE C,'.
  198. APPEND source. CLEAR source.
  199. source = ' FLAG TYPE C,'.
  200. APPEND source. CLEAR source.
  201. source = ' MSG TYPE MSG,'.
  202. APPEND source. CLEAR source.
  203. ** end of record.
  204. source = ' END OF ty_data.'.
  205. APPEND source. CLEAR source.
  206. APPEND source.
  207.  
  208. ENDFORM. " FRM_GET_TABLE
  209. *&---------------------------------------------------------------------*
  210. *& Form FRM_SET_F4
  211. *&---------------------------------------------------------------------*
  212. * text
  213. *----------------------------------------------------------------------*
  214. * --> p1 text
  215. * <-- p2 text
  216. *----------------------------------------------------------------------*
  217. FORM frm_set_f4 .
  218. source = 'AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.'.
  219. APPEND source. CLEAR source.
  220. source = ' PERFORM frm_getdata USING p_file.'.
  221. APPEND source. CLEAR source.
  222. APPEND source.
  223. ENDFORM. " FRM_SET_F4
  224. *&---------------------------------------------------------------------*
  225. *& Form frm_set_main
  226. *&---------------------------------------------------------------------*
  227. * text
  228. *----------------------------------------------------------------------*
  229. * --> p1 text
  230. * <-- p2 text
  231. *----------------------------------------------------------------------*
  232. FORM frm_set_main .
  233. **text
  234. source = '*---------------------------------------------------------------------*'.
  235. APPEND source. CLEAR source.
  236. source = '* START-OF-SELECTION.'.
  237. APPEND source. CLEAR source.
  238. source = '*---------------------------------------------------------------------*'.
  239. APPEND source. CLEAR source.
  240.  
  241. source-line1 = 'START-OF-SELECTION.'.
  242. APPEND source. CLEAR source. APPEND source.
  243. source = ' PERFORM frm_upload_data.'.
  244. APPEND source. CLEAR source.
  245. source = ' PERFORM frm_alv_upload.'.
  246. APPEND source. CLEAR source.
  247. APPEND source.
  248.  
  249. ENDFORM. " frm_set_main
  250. *&---------------------------------------------------------------------*
  251. *& Form FRM_UPLOAD_DATA
  252. *&---------------------------------------------------------------------*
  253. * text
  254. *----------------------------------------------------------------------*
  255. * --> p1 text
  256. * <-- p2 text
  257. *----------------------------------------------------------------------*
  258. FORM frm_upload_data .
  259.  
  260. **text
  261. source = '*---------------------------------------------------------------------*'.
  262. APPEND source. CLEAR source.
  263. source = '*& Form FRM_UPLOAD_DATA'.
  264. APPEND source. CLEAR source.
  265. source = '*---------------------------------------------------------------------*'.
  266. APPEND source. CLEAR source.
  267.  
  268. source = 'FORM frm_upload_data .'.
  269. APPEND source. CLEAR source.
  270.  
  271. source = ' DATA: lv_filename TYPE string.'.
  272. APPEND source. CLEAR source.
  273. source = ' lv_filename = p_file.'.
  274. APPEND source. CLEAR source.
  275. source = ' REFRESH gt_data.'.
  276. APPEND source. CLEAR source.
  277. source-line1 = ' CALL METHOD cl_gui_frontend_services=>gui_upload'.
  278. APPEND source. CLEAR source.
  279. source-line1 = ' EXPORTING'.
  280. APPEND source. CLEAR source.
  281. source-line1 = ' filename = lv_filename'.
  282. APPEND source. CLEAR source.
  283. source-line1 = ' has_field_separator = GC_TRUE '.
  284. APPEND source. CLEAR source.
  285. source-line1 = ' read_by_line = GC_TRUE '.
  286. APPEND source. CLEAR source.
  287. source-line1 = ' CHANGING'.
  288. APPEND source. CLEAR source.
  289. source-line1 = ' data_tab = gt_data[]'.
  290. APPEND source. CLEAR source.
  291. source-line1 = ' EXCEPTIONS'.
  292. APPEND source. CLEAR source.
  293.  
  294. source-line1 = ' file_open_error = 1'.
  295. APPEND source. CLEAR source.
  296. source-line1 = ' file_read_error = 2'.
  297. APPEND source. CLEAR source.
  298. source-line1 = ' no_batch = 3'.
  299. APPEND source. CLEAR source.
  300. source-line1 = ' gui_refuse_filetransfer = 4'.
  301. APPEND source. CLEAR source.
  302. source-line1 = ' invalid_type = 5'.
  303. APPEND source. CLEAR source.
  304. source-line1 = ' no_authority = 6'.
  305. APPEND source. CLEAR source.
  306. source-line1 = ' unknown_error = 7'.
  307. APPEND source. CLEAR source.
  308. source-line1 = ' bad_data_format = 8'.
  309. APPEND source. CLEAR source.
  310. source-line1 = ' header_not_allowed = 9'.
  311. APPEND source. CLEAR source.
  312. source-line1 = ' separator_not_allowed = 10'.
  313. APPEND source. CLEAR source.
  314.  
  315. source-line1 = ' header_too_long = 11'.
  316. APPEND source. CLEAR source.
  317. source-line1 = ' unknown_dp_error = 12'.
  318. APPEND source. CLEAR source.
  319. source-line1 = ' access_denied = 13'.
  320. APPEND source. CLEAR source.
  321. source-line1 = ' dp_out_of_memory = 14'.
  322. APPEND source. CLEAR source.
  323. source-line1 = ' disk_full = 15'.
  324. APPEND source. CLEAR source.
  325. source-line1 = ' dp_timeout = 16'.
  326. APPEND source. CLEAR source.
  327. source-line1 = ' error_no_gui = 18'.
  328. APPEND source. CLEAR source.
  329. source-line1 = ' OTHERS = 19.'.
  330. APPEND source. CLEAR source.
  331.  
  332. source-line1 = ' IF sy-subrc <> 0.'.
  333. APPEND source. CLEAR source.
  334. source-line1 = ' MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno'.
  335. APPEND source. CLEAR source.
  336. source-line1 = ' WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.'.
  337. APPEND source. CLEAR source.
  338. source-line1 = ' ENDIF.'.
  339. APPEND source. CLEAR source.
  340.  
  341. source-line1 = ' gv_tabix = LINES( gt_data[] ).'.
  342. APPEND source. CLEAR source.
  343. source-line1 = ' IF gv_tabix = 0.'.
  344. APPEND source. CLEAR source.
  345. source-line1 = ' MESSAGE i003 ."没有上传数据!.'.
  346. APPEND source. CLEAR source.
  347. source-line1 = ' STOP.'.
  348. APPEND source. CLEAR source.
  349. source-line1 = ' ENDIF.'.
  350. APPEND source. CLEAR source.
  351.  
  352. source = 'ENDFORM. " FRM_UPLOAD_DATA'.
  353. APPEND source. CLEAR source.
  354. APPEND source.
  355.  
  356. ENDFORM. " FRM_UPLOAD_DATA
  357. *&---------------------------------------------------------------------*
  358. *& Form FRM_ALV_UPLOAD
  359. *&---------------------------------------------------------------------*
  360. * text
  361. *----------------------------------------------------------------------*
  362. * --> p1 text
  363. * <-- p2 text
  364. *----------------------------------------------------------------------*
  365. FORM frm_alv_upload .
  366.  
  367. **text
  368. source = '*---------------------------------------------------------------------*'.
  369. APPEND source. CLEAR source.
  370. source = '*& Form FRM_ALV_UPLOAD'.
  371. APPEND source. CLEAR source.
  372. source = '*---------------------------------------------------------------------*'.
  373. APPEND source. CLEAR source.
  374.  
  375. source = 'FORM frm_alv_upload .'.
  376. APPEND source. CLEAR source.
  377.  
  378. source = ' DATA: l_nn TYPE i.'.
  379. APPEND source. CLEAR source.
  380. source = ' DEFINE add_fieldcat.'.
  381. APPEND source. CLEAR source.
  382. source = ' clear wa_fieldcat.'.
  383. APPEND source. CLEAR source.
  384. source-line1 = ' wa_fieldcat-fieldname = ''&1''.'.
  385. APPEND source. CLEAR source.
  386. source-line1 = ' wa_fieldcat-seltext_l = ''&2''.'.
  387. APPEND source. CLEAR source.
  388. source-line1 = '* wa_fieldcat-key = ''&3''.'.
  389. APPEND source. CLEAR source.
  390. source-line1 = ' wa_fieldcat-col_pos = l_nn + 1.'.
  391. APPEND source. CLEAR source.
  392. source-line1 = '* wa_fieldcat-edit = ''&4''.'.
  393. APPEND source. CLEAR source.
  394. source-line1 = '* wa_fieldcat-outputlen = ''&5''.'.
  395. APPEND source. CLEAR source.
  396. source-line1 = '* wa_fieldcat-fix_column = ''&6''.'.
  397. APPEND source. CLEAR source.
  398. source-line1 = '* wa_fieldcat-no_zero = ''&7''.'.
  399. APPEND source. CLEAR source.
  400. source-line1 = '* wa_fieldcat-just = ''&8''.'.
  401. APPEND source. CLEAR source.
  402. source-line1 = '* wa_fieldcat-decimals_out = ''&9''.'.
  403. APPEND source. CLEAR source.
  404. source-line1 = ' append wa_fieldcat to gt_fieldcat.'.
  405. APPEND source. CLEAR source.
  406. source-line1 = ' END-OF-DEFINITION.'.
  407. APPEND source. CLEAR source.
  408. APPEND source.
  409.  
  410. **write display field.
  411. LOOP AT gt_field INTO gs_field.
  412. CONCATENATE 'add_fieldcat' gs_field-fieldname gs_field-fieldtext '.' INTO source-line1 SEPARATED BY space.
  413. APPEND source. CLEAR source.
  414. ENDLOOP.
  415. CONCATENATE 'add_fieldcat' 'flag' '处理状态' '.' INTO source-line1 SEPARATED BY space.
  416. APPEND source. CLEAR source.
  417. CONCATENATE 'add_fieldcat' 'msg' '消息' '.' INTO source-line1 SEPARATED BY space.
  418. APPEND source. CLEAR source.
  419. APPEND source.
  420.  
  421. source-line1 = ' gw_layout-colwidth_optimize = GC_TRUE.'.
  422. APPEND source. CLEAR source.
  423. source-line1 = ' gw_layout-box_fieldname = ''SEL''.'.
  424. APPEND source. CLEAR source.
  425. source-line1 = ' gv_repid = sy-repid.'.
  426. APPEND source. CLEAR source.
  427. APPEND source.
  428.  
  429. source-line1 = ' CALL FUNCTION ''REUSE_ALV_GRID_DISPLAY'' '.
  430. APPEND source. CLEAR source.
  431. source-line1 = ' EXPORTING'.
  432. APPEND source. CLEAR source.
  433. source-line1 = ' i_callback_program = gv_repid'.
  434. APPEND source. CLEAR source.
  435. source-line1 = ' i_save = ''A'' '.
  436. APPEND source. CLEAR source.
  437.  
  438. source-line1 = ' is_layout = gw_layout'.
  439. APPEND source. CLEAR source.
  440. source-line1 = ' it_fieldcat = gt_fieldcat'.
  441. APPEND source. CLEAR source.
  442. source-line1 = '* it_events = gt_event'.
  443. APPEND source. CLEAR source.
  444. source-line1 = ' i_callback_pf_status_set = ''PF_STATUS_SET'' '.
  445. APPEND source. CLEAR source.
  446. source-line1 = ' i_callback_user_command = ''PF_USER_COMMAND'' '.
  447. APPEND source. CLEAR source.
  448. source-line1 = ' TABLES'.
  449. APPEND source. CLEAR source.
  450. source-line1 = ' t_outtab = gt_data'.
  451. APPEND source. CLEAR source.
  452. source-line1 = ' EXCEPTIONS'.
  453. APPEND source. CLEAR source.
  454.  
  455. source-line1 = ' program_error = 1'.
  456. APPEND source. CLEAR source.
  457. source-line1 = ' OTHERS = 2.'.
  458. APPEND source. CLEAR source.
  459.  
  460. source-line1 = 'ENDFORM. " FRM_ALV_UPLOAD'.
  461. APPEND source. CLEAR source.
  462. APPEND source.
  463.  
  464. ENDFORM. " FRM_ALV_UPLOAD
  465. *&---------------------------------------------------------------------*
  466. *& Form FRM_F4
  467. *&---------------------------------------------------------------------*
  468. * text
  469. *----------------------------------------------------------------------*
  470. * --> p1 text
  471. * <-- p2 text
  472. *----------------------------------------------------------------------*
  473. FORM frm_f4 .
  474. **text
  475. source = '*---------------------------------------------------------------------*'.
  476. APPEND source. CLEAR source.
  477. source = '*& Form FRM_F4 '.
  478. APPEND source. CLEAR source.
  479. source = '*---------------------------------------------------------------------*'.
  480. APPEND source. CLEAR source.
  481.  
  482. source-line1 = 'FORM frm_getdata USING so_fiel.'.
  483. APPEND source. CLEAR source.
  484.  
  485. source-line1 = ' DATA:l_filetab TYPE filetable,'.
  486. APPEND source. CLEAR source.
  487. source-line1 = ' l_rc TYPE i.'.
  488. APPEND source. CLEAR source.
  489. source-line1 = ' CLEAR:l_filetab.'.
  490. APPEND source. CLEAR source.
  491. source-line1 = ' REFRESH l_filetab.'.
  492. APPEND source. CLEAR source.
  493.  
  494. source-line1 = ' CALL METHOD cl_gui_frontend_services=>file_open_dialog'.
  495. APPEND source. CLEAR source.
  496. source-line1 = ' EXPORTING'.
  497. APPEND source. CLEAR source.
  498. source-line1 = '* WINDOW_TITLE = ''SAP Custom - Open File'' '.
  499. APPEND source. CLEAR source.
  500. source-line1 = '* DEFAULT_EXTENSION = '.
  501. APPEND source. CLEAR source.
  502. source-line1 = ' default_filename = ''*.txt'' '.
  503. APPEND source. CLEAR source.
  504. source-line1 = ' initial_directory = ''d:\'' '.
  505. APPEND source. CLEAR source.
  506. source-line1 = ' multiselection = '''' '.
  507. APPEND source. CLEAR source.
  508.  
  509. source-line1 = ' CHANGING'.
  510. APPEND source. CLEAR source.
  511. source-line1 = ' file_table = l_filetab'.
  512. APPEND source. CLEAR source.
  513. source-line1 = ' rc = l_rc'.
  514. APPEND source. CLEAR source.
  515. source-line1 = ' EXCEPTIONS'.
  516. APPEND source. CLEAR source.
  517. source-line1 = ' cntl_error = '.
  518. APPEND source. CLEAR source.
  519. source-line1 = ' error_no_gui = '.
  520. APPEND source. CLEAR source.
  521. source-line1 = ' not_supported_by_gui = '.
  522. APPEND source. CLEAR source.
  523.  
  524. source-line1 = ' OTHERS = .'.
  525. APPEND source. CLEAR source.
  526. source-line1 = ' CHECK l_rc EQ .'.
  527. APPEND source. CLEAR source.
  528. source-line1 = ' READ TABLE l_filetab INDEX INTO p_file.'.
  529. APPEND source. CLEAR source.
  530. source-line1 = 'ENDFORM. " FRM_F4'.
  531. APPEND source. CLEAR source.
  532. APPEND source.
  533.  
  534. ENDFORM. " FRM_F4
  535. *&---------------------------------------------------------------------*
  536. *& Form FRM_CHECK_PROG
  537. *&---------------------------------------------------------------------*
  538. * text
  539. *----------------------------------------------------------------------*
  540. * --> p1 text
  541. * <-- p2 text
  542. *----------------------------------------------------------------------*
  543. FORM frm_check_prog .
  544. DATA:ls_trdir LIKE trdir.
  545.  
  546. IF report() NE 'Z' AND report() NE 'Y'.
  547. MESSAGE s001 WITH report() DISPLAY LIKE 'E'.
  548. STOP.
  549. ENDIF.
  550.  
  551. SELECT SINGLE * INTO ls_trdir
  552. FROM trdir
  553. WHERE name = report.
  554. IF sy-subrc EQ .
  555. MESSAGE s000 WITH report DISPLAY LIKE 'E'.
  556. STOP.
  557. ENDIF.
  558.  
  559. ENDFORM. " FRM_CHECK_PROG
  560. *&---------------------------------------------------------------------*
  561. *& Form FRM_CLOSE_PROG
  562. *&---------------------------------------------------------------------*
  563. * text
  564. *----------------------------------------------------------------------*
  565. * --> p1 text
  566. * <-- p2 text
  567. *----------------------------------------------------------------------*
  568. FORM frm_close_prog .
  569.  
  570. ** insert report
  571. INSERT REPORT report FROM source.
  572.  
  573. ** actualize EU-tree
  574. CONCATENATE 'PG_'
  575. report
  576. INTO tree_name.
  577. CALL FUNCTION 'WB_TREE_ACTUALIZE'
  578. EXPORTING
  579. tree_name = tree_name.
  580. * WITHOUT_TREE = ' '
  581. * WITH_TCODE_INDEX =
  582. * IMPORTING
  583. * SYNTAX_ERROR =.
  584. MESSAGE s609 WITH report.
  585.  
  586. ENDFORM. " FRM_CLOSE_PROG
  587. *&---------------------------------------------------------------------*
  588. *& Form FRM_PF_STATU
  589. *&---------------------------------------------------------------------*
  590. * text
  591. *----------------------------------------------------------------------*
  592. * --> p1 text
  593. * <-- p2 text
  594. *----------------------------------------------------------------------*
  595. FORM frm_pf_statu .
  596. **text
  597. source = '*---------------------------------------------------------------------*'.
  598. APPEND source. CLEAR source.
  599. source = '* 通过SE41,拷贝程序SAPLSLVC_FULLSCREEN的状态STANDARD_FULLSCREEN过来'.
  600. APPEND source. CLEAR source.
  601. source = '*---------------------------------------------------------------------*'.
  602. APPEND source. CLEAR source.
  603.  
  604. source-line1 = 'FORM pf_status_set USING rt_extab TYPE slis_t_extab.'.
  605. APPEND source. CLEAR source.
  606. source-line1 = ' SET PF-STATUS ''STANDARD_FULLSCREEN'' .'.
  607. APPEND source. CLEAR source.
  608. source-line1 = 'ENDFORM. "sub_set_pf_status'.
  609. APPEND source. CLEAR source.
  610.  
  611. ENDFORM. " FRM_PF_STATU
  612. *&---------------------------------------------------------------------*
  613. *& Form FRM_USE_COMMAND
  614. *&---------------------------------------------------------------------*
  615. * text
  616. *----------------------------------------------------------------------*
  617. * --> p1 text
  618. * <-- p2 text
  619. *----------------------------------------------------------------------*
  620. FORM frm_use_command .
  621. **text
  622. source = '*---------------------------------------------------------------------*'.
  623. APPEND source. CLEAR source.
  624. source = '*& Form PF_USER_COMMAND'.
  625. APPEND source. CLEAR source.
  626. source = '*---------------------------------------------------------------------*'.
  627. APPEND source. CLEAR source.
  628.  
  629. source-line1 = 'FORM pf_user_command USING p_ucomm LIKE sy-ucomm'.
  630. APPEND source. CLEAR source.
  631. source-line1 = ' ps_selfield TYPE slis_selfield .'.
  632. APPEND source. CLEAR source.
  633. source-line1 = ' DATA:lv_answer TYPE c.'.
  634. APPEND source. CLEAR source.
  635.  
  636. source-line1 = ' ps_selfield-refresh = ''X''. '.
  637. APPEND source. CLEAR source.
  638. source-line1 = ' CASE p_ucomm.'.
  639. APPEND source. CLEAR source.
  640. source-line1 = ' WHEN ''&DATA_SAVE''.'.
  641. APPEND source. CLEAR source.
  642.  
  643. source-line1 = ' PERFORM frm_bdc_save.'.
  644. APPEND source. CLEAR source.
  645. source-line1 = ' WHEN ''&F03'' OR ''&F12'' OR ''&F15''.'.
  646. APPEND source. CLEAR source.
  647. source-line1 = ' LEAVE TO SCREEN 0.'.
  648. APPEND source. CLEAR source.
  649. source-line1 = ' WHEN OTHERS.'.
  650. APPEND source. CLEAR source.
  651. source-line1 = ' ...'.
  652. APPEND source. CLEAR source.
  653. source-line1 = ' ENDCASE.'.
  654. APPEND source. CLEAR source.
  655.  
  656. source-line1 = ' ps_selfield-refresh = ''X''.'.
  657. APPEND source. CLEAR source.
  658. source-line1 = 'ENDFORM. "PF_USER_COMMAND'.
  659. APPEND source. CLEAR source.
  660.  
  661. ENDFORM. " FRM_USE_COMMAND
  662. *&---------------------------------------------------------------------*
  663. *& Form FRM_BDC_SAVE
  664. *&---------------------------------------------------------------------*
  665. * text
  666. *----------------------------------------------------------------------*
  667. * --> p1 text
  668. * <-- p2 text
  669. *----------------------------------------------------------------------*
  670. FORM frm_bdc_save .
  671. **text
  672. source = '*---------------------------------------------------------------------*'.
  673. APPEND source. CLEAR source.
  674. source = '*& Form FRM_BDC_SAVE.'.
  675. APPEND source. CLEAR source.
  676. source = '*---------------------------------------------------------------------*'.
  677. APPEND source. CLEAR source.
  678.  
  679. source-line1 = 'FORM frm_bdc_save .'.
  680. APPEND source. CLEAR source.
  681.  
  682. source-line1 = ' DATA: t100 LIKE t100.'.
  683. APPEND source. CLEAR source.
  684. source-line1 = ' DATA: l_mstring(480).'.
  685. APPEND source. CLEAR source.
  686. APPEND source.
  687.  
  688. source-line1 = ' LOOP AT gt_data INTO gs_data WHERE sel = gc_true.'.
  689. APPEND source. CLEAR source.
  690. source-line1 = '**清空变量'.
  691. APPEND source. CLEAR source.
  692.  
  693. source-line1 = ' CLEAR: gt_bdcd,gt_bdcd[],'.
  694. APPEND source. CLEAR source.
  695. source-line1 = ' gt_messtab,gt_messtab[].'.
  696. APPEND source. CLEAR source.
  697. APPEND source.
  698.  
  699. break c_xiangc.
  700. **利用标准生产 BDC-form
  701. *---------------------------------------------------------------------*
  702. LOOP AT dynprotab.
  703. CASE dynprotab-dynbegin.
  704.  
  705. **new transaction
  706. WHEN 'T'.
  707. * store transaction AFTER getting field values!
  708. IF NOT tcode IS INITIAL.
  709. ****perform bdc_transaction using dynprotab-fnam.
  710. source-line1 = 'perform bdc_transaction using'.
  711. CONCATENATE ''''
  712. tcode
  713. '''.'
  714. INTO source-line2.
  715. APPEND source. CLEAR source. APPEND source.
  716. ENDIF.
  717. **save tcode for next transaction
  718. tcode = dynprotab-fnam.
  719. * new dynpro
  720. WHEN 'X'.
  721. ****perform bdc_dynpro using dynprotab-program dynprotab-dynpro.
  722. source-line1 = 'perform bdc_dynpro using'.
  723. CONCATENATE ''''
  724. dynprotab-program
  725. ''''
  726. ' '''
  727. dynprotab-dynpro
  728. '''.'
  729. INTO source-line2.
  730. APPEND source. CLEAR source.
  731. **dynpro field
  732. WHEN space.
  733. ****perform bdc_field using <dynprotab-fnam> <dynprotab-fval>.
  734. CHECK dynprotab-fnam <> 'BDC_SUBSCR'.
  735. source-line1 = 'perform bdc_field using'.
  736. CONCATENATE ''''
  737. dynprotab-fnam
  738. ''''
  739. INTO source-line2.
  740. APPEND source. CLEAR source.
  741. **从文件 读取字段
  742. *IF DYNPROTAB-FNAM = 'BDC_OKCODE' OR
  743.  
  744. IF dynprotab-fnam = 'BDC_OKCODE' OR
  745. dynprotab-fnam = 'BDC_CURSOR' OR
  746. dynprotab-fnam = 'BDC_SUBSCR'.
  747. PERFORM source_line_for_field_content USING dynprotab-fval.
  748.  
  749. ELSE.
  750. ADD TO dynpro_fields_index.
  751. READ TABLE dynpro_fields INDEX dynpro_fields_index.
  752. IF sy-subrc <> .
  753. MESSAGE a614 WITH dynprotab-fnam.
  754. ENDIF.
  755.  
  756. CONCATENATE 'gs_data-'
  757. dynpro_fields-recfield
  758. '.'
  759. INTO source-line2.
  760. APPEND source. CLEAR source.
  761.  
  762. ENDIF.
  763.  
  764. * source line for read from dataset
  765. * IF FILE = 'X'.
  766. ** * ...records-<field>
  767. * PERFORM SOURCE_LINE_FOR_VAR_FIELD.
  768. ** source line for read from records
  769. * ELSE.
  770. ** * ...<dynprotab-fval>
  771. * PERFORM SOURCE_LINE_FOR_FIELD_CONTENT USING DYNPROTAB-FVAL.
  772. * ENDIF.
  773. ENDCASE.
  774. ENDLOOP.
  775. APPEND source.
  776. *---------------------------------------------------------------------*
  777.  
  778. **!自定义BDC 子程序
  779. * LOOP AT gt_field INTO gs_field.
  780. * CONCATENATE 'add_fieldcat' gs_field-fieldname gs_field-fieldtext '.' INTO source-line1 SEPARATED BY space.
  781. * APPEND source. CLEAR source.
  782. * ENDLOOP.
  783. * CONCATENATE 'add_fieldcat' 'flag' '处理状态' '.' INTO source-line1 SEPARATED BY space.
  784. * APPEND source. CLEAR source.
  785. * CONCATENATE 'add_fieldcat' 'msg' '消息' '.' INTO source-line1 SEPARATED BY space.
  786. * APPEND source. CLEAR source.
  787. * APPEND source.
  788.  
  789. CONCATENATE '''' tcode '''' into tcode.
  790. concatenate ' CALL TRANSACTION' tcode 'USING gt_bdcd' into source-line1 separated by space.
  791. * source-line1 = ' CALL TRANSACTION 'MM01' USING gt_bdcd'.
  792. APPEND source. CLEAR source.
  793. source-line1 = ' MODE p_mode'.
  794. APPEND source. CLEAR source.
  795. source-line1 = ' UPDATE ''S'''.
  796. APPEND source. CLEAR source.
  797. source-line1 = ' MESSAGES INTO gt_messtab.'.
  798. APPEND source. CLEAR source.
  799.  
  800. source-line1 = ' IF sy-subrc = 0.'.
  801. APPEND source. CLEAR source.
  802. source-line1 = ' gs_data-flag = gc_0.'.
  803. APPEND source. CLEAR source.
  804. source-line1 = ' gs_data-flag = gc_4.'.
  805. APPEND source. CLEAR source.
  806. source-line1 = ' ENDIF.'.
  807. APPEND source. CLEAR source.
  808.  
  809. source-line1 = ' LOOP AT gt_messtab .'.
  810. APPEND source. CLEAR source.
  811. source-line1 = ' SELECT SINGLE *'.
  812. APPEND source. CLEAR source.
  813. source-line1 = ' INTO t100 '.
  814. APPEND source. CLEAR source.
  815. source-line1 = ' FROM t100 '.
  816. APPEND source. CLEAR source.
  817. source-line1 = ' WHERE sprsl = gt_messtab-msgspra'.
  818. APPEND source. CLEAR source.
  819. source-line1 = ' AND arbgb = gt_messtab-msgid'.
  820. APPEND source. CLEAR source.
  821. source-line1 = ' AND msgnr = gt_messtab-msgnr.'.
  822. APPEND source. CLEAR source.
  823.  
  824. source-line1 = ' IF sy-subrc = 0.'.
  825. APPEND source. CLEAR source.
  826. source-line1 = ' l_mstring = t100-text.'.
  827. APPEND source. CLEAR source.
  828. source-line1 = ' IF l_mstring CS ''&1''.'.
  829. APPEND source. CLEAR source.
  830. source-line1 = ' REPLACE ''&1'' WITH gt_messtab-msgv1 INTO l_mstring.'.
  831. APPEND source. CLEAR source.
  832. source-line1 = ' REPLACE ''&2'' WITH gt_messtab-msgv2 INTO l_mstring.'.
  833. APPEND source. CLEAR source.
  834. source-line1 = ' REPLACE ''&3'' WITH gt_messtab-msgv3 INTO l_mstring.'.
  835. APPEND source. CLEAR source.
  836. source-line1 = ' REPLACE ''&4'' WITH gt_messtab-msgv4 INTO l_mstring.'.
  837. APPEND source. CLEAR source.
  838. source-line1 = ' ELSE.'.
  839. APPEND source. CLEAR source.
  840. source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv1 INTO l_mstring.'.
  841. APPEND source. CLEAR source.
  842. source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv2 INTO l_mstring.'.
  843. APPEND source. CLEAR source.
  844. source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv3 INTO l_mstring.'.
  845. APPEND source. CLEAR source.
  846. source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv4 INTO l_mstring.'.
  847. APPEND source. CLEAR source.
  848. source-line1 = ' ENDIF.'.
  849. APPEND source. CLEAR source.
  850.  
  851. source-line1 = ' CONDENSE l_mstring.'.
  852. APPEND source. CLEAR source.
  853. source-line1 = ' CONCATENATE gs_data-msg l_mstring INTO gs_data-msg.'.
  854. APPEND source. CLEAR source.
  855. source-line1 = ' ELSE.'.
  856. APPEND source. CLEAR source.
  857. source-line1 = ' CONCATENATE gs_data-msg gt_messtab INTO gs_data-msg.'.
  858. APPEND source. CLEAR source.
  859. source-line1 = ' ENDIF.'.
  860. APPEND source. CLEAR source.
  861. source-line1 = ' ENDLOOP.'.
  862. APPEND source. CLEAR source.
  863.  
  864. source-line1 = ' MODIFY gt_data FROM gs_data.'.
  865. APPEND source. CLEAR source.
  866. source-line1 = ' CLEAR gs_data.'.
  867. APPEND source. CLEAR source.
  868. source-line1 = ' ENDLOOP.'.
  869. APPEND source. CLEAR source.
  870. source-line1 = 'ENDFORM. " FRM_BDC_SAVE'.
  871. APPEND source. CLEAR source.
  872.  
  873. ENDFORM. " FRM_BDC_SAVE
  874. *&---------------------------------------------------------------------*
  875. *& Form frm_SET_DATA
  876. *&---------------------------------------------------------------------*
  877. * text
  878. *----------------------------------------------------------------------*
  879. * --> p1 text
  880. * <-- p2 text
  881. *----------------------------------------------------------------------*
  882. FORM frm_set_data .
  883. source = '*---------------------------------------------------------------------*'.
  884. APPEND source. CLEAR source.
  885. source = '* DATA'.
  886. APPEND source. CLEAR source.
  887. source = '*---------------------------------------------------------------------*'.
  888. APPEND source. CLEAR source.
  889. source-line1 = 'DATA:gt_data TYPE TABLE OF ty_data,'.
  890. APPEND source. CLEAR source.
  891. source-line1 = ' gs_data TYPE ty_data.'.
  892. APPEND source. CLEAR source.
  893. source-line1 = 'DATA:gv_tabix TYPE sy-tabix.'.
  894. APPEND source. CLEAR source.
  895.  
  896. **CONSTANTS
  897. source-line1 = 'CONSTANTS: GC_TRUE TYPE SAP_BOOL VALUE ''X'', '.
  898. APPEND source. CLEAR source.
  899. source-line1 = ' gc_0 TYPE sap_bool VALUE ''S'', '.
  900. APPEND source. CLEAR source.
  901. source-line1 = ' gc_4 TYPE sap_bool VALUE ''E''. '.
  902. APPEND source. CLEAR source.
  903.  
  904. source = '*DATA for BDC'.
  905. APPEND source. CLEAR source.
  906. source-line1 = 'DATA:gt_bdcd LIKE bdcdata OCCURS 0 WITH HEADER LINE.'.
  907. APPEND source. CLEAR source.
  908. source-line1 = 'DATA:gt_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.'.
  909. APPEND source. CLEAR source.
  910.  
  911. source = '*DATA for alv'.
  912. APPEND source. CLEAR source.
  913. source-line1 = 'DATA: gv_repid TYPE sy-repid,'.
  914. APPEND source. CLEAR source.
  915. source-line1 = ' gw_layout TYPE slis_layout_alv,'.
  916. APPEND source. CLEAR source.
  917. source-line1 = ' gt_fieldcat TYPE slis_t_fieldcat_alv,'.
  918. APPEND source. CLEAR source.
  919. source-line1 = ' wa_fieldcat TYPE slis_fieldcat_alv,'.
  920. APPEND source. CLEAR source.
  921. source-line1 = ' gt_event TYPE slis_t_event,'.
  922. APPEND source. CLEAR source.
  923. source-line1 = ' wa_event TYPE slis_alv_event.'.
  924. APPEND source. CLEAR source. APPEND source.
  925.  
  926. ENDFORM. " frm_SET_DATA
  927. *&---------------------------------------------------------------------*
  928. *& Form FRM_SET_TOP
  929. *&---------------------------------------------------------------------*
  930. * text
  931. *----------------------------------------------------------------------*
  932. * --> p1 text
  933. * <-- p2 text
  934. *----------------------------------------------------------------------*
  935. FORM frm_set_top .
  936. *&s1.report <report>
  937. CONCATENATE 'report'
  938. report
  939. INTO source SEPARATED BY space.
  940. APPEND source. CLEAR source.
  941. source = ' no standard page heading line-size 255 MESSAGE-ID DEMO.'.
  942. APPEND source. CLEAR source. APPEND source.
  943.  
  944. *&s2.include bdcrecx1. "since release 4.5
  945. source = '*---------------------------------------------------------------------*'.
  946. APPEND source. CLEAR source.
  947. source = '* INCLUDE'.
  948. APPEND source. CLEAR source.
  949. source = '*---------------------------------------------------------------------*'.
  950. APPEND source. CLEAR source.
  951. APPEND source.
  952. source-line1 = 'include bdcrecx1.'.
  953. APPEND source. CLEAR source.
  954. APPEND source.
  955.  
  956. *&s3.TYPE-POOLS
  957. source = '*---------------------------------------------------------------------*'.
  958. APPEND source. CLEAR source.
  959. source = '* TYPE-POOLS'.
  960. APPEND source. CLEAR source.
  961. source = '*---------------------------------------------------------------------*'.
  962. APPEND source. CLEAR source.
  963. source-line1 = 'TYPE-POOLS:slis,truxs.'.
  964. APPEND source. CLEAR source. APPEND source.
  965. ENDFORM. " FRM_SET_TOP
  966. *&---------------------------------------------------------------------*
  967. *& Form FRM_DYNPRO
  968. *&---------------------------------------------------------------------*
  969. * text
  970. *----------------------------------------------------------------------*
  971. * --> p1 text
  972. * <-- p2 text
  973. *----------------------------------------------------------------------*
  974. FORM frm_dynpro .
  975.  
  976. ENDFORM. " FRM_DYNPRO
  977.  
  978. **** source_line_for_field_content ************************************
  979. FORM source_line_for_field_content USING p_fval.
  980. DATA: l_fval LIKE dynprotab-fval.
  981.  
  982. l_fval = p_fval.
  983. IF l_fval+ = space.
  984. CONCATENATE ''''
  985. l_fval
  986. '''.'
  987. INTO source-line2.
  988. APPEND source. CLEAR source.
  989. ELSE. "field content longer than 38
  990. CONCATENATE ''''
  991. l_fval()
  992. ''''
  993. INTO source-line2.
  994. APPEND source. CLEAR source.
  995. source-line1+ = '&'.
  996. DO TIMES.
  997. SHIFT l_fval BY PLACES.
  998. IF l_fval+ = space.
  999. CONCATENATE ''''
  1000. l_fval
  1001. '''.'
  1002. INTO source-line2.
  1003. APPEND source. CLEAR source.
  1004. EXIT.
  1005. ELSE. "field content longer than n x 38
  1006. CONCATENATE ''''
  1007. l_fval()
  1008. ''''
  1009. INTO source-line2.
  1010. APPEND source. CLEAR source-line2.
  1011. ENDIF.
  1012. ENDDO.
  1013. ENDIF.
  1014. ENDFORM. "SOURCE_LINE_FOR_FIELD_CONTENT

ABAP自动生成程序的更多相关文章

  1. Demo005 小学四则运算自动生成程序

    目录 小学四则运算自动生成程序 0.传送门 1.题目要求 2.功能实现 2.1 总体设计 2.2 用户欢迎界面 2.3 用户功能界面 2.4 屏幕输出 2.5 文本输出 2.6 获取时间 2.7 用户 ...

  2. 中小学数学卷子自动生成程序--对G同学的代码分析

    前几天,在课程要求下完成了个人项目的项目工程编写,即一个中小学数学卷子自动生成程序. 程序主要功能是用户预设账户登录后可以选择等级进行对应的小中高的数学卷子对应出题生成txt文本. 本文针对partn ...

  3. 身份证号码自动生成程序(Python)

    今天收到一个小需求:需要一个自动生成身份证号码的小程序.近期用python较多,因此打算用python实现. 需求细化: 1.身份证必须能够通过身份证校验程序. 2.通过查询,发现身份证号码是有国家标 ...

  4. 中小学生试卷自动生成程序--jialin大佬代码分析

    结对编程代码评价 有幸和小jialin结对编程.拿到jialin的代码后. 我先是尝试用idea运行.结果报了如下错误. 无法加载主类,再尝试用eclipse运行. 好的,可以运行,那为什么用idea ...

  5. HNU_中小学数学卷子自动生成程序(个人项目)简要分析

    一.前言 首先,在这里特别感谢我的结对编程伙伴HnuLyx,他在算法上和设计思路上都与我有很大的不同,个人项目互评中,为我的项目提出了很多很好的建议,让我在认清自己不足的同时,了解到很多以前没有注意的 ...

  6. ABAP 省市县级联搜索帮助

    在展示ABAP代码之前,先建立自建表ZCHENH006,表中包含两个关键字段 BELNR(地区编码),SDESC(地区描述). 编码规则参考:身份证前六位地区编码规则,可参考我另外一篇Blog导入系统 ...

  7. 结队编程第二次作业:Android自动生成算式应用

    一.题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. 这次我和我的小伙伴选择了题目一. 题目1: 实 ...

  8. 基于Python实现的四则运算生成程序

    Github项目地址:传送门 小组成员:黄晓彬(代码实现) 黄钰城(代码审查) 需求: 1. 使用 -n 参数控制生成题目的个数. 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的 ...

  9. Toad快速入门

    Toad快速入门       在实际中,Toad的用户很少用到其强大的新特性,同时新用户的摸索式熟悉Toad往往花费更多的时间.为此,铸锐数码为每个新购买Toad客户,提供两人次的在线培训服务,帮助客 ...

随机推荐

  1. PHP+Redis 实例 页面缓存

    前提分析! 上面的图,我分为了三个层级去做页面缓存,其实不一定要三个层面都实现的,如果你做了页面级的,项目初期是够了,作为接口级,基本可以解决很多吞吐量. 对于上面的三个层级,我用了同一个方法去做. ...

  2. angular4 开发记录

    1,传值问题 page setValue:  [routerLink]="['/product-details', product.id]"> ts     seValue: ...

  3. 14. First Position of Target 【easy】

    14. First Position of Target [easy] For a given sorted array (ascending order) and a targetnumber, f ...

  4. onkeypress、onkeydown、onkeyup

    在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress.onkeydown.onkeyup三个事件进行出来.该三个事件的执行顺序如下:onkeydown -> onk ...

  5. 第八章 springboot + mybatis + 多数据源2(解决循环引用)

    解决了循环引用 1.application.properties #the first datasource jdbc.names:1,2 jdbc1.driverClassName = com.my ...

  6. address-already in use 以及查看端口

    https://stackoverflow.com/questions/19071512/socket-error-errno-48-address-already-in-use

  7. docker导入导出

    导出镜像 docker save -o centos7.tar centos # 导入本地镜像 docker load --input centos7.tar docker ps -a docker ...

  8. void bind(String sName,Object object);――绑定:把名称同对象关联的过程

    void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...

  9. Linux网络编程(一)基础

    一.数据存储顺序:大端和小端 大端模式: 地址的增长顺序与值的增长顺序相反         小段模式: 地址的增长顺序与值的增长顺序同样 为什么会有大小端模式之分呢?这是由于在计算机系统中,我们是以字 ...

  10. 转:SSD详解

    原文:http://blog.csdn.net/a8039974/article/details/77592395, http://blog.csdn.net/jesse_mx/article/det ...