|
我顶! 只能MMPV 一个个月的开到2010年了。
*&---------------------------------------------------------------------*
*& Report ZMMPV *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
report ZMMPV no standard page heading line-size 255.
*BDC ?MMPV
*tiger
TABLES:t100.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF it_get OCCURS 10,
* data element:
I_VBUKR_001(004),
* data element:
I_BBUKR_002(004),
* data element:
I_LFMON_003(002),
* data element:
I_LFGJA_004(004),
* data element:
* I_XCOMP_005(001),
end of it_get.
DATA: BEGIN OF it_mes OCCURS 0,
I_VBUKR_001(004),
I_BBUKR_002(004),
I_LFMON_003(002),
I_LFGJA_004(004),
mess(110) TYPE c,
END OF it_mes.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE t01.
PARAMETERS:
fname LIKE rlgrap-filename DEFAULT 'c:\mmpv.txt' .
PARAMETERS: pmode TYPE c DEFAULT 'N' OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
initialization.
t01 = 'ff'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR fname.
PERFORM get_file.
start-of-selection.
PERFORM read_data.
perform process_data.
perform write_log.
end-of-selection.
*&--------------------------------------------------------------------*
*& Form get_file
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM get_file .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = '*.txt'
def_path = 'C:\'
mask = ',*.txt.'
mode = 'O'
title = 'Choose Input file'
IMPORTING
filename = fname
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
ENDFORM. " get_file
*&--------------------------------------------------------------------*
*& Form bdc_dynpro
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
*&--------------------------------------------------------------------*
*& Form bdc_field
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "bdc_field
*&--------------------------------------------------------------------*
*& Form read_data
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM read_data .
data:filename type STRING.
filename = fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = filename
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '1'
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
DATA_TAB = it_get
* 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 'Unable to open input file' type 'S'.
stop.
ENDIF .
ENDFORM. " read_data
*&--------------------------------------------------------------------*
*& Form process_data
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM process_data .
loop at it_get.
perform bdc_dynpro using 'RMMMPERI' '1000'.
perform bdc_field using 'BDC_CURSOR'
'I_LFGJA'.
perform bdc_field using 'BDC_OKCODE'
'=ONLI'.
perform bdc_field using 'I_VBUKR'
it_get-I_VBUKR_001.
perform bdc_field using 'I_BBUKR'
it_get-I_BBUKR_002.
perform bdc_field using 'I_LFMON'
it_get-I_LFMON_003.
perform bdc_field using 'I_LFGJA'
it_get-I_LFGJA_004.
perform bdc_field using 'I_XCOMP'
'X'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_OKCODE'
'=BABA'.
perform bdc_dynpro using 'RMMMPERI' '1000'.
perform bdc_field using 'BDC_OKCODE'
'/EE'.
perform bdc_field using 'BDC_CURSOR'
'I_VBUKR'.
CALL TRANSACTION 'MMPV' USING bdcdata MODE pmode UPDATE 'S'
MESSAGES INTO messtab.
IF sy-subrc = 0.
it_mes-mess = 'OK'.
ELSE.
PERFORM get_mess.
ENDIF.
MOVE-CORRESPONDING it_get TO it_mes.
APPEND it_mes.
CLEAR bdcdata.
REFRESH bdcdata.
CLEAR messtab.
REFRESH messtab.
endloop.
endform. "process_data
*&--------------------------------------------------------------------*
*& Form get_mess
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM get_mess .
DATA: index TYPE i.
DATA: lin TYPE i.
DESCRIBE TABLE messtab LINES lin.
READ TABLE messtab INDEX lin.
*********** GET ERROR MESSAGE
*****************************************
SELECT SINGLE text INTO t100-text FROM t100
WHERE sprsl EQ sy-langu AND
arbgb EQ messtab-msgid AND
msgnr EQ messtab-msgnr.
MOVE t100-text TO it_mes-mess.
index = 1.
DO 4 TIMES.
CASE index.
WHEN 1.
REPLACE '&' WITH messtab-msgv1(18) INTO it_mes-mess.
WHEN 2.
REPLACE '&' WITH messtab-msgv2(18) INTO it_mes-mess.
WHEN 3.
REPLACE '&' WITH messtab-msgv3(18) INTO it_mes-mess.
WHEN 4.
REPLACE '&' WITH messtab-msgv4(18) INTO it_mes-mess.
ENDCASE.
index = index + 1.
ENDDO.
CONDENSE it_mes-mess.
ENDFORM. " get_mess
*&---------------------------------------------------------------------*
*& Form write_log
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_log .
LOOP AT it_mes.
WRITE: /(20) it_mes-I_VBUKR_001,(25) it_mes-I_VBUKR_001,
(30) it_mes-I_LFMON_003,(35) it_mes-I_LFGJA_004,(40) it_mes-mess .
ENDLOOP.
endform. |
|