ABAP自动生成程序
QID 用表 APQD 里的ID
REPORT Z001
去年6月花了一周的成果,可是玩了一周就没玩了,
现在想来:
研究下程序共性 ,这个总结的多,一定会提高效率
这个用起来程序, 2s 完成程序框架部分,
报表 打印 bdc 单据创建, 都行,
- REPORT zrsbdcrec_1 MESSAGE-ID zdemo.
- *MESSAGE-ID ms.
- TABLES:progdir,
- trdir.
- *---------------------------------------------------------------------*
- * SELECTION SCREEN
- *---------------------------------------------------------------------*
- PARAMETERS: qid LIKE apqd-qid,
- report LIKE trdir-name.
- * testdata AS CHECKBOX,
- * dsn(132) LOWER CASE,
- * file AS CHECKBOX.
- * selections of generated program because of texts
- *---------------------------------------------------------------------*
- * DATA
- *---------------------------------------------------------------------*
- DATA: BEGIN OF source OCCURS ,
- line1(),
- line2(),
- END OF source.
- DATA: dynprotab LIKE bdcdata OCCURS WITH HEADER LINE.
- DATA: tcode LIKE tstc-tcode.
- DATA: text_tab LIKE textpool OCCURS WITH HEADER LINE,
- text_tab_2 LIKE textpool OCCURS WITH HEADER LINE.
- DATA: dynpro_fields LIKE bdcdf OCCURS WITH HEADER LINE.
- DATA: dynpro_fields_index LIKE sy-tabix,
- tree_name().
- **用 FIELDNAME 、FIELDTEXT
- DATA:gt_field LIKE STANDARD TABLE OF dfies,
- gs_field LIKE dfies.
- *---------------------------------------------------------------------*
- * CONSTANTS
- *---------------------------------------------------------------------*
- CONSTANTS: c_flg1edt TYPE x VALUE ''.
- *---------------------------------------------------------------------*
- * start-of-selection
- *---------------------------------------------------------------------*
- START-OF-SELECTION.
- PERFORM frm_check_prog.
- ** get bdc records
- CALL FUNCTION 'BDC_OBJECT_READ'
- EXPORTING
- queue_id = qid
- TABLES
- dynprotab = dynprotab
- EXCEPTIONS
- not_found =
- system_failure =
- invalid_datatype =
- OTHERS = .
- IF sy-subrc >< .
- MESSAGE s627 WITH qid.
- EXIT.
- ENDIF.
- **get field
- CALL FUNCTION 'BDC_DYNPROTAB_GET_FIELDS'
- TABLES
- dynprotab = dynprotab
- dynprofields = dynpro_fields.
- ** generate source lines of report
- IF report = space.
- STOP.
- ENDIF.
- * same lines for all records
- PERFORM frm_set_top.
- *&s4.TYPES
- PERFORM frm_get_table.
- *&s5.DATA
- PERFORM frm_set_data.
- *&s6.SELECTION SCREEN
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* SELECTION SCREEN'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'PARAMETERS: p_file LIKE rlgrap-filename MEMORY ID ws MODIF ID r01,'.
- APPEND source. CLEAR source.
- source-line1 = 'p_mode LIKE ctu_params-dismode DEFAULT ''N''.'.
- APPEND source. CLEAR source.
- APPEND source.
- **PARAMETERS: p_file LIKE rlgrap-filename MEMORY ID ws MODIF ID r01.
- *&s7.set f4
- PERFORM frm_set_f4.
- *&s8.START-OF-SELECTION.
- PERFORM frm_set_main.
- PERFORM frm_f4.
- PERFORM frm_upload_data.
- PERFORM frm_alv_upload.
- *&s9.USER-COMMAND.
- PERFORM frm_pf_statu.
- PERFORM frm_use_command.
- *&s10.FORM frm_bdc_save .
- PERFORM frm_bdc_save .
- *&s11.BDC-top
- PERFORM frm_dynpro.
- **code generate
- PERFORM frm_close_prog.
- *---------------------------------------------------------------------*
- * end-of-selection
- *---------------------------------------------------------------------*
- *&---------------------------------------------------------------------*
- *& Form FRM_GET_TABLE
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_get_table .
- DATA: l_dfies LIKE dfies,
- l_tabname LIKE dcobjdef-name,
- l_fieldname LIKE dfies-lfieldname,
- l_dummy LIKE dfies-lfieldname.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* TABLE'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'TYPES:BEGIN OF ty_data,'.
- APPEND source. CLEAR source. APPEND source.
- **
- LOOP AT dynpro_fields.
- * *** <field_n>(<length>)
- CLEAR l_dfies.
- IF dynpro_fields-fieldname CA '-'.
- * create dataelement comment line
- SPLIT dynpro_fields-fieldname AT '-'
- INTO l_tabname
- l_fieldname.
- SPLIT l_fieldname AT '('
- INTO l_fieldname
- l_dummy.
- CALL FUNCTION 'DDIF_FIELDINFO_GET'
- EXPORTING
- tabname = l_tabname
- * fieldname = l_fieldname
- * LANGU = SY-LANGU
- lfieldname = l_fieldname
- * ALL_TYPES = ' '
- IMPORTING
- * X030L_WA =
- * DDOBJTYPE =
- dfies_wa = l_dfies
- * TABLES
- * DFIES_TAB =
- EXCEPTIONS
- not_found =
- internal_error =
- OTHERS = .
- IF sy-subrc <> .
- CLEAR l_dfies.
- ELSE.
- * APPEND l_dfies TO gt_field.
- MOVE l_dfies TO gs_field.
- gs_field-fieldname = dynpro_fields-recfield.
- APPEND gs_field TO gt_field.
- ENDIF.
- ENDIF.
- source = '* data element: '.
- source+ = l_dfies-rollname.
- APPEND source. CLEAR source.
- CONCATENATE dynpro_fields-recfield
- '(' dynpro_fields-length ')' ','
- INTO source+.
- APPEND source. CLEAR source.
- ENDLOOP.
- source = ' SEL TYPE C,'.
- APPEND source. CLEAR source.
- source = ' FLAG TYPE C,'.
- APPEND source. CLEAR source.
- source = ' MSG TYPE MSG,'.
- APPEND source. CLEAR source.
- ** end of record.
- source = ' END OF ty_data.'.
- APPEND source. CLEAR source.
- APPEND source.
- ENDFORM. " FRM_GET_TABLE
- *&---------------------------------------------------------------------*
- *& Form FRM_SET_F4
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_set_f4 .
- source = 'AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.'.
- APPEND source. CLEAR source.
- source = ' PERFORM frm_getdata USING p_file.'.
- APPEND source. CLEAR source.
- APPEND source.
- ENDFORM. " FRM_SET_F4
- *&---------------------------------------------------------------------*
- *& Form frm_set_main
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_set_main .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* START-OF-SELECTION.'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'START-OF-SELECTION.'.
- APPEND source. CLEAR source. APPEND source.
- source = ' PERFORM frm_upload_data.'.
- APPEND source. CLEAR source.
- source = ' PERFORM frm_alv_upload.'.
- APPEND source. CLEAR source.
- APPEND source.
- ENDFORM. " frm_set_main
- *&---------------------------------------------------------------------*
- *& Form FRM_UPLOAD_DATA
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_upload_data .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '*& Form FRM_UPLOAD_DATA'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = 'FORM frm_upload_data .'.
- APPEND source. CLEAR source.
- source = ' DATA: lv_filename TYPE string.'.
- APPEND source. CLEAR source.
- source = ' lv_filename = p_file.'.
- APPEND source. CLEAR source.
- source = ' REFRESH gt_data.'.
- APPEND source. CLEAR source.
- source-line1 = ' CALL METHOD cl_gui_frontend_services=>gui_upload'.
- APPEND source. CLEAR source.
- source-line1 = ' EXPORTING'.
- APPEND source. CLEAR source.
- source-line1 = ' filename = lv_filename'.
- APPEND source. CLEAR source.
- source-line1 = ' has_field_separator = GC_TRUE '.
- APPEND source. CLEAR source.
- source-line1 = ' read_by_line = GC_TRUE '.
- APPEND source. CLEAR source.
- source-line1 = ' CHANGING'.
- APPEND source. CLEAR source.
- source-line1 = ' data_tab = gt_data[]'.
- APPEND source. CLEAR source.
- source-line1 = ' EXCEPTIONS'.
- APPEND source. CLEAR source.
- source-line1 = ' file_open_error = 1'.
- APPEND source. CLEAR source.
- source-line1 = ' file_read_error = 2'.
- APPEND source. CLEAR source.
- source-line1 = ' no_batch = 3'.
- APPEND source. CLEAR source.
- source-line1 = ' gui_refuse_filetransfer = 4'.
- APPEND source. CLEAR source.
- source-line1 = ' invalid_type = 5'.
- APPEND source. CLEAR source.
- source-line1 = ' no_authority = 6'.
- APPEND source. CLEAR source.
- source-line1 = ' unknown_error = 7'.
- APPEND source. CLEAR source.
- source-line1 = ' bad_data_format = 8'.
- APPEND source. CLEAR source.
- source-line1 = ' header_not_allowed = 9'.
- APPEND source. CLEAR source.
- source-line1 = ' separator_not_allowed = 10'.
- APPEND source. CLEAR source.
- source-line1 = ' header_too_long = 11'.
- APPEND source. CLEAR source.
- source-line1 = ' unknown_dp_error = 12'.
- APPEND source. CLEAR source.
- source-line1 = ' access_denied = 13'.
- APPEND source. CLEAR source.
- source-line1 = ' dp_out_of_memory = 14'.
- APPEND source. CLEAR source.
- source-line1 = ' disk_full = 15'.
- APPEND source. CLEAR source.
- source-line1 = ' dp_timeout = 16'.
- APPEND source. CLEAR source.
- source-line1 = ' error_no_gui = 18'.
- APPEND source. CLEAR source.
- source-line1 = ' OTHERS = 19.'.
- APPEND source. CLEAR source.
- source-line1 = ' IF sy-subrc <> 0.'.
- APPEND source. CLEAR source.
- source-line1 = ' MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno'.
- APPEND source. CLEAR source.
- source-line1 = ' WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDIF.'.
- APPEND source. CLEAR source.
- source-line1 = ' gv_tabix = LINES( gt_data[] ).'.
- APPEND source. CLEAR source.
- source-line1 = ' IF gv_tabix = 0.'.
- APPEND source. CLEAR source.
- source-line1 = ' MESSAGE i003 ."没有上传数据!.'.
- APPEND source. CLEAR source.
- source-line1 = ' STOP.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDIF.'.
- APPEND source. CLEAR source.
- source = 'ENDFORM. " FRM_UPLOAD_DATA'.
- APPEND source. CLEAR source.
- APPEND source.
- ENDFORM. " FRM_UPLOAD_DATA
- *&---------------------------------------------------------------------*
- *& Form FRM_ALV_UPLOAD
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_alv_upload .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '*& Form FRM_ALV_UPLOAD'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = 'FORM frm_alv_upload .'.
- APPEND source. CLEAR source.
- source = ' DATA: l_nn TYPE i.'.
- APPEND source. CLEAR source.
- source = ' DEFINE add_fieldcat.'.
- APPEND source. CLEAR source.
- source = ' clear wa_fieldcat.'.
- APPEND source. CLEAR source.
- source-line1 = ' wa_fieldcat-fieldname = ''&1''.'.
- APPEND source. CLEAR source.
- source-line1 = ' wa_fieldcat-seltext_l = ''&2''.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-key = ''&3''.'.
- APPEND source. CLEAR source.
- source-line1 = ' wa_fieldcat-col_pos = l_nn + 1.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-edit = ''&4''.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-outputlen = ''&5''.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-fix_column = ''&6''.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-no_zero = ''&7''.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-just = ''&8''.'.
- APPEND source. CLEAR source.
- source-line1 = '* wa_fieldcat-decimals_out = ''&9''.'.
- APPEND source. CLEAR source.
- source-line1 = ' append wa_fieldcat to gt_fieldcat.'.
- APPEND source. CLEAR source.
- source-line1 = ' END-OF-DEFINITION.'.
- APPEND source. CLEAR source.
- APPEND source.
- **write display field.
- LOOP AT gt_field INTO gs_field.
- CONCATENATE 'add_fieldcat' gs_field-fieldname gs_field-fieldtext '.' INTO source-line1 SEPARATED BY space.
- APPEND source. CLEAR source.
- ENDLOOP.
- CONCATENATE 'add_fieldcat' 'flag' '处理状态' '.' INTO source-line1 SEPARATED BY space.
- APPEND source. CLEAR source.
- CONCATENATE 'add_fieldcat' 'msg' '消息' '.' INTO source-line1 SEPARATED BY space.
- APPEND source. CLEAR source.
- APPEND source.
- source-line1 = ' gw_layout-colwidth_optimize = GC_TRUE.'.
- APPEND source. CLEAR source.
- source-line1 = ' gw_layout-box_fieldname = ''SEL''.'.
- APPEND source. CLEAR source.
- source-line1 = ' gv_repid = sy-repid.'.
- APPEND source. CLEAR source.
- APPEND source.
- source-line1 = ' CALL FUNCTION ''REUSE_ALV_GRID_DISPLAY'' '.
- APPEND source. CLEAR source.
- source-line1 = ' EXPORTING'.
- APPEND source. CLEAR source.
- source-line1 = ' i_callback_program = gv_repid'.
- APPEND source. CLEAR source.
- source-line1 = ' i_save = ''A'' '.
- APPEND source. CLEAR source.
- source-line1 = ' is_layout = gw_layout'.
- APPEND source. CLEAR source.
- source-line1 = ' it_fieldcat = gt_fieldcat'.
- APPEND source. CLEAR source.
- source-line1 = '* it_events = gt_event'.
- APPEND source. CLEAR source.
- source-line1 = ' i_callback_pf_status_set = ''PF_STATUS_SET'' '.
- APPEND source. CLEAR source.
- source-line1 = ' i_callback_user_command = ''PF_USER_COMMAND'' '.
- APPEND source. CLEAR source.
- source-line1 = ' TABLES'.
- APPEND source. CLEAR source.
- source-line1 = ' t_outtab = gt_data'.
- APPEND source. CLEAR source.
- source-line1 = ' EXCEPTIONS'.
- APPEND source. CLEAR source.
- source-line1 = ' program_error = 1'.
- APPEND source. CLEAR source.
- source-line1 = ' OTHERS = 2.'.
- APPEND source. CLEAR source.
- source-line1 = 'ENDFORM. " FRM_ALV_UPLOAD'.
- APPEND source. CLEAR source.
- APPEND source.
- ENDFORM. " FRM_ALV_UPLOAD
- *&---------------------------------------------------------------------*
- *& Form FRM_F4
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_f4 .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '*& Form FRM_F4 '.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'FORM frm_getdata USING so_fiel.'.
- APPEND source. CLEAR source.
- source-line1 = ' DATA:l_filetab TYPE filetable,'.
- APPEND source. CLEAR source.
- source-line1 = ' l_rc TYPE i.'.
- APPEND source. CLEAR source.
- source-line1 = ' CLEAR:l_filetab.'.
- APPEND source. CLEAR source.
- source-line1 = ' REFRESH l_filetab.'.
- APPEND source. CLEAR source.
- source-line1 = ' CALL METHOD cl_gui_frontend_services=>file_open_dialog'.
- APPEND source. CLEAR source.
- source-line1 = ' EXPORTING'.
- APPEND source. CLEAR source.
- source-line1 = '* WINDOW_TITLE = ''SAP Custom - Open File'' '.
- APPEND source. CLEAR source.
- source-line1 = '* DEFAULT_EXTENSION = '.
- APPEND source. CLEAR source.
- source-line1 = ' default_filename = ''*.txt'' '.
- APPEND source. CLEAR source.
- source-line1 = ' initial_directory = ''d:\'' '.
- APPEND source. CLEAR source.
- source-line1 = ' multiselection = '''' '.
- APPEND source. CLEAR source.
- source-line1 = ' CHANGING'.
- APPEND source. CLEAR source.
- source-line1 = ' file_table = l_filetab'.
- APPEND source. CLEAR source.
- source-line1 = ' rc = l_rc'.
- APPEND source. CLEAR source.
- source-line1 = ' EXCEPTIONS'.
- APPEND source. CLEAR source.
- source-line1 = ' cntl_error = '.
- APPEND source. CLEAR source.
- source-line1 = ' error_no_gui = '.
- APPEND source. CLEAR source.
- source-line1 = ' not_supported_by_gui = '.
- APPEND source. CLEAR source.
- source-line1 = ' OTHERS = .'.
- APPEND source. CLEAR source.
- source-line1 = ' CHECK l_rc EQ .'.
- APPEND source. CLEAR source.
- source-line1 = ' READ TABLE l_filetab INDEX INTO p_file.'.
- APPEND source. CLEAR source.
- source-line1 = 'ENDFORM. " FRM_F4'.
- APPEND source. CLEAR source.
- APPEND source.
- ENDFORM. " FRM_F4
- *&---------------------------------------------------------------------*
- *& Form FRM_CHECK_PROG
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_check_prog .
- DATA:ls_trdir LIKE trdir.
- IF report() NE 'Z' AND report() NE 'Y'.
- MESSAGE s001 WITH report() DISPLAY LIKE 'E'.
- STOP.
- ENDIF.
- SELECT SINGLE * INTO ls_trdir
- FROM trdir
- WHERE name = report.
- IF sy-subrc EQ .
- MESSAGE s000 WITH report DISPLAY LIKE 'E'.
- STOP.
- ENDIF.
- ENDFORM. " FRM_CHECK_PROG
- *&---------------------------------------------------------------------*
- *& Form FRM_CLOSE_PROG
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_close_prog .
- ** insert report
- INSERT REPORT report FROM source.
- ** actualize EU-tree
- CONCATENATE 'PG_'
- report
- INTO tree_name.
- CALL FUNCTION 'WB_TREE_ACTUALIZE'
- EXPORTING
- tree_name = tree_name.
- * WITHOUT_TREE = ' '
- * WITH_TCODE_INDEX =
- * IMPORTING
- * SYNTAX_ERROR =.
- MESSAGE s609 WITH report.
- ENDFORM. " FRM_CLOSE_PROG
- *&---------------------------------------------------------------------*
- *& Form FRM_PF_STATU
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_pf_statu .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* 通过SE41,拷贝程序SAPLSLVC_FULLSCREEN的状态STANDARD_FULLSCREEN过来'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'FORM pf_status_set USING rt_extab TYPE slis_t_extab.'.
- APPEND source. CLEAR source.
- source-line1 = ' SET PF-STATUS ''STANDARD_FULLSCREEN'' .'.
- APPEND source. CLEAR source.
- source-line1 = 'ENDFORM. "sub_set_pf_status'.
- APPEND source. CLEAR source.
- ENDFORM. " FRM_PF_STATU
- *&---------------------------------------------------------------------*
- *& Form FRM_USE_COMMAND
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_use_command .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '*& Form PF_USER_COMMAND'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'FORM pf_user_command USING p_ucomm LIKE sy-ucomm'.
- APPEND source. CLEAR source.
- source-line1 = ' ps_selfield TYPE slis_selfield .'.
- APPEND source. CLEAR source.
- source-line1 = ' DATA:lv_answer TYPE c.'.
- APPEND source. CLEAR source.
- source-line1 = ' ps_selfield-refresh = ''X''. '.
- APPEND source. CLEAR source.
- source-line1 = ' CASE p_ucomm.'.
- APPEND source. CLEAR source.
- source-line1 = ' WHEN ''&DATA_SAVE''.'.
- APPEND source. CLEAR source.
- source-line1 = ' PERFORM frm_bdc_save.'.
- APPEND source. CLEAR source.
- source-line1 = ' WHEN ''&F03'' OR ''&F12'' OR ''&F15''.'.
- APPEND source. CLEAR source.
- source-line1 = ' LEAVE TO SCREEN 0.'.
- APPEND source. CLEAR source.
- source-line1 = ' WHEN OTHERS.'.
- APPEND source. CLEAR source.
- source-line1 = ' ...'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDCASE.'.
- APPEND source. CLEAR source.
- source-line1 = ' ps_selfield-refresh = ''X''.'.
- APPEND source. CLEAR source.
- source-line1 = 'ENDFORM. "PF_USER_COMMAND'.
- APPEND source. CLEAR source.
- ENDFORM. " FRM_USE_COMMAND
- *&---------------------------------------------------------------------*
- *& Form FRM_BDC_SAVE
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_bdc_save .
- **text
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '*& Form FRM_BDC_SAVE.'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'FORM frm_bdc_save .'.
- APPEND source. CLEAR source.
- source-line1 = ' DATA: t100 LIKE t100.'.
- APPEND source. CLEAR source.
- source-line1 = ' DATA: l_mstring(480).'.
- APPEND source. CLEAR source.
- APPEND source.
- source-line1 = ' LOOP AT gt_data INTO gs_data WHERE sel = gc_true.'.
- APPEND source. CLEAR source.
- source-line1 = '**清空变量'.
- APPEND source. CLEAR source.
- source-line1 = ' CLEAR: gt_bdcd,gt_bdcd[],'.
- APPEND source. CLEAR source.
- source-line1 = ' gt_messtab,gt_messtab[].'.
- APPEND source. CLEAR source.
- APPEND source.
- break c_xiangc.
- **利用标准生产 BDC-form
- *---------------------------------------------------------------------*
- LOOP AT dynprotab.
- CASE dynprotab-dynbegin.
- **new transaction
- WHEN 'T'.
- * store transaction AFTER getting field values!
- IF NOT tcode IS INITIAL.
- ****perform bdc_transaction using dynprotab-fnam.
- source-line1 = 'perform bdc_transaction using'.
- CONCATENATE ''''
- tcode
- '''.'
- INTO source-line2.
- APPEND source. CLEAR source. APPEND source.
- ENDIF.
- **save tcode for next transaction
- tcode = dynprotab-fnam.
- * new dynpro
- WHEN 'X'.
- ****perform bdc_dynpro using dynprotab-program dynprotab-dynpro.
- source-line1 = 'perform bdc_dynpro using'.
- CONCATENATE ''''
- dynprotab-program
- ''''
- ' '''
- dynprotab-dynpro
- '''.'
- INTO source-line2.
- APPEND source. CLEAR source.
- **dynpro field
- WHEN space.
- ****perform bdc_field using <dynprotab-fnam> <dynprotab-fval>.
- CHECK dynprotab-fnam <> 'BDC_SUBSCR'.
- source-line1 = 'perform bdc_field using'.
- CONCATENATE ''''
- dynprotab-fnam
- ''''
- INTO source-line2.
- APPEND source. CLEAR source.
- **从文件 读取字段
- *IF DYNPROTAB-FNAM = 'BDC_OKCODE' OR
- IF dynprotab-fnam = 'BDC_OKCODE' OR
- dynprotab-fnam = 'BDC_CURSOR' OR
- dynprotab-fnam = 'BDC_SUBSCR'.
- PERFORM source_line_for_field_content USING dynprotab-fval.
- ELSE.
- ADD TO dynpro_fields_index.
- READ TABLE dynpro_fields INDEX dynpro_fields_index.
- IF sy-subrc <> .
- MESSAGE a614 WITH dynprotab-fnam.
- ENDIF.
- CONCATENATE 'gs_data-'
- dynpro_fields-recfield
- '.'
- INTO source-line2.
- APPEND source. CLEAR source.
- ENDIF.
- * source line for read from dataset
- * IF FILE = 'X'.
- ** * ...records-<field>
- * PERFORM SOURCE_LINE_FOR_VAR_FIELD.
- ** source line for read from records
- * ELSE.
- ** * ...<dynprotab-fval>
- * PERFORM SOURCE_LINE_FOR_FIELD_CONTENT USING DYNPROTAB-FVAL.
- * ENDIF.
- ENDCASE.
- ENDLOOP.
- APPEND source.
- *---------------------------------------------------------------------*
- **!自定义BDC 子程序
- * LOOP AT gt_field INTO gs_field.
- * CONCATENATE 'add_fieldcat' gs_field-fieldname gs_field-fieldtext '.' INTO source-line1 SEPARATED BY space.
- * APPEND source. CLEAR source.
- * ENDLOOP.
- * CONCATENATE 'add_fieldcat' 'flag' '处理状态' '.' INTO source-line1 SEPARATED BY space.
- * APPEND source. CLEAR source.
- * CONCATENATE 'add_fieldcat' 'msg' '消息' '.' INTO source-line1 SEPARATED BY space.
- * APPEND source. CLEAR source.
- * APPEND source.
- CONCATENATE '''' tcode '''' into tcode.
- concatenate ' CALL TRANSACTION' tcode 'USING gt_bdcd' into source-line1 separated by space.
- * source-line1 = ' CALL TRANSACTION 'MM01' USING gt_bdcd'.
- APPEND source. CLEAR source.
- source-line1 = ' MODE p_mode'.
- APPEND source. CLEAR source.
- source-line1 = ' UPDATE ''S'''.
- APPEND source. CLEAR source.
- source-line1 = ' MESSAGES INTO gt_messtab.'.
- APPEND source. CLEAR source.
- source-line1 = ' IF sy-subrc = 0.'.
- APPEND source. CLEAR source.
- source-line1 = ' gs_data-flag = gc_0.'.
- APPEND source. CLEAR source.
- source-line1 = ' gs_data-flag = gc_4.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDIF.'.
- APPEND source. CLEAR source.
- source-line1 = ' LOOP AT gt_messtab .'.
- APPEND source. CLEAR source.
- source-line1 = ' SELECT SINGLE *'.
- APPEND source. CLEAR source.
- source-line1 = ' INTO t100 '.
- APPEND source. CLEAR source.
- source-line1 = ' FROM t100 '.
- APPEND source. CLEAR source.
- source-line1 = ' WHERE sprsl = gt_messtab-msgspra'.
- APPEND source. CLEAR source.
- source-line1 = ' AND arbgb = gt_messtab-msgid'.
- APPEND source. CLEAR source.
- source-line1 = ' AND msgnr = gt_messtab-msgnr.'.
- APPEND source. CLEAR source.
- source-line1 = ' IF sy-subrc = 0.'.
- APPEND source. CLEAR source.
- source-line1 = ' l_mstring = t100-text.'.
- APPEND source. CLEAR source.
- source-line1 = ' IF l_mstring CS ''&1''.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&1'' WITH gt_messtab-msgv1 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&2'' WITH gt_messtab-msgv2 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&3'' WITH gt_messtab-msgv3 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&4'' WITH gt_messtab-msgv4 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' ELSE.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv1 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv2 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv3 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' REPLACE ''&'' WITH gt_messtab-msgv4 INTO l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDIF.'.
- APPEND source. CLEAR source.
- source-line1 = ' CONDENSE l_mstring.'.
- APPEND source. CLEAR source.
- source-line1 = ' CONCATENATE gs_data-msg l_mstring INTO gs_data-msg.'.
- APPEND source. CLEAR source.
- source-line1 = ' ELSE.'.
- APPEND source. CLEAR source.
- source-line1 = ' CONCATENATE gs_data-msg gt_messtab INTO gs_data-msg.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDIF.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDLOOP.'.
- APPEND source. CLEAR source.
- source-line1 = ' MODIFY gt_data FROM gs_data.'.
- APPEND source. CLEAR source.
- source-line1 = ' CLEAR gs_data.'.
- APPEND source. CLEAR source.
- source-line1 = ' ENDLOOP.'.
- APPEND source. CLEAR source.
- source-line1 = 'ENDFORM. " FRM_BDC_SAVE'.
- APPEND source. CLEAR source.
- ENDFORM. " FRM_BDC_SAVE
- *&---------------------------------------------------------------------*
- *& Form frm_SET_DATA
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_set_data .
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* DATA'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'DATA:gt_data TYPE TABLE OF ty_data,'.
- APPEND source. CLEAR source.
- source-line1 = ' gs_data TYPE ty_data.'.
- APPEND source. CLEAR source.
- source-line1 = 'DATA:gv_tabix TYPE sy-tabix.'.
- APPEND source. CLEAR source.
- **CONSTANTS
- source-line1 = 'CONSTANTS: GC_TRUE TYPE SAP_BOOL VALUE ''X'', '.
- APPEND source. CLEAR source.
- source-line1 = ' gc_0 TYPE sap_bool VALUE ''S'', '.
- APPEND source. CLEAR source.
- source-line1 = ' gc_4 TYPE sap_bool VALUE ''E''. '.
- APPEND source. CLEAR source.
- source = '*DATA for BDC'.
- APPEND source. CLEAR source.
- source-line1 = 'DATA:gt_bdcd LIKE bdcdata OCCURS 0 WITH HEADER LINE.'.
- APPEND source. CLEAR source.
- source-line1 = 'DATA:gt_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.'.
- APPEND source. CLEAR source.
- source = '*DATA for alv'.
- APPEND source. CLEAR source.
- source-line1 = 'DATA: gv_repid TYPE sy-repid,'.
- APPEND source. CLEAR source.
- source-line1 = ' gw_layout TYPE slis_layout_alv,'.
- APPEND source. CLEAR source.
- source-line1 = ' gt_fieldcat TYPE slis_t_fieldcat_alv,'.
- APPEND source. CLEAR source.
- source-line1 = ' wa_fieldcat TYPE slis_fieldcat_alv,'.
- APPEND source. CLEAR source.
- source-line1 = ' gt_event TYPE slis_t_event,'.
- APPEND source. CLEAR source.
- source-line1 = ' wa_event TYPE slis_alv_event.'.
- APPEND source. CLEAR source. APPEND source.
- ENDFORM. " frm_SET_DATA
- *&---------------------------------------------------------------------*
- *& Form FRM_SET_TOP
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_set_top .
- *&s1.report <report>
- CONCATENATE 'report'
- report
- INTO source SEPARATED BY space.
- APPEND source. CLEAR source.
- source = ' no standard page heading line-size 255 MESSAGE-ID DEMO.'.
- APPEND source. CLEAR source. APPEND source.
- *&s2.include bdcrecx1. "since release 4.5
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* INCLUDE'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- APPEND source.
- source-line1 = 'include bdcrecx1.'.
- APPEND source. CLEAR source.
- APPEND source.
- *&s3.TYPE-POOLS
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source = '* TYPE-POOLS'.
- APPEND source. CLEAR source.
- source = '*---------------------------------------------------------------------*'.
- APPEND source. CLEAR source.
- source-line1 = 'TYPE-POOLS:slis,truxs.'.
- APPEND source. CLEAR source. APPEND source.
- ENDFORM. " FRM_SET_TOP
- *&---------------------------------------------------------------------*
- *& Form FRM_DYNPRO
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * --> p1 text
- * <-- p2 text
- *----------------------------------------------------------------------*
- FORM frm_dynpro .
- ENDFORM. " FRM_DYNPRO
- **** source_line_for_field_content ************************************
- FORM source_line_for_field_content USING p_fval.
- DATA: l_fval LIKE dynprotab-fval.
- l_fval = p_fval.
- IF l_fval+ = space.
- CONCATENATE ''''
- l_fval
- '''.'
- INTO source-line2.
- APPEND source. CLEAR source.
- ELSE. "field content longer than 38
- CONCATENATE ''''
- l_fval()
- ''''
- INTO source-line2.
- APPEND source. CLEAR source.
- source-line1+ = '&'.
- DO TIMES.
- SHIFT l_fval BY PLACES.
- IF l_fval+ = space.
- CONCATENATE ''''
- l_fval
- '''.'
- INTO source-line2.
- APPEND source. CLEAR source.
- EXIT.
- ELSE. "field content longer than n x 38
- CONCATENATE ''''
- l_fval()
- ''''
- INTO source-line2.
- APPEND source. CLEAR source-line2.
- ENDIF.
- ENDDO.
- ENDIF.
- ENDFORM. "SOURCE_LINE_FOR_FIELD_CONTENT
ABAP自动生成程序的更多相关文章
- Demo005 小学四则运算自动生成程序
目录 小学四则运算自动生成程序 0.传送门 1.题目要求 2.功能实现 2.1 总体设计 2.2 用户欢迎界面 2.3 用户功能界面 2.4 屏幕输出 2.5 文本输出 2.6 获取时间 2.7 用户 ...
- 中小学数学卷子自动生成程序--对G同学的代码分析
前几天,在课程要求下完成了个人项目的项目工程编写,即一个中小学数学卷子自动生成程序. 程序主要功能是用户预设账户登录后可以选择等级进行对应的小中高的数学卷子对应出题生成txt文本. 本文针对partn ...
- 身份证号码自动生成程序(Python)
今天收到一个小需求:需要一个自动生成身份证号码的小程序.近期用python较多,因此打算用python实现. 需求细化: 1.身份证必须能够通过身份证校验程序. 2.通过查询,发现身份证号码是有国家标 ...
- 中小学生试卷自动生成程序--jialin大佬代码分析
结对编程代码评价 有幸和小jialin结对编程.拿到jialin的代码后. 我先是尝试用idea运行.结果报了如下错误. 无法加载主类,再尝试用eclipse运行. 好的,可以运行,那为什么用idea ...
- HNU_中小学数学卷子自动生成程序(个人项目)简要分析
一.前言 首先,在这里特别感谢我的结对编程伙伴HnuLyx,他在算法上和设计思路上都与我有很大的不同,个人项目互评中,为我的项目提出了很多很好的建议,让我在认清自己不足的同时,了解到很多以前没有注意的 ...
- ABAP 省市县级联搜索帮助
在展示ABAP代码之前,先建立自建表ZCHENH006,表中包含两个关键字段 BELNR(地区编码),SDESC(地区描述). 编码规则参考:身份证前六位地区编码规则,可参考我另外一篇Blog导入系统 ...
- 结队编程第二次作业:Android自动生成算式应用
一.题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. 这次我和我的小伙伴选择了题目一. 题目1: 实 ...
- 基于Python实现的四则运算生成程序
Github项目地址:传送门 小组成员:黄晓彬(代码实现) 黄钰城(代码审查) 需求: 1. 使用 -n 参数控制生成题目的个数. 2. 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的 ...
- Toad快速入门
Toad快速入门 在实际中,Toad的用户很少用到其强大的新特性,同时新用户的摸索式熟悉Toad往往花费更多的时间.为此,铸锐数码为每个新购买Toad客户,提供两人次的在线培训服务,帮助客 ...
随机推荐
- PHP+Redis 实例 页面缓存
前提分析! 上面的图,我分为了三个层级去做页面缓存,其实不一定要三个层面都实现的,如果你做了页面级的,项目初期是够了,作为接口级,基本可以解决很多吞吐量. 对于上面的三个层级,我用了同一个方法去做. ...
- angular4 开发记录
1,传值问题 page setValue: [routerLink]="['/product-details', product.id]"> ts seValue: ...
- 14. First Position of Target 【easy】
14. First Position of Target [easy] For a given sorted array (ascending order) and a targetnumber, f ...
- onkeypress、onkeydown、onkeyup
在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress.onkeydown.onkeyup三个事件进行出来.该三个事件的执行顺序如下:onkeydown -> onk ...
- 第八章 springboot + mybatis + 多数据源2(解决循环引用)
解决了循环引用 1.application.properties #the first datasource jdbc.names:1,2 jdbc1.driverClassName = com.my ...
- address-already in use 以及查看端口
https://stackoverflow.com/questions/19071512/socket-error-errno-48-address-already-in-use
- docker导入导出
导出镜像 docker save -o centos7.tar centos # 导入本地镜像 docker load --input centos7.tar docker ps -a docker ...
- void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...
- Linux网络编程(一)基础
一.数据存储顺序:大端和小端 大端模式: 地址的增长顺序与值的增长顺序相反 小段模式: 地址的增长顺序与值的增长顺序同样 为什么会有大小端模式之分呢?这是由于在计算机系统中,我们是以字 ...
- 转:SSD详解
原文:http://blog.csdn.net/a8039974/article/details/77592395, http://blog.csdn.net/jesse_mx/article/det ...