mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
new SOBJ serializer (#5724)
* 1st version of abapGit - SOBJ serializer - added class 1st version of zcl_abapgit_object_sobj - pending more testing * refactoring to comply with abapGit conventions * downporting to 7.02 * refactoring as abaplint suggests 'data' keyword in cappital letters * more abaplint fixing * changes for PR merging - changed ABAP class title - deleted commented code * changes for PR merging (2) - fixing abaplint Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
e58138e4f9
commit
efb42650e0
241
src/objects/zcl_abapgit_object_sobj.clas.abap
Normal file
241
src/objects/zcl_abapgit_object_sobj.clas.abap
Normal file
|
@ -0,0 +1,241 @@
|
|||
CLASS zcl_abapgit_object_sobj DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_objects_super
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_object .
|
||||
PROTECTED SECTION.
|
||||
METHODS get_generic
|
||||
RETURNING
|
||||
VALUE(ro_generic) TYPE REF TO zcl_abapgit_objects_generic
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PRIVATE SECTION.
|
||||
METHODS get_field_rules
|
||||
RETURNING
|
||||
VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules.
|
||||
METHODS is_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool.
|
||||
METHODS is_objtype_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool.
|
||||
METHODS is_program_locked RETURNING VALUE(rv_is_locked) TYPE abap_bool.
|
||||
METHODS get_program RETURNING VALUE(rv_program) TYPE tojtb-progname.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_SOBJ IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_field_rules.
|
||||
|
||||
ri_rules = zcl_abapgit_field_rules=>create( ).
|
||||
ri_rules->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'CREA_USER'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'CREA_DATE'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-date
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'CREA_TIME'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-time
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'CHAN_USER'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'CHAN_DATE'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-date
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'CHAN_TIME'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-time
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'ACTV_USER'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'ACTV_DATE'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-date
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'ACTV_TIME'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-time
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'REL_USER'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'REL_DATE'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-date
|
||||
)->add(
|
||||
iv_table = 'TOJTB'
|
||||
iv_field = 'REL_TIME'
|
||||
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-time ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_generic.
|
||||
|
||||
CREATE OBJECT ro_generic
|
||||
EXPORTING
|
||||
io_field_rules = get_field_rules( )
|
||||
is_item = ms_item
|
||||
iv_language = mv_language.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_program.
|
||||
SELECT SINGLE progname INTO rv_program FROM tojtb WHERE name = ms_item-obj_name.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_locked.
|
||||
rv_is_locked = boolc( is_objtype_locked( ) = abap_true OR is_program_locked( ) = abap_true ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_objtype_locked.
|
||||
CONSTANTS lc_tabname TYPE tabname VALUE 'SWOTBASDAT'.
|
||||
DATA lv_varkey TYPE vim_enqkey.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
lv_varkey = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'ENQUEUE_E_TABLE'
|
||||
EXPORTING
|
||||
tabname = lc_tabname
|
||||
varkey = lv_varkey
|
||||
EXCEPTIONS
|
||||
foreign_lock = 1
|
||||
OTHERS = 999.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
rv_is_locked = abap_true.
|
||||
ELSE.
|
||||
CALL FUNCTION 'DEQUEUE_E_TABLE'
|
||||
EXPORTING
|
||||
tabname = lc_tabname
|
||||
varkey = lv_varkey.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_program_locked.
|
||||
CONSTANTS lc_enqueue_exclusive TYPE enqmode VALUE 'X'.
|
||||
DATA lv_progname TYPE progname.
|
||||
|
||||
rv_is_locked = abap_false.
|
||||
lv_progname = get_program( ).
|
||||
|
||||
IF lv_progname IS NOT INITIAL.
|
||||
CALL FUNCTION 'ENQUEUE_ESRDIRE'
|
||||
EXPORTING
|
||||
mode_trdir = lc_enqueue_exclusive
|
||||
name = lv_progname
|
||||
EXCEPTIONS
|
||||
foreign_lock = 1
|
||||
OTHERS = 999.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
rv_is_locked = abap_true.
|
||||
ELSE.
|
||||
CALL FUNCTION 'DEQUEUE_ESRDIRE'
|
||||
EXPORTING
|
||||
mode_trdir = lc_enqueue_exclusive
|
||||
name = lv_progname.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
DATA: BEGIN OF ls_userinfo,
|
||||
crea_user TYPE tojtb-crea_user,
|
||||
chan_user TYPE tojtb-chan_user,
|
||||
END OF ls_userinfo.
|
||||
|
||||
SELECT SINGLE
|
||||
crea_user
|
||||
chan_user
|
||||
INTO (ls_userinfo-crea_user, ls_userinfo-chan_user)
|
||||
FROM tojtb WHERE name = ms_item-obj_name.
|
||||
|
||||
IF ls_userinfo-chan_user IS INITIAL.
|
||||
ls_userinfo-chan_user = ls_userinfo-crea_user.
|
||||
ENDIF.
|
||||
rv_user = ls_userinfo-chan_user.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
get_generic( )->delete( iv_package ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~deserialize.
|
||||
|
||||
get_generic( )->deserialize(
|
||||
iv_package = iv_package
|
||||
io_xml = io_xml ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~exists.
|
||||
|
||||
rv_bool = get_generic( )->exists( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~get_comparator.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~get_deserialize_steps.
|
||||
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~get_metadata.
|
||||
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-delete_tadir = abap_true.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_active.
|
||||
rv_active = is_active( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
rv_is_locked = is_locked( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~jump.
|
||||
"No need as GENERIC class already handles it
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
get_generic( )->serialize( io_xml ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/objects/zcl_abapgit_object_sobj.clas.xml
Normal file
16
src/objects/zcl_abapgit_object_sobj.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_OBJECT_SOBJ</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>SOBJ - Business Object Type</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user