免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 824 | 回复: 0
打印 上一主题 下一主题

采购订单批导 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-21 17:02 |只看该作者 |倒序浏览

TYPE-POOLS truxs.
DATA: xlstab TYPE truxs_t_text_data,
      f_size TYPE i .
PARAMETERS: filename LIKE rlgrap-filename ,
            p_doc_ty  LIKE ekko-bsart DEFAULT 'YNB',
            p_doc_da LIKE  bapimepoheader-doc_date DEFAULT sy-datum,
            p_unit LIKE bapimepoitem-price_unit DEFAULT '10'.
PARAMETERS p_price AS CHECKBOX.
DATA : lv_cancel(1) TYPE c.
DATA error TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA:BEGIN OF itb_input OCCURS 0,                            " 导入表结构
       comp_code LIKE bapimepoheader-comp_code,               "公司代码
       purch_org LIKE bapimepoheader-purch_org,               "采购组织
       pur_group LIKE bapimepoheader-pur_group,               "采购组
       vendor LIKE bapimepoheader-vendor,                     "供应商
       material LIKE bapimepoitem-material,                   "物料
       plant LIKE bapimepoitem-plant,                         "工厂
       stge_loc LIKE bapimepoitem-stge_loc,                   "库存地
       quantity LIKE bapimepoitem-quantity,                   "数量
       net_price(16) TYPE c,                                  "价格
       delivery_date LIKE bapimeposchedule-delivery_date,     "交货日期
*       short_text LIKE bapimepoitem-short_text,               "文本
END OF itb_input.
TYPES:BEGIN OF ty_item,
       material LIKE bapimepoitem-material,                   "物料
       plant LIKE bapimepoitem-plant,                         "工厂
       stge_loc LIKE bapimepoitem-stge_loc,                   "库存地
       quantity LIKE bapimepoitem-quantity,                   "数量
       net_price LIKE bapimepoitem-net_price,                 "价格
       delivery_date LIKE bapimeposchedule-delivery_date,     "交货日期
*       short_text LIKE bapimepoitem-short_text,               "文本
END OF ty_item.
DATA:BEGIN OF itb_err OCCURS 0.
        INCLUDE STRUCTURE bapiret2.
DATA:END OF itb_err.
DATA flag TYPE i.
DATA: BEGIN OF itb_po OCCURS 0,
       comp_code LIKE bapimepoheader-comp_code,               "公司代码
       purch_org LIKE bapimepoheader-purch_org,               "采购组织
       pur_group LIKE bapimepoheader-pur_group,               "采购组
       vendor LIKE bapimepoheader-vendor,                     "供应商
       item TYPE ty_item OCCURS 0,
END OF itb_po.
DATA itb_po2 LIKE itb_po OCCURS 0 WITH HEADER LINE.
DATA hd_item TYPE ty_item.
DATA zindex LIKE sy-tabix.
DATA testrun LIKE bapiflag-bapiflag.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
  PERFORM get_pc_filename.
START-OF-SELECTION.
  PERFORM upload_file TABLES itb_input.  "上传文件
  PERFORM convert.                       "转换为header-item模式
  testrun = 'X'.                         "测试运行
  flag = 0.
  PERFORM runbapi.
  LOOP AT itb_err.
    SKIP.
    WRITE : AT  3(2) itb_err-type,AT 5(150) itb_err-message.
  ENDLOOP.
  CLEAR itb_err.
  REFRESH itb_err.
END-OF-SELECTION.
  IF flag = 0.
    SET PF-STATUS 'COMMAND'.
  ENDIF.
AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN '&RUN'.
      IF flag = 0.
        testrun = ''.                         "正式运行
        PERFORM runbapi.
        COMMIT WORK.
        MESSAGE  '导入成功!' TYPE 'I'.
        LOOP AT itb_err.
          IF itb_err-type = 'S'.
            SKIP.
            WRITE : AT  3(2) itb_err-type,AT 5(50) itb_err-message.
          ENDIF.
        ENDLOOP.
        SET PF-STATUS 'DEFAULT' IMMEDIATELY .
      ELSE.
        MESSAGE  '导入失败!请核查错误!' TYPE 'E'.
      ENDIF.
    WHEN '&CAN'.
      EXIT.
  ENDCASE.
*&---------------------------------------------------------------------*
*&      Form  upload_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FTAB       text
*----------------------------------------------------------------------*
FORM upload_file TABLES ftab.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 0
      text       = '转换Ing。。'.
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_tab_raw_data       = xlstab
      i_filename           = filename
    TABLES
      i_tab_converted_data = ftab
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.
  IF sy-subrc  0.
    MESSAGE '转换Excel表有错误发生!' TYPE 'E' .
  ENDIF.
ENDFORM.                    " UPLOAD_FILE
*&--------------------------------------------------------------------*
*&      Form  get_pc_filename
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM get_pc_filename.
  CALL FUNCTION 'WS_FILENAME_GET'
      EXPORTING
*         def_filename     = PAY_FILE
*         DEF_PATH         = ' '
*          mask             = ',*.XLS ,*.XLS.'
          mode             = '0'
          title            = 'Get the import file name'
     IMPORTING
          filename         = filename
*         RC               =
     EXCEPTIONS
          inv_winsys       = 1
          no_batch         = 2
          selection_cancel = 3
          selection_error  = 4
          OTHERS           = 5.
  IF sy-subrc  0.
*    MESSAGE 'ERROR' TYPE 'E' .
  ENDIF.
ENDFORM.                    " GET_PC_FILENAME
*&---------------------------------------------------------------------*
*&      Form  convert
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM convert.
  DATA count TYPE i.
  DATA line TYPE i.
  LOOP AT itb_input.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = itb_input-material
      IMPORTING
        output = itb_input-material.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = itb_input-vendor
      IMPORTING
        output = itb_input-vendor.
    MODIFY itb_input INDEX sy-tabix.
  ENDLOOP.
*********************************************************转换为表头和表行结构
  LOOP AT itb_input.
    CLEAR hd_item.
    CLEAR itb_po.
    READ TABLE itb_po WITH KEY comp_code = itb_input-comp_code
                               purch_org = itb_input-purch_org
                               pur_group = itb_input-pur_group
                               vendor  = itb_input-vendor.
    IF sy-subrc = 0.
      zindex = sy-tabix.
      MOVE-CORRESPONDING itb_input TO hd_item.
      APPEND hd_item TO itb_po-item.
      MODIFY itb_po INDEX zindex.
    ELSE.
      MOVE-CORRESPONDING itb_input TO itb_po.
      MOVE-CORRESPONDING itb_input TO hd_item.
      APPEND hd_item TO itb_po-item.
      APPEND itb_po.
    ENDIF.
  ENDLOOP.
******************************************************** 拆分,最大行项目为300
  LOOP AT itb_po.
    DESCRIBE TABLE itb_po-item LINES  line.
    IF line


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/68743/showart_1006762.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP