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

Former Member
0 Likes
618

in bdc, i am not getting mm01 application for uploading. can u navigation for this...

4 REPLIES 4
Read only

Former Member
0 Likes
579

hi,

i am sending you sample code along with recording.

try to analyze

code:

report ZMMBDC no standard page heading line-size 255.

BDC Program using Session Method*****

Table Declaration *********************

tables : rmmg1,makt,mara,mvke,mg03steuer,marc,mpop,mbew.

Internal table declaration*************

data : begin of itab occurs 0,

matnr like rmmg1-matnr,

mbrsh like rmmg1-mbrsh,

mtart like rmmg1-mtart,

werks like rmmg1-werks,

lgort like rmmg1-lgort,

vkorg like rmmg1-vkorg,

vtweg like rmmg1-vtweg,

maktx like makt-maktx,

meins like mara-meins,

matkl like mara-matkl,

spart like mara-spart,

dwerk like mvke-dwerk,

taxkm like mg03steuer-taxkm,

mtpos like mvke-mtpos,

mtvfp like marc-mtvfp,

tragr like mara-tragr,

ladgr like marc-ladgr,

dismm like marc-dismm,

dispo like marc-dispo,

disls like marc-disls,

beskz like marc-beskz,

fhori like marc-fhori,

prmod like mpop-prmod,

bklas like mbew-bklas,

end of itab.

BDC table declaration ********************

data : BDC_DATA like BDCDATA occurs 0 with header line.

start-of-selection.

Function call of GUI_Upload *******************

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'c:\material.txt'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = ' '

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

DAT_MODE = ' '

IMPORTING

FILELENGTH =

HEADER =

TABLES

DATA_TAB = itab

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.

fuction call of BDC_Open_group*********

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

DEST = FILLER8

GROUP = 'Material'

HOLDDATE = FILLER8

KEEP = 'X'

USER = sy-Uname

RECORD = FILLER1

PROG = SY-CPROG

IMPORTING

QID =

EXCEPTIONS

CLIENT_INVALID = 1

DESTINATION_INVALID = 2

GROUP_INVALID = 3

GROUP_IS_LOCKED = 4

HOLDDATE_INVALID = 5

INTERNAL_ERROR = 6

QUEUE_ERROR = 7

RUNNING = 8

SYSTEM_LOCK_ERROR = 9

USER_INVALID = 10

OTHERS = 11

.

IF SY-SUBRC 0.

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

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

ENDIF.

Function call of BDC_insert ***********

repetitive execution of BDC_insert ********

loop at itab.

refresh bdc_data.

perform map_data.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'MM01'

POST_LOCAL = NOVBLOCAL

PRINTING = NOPRINT

SIMUBATCH = ' '

CTUPARAMS = ' '

TABLES

DYNPROTAB = BDC_DATA

EXCEPTIONS

INTERNAL_ERROR = 1

NOT_OPEN = 2

QUEUE_ERROR = 3

TCODE_INVALID = 4

PRINTING_INVALID = 5

POSTING_INVALID = 6

OTHERS = 7

.

IF SY-SUBRC 0.

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

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

ENDIF.

endloop.

function call of BDC_close_group ********

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC 0.

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

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

ENDIF.

Subroutinue map_data ****************

form map_data.

perform bdc1_dynpro using 'SAPLMGMM' '0060'.

perform bdc1_field using 'RMMG1-MATNR'

itab-matnr.

perform bdc1_field using 'RMMG1-MBRSH'

itab-mbrsh.

perform bdc1_field using 'RMMG1-MTART'

itab-mtart.

perform bdc1_field using 'BDC_OKCODE'

'=AUSW'.

perform bdc1_dynpro using 'SAPLMGMM' '0070'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(01)'

'X'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(04)'

'X'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(05)'

'X'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(06)'

'X'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(12)'

'X'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(13)'

'X'.

perform bdc1_field using 'MSICHTAUSW-KZSEL(16)'

'X'.

perform bdc1_field using 'BDC_OKCODE'

'/00'.

perform bdc1_dynpro using 'SAPLMGMM' '0080'.

perform bdc1_field using 'RMMG1-WERKS'

itab-werks.

perform bdc1_field using 'RMMG1-LGORT'

