mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
240 lines
6.2 KiB
ABAP
240 lines
6.2 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Include ZABAPGIT_OBJECT_WAPA
|
|
*&---------------------------------------------------------------------*
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_object_wapa DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
*
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_object_wapa DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES lif_object.
|
|
ALIASES mo_files FOR lif_object~mo_files.
|
|
|
|
PRIVATE SECTION.
|
|
TYPES: BEGIN OF ty_page,
|
|
attributes TYPE o2pagattr,
|
|
END OF ty_page.
|
|
|
|
TYPES: ty_pages_tt TYPE STANDARD TABLE OF ty_page WITH DEFAULT KEY.
|
|
|
|
METHODS:
|
|
get_page_content
|
|
IMPORTING io_page TYPE REF TO cl_o2_api_pages
|
|
RETURNING VALUE(rv_content) TYPE xstring,
|
|
read_page
|
|
IMPORTING is_page TYPE o2pagattr
|
|
RETURNING VALUE(rs_page) TYPE ty_page
|
|
RAISING lcx_exception.
|
|
|
|
ENDCLASS. "lcl_object_TRAN DEFINITION
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_object_wapa IMPLEMENTATION
|
|
*----------------------------------------------------------------------*
|
|
*
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_object_wapa IMPLEMENTATION.
|
|
|
|
METHOD lif_object~has_changed_since.
|
|
rv_changed = abap_true.
|
|
ENDMETHOD. "lif_object~has_changed_since
|
|
|
|
METHOD lif_object~changed_by.
|
|
|
|
DATA: lv_name TYPE o2applname,
|
|
lt_pages TYPE STANDARD TABLE OF o2pagdir WITH DEFAULT KEY,
|
|
ls_latest LIKE LINE OF lt_pages.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
SELECT * FROM o2pagdir INTO TABLE lt_pages WHERE applname = lv_name.
|
|
IF sy-subrc <> 0.
|
|
rv_user = c_user_unknown.
|
|
ENDIF.
|
|
|
|
SORT lt_pages BY changedon DESCENDING changetime DESCENDING.
|
|
|
|
READ TABLE lt_pages INDEX 1 INTO ls_latest.
|
|
ASSERT sy-subrc = 0.
|
|
|
|
rv_user = ls_latest-changedby.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD lif_object~get_metadata.
|
|
rs_metadata = get_metadata( ).
|
|
ENDMETHOD. "lif_object~get_metadata
|
|
|
|
METHOD lif_object~exists.
|
|
|
|
DATA: lv_name TYPE o2applname.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
cl_o2_api_application=>load(
|
|
EXPORTING
|
|
p_application_name = lv_name
|
|
EXCEPTIONS
|
|
object_not_existing = 1
|
|
permission_failure = 2
|
|
error_occured = 3 ).
|
|
rv_bool = boolc( sy-subrc = 0 ).
|
|
|
|
ENDMETHOD. "lif_object~exists
|
|
|
|
METHOD lif_object~jump.
|
|
lcx_exception=>raise( 'todo, jump, WAPA' ).
|
|
ENDMETHOD. "jump
|
|
|
|
METHOD lif_object~delete.
|
|
|
|
* todo, not supported yet
|
|
ASSERT 0 = 1.
|
|
|
|
ENDMETHOD. "delete
|
|
|
|
METHOD lif_object~deserialize.
|
|
|
|
* todo, not supported yet
|
|
ASSERT 0 = 1.
|
|
|
|
ENDMETHOD. "deserialize
|
|
|
|
METHOD lif_object~serialize.
|
|
|
|
DATA: lv_name TYPE o2applname,
|
|
ls_attributes TYPE o2applattr,
|
|
lt_navgraph TYPE o2applgrap_table,
|
|
lt_pages TYPE o2pagelist,
|
|
lt_pages_info TYPE ty_pages_tt,
|
|
lo_bsp TYPE REF TO cl_o2_api_application.
|
|
|
|
FIELD-SYMBOLS: <ls_page> LIKE LINE OF lt_pages.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
cl_o2_api_application=>load(
|
|
EXPORTING
|
|
p_application_name = lv_name
|
|
IMPORTING
|
|
p_application = lo_bsp
|
|
EXCEPTIONS
|
|
object_not_existing = 1
|
|
permission_failure = 2
|
|
error_occured = 3 ).
|
|
IF sy-subrc <> 0.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
lo_bsp->get_attributes(
|
|
EXPORTING
|
|
p_version = 'A'
|
|
IMPORTING
|
|
p_attributes = ls_attributes ).
|
|
|
|
CLEAR: ls_attributes-author,
|
|
ls_attributes-createdon,
|
|
ls_attributes-changedby,
|
|
ls_attributes-changedon,
|
|
ls_attributes-devclass.
|
|
|
|
io_xml->add( iv_name = 'ATTRIBUTES'
|
|
ig_data = ls_attributes ).
|
|
|
|
lo_bsp->get_navgraph(
|
|
EXPORTING
|
|
p_version = 'A'
|
|
IMPORTING
|
|
p_navgraph = lt_navgraph ).
|
|
|
|
io_xml->add( iv_name = 'NAVGRAPH'
|
|
ig_data = lt_navgraph ).
|
|
|
|
cl_o2_api_pages=>get_all_pages(
|
|
EXPORTING
|
|
p_applname = lv_name
|
|
p_version = 'A'
|
|
IMPORTING
|
|
p_pages = lt_pages ).
|
|
|
|
LOOP AT lt_pages ASSIGNING <ls_page>.
|
|
APPEND read_page( <ls_page> ) TO lt_pages_info.
|
|
ENDLOOP.
|
|
|
|
io_xml->add( iv_name = 'PAGES'
|
|
ig_data = lt_pages_info ).
|
|
|
|
ENDMETHOD. "serialize
|
|
|
|
METHOD read_page.
|
|
|
|
DATA: lv_name TYPE o2applname,
|
|
ls_pagekey TYPE o2pagkey,
|
|
lv_content TYPE xstring,
|
|
lv_extra TYPE string,
|
|
lv_ext TYPE string,
|
|
lo_page TYPE REF TO cl_o2_api_pages.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
ls_pagekey-applname = lv_name.
|
|
ls_pagekey-pagekey = is_page-pagekey.
|
|
|
|
cl_o2_api_pages=>load(
|
|
EXPORTING
|
|
p_pagekey = ls_pagekey
|
|
IMPORTING
|
|
p_page = lo_page ).
|
|
* todo, add moar page data into rs_page:
|
|
* event handlers
|
|
* page parameters
|
|
* type definitions
|
|
|
|
lv_content = get_page_content( lo_page ).
|
|
SPLIT is_page-pagename AT '.' INTO lv_extra lv_ext.
|
|
REPLACE ALL OCCURRENCES OF '/' IN lv_extra WITH '_-'.
|
|
mo_files->add_raw(
|
|
iv_extra = lv_extra
|
|
iv_ext = lv_ext
|
|
iv_data = lv_content ).
|
|
|
|
rs_page-attributes = is_page.
|
|
|
|
CLEAR: rs_page-attributes-author,
|
|
rs_page-attributes-createdon,
|
|
rs_page-attributes-changedby,
|
|
rs_page-attributes-changedon,
|
|
rs_page-attributes-implclass,
|
|
rs_page-attributes-gendate,
|
|
rs_page-attributes-gentime.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD get_page_content.
|
|
|
|
DATA: lt_content TYPE o2pageline_table,
|
|
lv_string TYPE string.
|
|
|
|
io_page->get_page(
|
|
IMPORTING
|
|
p_content = lt_content ).
|
|
|
|
CONCATENATE LINES OF lt_content INTO lv_string SEPARATED BY gc_newline RESPECTING BLANKS.
|
|
|
|
rv_content = lcl_convert=>string_to_xstring_utf8( lv_string ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD lif_object~compare_to_remote_version.
|
|
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS. "lcl_object_tran IMPLEMENTATION
|