Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Changing data from MARA table?

Former Member
0 Likes
3,524

Hi all,

1) Can we change(Edit, Delete) data from MARA & MAKT table? If yes then what is the procedure to do so? And if not why?

2) Can we protect the material created by a particular user(eg. PP) in MARA table?

If yes how to do it.

Thanx in advance..........

1 ACCEPTED SOLUTION
Read only

TMNielsen
Contributor
0 Likes
1,988

Hi Mohd

You should never update directly in SAP standard tables.

You ask <b>And if not why?</b>

I guess at least hundreds of tables in your SAP database contains material numbers.

I will give you an example.

If you have a sales order the material number will be stored in table VBAP.

Now if you delete the material number from MARA, there is a database inconsistency - the VBAP record links to a not existing MARA record.

This will probably result in a dump if the users try to change the sales order in transaction VA02.

best regards

Thomas Madsen Nielsen

3 REPLIES 3
Read only

Former Member
0 Likes
1,988

Hi,

1. If MARA is really the table you want to delete records from, maybe better to use BAPI_MATERIAL_DELETE to flag it for deletion. And if you do that, then you only need to store the material numbers. Saves memory.

TABLES: mara.

DATA: wa_mara LIKE mara.

  • Copy of the internal table, which is (I assume) the same as MARA.

TYPES: t_itab_keep LIKE mara,

t_itab_delete LIKE mara.

DATA: itab_keep TYPE TABLE OF t_itab_keep WITH HEADER LINE.

DATA: itab_delete TYPE TABLE OF t_itab_delete WITH HEADER LINE.

DATA: h_lines TYPE i.

SELECT * FROM mara UP TO 10 ROWS.

  • TEST FILL itab_keep.

DESCRIBE TABLE itab_keep LINES h_lines.

IF h_lines < 9.

MOVE mara TO itab_keep.

APPEND itab_keep.

CLEAR itab_keep.

ENDIF.

  • END OF TEST FILL itab_keep

READ TABLE itab_keep WITH KEY matnr = mara-matnr.

IF sy-subrc <> 0. "Not in ITAB, must be deleted from MARA

APPEND mara TO itab_delete.

ENDIF.

ENDSELECT.

LOOP AT itab_delete.

WRITE:/ itab_delete.

ENDLOOP.

  • Be very careful (should lock too), and allow restore!

  • DELETE mara FROM TABLE itab.

2.By giving Autorization u can protect your code.

anyway material creation is responsibilty of functional guys so u can better to consult functional people.

<b>Reward points</b>

Regards

Read only

Former Member
0 Likes
1,988

1) It is NOT best practice to write code to directly update standard SAP system tables. You should use:

Batch Input on MM02 or

BAPI_MATERIAL_EDIT or

RMDATIND

2) Assign such materials to their own Authorisation Group (MARA-BEGRU), then set users up to have/not have access to the via their authorisation profiles

Read only

TMNielsen
Contributor
0 Likes
1,989

Hi Mohd

You should never update directly in SAP standard tables.

You ask <b>And if not why?</b>

I guess at least hundreds of tables in your SAP database contains material numbers.

I will give you an example.

If you have a sales order the material number will be stored in table VBAP.

Now if you delete the material number from MARA, there is a database inconsistency - the VBAP record links to a not existing MARA record.

This will probably result in a dump if the users try to change the sales order in transaction VA02.

best regards

Thomas Madsen Nielsen