上傳數據(TXT格式)至數據庫自定義表

*&---------------------------------------------------------------------*
*&      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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章