Aller au contenu

Abap - Add or remove reference characteristic

http://erginozturk.blogspot.com/2009/12/

À partir de l’adresse <http://erginozturk.blogspot.com/2009/12/bw-infoobject-reference-characteristic.html?sm_au=iVVgvsRbsMPfS76f>

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.

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
        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.

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.