*&---------------------------------------------------------------------*
*& Form FRM_CHOOSE_FILE
*&---------------------------------------------------------------------*
* F4檢索
*----------------------------------------------------------------------*
FORM FRM_CHOOSE_FILE .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = '*.txt'
DEF_PATH = 'C:/'
MASK = ',*.txt.'
MODE = 'O'
TITLE = 'Choose Input file'(002)
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
ENDFORM. " FRM_CHOOSE_FILE
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
* 上載數據
*----------------------------------------------------------------------*
FORM FRM_UPLOAD_DATA .
DATA:
LW_ZMTNO TYPE N LENGTH 4,
LWK_DATA TYPE TYP_DATA,
LWK_DATA_C TYPE TYP_DATA,
LTB_DATA TYPE STANDARD TABLE OF TYP_DATA,
LWK_RESB TYPE ZRESB_18_BS,
LTB_RESB TYPE STANDARD TABLE OF ZRESB_18_BS,
FILENAME TYPE STRING.
FILENAME = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILENAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = LTB_DATA.
IF SY-SUBRC <> 0.
MESSAGE 'Data upload error!' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
*****上載文件帶表頭字段文本*****
DELETE LTB_DATA INDEX 1.
SORT LTB_DATA BY MATNRC.
LOOP AT LTB_DATA INTO LWK_DATA_C.
LWK_DATA = LWK_DATA_C.
AT NEW MATNRC.
CLEAR LW_ZMTNO.
DELETE FROM ZRESB_18_BS WHERE MATNRC = LWK_DATA-MATNRC.
ENDAT.
LW_ZMTNO = LW_ZMTNO + 1.
LWK_RESB-WERKS = ''. " 工廠
LWK_RESB-MATNRC = LWK_DATA-MATNRC. " 產品
LWK_RESB-PLNFL = LWK_DATA-PLNFL. " 序列
LWK_RESB-VORNR = LWK_DATA-VORNR. " 作業編號
LWK_RESB-MATNR = LWK_DATA-MATNR. " 物料號
LWK_RESB-MAKTX = LWK_DATA-MAKTX. " 物料描述
LWK_RESB-BDMNG = LWK_DATA-BDMNG. " 需求量
LWK_RESB-MEINS = LWK_DATA-MEINS. " 單位
LWK_RESB-ZMTNO = LW_ZMTNO.
CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'
EXPORTING
INPUT = LWK_RESB-VORNR
IMPORTING
OUTPUT = LWK_RESB-VORNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LWK_RESB-PLNFL
IMPORTING
OUTPUT = LWK_RESB-PLNFL.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = LWK_RESB-MEINS
IMPORTING
OUTPUT = LWK_RESB-MEINS.
SELECT SINGLE MAKTX
INTO LWK_RESB-MAKTXC
FROM MAKT
WHERE MATNR = LWK_DATA-MATNRC
AND SPRAS = SY-LANGU.
APPEND LWK_RESB TO LTB_RESB.
CLEAR LWK_RESB.
ENDLOOP.
IF NOT LTB_RESB IS INITIAL.
MODIFY ZRESB_18_BS FROM TABLE LTB_RESB.
IF SY-SUBRC = 0.
MESSAGE S208(00) WITH '數據上載成功'.
ELSE.
MESSAGE E208(00) WITH '數據上載失敗,請檢查'.
ENDIF.
ENDIF.
ENDFORM. " FRM_UPLOAD_DATA