上传数据(TXT格式)至数据库自定义表

来源:互联网 发布:机器视觉偏重算法吗 编辑:程序博客网 时间:2024/06/08 18:40

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

原创粉丝点击