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

unable to make changes using 'BAPI_MATERIAL_SAVEDATA'

rahul2000
Contributor
0 Likes
327

Dear all,

i am trying to make changes using BAPI_MATERIAL_SAVEDATA,but unable to do so.

Can anyone plz tell me where i am going wrong.

&----


*& Report ZMM_BDC_MM02

*&

&----


*&

*&

&----


REPORT ZMM_BDC_MM02.

PARAMETERS: PR_FILE TYPE RLGRAP-FILENAME.

CONSTANTS: C_BEG_COL TYPE I VALUE 1,

C_BEG_ROW TYPE I VALUE 2,

C_END_COL TYPE I VALUE 10,

C_END_ROW TYPE I VALUE 10.

DATA: IT_EXCEL LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.

DATA:BEGIN OF IT_DATA OCCURS 0,

MATNR TYPE RMMG1-MATNR ,

MATKL TYPE MARA-MATKL ,

EKGRP TYPE MARC-EKGRP ,

DISPO TYPE MARC-DISPO ,

STRGR TYPE MARC-STRGR ,

DZEIT TYPE MARC-DZEIT ,

PLIFZ TYPE MARC-PLIFZ ,

WERKS TYPE RMMG1-WERKS ,

END OF IT_DATA .

CONSTANTS: C_WAIT TYPE BAPITA-WAIT VALUE '2'.

DATA: IT_BAPI_HEAD LIKE BAPIMATHEAD OCCURS 0 WITH HEADER LINE ,

IT_BAPI_MARA LIKE BAPI_MARA ,

IT_BAPI_MARAX LIKE BAPI_MARAX ,

IT_BAPI_MARC LIKE BAPI_MARC OCCURS 0 WITH HEADER LINE ,

IT_BAPI_MARCX LIKE BAPI_MARCX OCCURS 0 WITH HEADER LINE ,

IT_BAPI_MBEW LIKE BAPI_MBEW ,

IT_BAPI_MBEWX LIKE BAPI_MBEWX ,

IT_BAPI_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR PR_FILE.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

PROGRAM_NAME = SYST-REPID

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = ' '

STATIC = ' '

MASK = ' '

CHANGING

file_name = pr_file

EXCEPTIONS

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

START-OF-SELECTION.

Read Excel Sheet.

PERFORM READ_FILE." CHANGING IT_TABLE.

Process Data.

PERFORM PROCESS_DATA.

PERFORM BAPI.

Insert Data to MM02.

PERFORM INSERT_DATA.

&----


*& Form READ_FILE

&----


text

-


<--P_IT_TABLE text

-


FORM READ_FILE." changing p_it_table LIKE IT_TABLE[].

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = PR_FILE

i_begin_col = C_BEG_COL

i_begin_row = C_BEG_ROW

i_end_col = C_END_COL

i_end_row = C_END_ROW

tables

intern = IT_EXCEL

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3

.

IF sy-subrc 0.

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

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

ENDIF.

ENDFORM. " READ_FILE

&----


*& Form PROCESS

&----


text

-


--> p1 text

<-- p2 text

-


FORM PROCESS_DATA .

LOOP AT IT_EXCEL.

CASE IT_EXCEL-COL.

WHEN '001'.

IT_DATA-MATNR = IT_EXCEL-VALUE.

WHEN '002'.

IT_DATA-MATKL = IT_EXCEL-VALUE.

WHEN '002'.

IT_DATA-EKGRP = IT_EXCEL-VALUE.

WHEN '003'.

IT_DATA-DISPO = IT_EXCEL-VALUE.

WHEN '004'.

IT_DATA-STRGR = IT_EXCEL-VALUE.

WHEN '005'.

IT_DATA-DZEIT = IT_EXCEL-VALUE.

WHEN '006'.

IT_DATA-PLIFZ = IT_EXCEL-VALUE.

WHEN '007'.

IT_DATA-WERKS = IT_EXCEL-VALUE.

ENDCASE.

AT END OF ROW.

