*&---------------------------------------------------------------------* *& Include zabapgit_object_dial *&---------------------------------------------------------------------* CLASS lcl_object_dial DEFINITION INHERITING FROM lcl_objects_super FINAL. PUBLIC SECTION. INTERFACES lif_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 lcl_object_dial IMPLEMENTATION. METHOD lif_object~has_changed_since. rv_changed = abap_true. ENDMETHOD. METHOD lif_object~changed_by. rv_user = c_user_unknown. ENDMETHOD. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). ENDMETHOD. METHOD lif_object~exists. DATA: ls_tdct TYPE tdct. ls_tdct = _read_tdct( ). rv_bool = boolc( ls_tdct IS NOT INITIAL ). ENDMETHOD. METHOD lif_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 lif_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 lif_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 lif_object~jump. DATA: objectname TYPE tdct-dnam. objectname = ms_item-obj_name. CALL FUNCTION 'RS_DIALOG_SHOW' EXPORTING objectname = 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 lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. ENDMETHOD. METHOD _read_tdct. DATA: dnam TYPE tdct-dnam. dnam = ms_item-obj_name. SELECT SINGLE * FROM tdct INTO rs_tdct WHERE dnam = dnam. ENDMETHOD. ENDCLASS.