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
Great program. Works like a charm!
ReplyDeleteHi Ergin,
ReplyDeleteWorks ! Great little tool.
Thanks,
Marc
Super code, I must say thanks for sharing...
ReplyDelete