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