on 02-21-2019 10:05 AM
Hello Experts,
I am trying to Zero ELimination for the KF type FLTP by using the program
RSCDS_NULLELIM, but where this program has limit to set the
BW_ZEROELIM_SMALLEST_FLTP parameter as 50 in RSADMIN maintanance. But we have to delete <50 decimals too , but basis dont want to change the parameter.
I am trying to create Customized ABAP report where it deletes from E Tables, but need to do RSRV check by program after that for infocube. Can you suggest which is right approach? this is high priority issue for us.
Thanks for your support in advance
Bhavana
Hi Cincet,
The problem is only for our reports, for other applications people they may consider close to zero values too. So i need many approvals from system owners and labla...
I am tring to customize the RSCDS_NULLELIM, but there is a perform inside this ABAP report
DELETE_NULL_FROM_TABLE , which is generating code in run time and deleting. So i cant check/change manually this parameter 50.
The same code , i am trying to do with my test Infocube.
LINE
*&---------------------------------------------------------------------*
*& Include RSCDS_NULLELIM_TMPL *
*&---------------------------------------------------------------------*
*********************************************************************
*
* BIW: Generierte Routinen für die
Nullelimination eines Cubes
*
* !! DB Unabhängig !!
*
*
* Template.....: RSCDS_NULLELIM_TMPL
* Generated by.: XXXXX
* Date.........: 21.02.2019 12:34:57
*
*********************************************************************
REPORT
rscds_report_tmpl.
TYPE-POOLS: rs, rsd,
rsdd, rrsi, rscds, rsdu.
DATA:
c1 TYPE cursor.
TYPES:
BEGIN OF _efactkeys,
KEY_RMJD1XH0P TYPE rsdimid,
KEY_RMJD1XH0T TYPE rsdimid,
KEY_RMJD1XH0U TYPE rsdimid,
KEY_RMJD1XH01 TYPE rsdimid,
KEY_RMJD1XH02 TYPE rsdimid,
KEY_RMJD1XH03 TYPE rsdimid,
KEY_RMJD1XH04 TYPE rsdimid,
KEY_RMJD1XH05 TYPE rsdimid,
KEY_RMJD1XH06 TYPE rsdimid,
KEY_RMJD1XH07 TYPE rsdimid,
KEY_RMJD1XH08 TYPE rsdimid,
KEY_RMJD1XH09 TYPE rsdimid,
KEY_RMJD1XH0A TYPE rsdimid,
KEY_RMJD1XH0B TYPE rsdimid,
KEY_RMJD1XH0C TYPE rsdimid,
KEY_RMJD1XH0D TYPE rsdimid,
END OF _efactkeys.
DATA:
deltab TYPE SORTED TABLE OF _efactkeys WITH
HEADER LINE
WITH NON-UNIQUE KEY
KEY_RMJD1XH0P
KEY_RMJD1XH0T
KEY_RMJD1XH0U
KEY_RMJD1XH01
KEY_RMJD1XH02
KEY_RMJD1XH03
KEY_RMJD1XH04
KEY_RMJD1XH05
KEY_RMJD1XH06
KEY_RMJD1XH07
KEY_RMJD1XH08
KEY_RMJD1XH09
KEY_RMJD1XH0A
KEY_RMJD1XH0B
KEY_RMJD1XH0C
KEY_RMJD1XH0D
.
*---------------------------------------------------------------------*
* FORM delete_null_from_table *
*---------------------------------------------------------------------*
FORM
delete_null_from_table
USING i_packsize
i_simulate
CHANGING c_sel_cnt
c_del_cnt
c_t_msg
c_processed.
TYPES:
wherecond(72) TYPE c.
DATA:
l_t_wherecond TYPE TABLE OF wherecond WITH HEADER LINE,
l_sel_count TYPE i VALUE 0,
l_sel_cnt TYPE i VALUE 0,
l_del_cnt TYPE i VALUE 0,
l_sel_cnt_n(8) TYPE n VALUE 0,
l_del_cnt_n(8) TYPE n VALUE 0
.
c_processed = rs_c_true.
CONCATENATE '( e~/B05/S_KF1 < '
'''1.0E-50''' 'AND'
INTO l_t_wherecond SEPARATED BY space.
APPEND l_t_wherecond.
CONCATENATE ' e~/B05/KF1 > ' '''-1.0E-50''' ' )'
INTO l_t_wherecond SEPARATED BY space.
APPEND l_t_wherecond.
APPEND 'AND' TO l_t_wherecond.
CONCATENATE '( e~/B05/S_KF2< '
'''1.0E-50''' 'AND'
INTO l_t_wherecond SEPARATED BY space.
APPEND l_t_wherecond.
CONCATENATE ' e~/B05/S_KF2 > ' '''-1.0E-50''' ' )'
INTO l_t_wherecond SEPARATED BY space.
APPEND l_t_wherecond.
APPEND 'AND' TO l_t_wherecond.
CONCATENATE '( e~/B05/S_KF3 < '
'''1.0E-50''' 'AND'
INTO l_t_wherecond SEPARATED BY space.
APPEND l_t_wherecond.
CONCATENATE ' e~/B05/S_KF3 > ' '''-1.0E-50''' ' )'
INTO l_t_wherecond SEPARATED BY space.
APPEND l_t_wherecond.
OPEN CURSOR WITH HOLD c1 FOR
SELECT
KEY_RMJD1XH0P
KEY_RMJD1XH0T
KEY_RMJD1XH0U
KEY_RMJD1XH01
KEY_RMJD1XH02
KEY_RMJD1XH03
KEY_RMJD1XH04
KEY_RMJD1XH05
KEY_RMJD1XH06
KEY_RMJD1XH07
KEY_RMJD1XH08
KEY_RMJD1XH09
KEY_RMJD1XH0A
KEY_RMJD1XH0B
KEY_RMJD1XH0C
KEY_RMJD1XH0D
FROM /B05/ERMJD1XH0 AS e
WHERE (l_t_wherecond).
c_sel_cnt = 0.
c_del_cnt = 0.
l_sel_cnt = 0.
l_del_cnt = 0.
* Loop for fetch
DO.
* Fetch rows with package size
FETCH NEXT CURSOR c1 INTO TABLE deltab
PACKAGE SIZE i_packsize.
* Exit if last row is fetched
IF sy-subrc <> 0.
CLOSE CURSOR c1.
EXIT.
ENDIF.
* Lock f-fact table in exclusive mode
CALL FUNCTION 'DB_TABLE_SET_LOCK'
EXPORTING
dbsys = sy-dbsys
tabname = '/B05/ERMJD1XH0'
EXCEPTIONS
illegal_value = 1
OTHERS = 2.
* Delete rows from E-facttable
LOOP AT deltab.
IF NOT i_simulate = 'X'.
DELETE FROM /B05/ERMJD1XH0
WHERE
KEY_RMJD1XH0P =
deltab-KEY_RMJD1XH0P
AND
KEY_RMJD1XH0T =
deltab-KEY_RMJD1XH0T
AND
KEY_RMJD1XH0U =
deltab-KEY_RMJD1XH0U
AND
KEY_RMJD1XH01 =
deltab-KEY_RMJD1XH01
AND
KEY_RMJD1XH02 =
deltab-KEY_RMJD1XH02
AND
KEY_RMJD1XH03 =
deltab-KEY_RMJD1XH03
AND
KEY_RMJD1XH04 =
deltab-KEY_RMJD1XH04
AND
KEY_RMJD1XH05 =
deltab-KEY_RMJD1XH05
AND
KEY_RMJD1XH06 =
deltab-KEY_RMJD1XH06
AND
KEY_RMJD1XH07 =
deltab-KEY_RMJD1XH07
AND
KEY_RMJD1XH08 =
deltab-KEY_RMJD1XH08
AND
KEY_RMJD1XH09 =
deltab-KEY_RMJD1XH09
AND
KEY_RMJD1XH0A =
deltab-KEY_RMJD1XH0A
AND
KEY_RMJD1XH0B =
deltab-KEY_RMJD1XH0B
AND
KEY_RMJD1XH0C =
deltab-KEY_RMJD1XH0C
AND
KEY_RMJD1XH0D =
deltab-KEY_RMJD1XH0D
AND
/B05/S_KF1 < '1.0E-50'
AND
/B05/S_KF1 > '-1.0E-50'
AND
/B05/S_KF2 < '1.0E-50'
AND
/B05/S_KF2 > '-1.0E-50'
AND
/B05/S_KF3 < '1.0E-50'
AND
/B05/S_KF4 > '-1.0E-50'
.
l_del_cnt = l_del_cnt + sy-dbcnt.
ELSE.
l_del_cnt = l_del_cnt + 1.
ENDIF.
ENDLOOP.
* Commit after each package
CALL FUNCTION 'DB_COMMIT'.
c_sel_cnt = c_sel_cnt + l_sel_cnt.
c_del_cnt = c_del_cnt + l_del_cnt.
l_sel_cnt = 0.
l_del_cnt = 0.
ENDDO. " Loop for fetch
ENDFORM.
"delete_null_from_table
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Bhavana,
And did your basis agreed that you create an ABAP to directly delete records in the E fact table ?
I'm also curious to know the reason your basis gave for their refusal. They could do the change just before the deletion and cancel it after. That would be my recommendation.
Regards,
Frederic
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
81 | |
9 | |
9 | |
7 | |
7 | |
6 | |
6 | |
6 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.