ABAP之BOM基于EXCEL批量导入(一)

 ---------------------------------------------------------------------*
*& Report  ZPPR033
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZPPR033 NO STANDARD PAGE HEADING MESSAGE-ID OO.

INCLUDE ZPRJ001_INCL.
*----------------------------------------------------------------------*
* TABLE DECLARATION                                                    *
*----------------------------------------------------------------------*
TABLES: SSCRFIELDS."选择屏幕-下载模板按钮


*----------------------------------------------------------------------*
* TYPE-POOLS                                                           *
*----------------------------------------------------------------------*
TYPE-POOLS: SLIS,VRM,TRUXS. "#EC *


*----------------------------------------------------------------------*
* CONSTANTS                                                            *
*----------------------------------------------------------------------*


*----------------------------------------------------------------------*
* TYPES                                                                *
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_excel,
  MATNR TYPE string,"物料号
  STLAN TYPE string,"用途
  WERKS TYPE string,"工厂
  STLAL TYPE string,"可选BOM
  POSNR TYPE string,"项目号
  IDNRK TYPE string,"BOM组件
  MENGE TYPE string,"数量
  SORTP TYPE string,"修改:添加->排序字符串
  POTX1 TYPE string,"修改:添加->行1(替代备件)
  POTX2 TYPE string,"修改:添加->行2(替换备件)
  SANKA TYPE string,"成本核算标识相关
  UPOSZ TYPE string,"修改:添加->子项目编号
  EBORT TYPE string,"修改:添加->子项目安装地点
  UPMNG TYPE string,"修改:添加->子项目数量
END OF ty_excel.

TYPES: BEGIN OF ty_output,
  ZSEL  TYPE C,
  INDEX TYPE SY-INDEX,
  MATNR(18),"物料号
  STLAN(1),"用途
  WERKS(4),"工厂
  STLAL(2),"可选BOM
  POSNR(4),"项目号
  IDNRK(18),"组件
  MENGE(13),"数量
  SORTP(10),"修改:添加->排序字符串
  POTX1(40),"修改:添加->行1(替代备件)
  POTX2(40),"修改:添加->行2(替换备件)
  SANKA(1),"成本核算标识相关
  UPOSZ(4),"修改:添加->子项目编号
  EBORT(20),"修改:添加->子项目安装地点
  UPMNG(17),"修改:添加->子项目数量
  POSTP(1),"项目类别
*  POTX1 TYPE string,"
*  RFPNT TYPE string,
  TYPE      TYPE BAPI_MTYPE,"消息类型
  MESSAGE   TYPE BAPI_MSG,"消息类别
  COLOR_ROW TYPE CHAR4,"行颜色
END OF ty_output.

TYPES: BEGIN OF ty_screen,
  DATUV TYPE DATUM,
END OF ty_screen.


*----------------------------------------------------------------------*
* DATA                                                                 *
*----------------------------------------------------------------------*
DATA: gs_excel TYPE ty_excel,
      gt_excel TYPE TABLE OF ty_excel,
      gs_output TYPE ty_output,
      gt_output TYPE TABLE OF ty_output,
      gs_output1 TYPE ty_output,
      gt_output1 TYPE TABLE OF ty_output,
      gs_screen TYPE ty_screen,
      gv_datuv TYPE BICSK-DATUV.

*---for alv
DATA: GWA_LAYOUT TYPE SLIS_LAYOUT_ALV,
      GIT_FIELD       TYPE SLIS_T_FIELDCAT_ALV,
      GWA_FIELD       LIKE LINE OF GIT_FIELD,               "#EC *
      GIT_SORT        TYPE SLIS_T_SORTINFO_ALV,
      GWA_SORT        LIKE LINE OF GIT_SORT.                "#EC *


*----------------------------------------------------------------------*
* SCREEN DECLARATION: PARAMETERS & SELECT-OPTIONS                      *
*----------------------------------------------------------------------*
SELECTION-SCREEN: FUNCTION KEY 1. "激活下载模板按钮
SELECTION-SCREEN: BEGIN OF BLOCK B01 WITH FRAME TITLE text-001.
  SELECT-OPTIONS:
    s_DATUV FOR gs_screen-DATUV NO-EXTENSION NO INTERVALS OBLIGATORY DEFAULT sy-datum.
  PARAMETERS P_FILE LIKE RLGRAP-FILENAME. "#EC *
SELECTION-SCREEN: END OF BLOCK B01.


