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

bapi_material_savedata

Former Member
0 Likes
857

Hi,

I am working on a module pool program.In the o/p screen there are many records.If the user wants to change the field values of a particular record,he clicks on the checkbox besides that record and when he click on the change button,control goes to update screen.In this screen when the user changes the value of one particular field and click on the checkbox beside and then click on the execute button,the changed value of that field should get updated in that particular record in the database table.

I have used FM BAPI_MATERIAL_SAVEDATA to update the database table.

The changed value is getting updated in the update screen but it is not getting updated in the database table.What would be the reason for this?

6 REPLIES 6
Read only

Former Member
0 Likes
754

Hi Radha

Hope it will clear your doubt.

Go thru this code.

REPORT z34332_bdc_create_material .

data: la_headdata type BAPIMATHEAD,

la_clientdata type BAPI_MARA,

la_CLIENTDATAX type BAPI_MARAX,

la_return type BAPIRET2.

data: i_materialdescription type table of BAPI_MAKT,

wa_materialdescription like line of i_materialdescription.

la_headdata-MATERIAL = '000000000000000004'.

la_headdata-IND_SECTOR = 'M'.

la_headdata-MATL_TYPE = 'FERT'.

la_clientdata-BASE_UOM = 'FT3'.

la_CLIENTDATAX-BASE_UOM = 'X'.

la_clientdata-MATL_GROUP = '01'.

la_CLIENTDATAX-MATL_GROUP = 'X'.

wa_materialdescription = 'TEST'.

append wa_materialdescription to i_materialdescription.

clear: wa_materialdescription.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

headdata = la_headdata

CLIENTDATA = la_clientdata

CLIENTDATAX = la_CLIENTDATAX

  • PLANTDATA =

  • PLANTDATAX =

  • FORECASTPARAMETERS =

  • FORECASTPARAMETERSX =

  • PLANNINGDATA =

  • PLANNINGDATAX =

  • STORAGELOCATIONDATA =

  • STORAGELOCATIONDATAX =

  • VALUATIONDATA =

  • VALUATIONDATAX =

  • WAREHOUSENUMBERDATA =

  • WAREHOUSENUMBERDATAX =

  • SALESDATA =

  • SALESDATAX =

  • STORAGETYPEDATA =

  • STORAGETYPEDATAX =

  • FLAG_ONLINE = ' '

  • FLAG_CAD_CALL = ' '

IMPORTING

RETURN = la_return

TABLES

MATERIALDESCRIPTION = i_materialdescription

  • UNITSOFMEASURE =

  • UNITSOFMEASUREX =

  • INTERNATIONALARTNOS =

  • MATERIALLONGTEXT =

  • TAXCLASSIFICATIONS =

  • RETURNMESSAGES =

  • PRTDATA =

  • PRTDATAX =

  • EXTENSIONIN =

  • EXTENSIONINX =

.

write: la_return-TYPE, ',', la_return-MESSAGE.

clear: la_headdata, la_return, la_clientdata, la_clientdatax.

reward if help

Read only

0 Likes
754

Hi Deepanker,

Thanks for replying.

Here I want to update only mvke and marc tables.Even then should i use bapi_mara for clientdata.Is headdata and clientdata mandatory ?What values should I give for headdata and clientdata?

Could u pls explain me clearly?

Read only

0 Likes
754

Hi,

Just a suggestion.After you use the FM use DB_COMMIT also.Sometimes the changes to database tabloe do not get affected.You can use WAIT UP TO 3 seconds also.

Reward if helpful.

Thanks,

Dishant

Read only

Former Member
0 Likes
754

In the BAPI,

Test run should be space not X

Test_run = ' '

after executing the BAPI, u have to commit the database using

BAPI_TRANSACTION_COMMIT

REWARD IF USEFUL

Narendra

Read only

0 Likes
754

Hi,

I have used FM BAPI_TRANSACTION_COMMIT.But still the values are not getting updated in the database.

I am sending a part of my code please check it.

DATA: GT_BAPI_HEAD LIKE BAPIMATHEAD,

GT_BAPI_CLIENT LIKE BAPI_MARA,

GT_BAPI_CLIENTX LIKE BAPI_MARAX,

GT_BAPI_MARC1 LIKE BAPI_MARC, "Plant view

GT_BAPI_MARCX LIKE BAPI_MARCX,

GT_BAPI_MVKE1 LIKE BAPI_MVKE, "Sales view

GT_BAPI_MVKEX LIKE BAPI_MVKEX,

GT_BAPI_RETURN LIKE BAPIRET2.

PERFORM move_mat_data.

CASE OK_CODE.

WHEN 'EXECUTE'.

IF DCHAIN = c_x.

PERFORM extend_with_bapi.

PERFORM save_data.

ENDIF.

ENDCASE.

&----


*& Form move_mat_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form move_mat_data .

*Header

gt_bapi_head-material = gs_output1-matnr.

gt_bapi_head-ind_sector = gs_output1-mbrsh.

gt_bapi_head-matl_type = gs_output1-mtart.

gt_bapi_head-basic_view = 'X'.

gt_bapi_head-purchase_view = 'X'.

gt_bapi_head-account_view = 'X'.

*Client

gt_bapi_client-matl_group = gs_output1-matkl.