itab-lgort.

perform bdc1_field using 'RMMG1-VKORG'

itab-vkorg.

perform bdc1_field using 'RMMG1-VTWEG'

itab-vtweg.

perform bdc1_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc1_dynpro using 'SAPLMGMM' '4004'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARA-MEINS'

itab-meins.

perform bdc1_field using 'MARA-MATKL'

itab-matkl.

perform bdc1_field using 'MARA-SPART'

itab-spart.

perform bdc1_field using 'BDC_OKCODE'

'=SP02'.

perform bdc1_dynpro using 'SAPLMGMM' '4004'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'BDC_OKCODE'

'=SP04'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARA-MEINS'

itab-meins.

perform bdc1_field using 'MARA-SPART'

itab-spart.

perform bdc1_field using 'MVKE-DWERK'

itab-dwerk.

perform bdc1_field using 'MARA-MATKL'

itab-matkl.

perform bdc1_field using 'MG03STEUER-TAXKM(01)'

itab-taxkm.

perform bdc1_field using 'BDC_OKCODE'

'=SP05'.

perform bdc1_dynpro using 'SAPLMGMM' '4200'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'BDC_OKCODE'

'=MAIN'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARA-MEINS'

itab-meins.

perform bdc1_field using 'MARA-SPART'

itab-spart.

perform bdc1_field using 'MVKE-DWERK'

itab-dwerk.

perform bdc1_field using 'MARA-MATKL'

itab-matkl.

perform bdc1_field using 'BDC_OKCODE'

'=SP05'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MVKE-MTPOS'

itab-mtpos.

perform bdc1_field using 'BDC_OKCODE'

'=SP06'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARA-MEINS'

itab-meins.

perform bdc1_field using 'MARC-MTVFP'

itab-mtvfp.

perform bdc1_field using 'MARA-TRAGR'

itab-tragr.

perform bdc1_field using 'MARC-LADGR'

itab-ladgr.

perform bdc1_field using 'BDC_OKCODE'

'=SP12'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARA-MEINS'

itab-meins.

perform bdc1_field using 'MARC-DISMM'

itab-dismm.

perform bdc1_field using 'MARC-DISPO'

itab-dispo.

perform bdc1_field using 'MARC-DISLS'

itab-disls.

perform bdc1_field using 'BDC_OKCODE'

'=SP13'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARC-BESKZ'

itab-beskz.

perform bdc1_field using 'MARC-FHORI'

itab-fhori.

perform bdc1_field using 'BDC_OKCODE'

'SP16'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'MARA-MEINS'

itab-meins.

perform bdc1_field using 'MPOP-PRMOD'

itab-prmod.

perform bdc1_field using 'BDC_OKCODE'

'=SP27'.

perform bdc1_dynpro using 'SAPLMGMM' '4000'.

perform bdc1_field using 'MAKT-MAKTX'

itab-maktx.

perform bdc1_field using 'BDC_OKCODE'

'/00'.

endform.

-


Start new screen

*

-


FORM BDC1_DYNPRO USING PROGRAM DYNPRO.

CLEAR bdc_data.

bdc_data-program = PROGRAM.

bdc_data-dynpro = DYNPRO.

bdc_data-dynbegin = 'X'.

APPEND bdc_data.

ENDFORM.

-


Insert field

*

-


FORM BDC1_FIELD USING FNAM FVAL.

IF FVAL SPACE.

CLEAR bdc_data.

bdc_data-fnam = FNAM.

bdc_data-fval = FVAL.

APPEND bdc_data.

ENDIF.

ENDFORM.

recording:

Recording of MM01:

T MM01 BS AA X F

SAPLMGMM 0060 X

RMMG1-MATNR scooter

RMMG1-MBRSH M

RMMG1-MTART FERT

BDC_OKCODE =AUSW

SAPLMGMM 0070 X

MSICHTAUSW-KZSEL(01) X

MSICHTAUSW-KZSEL(04) X

MSICHTAUSW-KZSEL(05) X

MSICHTAUSW-KZSEL(06) X

MSICHTAUSW-KZSEL(12) X

MSICHTAUSW-KZSEL(13) X

MSICHTAUSW-KZSEL(16) X

