Monday, December 14, 2009

BW Infoobject Reference characteristic change

REPORT zevl_infoobject_ref_fixer.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: g_iobj TYPE rsiobjnm OBLIGATORY,
g_ref TYPE rsiobjnm ,
g_mark TYPE checkbox AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: g_link TYPE checkbox AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b2.

PERFORM main.

FORM main.
DATA: s_details TYPE bapi6108.
DATA: t_bapiret2 TYPE bapiret2_t,
s_return TYPE bapiret2.
CHECK ( g_mark = 'X' ).

CALL FUNCTION 'BAPI_IOBJ_GETDETAIL'
EXPORTING
* VERSION = RS_C_OBJVERS-ACTIVE
infoobject = g_iobj
IMPORTING
details = s_details
* RETURN =
* TABLES
* COMPOUNDS =
* ATTRIBUTES =
* NAVIGATIONATTRIBUTES =
* ATRNAVINFOPROVIDER =
* HIERARCHYCHARACTERISTICS =
* ELIMINATION =
.

IF ( g_link = 'X' ).
s_details-chabasnm = g_ref.
s_details-bchreffl = 'X'.
ELSE.
s_details-chabasnm = g_iobj.
s_details-bchreffl = space.
ENDIF.

CALL FUNCTION 'BAPI_IOBJ_CHANGE'
EXPORTING
infoobject = g_iobj
details = s_details
IMPORTING
return = s_return
TABLES
* COMPOUNDS =
* ATTRIBUTES =
* NAVIGATIONATTRIBUTES =
* ATRNAVINFOPROVIDER =
* HIERARCHYCHARACTERISTICS =
* ELIMINATION =
returntable = t_bapiret2.

WRITE: / s_return-message.

LOOP AT t_bapiret2 INTO s_return.
WRITE: / s_return-message.
ENDLOOP.

DATA: t_iobj TYPE STANDARD TABLE OF bapi6108io,
wa_iobj TYPE bapi6108io.
wa_iobj-infoobject = g_iobj.
APPEND wa_iobj TO t_iobj.

CALL FUNCTION 'BAPI_IOBJ_ACTIVATE_MULTIPLE'
TABLES
infoobjects = t_iobj
return = t_bapiret2
* INFOOBJECTS_ERROR =
.

LOOP AT t_bapiret2 INTO s_return.
WRITE: / s_return-message.
ENDLOOP.

WRITE: / 'Please remember to restart rsd1 due to local caching' COLOR COL_TOTAL.
WRITE: / 'If it still doesn''t work, try unlinking and relinking, sometimes master data routines need a little convincing' COLOR COL_TOTAL.

ENDFORM. "main

3 comments:

  1. Great program. Works like a charm!

    ReplyDelete
  2. Hi Ergin,

    Works ! Great little tool.

    Thanks,

    Marc

    ReplyDelete
  3. Super code, I must say thanks for sharing...

    ReplyDelete