Hi,
Yes I did it. That's the code, maybe is something still needed, but in debbuging mode the table DIMENSIONINFOOBJECTS get the new line with the Nav. Attr.
This is a Test cube, and it doesn't contain data.
DATA: V_CUBE LIKE BAPI6112-INFOCUBE,
V_OBJECT LIKE bapi6112dio-INFOOBJECT,
IT_DIMENSIONINFOOBJECTS TYPE TABLE OF bapi6112dio,
IT_DETA TYPE BAPI6112,
IT_DIMENSIONS TYPE TABLE OF bapi6112di,
IT_INFOOBJECTS TYPE TABLE OF bapi6112io,
l_dimension LIKE LINE OF IT_DIMENSIONINFOOBJECTS,
L_TABIX TYPE SY-TABIX.
FIELD-SYMBOLS: <OBJECT> TYPEbapi6112dio.
V_CUBE = 'ZTEST_NAV'.
V_OBJECT = '0CUSTOMER'.
* get data from the cube
.
CALL FUNCTION 'BAPI_CUBE_GETDETAIL'
EXPORTING
INFOCUBE = V_CUBE
IMPORTING
DETAILS = IT_DETA
TABLES
DIMENSIONS = IT_DIMENSIONS
INFOOBJECTS = IT_INFOOBJECTS
DIMENSIONINFOOBJECTS = IT_DIMENSIONINFOOBJECTS.
IF SY-SUBRC IS INITIAL.
* Get the Dimension for the object
READ TABLE IT_DIMENSIONINFOOBJECTS ASSIGNING <OBJECT> WITH KEY INFOOBJECT = V_OBJECT.
IF SY-SUBRC IS INITIAL.
* Count number of navegational
attributes for the object
clear l_dimension.
LOOP AT IT_DIMENSIONINFOOBJECTS into l_dimension WHERE DIMENSION EQ <OBJECT>-DIMENSION.
L_TABIX = L_TABIX + 1.
ENDLOOP.
* Data for the new line of the new
nav. attribute
L_TABIX = L_TABIX + 1.
l_dimension-dimension = <OBJECT>-DIMENSION.
l_dimension-INFOOBJECT ='0CUSTOMER__0ACCNT_GRP'.
l_dimension-ATRNAVFL = 'X'.
l_dimension-POSIT = L_TABIX.
APPEND l_dimension TO IT_DIMENSIONINFOOBJECTS
.
**************************
* Change data of the cube
CALL FUNCTION 'BAPI_CUBE_CHANGE'
EXPORTING
INFOCUBE = V_CUBE
DETAILS = IT_DETA
TABLES
DIMENSIONS = IT_DIMENSIONS
INFOOBJECTS = IT_INFOOBJECTS
DIMENSIONINFOOBJECTS = IT_DIMENSIONINFOOBJECTS.
BREAK-POINT.
************************
IF SY-SUBRC IS INITIAL.
CALL FUNCTION 'BAPI_CUBE_ACTIVATE'
EXPORTING
INFOCUBE = V_CUBE
.
ENDIF.
ENDIF.
ENDIF.