‎2007 Mar 07 6:15 AM
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.
‎2007 Mar 07 6:27 AM
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?
‎2007 Mar 07 6:47 AM
‎2007 Mar 07 6:50 AM
hi
u have to specify 'X' in the PLANTDATAX while you have to fill the value in PLANTDATA,
‎2007 Mar 07 6:59 AM
You need to check the relevant fields in PLANTDATAX with a 'X' so that only they will be updated in the db.