mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
DEVC,NSPC: Serialize software component for add-ons (#6891)
This commit is contained in:
parent
f60e92d9b9
commit
a648f1ef51
|
@ -64,6 +64,9 @@ CLASS zcl_abapgit_object_devc DEFINITION PUBLIC
|
||||||
METHODS remove_obsolete_tadir
|
METHODS remove_obsolete_tadir
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_package_name TYPE devclass .
|
!iv_package_name TYPE devclass .
|
||||||
|
METHODS adjust_sw_component
|
||||||
|
CHANGING
|
||||||
|
cv_dlvunit TYPE dlvunit.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,6 +74,28 @@ ENDCLASS.
|
||||||
CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD adjust_sw_component.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_namespace TYPE namespace,
|
||||||
|
lv_comp_type TYPE c LENGTH 1.
|
||||||
|
|
||||||
|
" Keep software component of a package for ABAP add-ons (customer and partner developments)...
|
||||||
|
SELECT SINGLE comp_type FROM cvers INTO lv_comp_type WHERE component = cv_dlvunit.
|
||||||
|
IF sy-subrc = 0 AND lv_comp_type = 'A'.
|
||||||
|
" ... with a matching namespace (typical Add-on Assembly Kit scenario)
|
||||||
|
lv_namespace = |/{ cv_dlvunit }/|.
|
||||||
|
SELECT SINGLE namespace FROM trnspace INTO lv_namespace WHERE namespace = lv_namespace.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
CLEAR cv_dlvunit.
|
||||||
|
ENDIF.
|
||||||
|
ELSE.
|
||||||
|
CLEAR cv_dlvunit.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
super->constructor(
|
super->constructor(
|
||||||
|
@ -567,10 +592,10 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
||||||
|
|
||||||
* Fields not set:
|
* Fields not set:
|
||||||
* korrflag
|
* korrflag
|
||||||
* dlvunit
|
|
||||||
* parentcl
|
* parentcl
|
||||||
* cli_check
|
* cli_check
|
||||||
* intprefx
|
* intprefx
|
||||||
|
ls_data_sign-dlvunit = abap_true.
|
||||||
ls_data_sign-ctext = abap_true.
|
ls_data_sign-ctext = abap_true.
|
||||||
ls_data_sign-as4user = abap_true.
|
ls_data_sign-as4user = abap_true.
|
||||||
ls_data_sign-pdevclass = abap_true.
|
ls_data_sign-pdevclass = abap_true.
|
||||||
|
@ -844,6 +869,9 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
|
||||||
CLEAR: ls_package_data-intfprefx,
|
CLEAR: ls_package_data-intfprefx,
|
||||||
ls_package_data-cli_check.
|
ls_package_data-cli_check.
|
||||||
|
|
||||||
|
" If software component is related to add-on and a valid namespace, then keep it
|
||||||
|
adjust_sw_component( CHANGING cv_dlvunit = ls_package_data-dlvunit ).
|
||||||
|
|
||||||
ASSIGN COMPONENT 'TRANSLATION_DEPTH_TEXT'
|
ASSIGN COMPONENT 'TRANSLATION_DEPTH_TEXT'
|
||||||
OF STRUCTURE ls_package_data
|
OF STRUCTURE ls_package_data
|
||||||
TO <lg_field>.
|
TO <lg_field>.
|
||||||
|
|
|
@ -6,6 +6,14 @@ CLASS zcl_abapgit_object_nspc DEFINITION
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
INTERFACES zif_abapgit_object .
|
INTERFACES zif_abapgit_object .
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING
|
||||||
|
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
|
iv_language TYPE spras
|
||||||
|
!io_files TYPE REF TO zcl_abapgit_objects_files OPTIONAL
|
||||||
|
!io_i18n_params TYPE REF TO zcl_abapgit_i18n_params OPTIONAL.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
@ -26,6 +34,8 @@ CLASS zcl_abapgit_object_nspc DEFINITION
|
||||||
TYPES:
|
TYPES:
|
||||||
ty_nspc_texts TYPE STANDARD TABLE OF ty_nspc_text .
|
ty_nspc_texts TYPE STANDARD TABLE OF ty_nspc_text .
|
||||||
|
|
||||||
|
DATA mv_component TYPE cvers-component.
|
||||||
|
|
||||||
METHODS serialize_texts
|
METHODS serialize_texts
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ii_xml TYPE REF TO zif_abapgit_xml_output
|
!ii_xml TYPE REF TO zif_abapgit_xml_output
|
||||||
|
@ -42,6 +52,16 @@ CLASS zcl_abapgit_object_nspc DEFINITION
|
||||||
!iv_package TYPE devclass
|
!iv_package TYPE devclass
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
METHODS serialize_sw_component
|
||||||
|
IMPORTING
|
||||||
|
!ii_xml TYPE REF TO zif_abapgit_xml_output
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
|
METHODS deserialize_sw_component
|
||||||
|
IMPORTING
|
||||||
|
!ii_xml TYPE REF TO zif_abapgit_xml_input
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,11 +82,64 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
super->constructor(
|
||||||
|
is_item = is_item
|
||||||
|
iv_language = iv_language
|
||||||
|
io_files = io_files
|
||||||
|
io_i18n_params = io_i18n_params ).
|
||||||
|
|
||||||
|
mv_component = replace( val = is_item-obj_name
|
||||||
|
sub = '/'
|
||||||
|
with = ''
|
||||||
|
occ = 0 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD deserialize_sw_component.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
ls_cvers_old TYPE cvers,
|
||||||
|
ls_cvers_new TYPE cvers,
|
||||||
|
ls_cvers_ref TYPE cvers_ref.
|
||||||
|
|
||||||
|
ii_xml->read( EXPORTING iv_name = 'CVERS'
|
||||||
|
CHANGING cg_data = ls_cvers_new ).
|
||||||
|
|
||||||
|
ii_xml->read( EXPORTING iv_name = 'CVERS_REF'
|
||||||
|
CHANGING cg_data = ls_cvers_ref ).
|
||||||
|
|
||||||
|
IF ls_cvers_new IS NOT INITIAL.
|
||||||
|
SELECT SINGLE * FROM cvers INTO ls_cvers_old WHERE component = mv_component.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
IF ls_cvers_old <> ls_cvers_new.
|
||||||
|
zcx_abapgit_exception=>raise( `Update of software component not supported.`
|
||||||
|
&& ` Use Software Update Manager (SUM)` ).
|
||||||
|
ENDIF.
|
||||||
|
ELSE.
|
||||||
|
INSERT cvers FROM ls_cvers_new.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF ls_cvers_ref IS NOT INITIAL.
|
||||||
|
MODIFY cvers_ref FROM ls_cvers_ref.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
INSERT cvers_ref FROM ls_cvers_ref.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize_texts.
|
METHOD deserialize_texts.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
ls_trnspacett TYPE trnspacett,
|
ls_trnspacett TYPE trnspacett,
|
||||||
lt_i18n_langs TYPE TABLE OF langu,
|
lt_i18n_langs TYPE TABLE OF langu,
|
||||||
|
lt_cvers_refs TYPE TABLE OF cvers_ref,
|
||||||
|
ls_cvers_ref TYPE cvers_ref,
|
||||||
lt_nspc_texts TYPE ty_nspc_texts.
|
lt_nspc_texts TYPE ty_nspc_texts.
|
||||||
|
|
||||||
FIELD-SYMBOLS:
|
FIELD-SYMBOLS:
|
||||||
|
@ -79,14 +152,18 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
ii_xml->read( EXPORTING iv_name = 'NSPC_TEXTS'
|
ii_xml->read( EXPORTING iv_name = 'NSPC_TEXTS'
|
||||||
CHANGING cg_data = lt_nspc_texts ).
|
CHANGING cg_data = lt_nspc_texts ).
|
||||||
|
|
||||||
|
ii_xml->read( EXPORTING iv_name = 'CVERS_REFS'
|
||||||
|
CHANGING cg_data = lt_cvers_refs ).
|
||||||
|
|
||||||
SORT lt_i18n_langs.
|
SORT lt_i18n_langs.
|
||||||
SORT lt_nspc_texts BY spras. " Optimization
|
SORT lt_nspc_texts BY spras. " Optimization
|
||||||
|
SORT lt_cvers_refs BY langu. " Optimization
|
||||||
|
|
||||||
LOOP AT lt_i18n_langs ASSIGNING <lv_lang>.
|
LOOP AT lt_i18n_langs ASSIGNING <lv_lang>.
|
||||||
ls_trnspacett-namespace = iv_namespace.
|
ls_trnspacett-namespace = iv_namespace.
|
||||||
READ TABLE lt_nspc_texts ASSIGNING <ls_nspc_text> WITH KEY spras = <lv_lang>.
|
READ TABLE lt_nspc_texts ASSIGNING <ls_nspc_text> WITH KEY spras = <lv_lang>.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise( |NSPC_TEXTS cannot find lang { <lv_lang> } in XML| ).
|
zcx_abapgit_exception=>raise( |Cannot find language { <lv_lang> } in XML| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
MOVE-CORRESPONDING <ls_nspc_text> TO ls_trnspacett.
|
MOVE-CORRESPONDING <ls_nspc_text> TO ls_trnspacett.
|
||||||
|
|
||||||
|
@ -97,16 +174,49 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise( |Error upserting text for namespace| ).
|
zcx_abapgit_exception=>raise( |Error upserting text for namespace| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
READ TABLE lt_cvers_refs INTO ls_cvers_ref WITH KEY langu = <lv_lang>.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
MODIFY cvers_ref FROM ls_cvers_ref.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
INSERT cvers_ref FROM ls_cvers_ref.
|
||||||
|
ENDIF.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( |Error upserting text for software component| ).
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD serialize_sw_component.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
ls_cvers TYPE cvers,
|
||||||
|
ls_cvers_ref TYPE cvers_ref.
|
||||||
|
|
||||||
|
SELECT SINGLE * FROM cvers INTO ls_cvers WHERE component = mv_component.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
ii_xml->add( iv_name = 'CVERS'
|
||||||
|
ig_data = ls_cvers ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
SELECT SINGLE * FROM cvers_ref INTO ls_cvers_ref WHERE component = mv_component AND langu = mv_language.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
ii_xml->add( iv_name = 'CVERS_REF'
|
||||||
|
ig_data = ls_cvers_ref ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD serialize_texts.
|
METHOD serialize_texts.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
ls_trnspacett TYPE trnspacett,
|
ls_trnspacett TYPE trnspacett,
|
||||||
lt_nspc_texts TYPE ty_nspc_texts,
|
lt_nspc_texts TYPE ty_nspc_texts,
|
||||||
|
lt_cvers_refs TYPE TABLE OF cvers_ref,
|
||||||
lt_i18n_langs TYPE TABLE OF langu.
|
lt_i18n_langs TYPE TABLE OF langu.
|
||||||
|
|
||||||
FIELD-SYMBOLS:
|
FIELD-SYMBOLS:
|
||||||
|
@ -129,10 +239,15 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
APPEND INITIAL LINE TO lt_nspc_texts ASSIGNING <ls_nspc_text>.
|
APPEND INITIAL LINE TO lt_nspc_texts ASSIGNING <ls_nspc_text>.
|
||||||
MOVE-CORRESPONDING ls_trnspacett TO <ls_nspc_text>.
|
MOVE-CORRESPONDING ls_trnspacett TO <ls_nspc_text>.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
SELECT * FROM cvers_ref APPENDING TABLE lt_cvers_refs
|
||||||
|
WHERE component = mv_component AND langu = <lv_lang>
|
||||||
|
ORDER BY PRIMARY KEY.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
SORT lt_i18n_langs ASCENDING.
|
SORT lt_i18n_langs ASCENDING.
|
||||||
SORT lt_nspc_texts BY spras ASCENDING.
|
SORT lt_nspc_texts BY spras ASCENDING.
|
||||||
|
SORT lt_cvers_refs.
|
||||||
|
|
||||||
IF lines( lt_i18n_langs ) > 0.
|
IF lines( lt_i18n_langs ) > 0.
|
||||||
ii_xml->add( iv_name = 'I18N_LANGS'
|
ii_xml->add( iv_name = 'I18N_LANGS'
|
||||||
|
@ -140,6 +255,9 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
|
|
||||||
ii_xml->add( iv_name = 'NSPC_TEXTS'
|
ii_xml->add( iv_name = 'NSPC_TEXTS'
|
||||||
ig_data = lt_nspc_texts ).
|
ig_data = lt_nspc_texts ).
|
||||||
|
|
||||||
|
ii_xml->add( iv_name = 'CVERS_REFS'
|
||||||
|
ig_data = lt_cvers_refs ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -221,6 +339,8 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
deserialize_texts( ii_xml = io_xml
|
deserialize_texts( ii_xml = io_xml
|
||||||
iv_namespace = ls_nspc-namespace ).
|
iv_namespace = ls_nspc-namespace ).
|
||||||
|
|
||||||
|
deserialize_sw_component( io_xml ).
|
||||||
|
|
||||||
" Fill trnspace and trnspacel tables
|
" Fill trnspace and trnspacel tables
|
||||||
CALL FUNCTION 'TR_ACTIVATE_NAMESPACE'
|
CALL FUNCTION 'TR_ACTIVATE_NAMESPACE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -345,5 +465,7 @@ CLASS zcl_abapgit_object_nspc IMPLEMENTATION.
|
||||||
|
|
||||||
serialize_texts( io_xml ).
|
serialize_texts( io_xml ).
|
||||||
|
|
||||||
|
serialize_sw_component( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user