Skip to Content
0
Former Member
Apr 13, 2012 at 09:13 PM

BAPI to Create Object Links to MARA

329 Views

I have a simple test program that (tries) to create an object link in a DIR. When I run it in DEV it works, when I transport it and run it in our QAS system it does not create the link. In both instances I am using a user that has SAP_ALL authorizations. Both systems are on the same SP level (these are 4.7 UNicode Systems). And I triple checked, both the DIR and Material Master are on both systems, none have the delete indicator set and I can set the link manually on both systems. It is probably something really dumb, but I just can't see it.. Thanks in advance for any help.

Here is the source.

*&---------------------------------------------------------------------*

*& Report ZTESTADDLINK *

*& *

*&---------------------------------------------------------------------*

*& *

*& *

*&---------------------------------------------------------------------*

REPORT ZTESTADDLINK .

DATA: ls_doc LIKE bapi_doc_draw2,

* Flag for change relevance

ls_docx LIKE bapi_doc_drawx2,

* Bapi-Return structure

ls_return LIKE bapiret2,

* Originals

lt_files LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE,

* Brief texts

lt_drat LIKE bapi_doc_drat OCCURS 0 WITH HEADER LINE,

* Object links

lt_drad LIKE bapi_doc_drad OCCURS 0 WITH HEADER LINE.

*******************************************

** Assign the document data (which document should be changed)

******************************************

ls_doc-documenttype = '2DD'.

ls_doc-documentnumber = 'TOM-113'.

ls_doc-documentversion = '00'.

ls_doc-documentpart = '000'.

*2. Example: Object links

*a) Add object links

*clear internal table and header line

CLEAR lt_drad.

REFRESH lt_drad.

*Attach object type and object key to internal table lt_drad

lt_drad-objecttype = 'MARA'.

lt_drad-objectkey = '8E0013482849'.

APPEND lt_drad.

** call BAPI, which changes the document

********************************************************************

CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'

EXPORTING:

documenttype = ls_doc-documenttype

documentnumber = ls_doc-documentnumber

documentpart = ls_doc-documentpart

documentversion = ls_doc-documentversion

documentdata = ls_doc

documentdatax = ls_docx

IMPORTING:

return = ls_return

TABLES:

OBJECTLINKS = lt_drad.

** Errors occurred ??

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = ls_return.

IF ls_return-type CA 'IEA'.

MESSAGE ID '26' TYPE 'I' NUMBER '000'

WITH ls_return-message.

ELSE.

WRITE: / 'Change Commit Completed'.

ENDIF.

CLEAR lt_drad.

REFRESH lt_drad.

CALL FUNCTION 'BAPI_DOCUMENT_GETDETAIL2'

EXPORTING

documenttype = ls_doc-documenttype

documentnumber = ls_doc-documentnumber

documentpart = ls_doc-documentpart

documentversion = ls_doc-documentversion

getactivefiles = 'X'

getdocdescriptions = 'X'

getobjectlinks = 'X'

getdocfiles = 'X'

IMPORTING

documentdata = ls_doc

return = ls_return

TABLES

objectlinks = lt_drad.

LOOP AT lt_drad. "

WRITE: / 'Existing Material Link to ', lt_drad-objectkey.

ENDLOOP.