*----------------------------------------------------------------------*
* INCLUDE FILES FOR PROCESSING                                         *
*----------------------------------------------------------------------*
*INCLUDE xxx.


*----------------------------------------------------------------------*
* DEFINE                                                               *
*----------------------------------------------------------------------*
DEFINE M_ALV_FIELDCAT.
  GWA_FIELD-FIELDNAME     = &1.
  GWA_FIELD-OUTPUTLEN     = &2.
  GWA_FIELD-REPTEXT_DDIC  = &3.
  GWA_FIELD-EDIT          = &4.
  GWA_FIELD-CHECKBOX      = &5.
  GWA_FIELD-REF_FIELDNAME = &6.
  GWA_FIELD-REF_TABNAME   = &7.
  GWA_FIELD-JUST          = &8.
  GWA_FIELD-NO_ZERO       = &9.
  APPEND GWA_FIELD TO GIT_FIELD.
  CLEAR GWA_FIELD.
END-OF-DEFINITION.


*----------------------------------------------------------------------*
* INITIALIZATION                                                       *
*----------------------------------------------------------------------*
INITIALIZATION.
  SSCRFIELDS-FUNCTXT_01 = '下载模板'.


*----------------------------------------------------------------------*
* AT SELECTION-SCREEN OUTPUT                                           *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM FRM_CHOOSE_FILE."选择文件
* AT SELECTION-SCREEN                                                  *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  PERFORM FRM_DOWNLOAD_TEMPLATE."下载模板


*----------------------------------------------------------------------*
* START-OF-SELECTION                                                   *
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM FRM_RETRIVE_DATA."get data
  PERFORM FRM_PROCESS_DATA."process data
  PERFORM FRM_ZUSENUM USING 3.


*----------------------------------------------------------------------*
* END-OF-SELECTION                                                     *
*----------------------------------------------------------------------*
END-OF-SELECTION.
  PERFORM frm_write_log.
  PERFORM FRM_OUTLOG.


*&---------------------------------------------------------------------*
*&      Form  FRM_CHOOSE_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_CHOOSE_FILE .
  DATA: LC_MASK TYPE CHAR30.
  LC_MASK = ' Excel Files,*.xls,All Files,*.*.'.

  CALL FUNCTION 'WS_FILENAME_GET'
   EXPORTING
     DEF_FILENAME           = '*.xls'
     DEF_PATH               = 'C:\'
     MASK                   = LC_MASK
     MODE                   = 'O'
     TITLE                  = TEXT-002
   IMPORTING
     FILENAME               = P_FILE
*     RC                     =
   EXCEPTIONS
     INV_WINSYS             = 1
     NO_BATCH               = 2
     SELECTION_CANCEL       = 3
     SELECTION_ERROR        = 4
     OTHERS                 = 5
            .
  IF SY-SUBRC <> 0 AND SY-SUBRC <> 3.
    MESSAGE TEXT-003 TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM.                    " FRM_CHOOSE_FILE


*&---------------------------------------------------------------------*
*&      Form  FRM_DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*----------------------------------------------------------------------*
FORM FRM_DOWNLOAD_TEMPLATE .
  DATA: LC_FILE TYPE RLGRAP-FILENAME.
  DATA: LC_WWWDATATAB TYPE WWWDATATAB VALUE 'MIZPPB001'.

  CASE SSCRFIELDS-UCOMM.
      WHEN'FC01'."下载模板
      "获取要下载的文件路径
      CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
         DEF_FILENAME           = 'MD_B_PP_002_BOM批量导入模板.xls'
         DEF_PATH               = 'C:\'
*         MASK                   = lc_mask
         MODE                   = 'S'
*         TITLE                  = text-005
       IMPORTING
         FILENAME               = LC_FILE
*         RC                     =
       EXCEPTIONS
         INV_WINSYS             = 1
         NO_BATCH               = 2
         SELECTION_CANCEL       = 3
         SELECTION_ERROR        = 4
         OTHERS                 = 5
                .
      IF SY-SUBRC = 0.
        "下载模板到指定路径
        CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
          EXPORTING
            KEY               =  LC_WWWDATATAB
          DESTINATION         =  LC_FILE
*         IMPORTING
*           RC                =
*         CHANGING
*           TEMP              =
                  .
      ENDIF.
  ENDCASE.
ENDFORM.                    " FRM_DOWNLOAD_TEMPLATE


转载于:https://my.oschina.net/lanzp/blog/188346

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值