BDC_OKCODE /00

SAPLMGMM 0070 X

MSICHTAUSW-KZSEL(15) X

BDC_OKCODE /00

SAPLMGMM 0080 X

RMMG1-WERKS 1000

RMMG1-LGORT 0001

RMMG1-VKORG 1000

RMMG1-VTWEG 10

BDC_OKCODE =ENTR

SAPLMGMM 4004 X

BDC_SUBSCR SAPLMGMM 2004TABFRA1

BDC_SUBSCR SAPLMGD1 1002SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2001SUB2

MARA-MEINS pc

MARA-MATKL 001

MARA-SPART 00

MARA-MTPOS_MARA NORM

BDC_SUBSCR SAPLMGD1 2561SUB3

BDC_SUBSCR SAPLMGD1 2007SUB4

MARA-GEWEI KG

BDC_SUBSCR SAPLMGD1 2005SUB5

BDC_SUBSCR SAPLMGD1 2011SUB6

BDC_SUBSCR SAPLMGD1 2033SUB7

BDC_SUBSCR SAPLMGD1 3300SUB8

BDC_SUBSCR SAPLMGD1 0001SUB9

BDC_SUBSCR SAPLMGD1 0001SUB10

BDC_OKCODE =SP02

SAPLMGMM 4004 X

BDC_SUBSCR SAPLMGMM 2004TABFRA1

BDC_SUBSCR SAPLMGD1 1002SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2002SUB2

BDC_SUBSCR SAPLMGD1 2010SUB3

BDC_SUBSCR SAPLMGD1 2003SUB4

BDC_SUBSCR SAPLMGD1 2004SUB5

BDC_SUBSCR SAPLMGD1 2499SUB6

BDC_SUBSCR SAPLMGD1 2012SUB7

BDC_SUBSCR SAPLMGD1 0001SUB8

BDC_SUBSCR SAPLMGD1 0001SUB9

BDC_SUBSCR SAPLMGD1 0001SUB10

BDC_OKCODE /00

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1004SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2158SUB2

MARA-MEINS PC

MARA-SPART 00

MVKE-DWERK 1000

MARA-MATKL 001

MVKE-SKTOF X

BDC_SUBSCR SAPLMGD1 2184SUB3

MG03STEUER-TAXKM(01) 1

BDC_SUBSCR SAPLMGD1 2159SUB4

BDC_SUBSCR SAPLMGD1 0001SUB5

BDC_SUBSCR SAPLMGD1 0001SUB6

BDC_OKCODE =SP05

SAPLMGMM 4200 X

BDC_SUBSCR SAPLMGMM 2200TABFRA1

BDC_SUBSCR SAPLMGD1 1004SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2181SUB2

BDC_OKCODE =MAIN

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1004SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2158SUB2

MARA-MEINS PC

MARA-SPART 00

MVKE-DWERK 1000

MARA-MATKL 001

MVKE-SKTOF X

BDC_SUBSCR SAPLMGD1 2184SUB3

BDC_SUBSCR SAPLMGD1 2159SUB4

BDC_SUBSCR SAPLMGD1 0001SUB5

BDC_SUBSCR SAPLMGD1 0001SUB6

BDC_OKCODE =SP05

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1004SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2157SUB2

MVKE-MTPOS NORM

BDC_SUBSCR SAPLMGD1 2156SUB3

BDC_SUBSCR SAPLMGD1 2155SUB4

BDC_SUBSCR SAPLMGD1 0001SUB5

BDC_SUBSCR SAPLMGD1 0001SUB6

BDC_OKCODE =SP06

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1001SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2161SUB2

MARA-MEINS PC

MARA-GEWEI KG

MARC-MTVFP 01

BDC_SUBSCR SAPLMGD1 2162SUB3

MARA-TRAGR 0001

MARC-LADGR 0001

BDC_SUBSCR SAPLMGD1 2164SUB4

BDC_SUBSCR SAPLMGD1 5802SUB5

BDC_SUBSCR SAPLWRPD 2010SUB6

BDC_OKCODE =SP12

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1001SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2481SUB2

MARA-MEINS PC

MARC-DISGR 0031

BDC_SUBSCR SAPLMGD1 2482SUB3