gt_bapi_client-base_uom = gs_output1-meins.

gt_bapi_clientx-matl_group = 'X'.

gt_bapi_clientx-base_uom = 'X'.

*Plant

gt_bapi_marc1-plant = gs_output1-werks.

gt_bapi_marc1-pur_status = gs_output1-mmsta.

gt_bapi_marc1-mrp_type = gs_output1-dismm.

gt_bapi_marc1-mrp_ctrler = gs_output1-dispo.

gt_bapi_marc1-serv_level = gs_output1-zserclass.

gt_bapi_marc1-availcheck = gs_output1-mtvfp.

gt_bapi_marcx-plant = gs_output1-werks .

gt_bapi_marcx-pur_status = 'X'.

gt_bapi_marcx-mrp_type = 'X'.

gt_bapi_marcx-mrp_ctrler = 'X'.

gt_bapi_marcx-serv_level = 'X'.

gt_bapi_marcx-availcheck = 'X'.

*Sales

gt_bapi_mvke1-sales_org = gs_output1-vkorg.

gt_bapi_mvke1-distr_chan = gs_output1-vtweg.

gt_bapi_mvke1-sal_status = gs_output1-vmsta.

gt_bapi_mvke1-valid_from = gs_output1-vmstd.

gt_bapi_mvke1-sales_org = gs_output1-vkorg.

gt_bapi_mvke1-distr_chan = gs_output1-vtweg.

gt_bapi_mvke1-sal_status = 'X'.

gt_bapi_mvke1-valid_from = 'X'.

endform. " move_mat_data

&----


*& Form extend_with_bapi

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form extend_with_bapi .

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

headdata = gt_bapi_head

PLANTDATA = gt_bapi_marc1

PLANTDATAX = gt_bapi_marcx

SALESDATA = gt_bapi_mvke1

SALESDATAX = gt_bapi_mvkex

IMPORTING

RETURN = gt_bapi_return

TABLES

MATERIALDESCRIPTION = GT_MATERIALDESC

  • EXTENSIONIN = GT_BAPIPAREX

  • EXTENSIONINX = GT_BAPIPAREXX.

.

endform. " extend_with_bapi

&----


*& Form save_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form save_data .

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

  • IMPORTING

  • RETURN = GT_BAPI_RETURN

.

endform. " save_data

Read only

Former Member
0 Likes
754

Pass the value X to corrsponding x table in the function module.

sample code to update material

data:

ls_headdata LIKE bapimathead, " Header Segment with Control

  • " Information

ls_valuationdata LIKE bapi_mbew, " Valuation Data

ls_valuationdatax LIKE bapi_mbewx, " Checkbox Structure for

  • " BAPI_MBEW

ls_return LIKE bapiret2. " Return Parameter

DATA :

BEGIN OF t_mat_data OCCURS 0,

material like mara-matnr, " Material Number

val_area(4) TYPE c, " Plant

future_pr TYPE p DECIMALS 2, " Future price

valid_from LIKE mbew-zkdat, " Date as of which the price is

  • " valid

END OF t_mat_data.

CLEAR :

ls_headdata,

ls_valuationdata,

ls_valuationdatax.

t_mat_data-material = '31'.

t_mat_data-val_area = '0001'.

t_mat_data-valid_from = '20070122'.

t_mat_data-future_pr = '100'.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = t_mat_data-material

IMPORTING

OUTPUT = t_mat_data-material

  • EXCEPTIONS

  • LENGTH_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ls_headdata-material = t_mat_data-material.

ls_headdata-account_view = 'X'.

  • Move valuation data.

ls_valuationdata-val_area = t_mat_data-val_area.

ls_valuationdata-future_pr = t_mat_data-future_pr.

ls_valuationdata-valid_from = t_mat_data-valid_from.

ls_valuationdatax-val_area = t_mat_data-val_area.

ls_valuationdatax-future_pr = 'X'.

ls_valuationdatax-valid_from = 'X'.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

headdata = ls_headdata

  • CLIENTDATA =

  • CLIENTDATAX =

  • PLANTDATA =

  • PLANTDATAX =

  • FORECASTPARAMETERS =

  • FORECASTPARAMETERSX =

  • PLANNINGDATA =

  • PLANNINGDATAX =

  • STORAGELOCATIONDATA =

  • STORAGELOCATIONDATAX =

VALUATIONDATA = ls_valuationdata

VALUATIONDATAX = ls_valuationdatax

  • WAREHOUSENUMBERDATA =

  • WAREHOUSENUMBERDATAX =

  • SALESDATA =

  • SALESDATAX =

  • STORAGETYPEDATA =

  • STORAGETYPEDATAX =

  • FLAG_ONLINE = ' '

  • FLAG_CAD_CALL = ' '

  • NO_DEQUEUE = ' '

IMPORTING

RETURN = ls_return

  • TABLES

  • MATERIALDESCRIPTION =

  • UNITSOFMEASURE =

  • UNITSOFMEASUREX =

  • INTERNATIONALARTNOS =

  • MATERIALLONGTEXT =

  • TAXCLASSIFICATIONS =

  • RETURNMESSAGES =

  • PRTDATA =

  • PRTDATAX =

  • EXTENSIONIN =

  • EXTENSIONINX =

.

write:/ ls_return-message.