Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9129

Re: Is DSO Activation without writing a Changelog possible?

$
0
0

Hi,

many thanks to all contributors.

 

Finally we´ve found a nearly database-independent solution.

 

What we´ve done, is writing a report that resembles the functionality of the forms contained in the generated changelog-write-report.

 

The forms of this new report simply do nothing but signaling, that everything is ok.

The sourcecode of this report attached at the end of this reply.

 

The name of this original report can be found in table RSTSODS in column PROGNAME. To find the entry corresponding to the DSO where the changelog shall be disabled, the name of the sourcesystem-dependend datasource for the export-datasource of the DSO must be used (column ODSNAME, it´s a little bit confusing).

For example if the DSO is named ZBWLO19, then a possible value for this is ‘8ZBWLO19_BA’. To be sure to get the right entry, also OBJSTAT = ‘ACT’ and USERAPP = ‘CHANGELOG’ should  be selected.

 

To get the name to query RSTSODS for, you can use the function RSAR_CHANGELOG_NAME_GET.
The exporting-parameter e_odsname delivers the „ODSNAME“ to query for.
To determine the source-system of your BW, you can use the function 'RSA_LOGICAL_SYSTEM_BIW_GET'. It is needed for the function mentioned above.

In a next step we saved the original entry for the changelog of the dso into a copy of table RSTSODS.

 

Then we updated the PROGNAME in RSTSODS with the name of our report.

 

On systems, which are not HANA-based, now everything works as intended.

 

On HANA-based systems one has to do two more things (otherwise the activation is executed in HANA and the changelog will be written anyway):
First fiddle a new entry for the DSO into the table RSODSOIMOSETTING by copying the ‘_DEFAULT’-Entry and change the column SUPPRESS to ‘X’. This avoids HANA-based activation. You have to do this by Native-SQL or by debugging, because the table is not marked as changeable.

In addition you also have to set the RSADMIN-Parameter ‘PSAPARTSIZE_HDB‘ with a small VALUE. Otherwise the activation will encounter an error.

When everything is done, the activation can be executed.

 

When activation has been done, all manipulations should be reverted.

 

We´ve tested it under BW 7.40 SP 9 in a HANA-based system.

 

If you use this approach, you surely will get no support from SAP .
You do everything on your own risk!

 

Here´s the sourcecode that worked for us (the Name of the report can be chosen freely in your namespace, don´t name it insert_and_read_ods):

REPORT zxyz.
TYPE-POOLS: rsari, rsds, rsods.
* ===================================================================
FORM insert_ods
        TABLES    p_t_data
        USING     p_requestid      LIKE rsmonout-rnr
                  p_datapakid      TYPE rsdatapid
                  p_partno         TYPE rspartval
        CHANGING  p_target_found   TYPE c
                  p_subrc          LIKE sy-subrc.
** Initialization
*
  p_target_found = rs_c_true.
  CLEAR: p_subrc.
ENDFORM.                    "INSERT_ODS
* ===================================================================
FORM update_ods
        TABLES    p_t_data
        USING     p_requestid      LIKE rsmonout-rnr
                  p_datapakid      TYPE rsdatapid
                  p_partno         TYPE rspartval
        CHANGING  p_target_found   TYPE c
                  p_subrc          LIKE sy-subrc.

** Initialization
  p_target_found = rs_c_true.
  CLEAR: p_subrc.
*
ENDFORM.                    "UPDATE_ODS
* ===================================================================
FORM read_ods
        TABLES    p_t_data
        USING     p_t_requestids   TYPE rsods_r_request
                  p_t_datapakids   TYPE rsods_r_datapakid
                  p_t_partval      TYPE rsods_r_partval
                  p_t_recnos       TYPE rsods_r_record
                  p_t_selections   TYPE rsds_expr_tab
                  p_t_where        TYPE rsdmd_t_where
                  p_conversion     TYPE rs_bool
                  p_next_fetch     TYPE rs_bool
                  p_packagesize    TYPE i
                  p_recordstatus   TYPE rspsaerror
                  p_fetch_deleted  TYPE rs_bool
                  p_close_cursor   TYPE rs_bool
        CHANGING  p_target_found   TYPE c
                  p_subrc          LIKE sy-subrc.
** Initialization
  p_target_found = rs_c_true.
  CLEAR: p_subrc.
  CLEAR: p_t_data[].

ENDFORM.                    "READ_ODS
* ===================================================================
FORM generate_select
          USING    p_t_selections     TYPE rsds_expr_tab
          CHANGING p_poolname         LIKE sy-repid
                   p_subrc            LIKE sy-subrc.
** Initialization
  CLEAR: p_subrc.
  CLEAR: p_poolname.
ENDFORM.                    "GENERATE_SELECT
* ===================================================================
FORM _rssg_program_loadcheck
     CHANGING e_s_pdir TYPE rssgtpdir
              e_found  TYPE flag. "#EC CALLED

    PERFORM ('_RSSG_PROGRAM_LOADCHECK') IN PROGRAM (e_s_pdir-progname)
     CHANGING e_s_pdir
              e_found.
ENDFORM.
* ===================================================================

 

br
Klaus-Dieter


Viewing all articles
Browse latest Browse all 9129

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>