‎2008 Feb 07 2:10 PM
the following BDC prg.. is not running after second screen in MM01.
&----
*& Report ZM_BDCP_MM01 *
*& *
&----
*& *
*& *
&----
REPORT ZM_BDCP_MM01 .
**STRUCTURE FOR FLAT FILE
TYPES: BEGIN OF XT_MAT,
MBRSH TYPE MARA-MBRSH, "INDUSTRIAL SECTOR
MTART TYPE MARA-MTART, "MATERIAL TYPE
MAKTX TYPE MAKT-MAKTX, "MATERIAL DESCRIPTION
MEINS TYPE MARA-MEINS, "BASIC UNIT OF MEASURE
MATKL TYPE MARA-MATKL, "MATERIAL GROUP
END OF XT_MAT.
DATA: IT_MAT TYPE STANDARD TABLE OF XT_MAT,
WA_MAT TYPE XT_MAT.
DATA: FILENAME TYPE STRING.
DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
WA_BDCDATA TYPE BDCDATA,
IT_BDCMSG TYPE STANDARD TABLE OF BDCMSGCOLL, "TO CAPTURE ERROR MESSAGES
WA_BDCMSG TYPE BDCMSGCOLL.
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER: R1 RADIOBUTTON GROUP GRP,
R2 RADIOBUTTON GROUP GRP,
P_FILE LIKE IBIPPARMS-PATH. "TO SELECT THE FILE
SELECTION-SCREEN: END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GETFILE.
PERFORM GETDATA.
&----
*& Form GETFILE
&----
FORM GETFILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE. "SELECT THE FILE FROM P_FILEBROWSE PARAMETER
FILENAME = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILENAME "IT CONTAINS FILENAME FROM P_FILEBROWSE PARAMETER
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_MAT.
ENDFORM. " GETFILE
&----
*& Form GETDATA
&----
FORM GETDATA .
LOOP AT IT_MAT INTO WA_MAT.
***FOR INITIAL SCREEN MM01.(FIRST SCREEN)
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'RMMG1-MBRSH' 'WA_MAT-MBRSH'. "INDUSTRIAL SECTOR
PERFORM BDC_FIELD USING 'RMMG1-MTART' 'WA_MAT-MTART'. "MATERIAL TYPE
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=AUSW'.
***FOR SELECTING VIEWS. (SECOND SCREEN)
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(01)' 'X'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
FOR ENTERING BASIC DATA1.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4004'.
PERFORM BDC_FIELD USING 'MAKT-MAKTX' 'WA_MAT-MAKTX'. "MATERIAL DESCRIPTION
PERFORM BDC_FIELD USING 'MARA-MEINS' 'WA_MAT-MEINS'. "BASIC UNIT OF MEASURE
PERFORM BDC_FIELD USING 'MARA-MATKL' 'WA_MAT-MATKL'. "MATERIAL GROUP
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
***USING CALL TRANSACTION.
CALL TRANSACTION 'MM01'
USING IT_BDCDATA
MODE 'A'
UPDATE 'A'
MESSAGES INTO IT_BDCMSG.
ENDLOOP.
ENDFORM. " GETDATA
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL IS NOT INITIAL.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
=============================================
The following is the flat file ive taken:
RETAIL Drinks cola KG 002
RETAIL Empties coke KG 002
field1-industrial sector
field2-material type
field3-material description
field4-unit of measure
field5-material group
Is the error with the flat file or the program? Is the screen number 4004 is right after second screen?
‎2008 Feb 07 4:20 PM
a bdc-run on MM01 is never a good idea for various reasons:
- you can set screens in dependency of the user running it
- not every material is to maintained in all the views
- ...
therefore: use RMDATIND instead or MM17 or MASS or a BAPI.
if you really really really need to use bdc, try transaction MMZ1 instead of MM01.