cancel
Showing results for 
Search instead for 
Did you mean: 

Zero Elimination on Infocube for FLTP KF type - < 50 decimal values

former_member603849
Discoverer
0 Kudos

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

Accepted Solutions (0)

Answers (2)

Answers (2)

former_member603849
Discoverer
0 Kudos

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

  
 



FCI
Active Contributor
0 Kudos

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