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 RECORD NOT UPLOADING DIRECTLY FROM EXCEL WHILE GIVE IN TCODE IT IS UPLOADING.

0 Likes
1,752

HOW TO UPLOAD DATA DIRECTLY FROM EXCEL,PLEASE GIVE THE SOLUTIONS.

THIS THE PROGRAM:

PLEASE CORRECT THE MISTAKE AND GIVE IT

report ZMM01
no standard page heading line-size 255.

TYPES : BEGIN OF rec_type,
MATNR TYPE RMMG1-MATNR,
MBRSH TYPE RMMG1-MBRSH,
MTART TYPE RMMG1-MTART,
MAKTX TYPE MAKT-MAKTX,
MEINS TYPE MARA-MEINS,
END OF rec_type.

DATA : it_mat TYPE TABLE OF rec_type WITH HEADER LINE.

DATA IT_EXCEL TYPE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.

DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

PARAMETERS P_FILE TYPE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.


PERFORM BROWSE_FILE.
START-OF-SELECTION.
PERFORM UPLOAD_EXCEL_FILE.
PERFORM CONVERT_IT_EXCEL_TO_IT_MAT.
PERFORM VALIDATE_DATA.

*&---------------------------------------------------------------------*
*& Form BROWSE_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form BROWSE_FILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE
.

endform. " BROWSE_FILE
*&---------------------------------------------------------------------*
*& Form UPLOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form UPLOAD_EXCEL_FILE .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = P_FILE
i_begin_col = 2
i_begin_row = 2
i_end_col = 9
i_end_row = 30
TABLES
intern = IT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 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.
endform. " UPLOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
*& Form CONVERT_IT_EXCEL_TO_IT_MAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form CONVERT_IT_EXCEL_TO_IT_MAT .
LOOP AT IT_EXCEL.
CASE IT_EXCEL-COL.

WHEN 1.
IT_MAT-MATNR = IT_EXCEL-VALUE.

WHEN 2.
IT_MAT-MBRSH = IT_EXCEL-VALUE.

WHEN 3.
IT_MAT-MTART = IT_EXCEL-VALUE.

WHEN 4.
IT_MAT-MAKTX = IT_EXCEL-VALUE.

WHEN 5.
IT_MAT-MEINS = IT_EXCEL-VALUE.
APPEND IT_MAT.
CLEAR: IT_MAT,IT_EXCEL.
ENDCASE.
ENDLOOP.


endform. " CONVERT_IT_EXCEL_TO_IT_MAT
*&---------------------------------------------------------------------*
*& Form VALIDATE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form VALIDATE_DATA .
LOOP AT IT_MAT.
*REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MTART'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
IT_MAT-MATNR.
perform bdc_field using 'RMMG1-MBRSH'
IT_MAT-MBRSH.
perform bdc_field using 'RMMG1-MTART'
IT_MAT-MTART.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MAKT-MAKTX'
IT_MAT-MAKTX.
perform bdc_field using 'BDC_CURSOR'
'MARA-MEINS'.
perform bdc_field using 'MARA-MEINS'
IT_MAT-MEINS.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.

CALL TRANSACTION 'MM01' USING IT_BDCDATA UPDATE 'A' MODE 'A'.

*CLEAR :it_bdcdata.
* CLEAR : it_mat.
ENDLOOP.
*IF SY-SUBRC = 0.
MESSAGE 'RECORDS ARE TRANSFERED SUCCESSFULLY' TYPE 'S'.
*ENDIF.
endform. " VALIDATE_DATA
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0207 text
* -->P_0208 text
*----------------------------------------------------------------------*
form BDC_DYNPRO using prgm SCRN.
IT_BDCDATA-PROGRAM = PRGM.
IT_BDCDATA-DYNPRO = SCRN.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
endform. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0212 text
* -->P_0213 text
*----------------------------------------------------------------------*
form BDC_FIELD using FNAME FVALUE.
IT_BDCDATA-FNAM = FNAME.
IT_BDCDATA-FVAL = FVALUE.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
endform. " BDC_FIELD

HOW TO UPLOAD DATA DIRECTLY FROM EXCEL,PLEASE GIVE THE SOLUTIONS.

THIS THE PROGRAM:

PLEASE CORRECT THE MISTAKE AND GIVE IT

report ZMM01
no standard page heading line-size 255.

TYPES : BEGIN OF rec_type,
MATNR TYPE RMMG1-MATNR,
MBRSH TYPE RMMG1-MBRSH,
MTART TYPE RMMG1-MTART,
MAKTX TYPE MAKT-MAKTX,
MEINS TYPE MARA-MEINS,
END OF rec_type.