MARC-DISMM pd

MARC-DISPO 000

BDC_SUBSCR SAPLMGD1 2483SUB4

MARC-DISLS ex

BDC_SUBSCR SAPLMGD1 2480SUB5

BDC_SUBSCR SAPLMGD1 2479SUB6

BDC_OKCODE =SP13

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1001SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2484SUB2

MARC-BESKZ x

BDC_SUBSCR SAPLMGD1 2485SUB3

MARC-FHORI 000

BDC_SUBSCR SAPLMGD1 2486SUB4

BDC_SUBSCR SAPLMGD1 0001SUB5

BDC_SUBSCR SAPLMGD1 0001SUB6

BDC_OKCODE SP16

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1001SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2524SUB2

MARA-MEINS PC

MPOP-PRMOD D

MARC-PERKZ M

BDC_SUBSCR SAPLMGD1 2525SUB3

MPOP-PERAN 60

MPOP-ANZPR 12

BDC_SUBSCR SAPLMGD1 2523SUB4

MPOP-KZINI X

MPOP-SIGGR 4.000

MARC-AUTRU X

MPOP-MODAV 2

BDC_SUBSCR SAPLMGD1 2552SUB5

BDC_SUBSCR SAPLMGD1 0001SUB6

BDC_OKCODE =SP27

SAPLMGMM 4000 X

BDC_SUBSCR SAPLMGMM 2000TABFRA1

BDC_SUBSCR SAPLMGD1 1009SUB1

MAKT-MAKTX 5 gear scooter

BDC_SUBSCR SAPLMGD1 2953SUB2

BDC_SUBSCR SAPLMGD1 2952SUB3

BDC_SUBSCR SAPLMGD1 2902SUB4

MBEW-BKLAS 7920

MBEW-VPRSV S

MBEW-PEINH 1

BDC_SUBSCR SAPLMGD1 0001SUB5

BDC_SUBSCR SAPLMGD1 0001SUB6

BDC_OKCODE =BU

Test DATA

SCOOTER MECHANICAL-ENGINEERING FINISHED-PRODUCT 1000 0001 1000 10 5GEAR-SCOOTER PC 001 c0 1000 1 NORM 01 0001 0001 PD 000 EX X 000 D 7920

Reward Points if found helpfull..

Cheers,

Chandra Sekhar.

Read only

0 Likes
579

OO Problem ?

You might get a better response posting in the correct Forum such as ABAP General.

Actually in any case doing BDC's these days is not really recommended provided you can find / create BAPI's or methods for doing the same thing. Try using BAPI_MATERIAL_SAVEDATA to create the material from your table (or similar BAPI). BDC is OLD FASHIONED and OBSOLETE technology .

Also with complex transactions you can't always ensure the screen sequences are correct for all possible combinations and in any case and if a release changes you can be totally hosed up.

BAPI's , BadI's and Classes are the standard interfaces that SAP won't change from release to release.

Cheers

jimbo

Read only

Former Member
0 Likes
579

sample flat file structure.

TEST_SRI1,C,VERP,TEST MAT,KG

TEST_SRI2,C,VERP,TEST MAT,KG

find the below sample program. copy the code and execute the program using above flat file.

REPORT ZDEV_BDC_MM01.

DATA : BEGIN OF IT_DATA OCCURS 0,
DATA(255),
END OF IT_DATA .

data : begin of it_MAT occurs 0,
MATNR like RMMG1-MATNR,
MBRSH LIKE RMMG1-MBRSH,
MTART LIKE RMMG1-MTART,
MAKTX LIKE MAKT-MAKTX,
MEINS LIKE MARA-MEINS,
end of it_MAT.

DATA : BEGIN OF IT_ERROR OCCURS 0,
MATNR LIKE MARA-MATNR,
MESS(255),
END OF IT_ERROR.

DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
V_TEXT(200).


PERFORM UPLOAD.

LOOP AT IT_DATA.
PERFORM POP_MAT.
ENDLOOP.

LOOP AT IT_MAT.
PERFORM POP_BDCDATA.

REFRESH IT_BDCMSGCOLL.
CLEAR IT_BDCMSGCOLL.

