How to use ABAP Function Module SEO_CLASS_CREATE_COMPLETE to create an ABAP class

SEO_CLASS_CREATE_COMPLETEFunction modules are used to SAPcreate a complete SAPclass in the system. In SAP ABAPJava, classes are the basic building blocks of object-oriented programming, which allow developers to organize data and behavior into a single entity. SAPClasses are typically used to describe business objects, data structures, and business logic for flexibility and maintainability.

SEO_CLASS_CREATE_COMPLETEThe main uses of function modules include:

  1. Create Class: Through this SEO_CLASS_CREATE_COMPLETE, the developer can SAPcreate a new ABAPclass in the system. This class can be an ordinary class, an exception class, a singleton class or an interface class.

  2. Define attributes and methods: When creating a class, you can use this function module to define the attributes (member variables) and methods of the class. Properties can be public, protected, or private, and methods can be instance methods or class methods.

  3. Handling events: In addition to properties and methods, SAP ABAPclasses can also handle events. Through SEO_CLASS_CREATE_COMPLETE, you can add event handlers to the class to respond to specific events.

  4. Implement interface: If a class needs to implement one or more interfaces, SEO_CLASS_CREATE_COMPLETEit can also be used to add the implementation of the interface to the class.

  5. Define inheritance relationship: SAP ABAP Support inheritance relationship, allowing a class to inherit the properties and methods of another class. Through SEO_CLASS_CREATE_COMPLETE, you can define the inheritance relationship between classes.

This article describes the method for generating new ABAP classes using the following ABAP Function Module.

SEO_CLASS_CREATE_COMPLETE

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. "implemented
ls_method-exposure = 2. "public
APPEND 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. "METHOD
ls_parameter-mtdtype = 0. "METHOD
ls_parameter-pardecltyp = 0. "IMPORTING
ls_parameter-parpasstyp = 1. "pass by reference
ls_parameter-typtype = 3. "type ref to
APPEND 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. "private
ls_attribute-typtype = 3. "type ref to
ls_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.

Guess you like

Origin blog.csdn.net/i042416/article/details/132481995