Dear All,
i have done a BDC Program for T-Code MM02 to change field MARC-MMSTA. Everything is gonna fine except message meaasge M3 810- No Changes Made. So, it does not change the value of field
MARC-MMSTA. i do not know the reason why. The source is as foellows. Thanx in advance.
************************************************************************
Table Declaration
************************************************************************
************************************************************************
Data Declaration
************************************************************************
DATA: BEGIN OF RECORD OCCURS 0,
MATNR(18), "Material Number
WERKS(04), "Plant
MMSTA(02), "Plant-sp.matl status
END OF RECORD.
**Declare Internal Table for BDC Import
DATA : IT_BTCI TYPE STANDARD TABLE OF BDCDATA WITH HEADER LINE.
**Declare few variables
DATA : LV_MTART LIKE MARA-MTART,
LV_CNT(2) TYPE C, " it's a count
LV_DYTXT(30) TYPE C,
LV_KZSEL(30) TYPE C.
************************************************************************
Selection Declartion
************************************************************************
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME.
************************************************************************
Validation For Selection Screen
************************************************************************
*AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILENAME USING P_FILE.
************************************************************************
Begin Main Process
************************************************************************
START-OF-SELECTION.
PERFORM MAIN_PROCESS.
END-OF-SELECTION.
*SET PF-STATUS 'MAIN'.
&----
*& Form MAIN_PROCESS
&----
text
----
--> p1 text
<-- p2 text
----
FORM MAIN_PROCESS .
PERFORM UPLOAD_SOURCE_DATA_FROM_PC USING P_FILE.
LOOP AT RECORD.
PERFORM INITIAL_SCREEN.
PERFORM SECOND_SCREEN.
PERFORM THIRD_SCREEN.
PERFORM FOURTH_SCREEN.
PERFORM FIFTH_SCREEN.
CALL TRANSACTION 'MM02' USING IT_BTCI
MODE 'A' UPDATE 'S'.
COMMIT WORK AND WAIT.
PERFORM BDC_TRANSACTION USING 'MM02'.
Refresh IT_BTCI.
ENDLOOP.
ENDFORM. " MAIN_PROCESS
&----
*& Form UPLOAD_SOURCE_DATA_FROM_PC
&----
text
----
--> p1 text
<-- p2 text
----
FORM UPLOAD_SOURCE_DATA_FROM_PC USING P_FILE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_FILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = RECORD.
ENDFORM. " UPLOAD_SOURCE_DATA_FROM_PC
&----
*& Form INITIAL_SCREEN
&----
text
----
--> p1 text
<-- p2 text
----
FORM INITIAL_SCREEN .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RMMG1-MATNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR' RECORD-MATNR.
ENDFORM. " INITIAL_SCREEN
&----
*& Form SECOND_SCREEN
&----
text
----
--> p1 text
<-- p2 text
----
FORM SECOND_SCREEN .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(01)' 'X'.
ENDFORM. " SECOND_SCREEN
&----
*& Form THIRD_SCREEN
&----
text
----
--> p1 text
<-- p2 text
----
FORM THIRD_SCREEN .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4004'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SP26'.
PERFORM BDC_FIELD USING 'MARA-GEWEI' 'G'.
ENDFORM. "THIRD_SCREEN
&----
*& Form FOURTH_SCREEN
&----
text
----
--> p1 text
<-- p2 text
----
FORM FOURTH_SCREEN .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0081'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RMMG1-WERKS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
PERFORM BDC_FIELD USING 'RMMG1-WERKS' RECORD-WERKS.
ENDFORM. "FOURTH_SCREEN
&----
*& Form FIFTH_SCREEN
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIFTH_SCREEN .
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'MARC-MMSTA'.
PERFORM BDC_FIELD USING 'MARC-MMSTA' RECORD-MMSTA.
ENDFORM. "FIFTH_SCREEN
&----
*& Form GET_FILENAME
&----
text
----
-->P_P_FILE text
----
FORM GET_FILENAME USING P_FILE.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = SPACE
MASK = ',.,..'
MODE = 'O'
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
ENDFORM. " GET_FILENAME
----
Start new screen - BDC_DYNPRO
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR IT_BTCI.
IT_BTCI-PROGRAM = PROGRAM.
IT_BTCI-DYNPRO = DYNPRO.
IT_BTCI-DYNBEGIN = 'X'.
APPEND IT_BTCI.
ENDFORM. "BDC_DYNPRO
----
Insert field - BDC_FIELD
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR IT_BTCI.
IT_BTCI-FNAM = FNAM.
IT_BTCI-FVAL = FVAL.
APPEND IT_BTCI.
ENDIF.
ENDFORM. "BDC_FIELD
----
Start new transaction according to parameters *
----
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
batch input session
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = IT_BTCI.
REFRESH IT_BTCI.
ENDFORM. "BDC_TRANSACTION