Você está na página 1de 5

REPORT ZBDC_SESSION.

TYPES : BEGIN OF LINE_TYPE,


MATNR TYPE MATNR,
MBRSH TYPE MBRSH,
MTART TYPE MTART,
MAKTX TYPE MAKTX,
MEINS TYPE MEINS,
END OF LINE_TYPE.
DATA IT_MAT TYPE TABLE OF LINE_TYPE WITH HEADER LINE.
DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.
PARAMETER P_FILE LIKE IBIPPARMS-PATH.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM BROWSE_FILE.
START-OF-SELECTION.
PERFORM UPLOAD_FLATEFILTE.
PERFORM CREAT_SESSION.
PERFORM MAP_DATA.
PERFORM CLOSE_SESSION.
*&---------------------------------------------------------------------*
*&
Form BROWSE_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM BROWSE_FILE .
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME
= P_FILE
.
ENDFORM.
" BROWSE_FILE
*&---------------------------------------------------------------------*
*&
Form UPLOAD_FLATEFILTE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM UPLOAD_FLATEFILTE .
DATA F_FILE TYPE STRING.
F_FILE = P_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME
FILETYPE
HAS_FIELD_SEPARATOR
* HEADER_LENGTH
* READ_BY_LINE
* DAT_MODE
* IMPORTING
* FILELENGTH
* HEADER
TABLES

= F_FILE
= 'ASC'
= ' '
= 0
= 'X'
= ' '
=
=

DATA_TAB
= IT_MAT
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.
*CALL FUNCTION 'GUI_DOWNLOAD'
* EXPORTING
** BIN_FILESIZE
*
FILENAME
* FILETYPE
** APPEND
* WRITE_FIELD_SEPARATOR
** HEADER
** TRUNC_TRAILING_BLANKS
** WRITE_LF
** COL_SELECT
** COL_SELECT_MASK
** DAT_MODE
** IMPORTING
** FILELENGTH
* TABLES
*
DATA_TAB
* EXCEPTIONS
* FILE_WRITE_ERROR
* NO_BATCH
* GUI_REFUSE_FILETRANSFER
* INVALID_TYPE
* NO_AUTHORITY
* UNKNOWN_ERROR
* HEADER_NOT_ALLOWED
* SEPARATOR_NOT_ALLOWED
* FILESIZE_NOT_ALLOWED
* HEADER_TOO_LONG
* DP_ERROR_CREATE
* DP_ERROR_SEND
* DP_ERROR_WRITE
* UNKNOWN_DP_ERROR
* ACCESS_DENIED
* DP_OUT_OF_MEMORY
* DISK_FULL

=
= F_FILE
= 'ASC'
= ' '
= 'X '
= '00'
= ' '
= 'X'
= ' '
= ' '
= ' '
=
= IT_MAT
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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.
" UPLOAD_FLATEFILTE
*&---------------------------------------------------------------------*
*&
Form MAP_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*

FORM MAP_DATA .
LOOP AT IT_MAT.
REFRESH IT_BDCDATA.
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field

using 'SAPLMGMM' '0060'.


using 'BDC_CURSOR'
'RMMG1-MTART'.
using 'BDC_OKCODE'
'/00'.
using 'RMMG1-MATNR'(001)
it_mat-matnr.
using 'RMMG1-MBRSH'
it_mat-mbrsh.
using 'RMMG1-MTART'
it_mat-mtart.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
using 'BDC_OKCODE'
'=MARK'.
using 'SAPLMGMM' '0070'.
using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(02)'.
using 'BDC_OKCODE'
'=ENTR'.
using 'SAPLMGMM' '4004'.
using 'BDC_OKCODE'
'=BU'.
using 'MAKT-MAKTX'
it_mat-maktx.
using 'BDC_CURSOR'
'MARA-MEINS'.
using 'MARA-MEINS'
it_mat-meins.
using 'SAPLMGMM' '4004'.
using 'BDC_OKCODE'

'=BU'.
perform INSERT_GROUP.
ENDLOOP.
ENDFORM.
" MAP_DATA.
*&---------------------------------------------------------------------*
*&
Form bdc_dynpro
*&---------------------------------------------------------------------*
FORM bdc_dynpro USING
PROG SCRNO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROG.
IT_BDCDATA-DYNPRO = scrno.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
" bdc_dynpro
*&---------------------------------------------------------------------*
*&
Form bdc_field
*&---------------------------------------------------------------------*
FORM bdc_field USING FNAME FVALUE.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAME.
IT_BDCDATA-FVAL = FVALUE.
APPEND IT_BDCDATA.
ENDFORM.
" bdc_field
*&---------------------------------------------------------------------*
*&
Form CREAT_SESSION
*&---------------------------------------------------------------------*
FORM CREAT_SESSION .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
* CLIENT
= SY-MANDT
* DEST
= FILLER8
GROUP
= 'SESSION1'
* 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.
ENDFORM.
" CREAT_SESSION
*&---------------------------------------------------------------------*
*&
Form INSERT_GROUP
*&---------------------------------------------------------------------*
FORM INSERT_GROUP .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE
= 'MM01'
* POST_LOCAL
= NOVBLOCAL
* PRINTING
= NOPRINT
* SIMUBATCH
= ' '
* CTUPARAMS
= ' '
TABLES
DYNPROTAB
= IT_BDCDATA
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.
ENDFORM.
" INSERT_GROUP
*&---------------------------------------------------------------------*
*&
Form CLOSE_SESSION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CLOSE_SESSION .
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.
ENDFORM.

" CLOSE_SESSION

Você também pode gostar