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
741

i have used BAPI_MATERIAL_SAVEDATA for uploading or ceating materials but on running it, it producing the following error:

"EMM 360Key fields for user data PLANTDATA and checkbox structure PLANTDATAX are different"

what might be the problem?

Below is an extract of the source code

DATA:

BEGIN OF LSMW_MATERIAL_MASTER,

MATNR(018) TYPE C, "Material number

MAKTX(040) TYPE C, "Material description

MEINS(003) TYPE C, "Base unit of measure

END OF LSMW_MATERIAL_MASTER.

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

  • INTERNAL TABLE DECLARATIONS *

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

*to store the input data

DATA: BEGIN OF it_matmaster OCCURS 0.

INCLUDE STRUCTURE LSMW_MATERIAL_MASTER.

DATA: END OF it_matmaster.

*for material description

DATA:BEGIN OF IT_MATERIALDESC OCCURS 0.

INCLUDE STRUCTURE BAPI_MAKT .

DATA:END OF IT_MATERIALDESC.

*tax classification

DATA:BEGIN OF IT_TAXCLASS OCCURS 0.

INCLUDE STRUCTURE BAPI_MLAN .

DATA:END OF IT_TAXCLASS.

*to return messages

DATA:BEGIN OF IT_RETURN OCCURS 0.

INCLUDE STRUCTURE BAPIRET2.

DATA:END OF IT_RETURN.

DATA: INDSECTOR(1) VALUE 'Z',

mattype(4) value 'ZSER'.

DATA: ZBAPIMATHEAD LIKE BAPIMATHEAD OCCURS 0 WITH HEADER LINE,

ZBAPI_MARA LIKE BAPI_MARA OCCURS 0 WITH HEADER LINE,

ZBAPI_MARC LIKE BAPI_MARC OCCURS 0 WITH HEADER LINE,

ZBAPI_MVKE LIKE BAPI_MVKE OCCURS 0 WITH HEADER LINE,

zBAPI_MARCX LIKE BAPI_MARCX OCCURS 0 WITH HEADER LINE..

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

  • SELECTION SCREEN

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.

PARAMETERS:P_FILE LIKE RLGRAP-FILENAME default 'c:/flat.txt', "OBLIGATORY,

plant like RMMG1-WERKS,

salesorg like RMMG1-VKORG.

SELECTION-SCREEN END OF BLOCK B1 .

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

  • AT SELECTION SCREEN

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

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

  • CALL FUNCTION 'F4_FILENAME'

  • EXPORTING

  • PROGRAM_NAME = SYST-CPROG

    • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = 'P_FILE'

  • IMPORTING

  • FILE_NAME = P_FILE.

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

  • TO UPLOAD THE DATA *

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

START-OF-SELECTION.

V_FILE = P_FILE.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = V_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

tables

data_tab = IT_MATMASTER

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17

.

IF sy-subrc <> 0.

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

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

ENDIF.

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

  • DATA POPULATIONS *

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

LOOP AT IT_MATMASTER.

ZBAPIMATHEAD-MATERIAL = IT_MATMASTER-MATNR.

ZBAPIMATHEAD-IND_SECTOR = indsector.

ZBAPIMATHEAD-MATL_TYPE = mattype.

ZBAPIMATHEAD-BASIC_VIEW = 'X'.

ZBAPIMATHEAD-SALES_VIEW = 'X'.

ZBAPIMATHEAD-SALES_VIEW = 'X'.

ZBAPI_MVKE-SALES_ORG = salesorg.

ZBAPI_MVKE-DISTR_CHAN = '01'.

ZBAPI_MVKE-MAT_PR_GRP = '01'.

ZBAPI_MVKE-ACCT_ASSGT = '10'.

ZBAPI_MARA-ITEM_CAT = 'ZCUS'.

ZBAPI_MARA-BASE_UOM = IT_MATMASTER-MEINS.

ZBAPI_MARC-PLANT = plant.

ZBAPI_MARC-PROFIT_CTR = '114452'.

ZBAPI_MARCX-PLANT = 'X'..

ZBAPI_MARCX-PROFIT_CTR = 'X'.

IT_MATERIALDESC-LANGU = 'EN'.

IT_MATERIALDESC-MATL_DESC = IT_MATMASTER-MAKTX.

append IT_materialdesc.

IT_TAXCLASS-TAXCLASS_1 = '0'.

append IT_TAXCLASS.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

headdata = ZBAPIMATHEAD

CLIENTDATA = ZBAPI_MARA

PLANTDATA = ZBAPI_MARc

PLANTDATAX = ZBAPI_MARcx

SALESDATA = ZBAPI_MVKE

IMPORTING

RETURN = IT_RETURN

TABLES

MATERIALDESCRIPTION = IT_MATERIALDESC

  • UNITSOFMEASURE =

  • UNITSOFMEASUREX =

  • INTERNATIONALARTNOS =

  • MATERIALLONGTEXT =

TAXCLASSIFICATIONS = IT_TAXCLASS

  • RETURNMESSAGES =

  • PRTDATA =

  • PRTDATAX =

  • EXTENSIONIN =

  • EXTENSIONINX =

.

WRITE:/ IT_RETURN-TYPE,

2 IT_RETURN-ID,

22 IT_RETURN-NUMBER,

25 IT_RETURN-MESSAGE.

4 REPLIES 4
Read only

Former Member
0 Likes
673

PLANTDATA and PLANTDATAX are both structures in the bapi interface, the later structure indicating which fields are relevant in the previous structure for update.

Could you see any difference in the field correspondence between PLANTDATA and PLANTDATAX structures?

Read only

0 Likes
673

i cant see the difference

Read only

0 Likes
673

hi

u have to specify 'X' in the PLANTDATAX while you have to fill the value in PLANTDATA,

Read only

0 Likes
673

You need to check the relevant fields in PLANTDATAX with a 'X' so that only they will be updated in the db.