0% found this document useful (0 votes)
501 views

BDC Call Transaction

This document describes an ABAP program that uploads data from a file, processes it using transaction MM01, and logs the results. It uploads the data into a table, loops through each record, calls transaction MM01 using BDC, and logs successful records or errors to separate tables. It then downloads the log tables to text files.

Uploaded by

aturhm
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
501 views

BDC Call Transaction

This document describes an ABAP program that uploads data from a file, processes it using transaction MM01, and logs the results. It uploads the data into a table, loops through each record, calls transaction MM01 using BDC, and logs successful records or errors to separate tables. It then downloads the log tables to text files.

Uploaded by

aturhm
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 6

REPORT ZBDC_MM01_PROGRAM

NO STANDARD PAGE HEADING LINE-SIZE 255.


TYPES: BEGIN OF TY_DATA,
MATNR(18),
MBRSH(1),
MTART(4),
MAKTX(30),
MEINS(3),
END OF TY_DATA.
DATA: IT_DATA TYPE STANDARD TABLE OF TY_DATA.
DATA: WA_DATA TYPE TY_DATA.
DATA: V_FILENAME TYPE LOCALFILE.
TYPES: BEGIN OF TY_log,
MATNR(18),
MBRSH(1),
MTART(4),
MAKTX(30),
MEINS(3),
reason type string,
END OF TY_log.
DATA: IT_SUCC TYPE STANDARD TABLE OF TY_DATA.
DATA: IT_error TYPE STANDARD TABLE OF TY_DATA.
*DATA: IT_ERROR TYPE STANDARD TABLE OF TY_log.
DATA: wa_ERROR TYPE TY_log.
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
*
messages of call transaction
DATA: IT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
*
error session opened (' ' or 'X')
***INCLUDE BDCRECX1.
PARAMETERS: P_FILE TYPE LOCALFILE DEFAULT 'C:\Documents and
Settings\Reliance\Desktop\mm01_data.txt'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM F4_FILENAME.

START-OF-SELECTION.
PERFORM UPLOAD_FILE.
* PERFORM OPEN_GROUP.
LOOP AT IT_DATA INTO WA_DATA.
*********SCREEN 1
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD

USING 'SAPLMGMM' '0060'.


USING 'BDC_CURSOR'
'RMMG1-MATNR'.
USING 'BDC_OKCODE'
'/00'.
USING 'RMMG1-MATNR'
WA_DATA-MATNR.
USING 'RMMG1-MBRSH'
WA_DATA-MBRSH.

PERFORM BDC_FIELD

USING 'RMMG1-MTART'

WA_DATA-MTART.

*********SCREEN 2
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'.
*********SCREEN 3
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD

USING 'SAPLMGMM' '4004'.


USING 'BDC_OKCODE'
USING 'MAKT-MAKTX'
USING 'BDC_CURSOR'
USING 'MARA-MEINS'

PERFORM BDC_TRANSACTION USING 'MM01'.


ENDLOOP.
IF IT_SUCC IS NOT INITIAL.
PERFORM DOWNLOAD_LOG USING 'SUCCESS' IT_SUCC.
ENDIF.
IF IT_ERROR IS NOT INITIAL.
PERFORM DOWNLOAD_LOG USING 'ERROR' IT_ERROR.
ENDIF.
*&---------------------------------------------------------------------*
*&
Form f4_filename
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM F4_FILENAME .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_FILE'
IMPORTING
FILE_NAME
= V_FILENAME.
P_FILE = V_FILENAME.
ENDFORM.
" f4_filename
*&---------------------------------------------------------------------*
*&
Form UPLOAD_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM UPLOAD_FILE .
DATA: LV_FILENAME TYPE STRING.
LV_FILENAME = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING

'=BU'.
WA_DATA-MAKTX.
'MARA-MEINS'.
WA_DATA-MEINS.

