четверг, 30 октября 2014 г.

RSDRD_SEL_DELETION или история про динамическое удаление

Идея пришла от пацанов с форума.
*&---------------------------------------------------------------------*
*& Report  ZN_DELETE_DATA_FROM_INFOPROV
*&
*&---------------------------------------------------------------------*
*& OBJNAME - признак в дата таргете
*& IDT - Имя (ODS или куба)
*&---------------------------------------------------------------------*
report zn_delete_data_from_infoprov.

type-pools:
  rsdrd,
  rsdq,
  rsdds,
  rsenq,
  sscr,
  rrsm.

data:
      lt_thx_sel  type rsdrd_thx_sel,
      ls_thx_sel  type rsdrd_sx_sel,
      ls_range    type rsdrd_s_range,
      ct_msg      type rs_t_msg,
      value(60)   type c.
*-----------------------------------------------------------------------
parameters:
    objname   type rsiobjnm,
    idt       type rsddatatarget.

select-options:
    interval  for value no-extension.

refreshls_thx_sel-t_range.
clearls_rangels_thx_sel.

condense interval-low no-gaps.
condense interval-high no-gaps.

ls_thx_sel-iobjnm objname.
ls_range-sign     'I'.
ls_range-option   'BT'.
ls_range-low      interval-low.
ls_range-high     interval-high.
ls_range-keyfl    'X'.

append ls_range to ls_thx_sel-t_range.
insert ls_thx_sel into table lt_thx_sel.

call function 'RSDRD_SEL_DELETION'
  exporting
    i_datatarget        idt
    i_thx_sel           lt_thx_sel
*   i_transactional_ods = rs_c_true
*   I_AUTHORITY_CHECK   = 'X'
    i_threshold         '1.0000E-01'
    i_mode              'C'
    i_no_logging        ''
    i_parallel_degree   1
    i_no_commit         ''
  changing
    c_t_msg             ct_msg.

В нашем случае, удаляли по 0CALDAY, переменную вели через STVARV.
Заполняли её так:
      update tvarvc
        setsign 'I'
       where name l_var_name,
             opti 'BT'
       where name l_var_name,
             low  l_dfrom
       where name l_var_name,
             high l_dto
       where name l_var_name.

Комментариев нет:

Отправить комментарий