APPEND IT_DATA.

CLEAR IT_DATA.

ENDAT.

ENDLOOP.

ENDFORM. " PROCESS_DATA

&----


*& Form BAPI

&----


text

-


--> p1 text

<-- p2 text

-


FORM BAPI .

*LOOP AT IT_DATA.

IT_BAPI_HEAD-MATERIAL = 'CD243622'.

IT_BAPI_HEAD-PURCHASE_VIEW = 'X'.

IT_BAPI_HEAD-MRP_VIEW = 'X'.

APPEND IT_BAPI_HEAD.

*IT_BAPI_MARC-PLANT = IT_DATA-WERKS.

*IT_BAPI_MARC-PUR_GROUP = IT_DATA-EKGRP.

*IT_BAPI_MARC-MRP_CTRLER = IT_DATA-DISPO.

*IT_BAPI_MARC-PLAN_STRGP = IT_DATA-STRGR.

*IT_BAPI_MARC-INHSEPRODT = IT_DATA-DZEIT.

*IT_BAPI_MARC-PLND_DELRY = IT_DATA-PLIFZ.

IT_BAPI_MARC-PLANT = '1000'.

IT_BAPI_MARC-PUR_GROUP = 'ABC'.

IT_BAPI_MARC-MRP_CTRLER = 'DEF'.

IT_BAPI_MARC-PLAN_STRGP = '10'.

IT_BAPI_MARC-INHSEPRODT = '20'.

IT_BAPI_MARC-PLND_DELRY = '2'.

APPEND IT_BAPI_MARC.

IT_BAPI_MARCX-PLANT = 'X'.

IT_BAPI_MARCX-PUR_GROUP = 'X'.

IT_BAPI_MARCX-MRP_CTRLER = 'X'.

IT_BAPI_MARCX-PLAN_STRGP = 'X'.

IT_BAPI_MARCX-INHSEPRODT = 'X'.

IT_BAPI_MARCX-PLND_DELRY = 'X'.

APPEND IT_BAPI_MARCX.

*ENDLOOP.

ENDFORM. " BAPI

&----


*& Form INSERT_DATA

&----


text

-


FORM INSERT_DATA .

LOOP AT IT_DATA.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

headdata = IT_BAPI_HEAD

CLIENTDATA =

CLIENTDATAX =

PLANTDATA = IT_BAPI_MARC

PLANTDATAX = IT_BAPI_MARCX

FORECASTPARAMETERS =

FORECASTPARAMETERSX =

PLANNINGDATA =

PLANNINGDATAX =

STORAGELOCATIONDATA =

STORAGELOCATIONDATAX =

VALUATIONDATA =

VALUATIONDATAX =

WAREHOUSENUMBERDATA =

WAREHOUSENUMBERDATAX =

SALESDATA =

SALESDATAX =

STORAGETYPEDATA =

STORAGETYPEDATAX =

FLAG_ONLINE = ' '

FLAG_CAD_CALL = ' '

NO_DEQUEUE = ' '

IMPORTING

RETURN = IT_BAPI_RETURN.

TABLES

MATERIALDESCRIPTION =

UNITSOFMEASURE =

UNITSOFMEASUREX =

INTERNATIONALARTNOS =

MATERIALLONGTEXT =

TAXCLASSIFICATIONS =

RETURNMESSAGES =

PRTDATA =

PRTDATAX =

EXTENSIONIN =

EXTENSIONINX =.

ENDLOOP.

READ TABLE IT_BAPI_RETURN WITH KEY TYPE = 'E'.

IF SY-SUBRC = '0'.

WRITE: 'Error'.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = C_WAIT

IMPORTING

RETURN = IT_BAPI_RETURN.

.

ENDIF.

ENDFORM. " INSERT_DATA

1 REPLY 1
Read only

JackGraus
Active Contributor
0 Likes
294

Have a look at the messages returned by the BAPI BAPI_MATERIAL_SAVEDATA in internal table RETURN.

regards Jack