Sei sulla pagina 1di 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

Potrebbero piacerti anche