RSDRD_SEL_DELETION - ooxxvv/MySAPnotes GitHub Wiki

RSDRD_SEL_DELETION

  • 依條件刪除 Info Provider 的資料

Code

  DATA: l_datarget      TYPE rsddatatarget,
        lt_thx_sel      TYPE rsdrd_thx_sel,
        lw_thx_sel      TYPE LINE OF rsdrd_thx_sel,
        lt_range        LIKE rsdrd_s_range OCCURS 0 WITH HEADER LINE,
        lt_msg          TYPE rs_t_msg,
        lw_msg          TYPE LINE OF rs_t_msg,
        l_cnt           TYPE f,
        l_cnt_int(16)   TYPE p.

*-Set InfoCube name
  l_datarget = fi_cube.

*-Set delete data range
  lw_thx_sel-iobjnm = '0CALDAY'.

  LOOP AT s_budat.
    CLEAR: lt_range.
    lt_range-sign   = s_budat-sign.
    lt_range-option = s_budat-option.
    lt_range-low    = s_budat-low.
    lt_range-high   = s_budat-high.
    lt_range-keyfl  = 'X'.
    APPEND lt_range.
  ENDLOOP.

  IF lt_range[] IS INITIAL.
    MESSAGE e398(00) WITH 'No Range Setting'.
    EXIT.
  ELSE.
    lw_thx_sel-t_range[] = lt_range[].
    INSERT lw_thx_sel INTO TABLE lt_thx_sel.
  ENDIF.

  IF lt_thx_sel[] IS INITIAL.
    MESSAGE e398(00) WITH 'No Range Setting'.
    EXIT.
  ENDIF.

*-Delete data
  CALL FUNCTION 'RSDRD_SEL_DELETION'
    EXPORTING
      i_datatarget    = l_datarget
      i_thx_sel       = lt_thx_sel
    IMPORTING
      e_cnt           = l_cnt
    CHANGING
      c_t_msg         = lt_msg
    EXCEPTIONS
      x_message       = 1
      inherited_error = 2
      invalid_type    = 3
      OTHERS          = 4.

  IF sy-subrc <> 0.
    MESSAGE e398(00) WITH 'Delete Data Fail'.
    EXIT.
  ENDIF.

  IF l_cnt EQ 0.
    MESSAGE w398(00) WITH 'No data deleted'.
  ELSE.
    l_cnt_int = l_cnt.
    MESSAGE s398(00) WITH l_cnt_int ' lines deleted '.
  ENDIF.