mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
217 lines
4.7 KiB
ABAP
217 lines
4.7 KiB
ABAP
CLASS zcl_abapgit_object_dial DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES zif_abapgit_object.
|
|
|
|
PRIVATE SECTION.
|
|
TYPES: BEGIN OF ty_dialog_module,
|
|
tdct TYPE tdct,
|
|
dia_pars TYPE STANDARD TABLE OF diapar
|
|
WITH NON-UNIQUE DEFAULT KEY,
|
|
END OF ty_dialog_module.
|
|
|
|
METHODS:
|
|
_read_tdct
|
|
RETURNING
|
|
VALUE(rs_tdct) TYPE tdct.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_ABAPGIT_OBJECT_DIAL IMPLEMENTATION.
|
|
|
|
|
|
METHOD zif_abapgit_object~changed_by.
|
|
|
|
rv_user = c_user_unknown.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~compare_to_remote_version.
|
|
|
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~delete.
|
|
|
|
DATA: ls_bcdata TYPE bdcdata,
|
|
lt_bcdata TYPE STANDARD TABLE OF bdcdata.
|
|
|
|
ls_bcdata-program = 'SAPMSDIA'.
|
|
ls_bcdata-dynpro = '1010'.
|
|
ls_bcdata-dynbegin = 'X'.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CLEAR ls_bcdata.
|
|
ls_bcdata-fnam = 'DIAPAR-DNAM'.
|
|
ls_bcdata-fval = ms_item-obj_name.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CLEAR ls_bcdata.
|
|
ls_bcdata-fnam = 'RS38L-PARM'.
|
|
ls_bcdata-fval = abap_true.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CLEAR ls_bcdata.
|
|
ls_bcdata-fnam = 'BDC_OKCODE'.
|
|
ls_bcdata-fval = '=DELF'.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CLEAR ls_bcdata.
|
|
ls_bcdata-program = 'SAPLSPO1'.
|
|
ls_bcdata-dynpro = '0100'.
|
|
ls_bcdata-dynbegin = 'X'.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CLEAR ls_bcdata.
|
|
ls_bcdata-fnam = 'BDC_OKCODE'.
|
|
ls_bcdata-fval = '=YES'.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
ls_bcdata-program = 'SAPMSDIA'.
|
|
ls_bcdata-dynpro = '1010'.
|
|
ls_bcdata-dynbegin = 'X'.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CLEAR ls_bcdata.
|
|
ls_bcdata-fnam = 'BDC_OKCODE'.
|
|
ls_bcdata-fval = '=BACK'.
|
|
APPEND ls_bcdata TO lt_bcdata.
|
|
|
|
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
|
|
EXPORTING
|
|
tcode = 'SE35'
|
|
mode_val = 'E'
|
|
TABLES
|
|
using_tab = lt_bcdata
|
|
EXCEPTIONS
|
|
OTHERS = 1.
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( 'error from ABAP4_CALL_TRANSACTION, SE35' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~deserialize.
|
|
|
|
DATA: ls_dialog_module TYPE ty_dialog_module.
|
|
|
|
io_xml->read(
|
|
EXPORTING
|
|
iv_name = 'DIAL'
|
|
CHANGING
|
|
cg_data = ls_dialog_module ).
|
|
|
|
CALL FUNCTION 'RS_DIALOG_CREATE'
|
|
EXPORTING
|
|
dialogname = ls_dialog_module-tdct-dnam
|
|
dynpronumber = ls_dialog_module-tdct-dynr
|
|
programname = ls_dialog_module-tdct-prog
|
|
suppress_corr_check = abap_false
|
|
* It seems that dia_par parameter doesn't do anything, but we can't omit it
|
|
* Parameters are inserted below
|
|
TABLES
|
|
dia_par = ls_dialog_module-dia_pars
|
|
EXCEPTIONS
|
|
dialog_already_exists = 1
|
|
invalid_name = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |Error deserializing dialogmodule { ms_item-obj_name }| ).
|
|
ENDIF.
|
|
|
|
" It seems that there's no API for diapar, therefore we manipulate it directly
|
|
INSERT diapar FROM TABLE ls_dialog_module-dia_pars.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~exists.
|
|
|
|
DATA: ls_tdct TYPE tdct.
|
|
|
|
ls_tdct = _read_tdct( ).
|
|
|
|
rv_bool = boolc( ls_tdct IS NOT INITIAL ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_metadata.
|
|
|
|
rs_metadata = get_metadata( ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~has_changed_since.
|
|
|
|
rv_changed = abap_true.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~jump.
|
|
|
|
DATA: lv_objectname TYPE tdct-dnam.
|
|
|
|
lv_objectname = ms_item-obj_name.
|
|
|
|
CALL FUNCTION 'RS_DIALOG_SHOW'
|
|
EXPORTING
|
|
objectname = lv_objectname
|
|
type = 'VW'
|
|
EXCEPTIONS
|
|
object_not_found = 1
|
|
OTHERS = 2.
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |Error from RS_DIALOG_SHOW, DIAL| ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~serialize.
|
|
|
|
DATA: ls_dialog_module TYPE ty_dialog_module.
|
|
|
|
ls_dialog_module-tdct = _read_tdct( ).
|
|
|
|
SELECT * FROM diapar
|
|
INTO TABLE ls_dialog_module-dia_pars
|
|
WHERE dnam = ls_dialog_module-tdct-dnam.
|
|
|
|
io_xml->add( iv_name = 'DIAL'
|
|
ig_data = ls_dialog_module ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD _read_tdct.
|
|
|
|
DATA: lv_dnam TYPE tdct-dnam.
|
|
|
|
lv_dnam = ms_item-obj_name.
|
|
|
|
SELECT SINGLE * FROM tdct
|
|
INTO rs_tdct
|
|
WHERE dnam = lv_dnam.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_object~is_locked.
|
|
|
|
rv_is_locked = abap_false.
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|