Monday, November 2, 2009

BI-IP Aggregation Level Activation Program

*&---------------------------------------------------------------------*
*& Report  ZBIIP_ACTIVATE_ALVL
*&---------------------------------------------------------------------*

REPORT  ZBIIP_ACTIVATE_ALVL.
TYPE-POOLS: rs.

PARAMETER: g_iprov TYPE rsinfoprov,
g_objv TYPE rsobjvers DEFAULT 'M'.
DATA p_area TYPE RSINFOAREA .
TYPE-POOLS rsdg.

TYPES: ty_s_rsdcube     LIKE rsdcube.
TYPES: ty_t_rsdcube     TYPE ty_s_rsdcube OCCURS 0.

TABLES rsdcube.
DATA: objvers TYPE rsobjvers .
objvers = rs_c_objvers-modified .

DATA: g_s_rsdcube       TYPE ty_s_rsdcube.
DATA: g_t_rsdcube       TYPE ty_t_rsdcube.
DATA: g_infoarea        TYPE rsd_infoarea.
DATA: g_r_mpro          TYPE REF TO cl_rsd_mpro.

DATA: l_r_exception     TYPE REF TO cx_rs_error.
DATA: l_actvt           TYPE activ_auth.
DATA: l_enqueue         TYPE rs_bool.
DATA: l_with_cto        TYPE rs_bool.
DATA: l_success_pre     TYPE rs_bool.
DATA: l_success_act     TYPE rs_bool.
DATA: l_subrc           LIKE sy-subrc.
DATA: l_cnt(4)          TYPE n.
DATA: l_cnt_ok(4)       TYPE n.
DATA: l_cnt_no(4)       TYPE n.
DATA: l_text1(60)       TYPE c.
DATA: l_text_out(132)   TYPE c.
DATA: l_answer          TYPE rs_answer.
DATA: l_not_all         TYPE rs_bool.
DATA: l_time_from       LIKE sy-uzeit.
DATA: l_time_to         LIKE sy-uzeit.
DATA: l_extnumber       LIKE balhdr-extnumber.

DATA: l_t_return TYPE STANDARD TABLE OF bapiret2,
l_s_return TYPE bapiret2,
l_t_alvl TYPE STANDARD TABLE OF rspls_alvl,
l_s_alvl TYPE rspls_alvl,
l_t_alvl_iobj TYPE STANDARD TABLE OF rspls_s_rfc_alvl_iobj.

PERFORM run.
PERFORM run2.

*&---------------------------------------------------------------------*
*&      Form  run
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM run.

  SELECT * FROM rspls_alvl INTO TABLE l_t_alvl
  WHERE infoprov = g_iprov
  AND objvers = g_objv.
  CHECK l_t_alvl IS NOT INITIAL.

  LOOP AT l_t_alvl INTO l_s_alvl.

    CALL FUNCTION 'RSPLS_ALVL_CHANGE'
      EXPORTING
        i_aggrlevel    = l_s_alvl-aggrlevel
      IMPORTING
        e_subrc        = l_subrc
      TABLES
        i_tk_alvl_iobj = l_t_alvl_iobj
        e_tk_return    = l_t_return.

    CHECK l_subrc = 0.

    CALL FUNCTION 'RSPLS_ALVL_CHECK'
      EXPORTING
        i_aggrlevel = l_s_alvl-aggrlevel
        i_objvers   = rs_c_objvers-active
      IMPORTING
        e_subrc     = l_subrc
      TABLES
        e_tk_return = l_t_return.

    CHECK l_subrc = 0.

    CALL FUNCTION 'RSPLS_ALVL_ACTIVATE'
      EXPORTING
        i_aggrlevel = l_s_alvl-aggrlevel
      IMPORTING
        e_subrc     = l_subrc
      TABLES
        e_tk_return = l_t_return.

  ENDLOOP.

ENDFORM.                    "run

*&---------------------------------------------------------------------*
*&      Form  run2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM run2.
  SELECT SINGLE INFOAREA INTO p_area FROM RSDCUBE
  WHERE INFOCUBE = g_iprov .

  SELECT * FROM  rsdcube
         INTO TABLE g_t_rsdcube
         WHERE
*      infocube IN so_mpro AND
                objvers  = objvers
         AND    infoarea LIKE p_area
         AND    cubetype = rsd_c_cubetype-multi_ic.