CALL TRANSACTION 'MM01' USING IT_BDCDATA
UPDATE 'S'
MODE 'A'
MESSAGES INTO IT_BDCMSGCOLL.

IF SY-SUBRC 0.
LOOP AT IT_BDCMSGCOLL WHERE MSGTYP = 'E' OR
MSGTYP = 'A' OR
MSGTYP = 'S'.

CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_BDCMSGCOLL-MSGID
LANG = sy-langu
NO = IT_BDCMSGCOLL-MSGNR
V1 = IT_BDCMSGCOLL-MSGV1
V2 = IT_BDCMSGCOLL-MSGV2
V3 = IT_BDCMSGCOLL-MSGV3
V4 = IT_BDCMSGCOLL-MSGV4
IMPORTING
MSG = V_TEXT


EXCEPTIONS 
NOT_FOUND = 1 
OTHERS = 2 
.
IF SY-SUBRC 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
ENDIF.
concatenate IT_ERROR-MESS V_TEXT INTO IT_ERROR-MESS.
ENDLOOP.

IT_ERROR-MATNR = IT_MAT-MATNR.
APPEND IT_ERROR.
CLEAR IT_ERROR.

ENDIF.

ENDLOOP.

LOOP AT IT_ERROR.
WRITE : IT_ERROR-MATNR, it_error-mess.
ENDLOOP.


FORM UPLOAD .

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'D:\MM01_DATA.TXT'
FILETYPE = 'ASC'


HAS_FIELD_SEPARATOR = ',' 
HEADER_LENGTH = 0 
READ_BY_LINE = 'X' 
DAT_MODE = ' ' 
CODEPAGE = ' ' 
IGNORE_CERR = ABAP_TRUE 
REPLACEMENT = '#' 
CHECK_BOM = ' ' 
IMPORTING 
FILELENGTH = 
HEADER = 
TABLES
DATA_TAB = IT_DATA

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.

ENDFORM. " UPLOAD


FORM POP_MAT .
SPLIT IT_DATA AT ',' INTO IT_MAT-MATNR
IT_MAT-MBRSH
IT_MAT-MTART
IT_MAT-MAKTX
IT_MAT-MEINS.
APPEND IT_MAT.
CLEAR IT_MAT.
ENDFORM. " POP_BDCDATA

FORM POP_BDCDATA .
REFRESH IT_BDCDATA.
CLEAR IT_BDCDATA.

PERFORM FILL_SCREEN USING 'SAPLMGMM' '0060' 'X'.
PERFORM FILL_VALUS USING 'RMMG1-MATNR' IT_MAT-MATNR.
PERFORM FILL_VALUS USING 'RMMG1-MBRSH' IT_MAT-MBRSH.
PERFORM FILL_VALUS USING 'RMMG1-MTART' IT_MAT-MTART.
PERFORM FILL_VALUS USING 'BDC_OKCODE' '=ENTR'.

PERFORM FILL_SCREEN USING 'SAPLMGMM' '0070' 'X'.
PERFORM FILL_VALUS USING 'MSICHTAUSW-KZSEL(01)' 'X'.
PERFORM FILL_VALUS USING 'BDC_OKCODE' '=ENTR'.

PERFORM FILL_SCREEN USING 'SAPLMGMM' '4004' 'X'.
PERFORM FILL_VALUS USING 'MAKT-MAKTX' IT_MAT-MAKTX.
PERFORM FILL_VALUS USING 'MARA-MEINS' IT_MAT-MEINS.
PERFORM FILL_VALUS USING 'BDC_OKCODE' '=BU'.

ENDFORM. " POP_BDCDATA


FORM FILL_SCREEN USING P_PROG
P_DYNPRO
P_DYNBEGIN.

IT_BDCDATA-PROGRAM = P_PROG.
IT_BDCDATA-DYNPRO = P_DYNPRO.
IT_BDCDATA-DYNBEGIN = P_DYNBEGIN.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.

ENDFORM. " FILL_SCREEN


FORM FILL_VALUS USING P_FNAM
P_FVAL.

IT_BDCDATA-FNAM = P_FNAM.
IT_BDCDATA-FVAL = P_FVAL.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.


ENDFORM. " FILL_VALUS

Reward if useful.