| « | 九月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | |||||
*&---------------------------------------------------------------------*
*& Report ZRMMDA001 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT zrmmda001 MESSAGE-ID zc."NO STANDARD PAGE HEADING
"LINE-SIZE 80 LINE-COUNT 65
DATA BEGIN OF w_rawdata.
INCLUDE STRUCTURE soli.
DATA END OF w_rawdata.
DATA t_rawdata LIKE w_rawdata OCCURS 0.
DATA t_header LIKE thead OCCURS 0 WITH HEADER LINE.
DATA t_lines LIKE tline OCCURS 0 WITH HEADER LINE.
DATA BEGIN OF t_fields1 occurs 0.
DATA lines(10000).
DATA END OF t_fields1.
DATA BEGIN OF w_fields.
DATA matnr(18).
DATA td(2).
DATA lines(10000).
DATA END OF w_fields.
DATA BEGIN OF w_raw_fields.
DATA matnr(18).
DATA td(2).
DATA lines(10000).
DATA END OF w_raw_fields.
data: w_matnr(70) type c.
data:l type i.
data:l1 type i.
DATA t_fields LIKE w_fields OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS <fs_field>.
CONSTANTS c_delimiter TYPE x VALUE '09'.
CONSTANTS c_mask(2) TYPE c VALUE ',.'.
CONSTANTS c_field_amount TYPE i VALUE 3.
*****************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.
PARAMETERS p_file LIKE rlgrap-filename OBLIGATORY.
PARAMETERS p_errlog LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b01.
*****************************************************************
START-OF-SELECTION.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
** call file selector to get a file name for read-only.
* PERFORM call_file_selector USING c_mask
* 'O'
* 'Open File'(001)
* p_file.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_errlog.
** call file selector to get a file name for over-write.
* PERFORM call_file_selector USING c_mask
* 'S'
* 'New File'(002)
* p_errlog.
PERFORM upload_file TABLES t_fields
USING p_file
'DAT'.
IF sy-subrc <> 0.
MESSAGE s001 WITH p_file.
LEAVE.
ENDIF.
* PERFORM upload_data.
PERFORM insert_data.
*&---------------------------------------------------------------------*
*& Form UPLOAD_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_RAWDATA text
* -->P_P_FILE text
* -->P_0093 text
*----------------------------------------------------------------------*
FORM upload_file TABLES t_fields
USING p_file
'DAT'.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
* CODEPAGE = ' '
filename = 'C:Documents and Settings902450桌面123.txt'
filetype = 'DAT'
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* DAT_D_FORMAT = ' '
* IMPORTING
* FILELENGTH =
TABLES
data_tab = t_fields
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 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. " UPLOAD_FILE
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_data .
CLEAR sy-tabix.
LOOP AT t_rawdata INTO w_rawdata.
CLEAR w_fields.
CLEAR w_raw_fields.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE w_raw_fields TO <fs_field>.
IF sy-subrc <> 0.
EXIT.
ENDIF.
SPLIT w_rawdata AT c_delimiter INTO <fs_field> w_rawdata.
ENDDO.
* APPEND W_RAW_FIELDS TO T_RAW_FIELDS.
MOVE-CORRESPONDING w_raw_fields TO w_fields.
APPEND w_fields TO t_fields.
ENDLOOP.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form CALL_FILE_SELECTOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_C_MASK text
* -->P_0157 text
* -->P_0158 text
* -->P_P_ERRLOG text
*----------------------------------------------------------------------*
FORM call_file_selector USING p_c_mask TYPE c
value(p_mode)
value(p_title)
p_file.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
mask = p_c_mask
mode = p_mode
title = p_title
IMPORTING
filename = p_file
* RC =
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5
.
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. " CALL_FILE_SELECTOR
*&---------------------------------------------------------------------*
*& Form insert_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM insert_data .
LOOP AT t_fields.
* at new matnr.
t_header-tdname = t_fields-matnr.
t_header-tdobject = 'MATERIAL'.
t_header-tdid = 'GRUN'.
t_header-tdspras = 1.
APPEND t_header.
* endat.
*
t_fields1-lines = t_fields-lines.
* t_lines-TDFORMAT = t_fields-td.
APPEND t_fields1.
write : t_fields-lines.
l = strlen( t_fields-lines ).
write : l.
CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'
EXPORTING
LANGUAGE = SY-LANGU
TABLES
text_stream = t_fields1
itf_text = t_lines
.
ENDLOOP.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = t_header
* INSERT = ' '
savemode_direct = 'X'
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
lines = t_lines
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5
.
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_DATA