* warning popup
  DESCRIBE TABLE g_t_rsdcube LINES l_cnt.
  l_text1 = text-pt1.
  REPLACE '&1' WITH l_cnt INTO l_text1.
  CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
       EXPORTING
            defaultoption  = rs_c_yes
            diagnosetext1  = l_text1
*             DIAGNOSETEXT2  = ' '
*             DIAGNOSETEXT3  = ' '
            textline1      = text-pt2
*             TEXTLINE2      = ' '
            titel          = text-ptt
*             START_COLUMN   = 25
*             START_ROW      = 6
            cancel_display = rs_c_true
       IMPORTING
            answer         = l_answer.

  CHECK: l_answer = rs_c_yes.
  l_success_pre  = rs_c_true.
  l_success_act  = rs_c_true.
  l_actvt    = rssb_c_auth_actvt-maintain.
  l_enqueue  = rs_c_false.
  l_with_cto = rs_c_false.

  LOOP AT g_t_rsdcube INTO g_s_rsdcube.
*     create instance of multiprovider
    CALL METHOD cl_rsd_mpro=>factory
       EXPORTING
         i_infoprov    = g_s_rsdcube-infocube
*          I_REFNM       =
*          I_TXTLG       =
*          I_INFOAREA    =
*          I_BWAPPL      =
      RECEIVING
        r_r_mpro      = g_r_mpro
      EXCEPTIONS
        input_invalid = 1
        cancelled     = 2
        OTHERS        = 3.

    CHECK: sy-subrc = 0.
*   prepare multiprovider
    TRY.
        CALL METHOD g_r_mpro->prepare
          EXPORTING
            i_with_enqueue   = l_enqueue
            i_with_cto_check = l_with_cto
            i_with_authority = rs_c_true
            i_actvt          = l_actvt.
      CATCH cx_rs_display_only INTO l_r_exception.
        l_cnt_no = l_cnt_no + 1.
        l_success_pre = rs_c_false.
        CONTINUE.
      CATCH cx_rs_error INTO l_r_exception.
        l_cnt_no = l_cnt_no + 1.
        l_success_pre = rs_c_false.
        CONTINUE.
    ENDTRY.

*   activate multiprovider
    CALL METHOD g_r_mpro->activate
      EXPORTING
        i_objvers             = objvers
*          I_TH_TLOGO            =
        i_force_activation    = rs_c_true
*          I_SHOW_CHECK_PROTOCOL = RS_C_FALSE
        i_with_cto            = l_with_cto
      IMPORTING
*          E_T_TABLNM_CNV        =
        e_subrc               = l_subrc.

    IF l_subrc   <> space.
      l_success_act = rs_c_false.
      l_cnt_no = l_cnt_no + 1.
    ELSE.
      l_cnt_ok = l_cnt_ok + 1.
    ENDIF.

    SELECT * FROM rspls_alvl INTO TABLE l_t_alvl
    WHERE infoprov = g_s_rsdcube-infocube
    AND objvers = g_objv.
    CHECK l_t_alvl IS NOT INITIAL.

    LOOP AT l_t_alvl INTO l_s_alvl.

      CALL FUNCTION 'RSPLS_ALVL_CHANGE'
        EXPORTING
          i_aggrlevel    = l_s_alvl-aggrlevel
        IMPORTING
          e_subrc        = l_subrc
        TABLES
          i_tk_alvl_iobj = l_t_alvl_iobj
          e_tk_return    = l_t_return.

      CHECK l_subrc = 0.

      CALL FUNCTION 'RSPLS_ALVL_CHECK'
        EXPORTING
          i_aggrlevel = l_s_alvl-aggrlevel
          i_objvers   = rs_c_objvers-active
        IMPORTING
          e_subrc     = l_subrc
        TABLES
          e_tk_return = l_t_return.

      CHECK l_subrc = 0.

      CALL FUNCTION 'RSPLS_ALVL_ACTIVATE'
        EXPORTING
          i_aggrlevel = l_s_alvl-aggrlevel
        IMPORTING
          e_subrc     = l_subrc
        TABLES
          e_tk_return = l_t_return.

    ENDLOOP.
  ENDLOOP.
ENDFORM.                                                    "run2

No comments:

Post a Comment