DATA : it_mat TYPE TABLE OF rec_type WITH HEADER LINE.

DATA IT_EXCEL TYPE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.

DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

PARAMETERS P_FILE TYPE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.


PERFORM BROWSE_FILE.
START-OF-SELECTION.
PERFORM UPLOAD_EXCEL_FILE.
PERFORM CONVERT_IT_EXCEL_TO_IT_MAT.
PERFORM VALIDATE_DATA.

*&---------------------------------------------------------------------*
*& Form BROWSE_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form BROWSE_FILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE
.

endform. " BROWSE_FILE
*&---------------------------------------------------------------------*
*& Form UPLOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form UPLOAD_EXCEL_FILE .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = P_FILE
i_begin_col = 2
i_begin_row = 2
i_end_col = 9
i_end_row = 30
TABLES
intern = IT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 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.
endform. " UPLOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
*& Form CONVERT_IT_EXCEL_TO_IT_MAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form CONVERT_IT_EXCEL_TO_IT_MAT .
LOOP AT IT_EXCEL.
CASE IT_EXCEL-COL.

WHEN 1.
IT_MAT-MATNR = IT_EXCEL-VALUE.

WHEN 2.
IT_MAT-MBRSH = IT_EXCEL-VALUE.

WHEN 3.
IT_MAT-MTART = IT_EXCEL-VALUE.

WHEN 4.
IT_MAT-MAKTX = IT_EXCEL-VALUE.

WHEN 5.
IT_MAT-MEINS = IT_EXCEL-VALUE.
APPEND IT_MAT.
CLEAR: IT_MAT,IT_EXCEL.
ENDCASE.
ENDLOOP.


endform. " CONVERT_IT_EXCEL_TO_IT_MAT
*&---------------------------------------------------------------------*
*& Form VALIDATE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form VALIDATE_DATA .
LOOP AT IT_MAT.
*REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MTART'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
IT_MAT-MATNR.
perform bdc_field using 'RMMG1-MBRSH'
IT_MAT-MBRSH.
perform bdc_field using 'RMMG1-MTART'
IT_MAT-MTART.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MAKT-MAKTX'
IT_MAT-MAKTX.
perform bdc_field using 'BDC_CURSOR'
'MARA-MEINS'.
perform bdc_field using 'MARA-MEINS'
IT_MAT-MEINS.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.

CALL TRANSACTION 'MM01' USING IT_BDCDATA UPDATE 'A' MODE 'A'.

*CLEAR :it_bdcdata.
* CLEAR : it_mat.
ENDLOOP.
*IF SY-SUBRC = 0.
MESSAGE 'RECORDS ARE TRANSFERED SUCCESSFULLY' TYPE 'S'.
*ENDIF.
endform. " VALIDATE_DATA
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0207 text
* -->P_0208 text
*----------------------------------------------------------------------*
form BDC_DYNPRO using prgm SCRN.
IT_BDCDATA-PROGRAM = PRGM.
IT_BDCDATA-DYNPRO = SCRN.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
endform. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0212 text
* -->P_0213 text
*----------------------------------------------------------------------*
form BDC_FIELD using FNAME FVALUE.
IT_BDCDATA-FNAM = FNAME.
IT_BDCDATA-FVAL = FVALUE.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
endform. " BDC_FIELD

4 REPLIES 4
Read only

Sandra_Rossi
Active Contributor
0 Likes
1,633

"How to upload data directly from Excel": as you did! What is your issue?

Read only

pfefferf
Active Contributor
1,633

Would be great if you would not post your question several times

- 1) bdc output - SAP Q&A

- 2) bdc output - SAP Q&A

- 3) BDC REQUIREMENT UPLOADING A EXCEL WITH 20 RECORDS - SAP Q&A

and if you would find the time to ask a proper question with a description of what you trying to reach, what your issue is.

At the moment you have distributed your question to 3 posts with poor information (one nothing saying sentence in the first question and two times the same coding without further description).

What do you think, will someone invest the time to have a look on your distributed stuff? I think no.

Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,633

Rewrite your code

  • Create a record in converted internal table for each row (e.g. using AT END OF row field.)
  • Use a BAPI such as BAPI_MATERIAL_SAVEDATA (depend on your version and solution implemented) and not a BDC (*)
  • Generate and display/save a log for your program (at worst a report, at best an application log)

(*) at worst use the MESSAGES INTO itab option of CALL TRANSACTION, and anamyze itab.

Read only

ThangaPrakash
Active Contributor
0 Likes
1,633

Hi alagu123

I did a BDC recording in my system and I could achieve it, it creates multiple material based on my excel data. PFA text file zmm01.txt

Refer to attached file.1901816-zmm01.txt