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

BDC program error

Former Member
0 Likes
314

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?

1 REPLY 1
Read only

Former Member
0 Likes
290

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.