本文介绍使用下列 ABAP Function Module 生成新的 ABAP 类的方法。
REPORT zdyanmic.DATA ls_vseoclass TYPE vseoclass.DATA ls_imp_if TYPE seor_implementing_r.DATA lt_imp_if TYPE seor_implementings_r.DATA ls_imp_det TYPE seoredef.DATA lt_methods_source TYPE seo_method_source_table.DATA ls_method_source TYPE seo_method_source.DATA lv_method TYPE LINE OF seoo_methods_r.DATA: lv_classname LIKE ls_vseoclass-clsname VALUE 'ZCLJERRY8'.ls_vseoclass-clsname = lv_classname.ls_vseoclass-state = seoc_state_implemented.ls_vseoclass-exposure = seoc_exposure_public.ls_vseoclass-descript = `Dynamic proxy generated by Jerry's code`.ls_vseoclass-langu = sy-langu.ls_vseoclass-clsccincl = abap_true.ls_vseoclass-unicode = abap_true.ls_vseoclass-fixpt = abap_true.ls_vseoclass-clsfinal = abap_true.ls_imp_det = ls_imp_if-clsname = lv_classname.ls_imp_det = ls_imp_if-refclsname = 'IF_HELLOWORLD'.ls_imp_if-state = seoc_state_implemented.APPEND ls_imp_if TO lt_imp_if.CLEAR: ls_method_source.DATA: lv_name TYPE string.ls_method_source-cpdname = 'IF_HELLOWORLD~PRINT'.APPEND ` WRITE:/ 'before Hello World'.` TO ls_method_source-source.APPEND ' mo_origin->print( ).' TO ls_method_source-source.APPEND ` WRITE:/ 'after Hello World'.` TO ls_method_source-source.APPEND ls_method_source TO lt_methods_source.CLEAR: ls_method_source.ls_method_source-cpdname = 'CONSTRUCTOR'.APPEND 'mo_origin = io_origin.' TO ls_method_source-source.APPEND ls_method_source TO lt_methods_source.DATA: lt_implementation TYPE seop_source_string, ls_mtdkey TYPE seocpdkey, cv_implementation TYPE seor_implementings_r, ls_source_code TYPE seo_method_source, lt_methods TYPE seoo_methods_r, lt_parameters TYPE seos_parameters_r, lt_attribute TYPE seoo_attributes_r, ls_attribute LIKE LINE OF lt_attribute, ls_parameter LIKE LINE OF lt_parameters, ls_method LIKE LINE OF lt_methods.ls_method-clsname = lv_classname.ls_method-cmpname = 'CONSTRUCTOR'.ls_method-state = 1. "implementedls_method-exposure = 2. "publicAPPEND ls_method TO lt_methods.ls_parameter-clsname = lv_classname.ls_parameter-cmpname = 'CONSTRUCTOR'.ls_parameter-version = 1.ls_parameter-descript = 'Jerry'.ls_parameter-type = 'IF_HELLOWORLD'.ls_parameter-sconame = 'IO_ORIGIN'.ls_parameter-cmptype = 1. "METHODls_parameter-mtdtype = 0. "METHODls_parameter-pardecltyp = 0. "IMPORTINGls_parameter-parpasstyp = 1. "pass by referencels_parameter-typtype = 3. "type ref toAPPEND ls_parameter TO lt_parameters.ls_attribute-clsname = lv_classname.ls_attribute-cmpname = 'MO_ORIGIN'.ls_attribute-state = 1.ls_attribute-attdecltyp = 0.ls_attribute-attexpvirt = 0. "privatels_attribute-typtype = 3. "type ref tols_attribute-type = 'IF_HELLOWORLD'.APPEND ls_attribute TO lt_attribute.CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE' EXPORTING devclass = '$TMP' version = seoc_version_active authority_check = abap_true overwrite = abap_true suppress_method_generation = abap_false genflag = abap_false method_sources = lt_methods_source suppress_dialog = abap_true CHANGING class = ls_vseoclass methods = lt_methods parameters = lt_parameters implementings = lt_imp_if attributes = lt_attribute EXCEPTIONS existing = 1 is_interface = 2 db_error = 3 component_error = 4 no_access = 5 other = 6 OTHERS = 7.WRITE: / sy-subrc. |
|