FILENAME
= LV_FILENAME
* FILETYPE
= 'ASC'
HAS_FIELD_SEPARATOR
= 'X'
* HEADER_LENGTH
=0
* READ_BY_LINE
= 'X'
* DAT_MODE
=''
* CODEPAGE
=''
* IGNORE_CERR
= ABAP_TRUE
* REPLACEMENT
= '#'
* CHECK_BOM
=''
* VIRUS_SCAN_PROFILE
=
* NO_AUTH_CHECK
=''
* 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.
DELETE IT_DATA INDEX 1.
ENDFORM.
" UPLOAD_FILE
*----------------------------------------------------------------------*
*
Start new screen
*
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO = DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
"BDC_DYNPRO
*----------------------------------------------------------------------*
*
Insert field
*
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
* IF FVAL <> NODATA.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
* ENDIF.
ENDFORM.
"BDC_FIELD
*----------------------------------------------------------------------*
*
Start new transaction according to parameters
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
REFRESH IT_MESSTAB.
CALL TRANSACTION TCODE USING IT_BDCDATA[]
MODE 'N'
UPDATE 'A'
MESSAGES INTO IT_MESSTAB[].

if sy-subrc = 0.
APPEND wa_data to it_succ.
else.
APPEND wa_data to it_error.
endif.
* IF SY-SUBRC <> 0.
*
read TABLE it_messtab INDEX 1 ." with key MSGTYP = 'E'.
*
CALL FUNCTION 'FORMAT_MESSAGE'
*
EXPORTING
*
ID
= it_messtab-MSGID
*
LANG
= it_messtab-MSGSPRA
*
NO
= it_messtab-MSGNR
*
V1
= it_messtab-MSGV1
*
V2
= it_messtab-MSGV2
*
V3
= it_messtab-MSGV3
*
V4
= it_messtab-MSGV4
*
IMPORTING
*
MSG
= WA_ERROR-REASON
*
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.
*
*
MOVE-CORRESPONDING wa_data to wa_error.
*
APPEND WA_error TO IT_ERROR.
* ENDIF.
REFRESH IT_BDCDATA.
ENDFORM.
"BDC_TRANSACTION

*&---------------------------------------------------------------------*
*&
Form DOWNLOAD_LOG
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_IT_DATA text
*----------------------------------------------------------------------*
FORM DOWNLOAD_LOG USING P_STATUS P_IT_DATA LIKE IT_error.
DATA: LV_FILENAME TYPE STRING.

CONCATENATE 'C:\TEST\' P_STATUS '.TXT' INTO LV_FILENAME.


CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
*
BIN_FILESIZE
=
FILENAME
= LV_FILENAME
*
FILETYPE
= 'ASC'
*
APPEND
=''
*
WRITE_FIELD_SEPARATOR
=''
*
HEADER
= '00'
*
TRUNC_TRAILING_BLANKS
=''
*
WRITE_LF
= 'X'
*
COL_SELECT
=''
*
COL_SELECT_MASK
=''
*
DAT_MODE
=''
*
CONFIRM_OVERWRITE
=''
*
NO_AUTH_CHECK
=''
*
CODEPAGE
=''
*
IGNORE_CERR
= ABAP_TRUE
*
REPLACEMENT
= '#'
*
WRITE_BOM
=''
*
TRUNC_TRAILING_BLANKS_EOL
= 'X'
*
WK1_N_FORMAT
=''
*
WK1_N_SIZE
=''
*
WK1_T_FORMAT
=''
*
WK1_T_SIZE
=''
* IMPORTING
*
FILELENGTH
=
TABLES
DATA_TAB
= P_IT_DATA
*
FIELDNAMES
=
* EXCEPTIONS
*
FILE_WRITE_ERROR
=1
*
NO_BATCH
=2
*
GUI_REFUSE_FILETRANSFER
=3
*
INVALID_TYPE
=4
*
NO_AUTHORITY
=5
*
UNKNOWN_ERROR
=6
*
HEADER_NOT_ALLOWED
=7
*
SEPARATOR_NOT_ALLOWED
=8
*
FILESIZE_NOT_ALLOWED
=9
*
HEADER_TOO_LONG
= 10
*
DP_ERROR_CREATE
= 11
*
DP_ERROR_SEND
= 12
*
DP_ERROR_WRITE
= 13
*
UNKNOWN_DP_ERROR
= 14
*
ACCESS_DENIED
= 15
*
DP_OUT_OF_MEMORY
= 16
*
DISK_FULL
= 17
*
DP_TIMEOUT
= 18
*
FILE_NOT_FOUND
= 19
*
DATAPROVIDER_EXCEPTION
= 20
*
CONTROL_FLUSH_ERROR
= 21
*
OTHERS
= 22
.
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.

" DOWNLOAD_LOG

You might also like