• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
^ω^SAp傻X^o^
博客园    首页    新随笔    联系   管理    订阅  订阅
物料主数据批导

模板见文件

*&---------------------------------------------------------------------*
*& Report ZMMR004
*&---------------------------------------------------------------------*
*& 版本号 日期 作者 修改描述 ReqID
*& V001 2016.9.29 刘容  物料主数据批导
* 如果模板更新请到SMW0更新 ZMMR004.XLS模板
*&---------修改记录
*&------- 未来计划价格  ZPLPR  -->  ZPLP1
*&-------物料主数据添加
*&---------------------------------------------------------------------*
REPORT zmmr004.
INCLUDE zmmr004_top.
INCLUDE zmmr004_sel.
INCLUDE zmmr004_frm.

INITIALIZATION.
  functxt-icon_id   = icon_export.
  functxt-quickinfo = '模版下载'(001).
  functxt-icon_text = '模版下载'(001).
  sscrfields-functxt_01 = functxt.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR material.
*&------------选择路径
  PERFORM select_path.

AT SELECTION-SCREEN.
*&--------------模板下载
  IF sscrfields-ucomm = 'FC01'.
    PERFORM temp_excel_get USING 'ZMMR004.XLS'.
  ELSEIF sscrfields-ucomm = 'ONLI'.
*&--------------执行上传EXCEL
    IF material IS  NOT INITIAL.
*&--------------数据导入
      PERFORM upload_material_data.
*&-------------ALV展示批导的数据
*&-------------清空fieldcatalog
      clear fieldcatalog[].
      PERFORM build_fieldcatalog_before.
      PERFORM build_layout.
      PERFORM display_alv_report.

    ENDIF.
  ENDIF.
*&---------------------------------------------------------------------*
*&  包含                ZMMR004_TOP
*&---------------------------------------------------------------------*

TABLES: sscrfields.
TYPE-POOLS: slis.
DATA: functxt TYPE smp_dyntxt.
*&-------alv类型定义
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.
*&---------出错标识
DATA:l_flag TYPE c.
DATA: t_land1 TYPE t001w-land1.
DATA:gt_data TYPE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE."保存EXCEL数据的内表
FIELD-SYMBOLS: <fls_data> TYPE alsmex_tabline."同上,结构
*&---------bapi参考的类型
DATA: headdata             TYPE bapimathead,
      clientdata           TYPE bapi_mara,
      clientdatax          TYPE bapi_marax,
      plantdata            TYPE bapi_marc,
      plantdatax           TYPE bapi_marcx,
      storagelocationdata  TYPE bapi_mard,
      storagelocationdatax TYPE bapi_mardx,
      salesdata            TYPE bapi_mvke,
      salesdatax           TYPE bapi_mvkex,
      valuationdata        TYPE bapi_mbew,
      valuationdatax       TYPE bapi_mbewx,
      return               TYPE bapiret2.
DATA: materialdescription TYPE bapi_makt OCCURS 0 WITH HEADER LINE,
      taxclassifications  TYPE bapi_mlan OCCURS 0 WITH HEADER LINE,
      unitsofmeasure      TYPE bapi_marm OCCURS 0 WITH HEADER LINE,
      unitsofmeasurex     TYPE bapi_marmx OCCURS 0 WITH HEADER LINE.

*&------------批导类型定义
TYPES : BEGIN OF ty_base,

          material(40)     TYPE c,    "物料号 y
          matl_desc_zh(40) TYPE c,    "物料描述(中文)y
          matl_type(4)     TYPE c,    "物料类型
          base_uom(3)      TYPE c,    "基本计量单位y
          matl_group(9)    TYPE c,    "物料组y

          extmatlgrp(18)   TYPE c , "外部物料组 (系列)
          division(2)      TYPE c,    "产品组(品牌)
          old_mat_no(18)   TYPE c,    "旧物料号 y
          mstae(2)         TYPE c,
          groes(32)        TYPE c,

          zsku(18)         TYPE c,    "SKU号
          zfbm(20)         TYPE c,    "父编码
          zwzfn(20)        TYPE c, "物资分类/柜台分类
          zcknx(20)        TYPE c, "仓库类型
          zggxh(20)        TYPE c,   "规格型号s

          ztysj            TYPE mara-ztysj , "停用时间  /备注一
          zpm(1)           TYPE c , "P/M码
          zpsdj(10)        TYPE c, " 配送等级 /备注2
          zbzq(10)         TYPE c, "保质期
          numerator(5)     TYPE c,     "单位分子(包装数量)

          meinh(3)         TYPE c,  "包装单位
*&-----------附加数据
          message(60)      TYPE c,    "消息
          light(4)         TYPE c,    "执行情况
          num(3)           TYPE c,     "当前行数
          type(1)          TYPE c, "执行结果
        END OF ty_base.
DATA : gs_base TYPE ty_base.
DATA : gt_base LIKE TABLE OF gs_base.
*&---------指向 GT_BASE的指针
FIELD-SYMBOLS : <lfs_base> LIKE LINE OF gt_base.
TYPES : BEGIN OF ty_sale,
          material(40)  TYPE c,    "物料号 y
          plant(4)      TYPE c,    "工厂
          sales_org(4)  TYPE c,    "销售组织
          distr_chan(2) TYPE c,    "分销渠道
          delyg_plnt(4) TYPE c,    "交货工厂

          vmstd(8)      TYPE c,  "停用日期
          acct_assgt(2) TYPE c ,    "科目设置组
          provg(2)      TYPE c ,  "配送等级
          mvgr1(3)      TYPE c,     "渠道分类
          mvgr2(3)      TYPE c,     "系列

          mvgr3(3)      TYPE c,     "功能
          mvgr4(3)      TYPE c,     "停用状态
          mvgr5(3)      TYPE c ,    "单品/套装
          taxclass_1(1) TYPE c,    "物料的税分类
          loadinggrp(4) TYPE c,    " 装载组 :CLIENTDATA"
          prat1(4)      TYPE c, "产品属性1
*&-----------附加数据
          message(60)   TYPE c,    "消息
          light(4)      TYPE c,    "执行情况
          type(1)       TYPE c, "执行结果
        END OF ty_sale.

DATA : gs_sale TYPE ty_sale.
DATA : gt_sale LIKE TABLE OF gs_sale.
*&---------指向 GT_sale的指针
FIELD-SYMBOLS : <lfs_sale> LIKE LINE OF gt_sale.


TYPES : BEGIN OF ty_werks ,
          material(40) TYPE c,    "物料号 y
          plant(4)     TYPE c,    "工厂
*&-----------采购视图
          pur_group(3) TYPE c,    "采购组
*          fabkz(1)     TYPE c, "JIT交货计划
          kordb(1)     TYPE c, "源清单
          kautb(1)     TYPE c, "自动采购订单
          bstme(3)     TYPE c, "采购单位
          ekwsl(4)     TYPE c, "采购价值码

*&-----------生产视图
          dismm(2)     TYPE c, " 物料需求计划类型    CHAR  2
          disgr(4)     TYPE c, "MRP组 "新增
          dispo(3)     TYPE c, " MRP控制者    CHAR  3
          plifz(3)     TYPE c, " 计划交货时间以天计     DEC 3

          disls(2)     TYPE c, " 批量 (物料计划)   CHAR  2 0
          ausss(5)     TYPE c, " 装配报废百分比   DEC 5 2
          beskz(1)     TYPE c, " 采购类型    CHAR  1 0
          sobsl(2)     TYPE c, " 特殊采购类型    CHAR  2 0
          eisbe(13)    TYPE c, "  安全库存    QUAN  13  3

          bstmi(13)    TYPE c, "  最小批量    QUAN  13  3
          bstma(13)    TYPE c, "  最大批量大小    QUAN  13  3
          lgpro(4)     TYPE c, " 生产仓储地点    CHAR  4
          lgfsb(4)     TYPE c, " 外部仓储地点    CHAR  4
          strgr(2)     TYPE c, " 策略组   CHAR  2

          vrmod(1)     TYPE c, " 消耗模式    CHAR  1
          vint1(3)     TYPE c, " 消耗期间:逆向   NUMC  3 0
          vint2(3)     TYPE c, " 消耗时期-向前   NUMC  3 0
          mtvfp(2)     TYPE c, " 可用性检查的检查组   CHAR  2
          kzaus(1)     TYPE c, " 中止指示符     CHAR  1 0

          ausdt(8)     TYPE c, " 中断日期    DATS  8 0
          nfmat(40)    TYPE c, "  后续物料    CHAR  40  0
          fevor(3)     TYPE c, " 生产管理员     CHAR  3
          bearz(5)     TYPE c, " 处理时间    DEC 5 2
          basmg(13)    TYPE c, "  基准数量    QUAN  13  3
*&---------------质量视图
          art1(8)      TYPE c , "检验类型
          aktiv1(1)    TYPE c, "活动的
          art2(8)      TYPE c , "检验类型
          aktiv2(1)    TYPE c, "活动的
          art3(8)      TYPE c , "检验类型
          aktiv3(1)    TYPE c, "活动的
          qmata(6)     TYPE c, "QM授权组
*&---------------财务会计
          losgr(13)    TYPE c , " 批量产品成本核算    QUAN  13
          vprsv(1)     TYPE c , " 价格控制指示符     CHAR  1 0
          stprs(11)    TYPE c , " 标准价格    CURR  11  2
          peinh(5)     TYPE c , " 价格单位    DEC 5 0
          bklas(4)     TYPE c , " 评估类     CHAR  4 0

          bwprh(11)    TYPE c , " 基于商法的估价价格   CURR  11  2
          bwph1(11)    TYPE c , " 基于商业法律的估价价格   CURR  11  2
          vjbwh(11)    TYPE c , " 基于商业法律的估价价格   CURR  11  2
          ekalr(1)     TYPE c , " 用QS的成本估算    CHAR  1
          hkmat(1)     TYPE c , " 物料来源    CHAR  1

          zplp1(11)    TYPE c , " 未来计划价格    CURR  11  2
          zpld1(8)     TYPE c , "计划价格日期
*&-----------附加数据
          message(60)  TYPE c,    "消息
          light(4)     TYPE c,    "执行情况
          type(1)      TYPE c, "执行结果
        END OF ty_werks.


DATA : gs_werks TYPE ty_werks.
DATA : gt_werks LIKE TABLE OF gs_werks.
*&---------指向 GT_sale的指针
FIELD-SYMBOLS : <lfs_werks> LIKE LINE OF gt_werks.




DATA: BEGIN OF gt_mara OCCURS 0,
        matnr TYPE mara-matnr,
      END OF gt_mara.

DATA : gt_zmmt000 TYPE TABLE OF zmmt000.
DATA : gs_zmmt000 LIKE LINE OF gt_zmmt000.


DATA : gt_zmmt001 TYPE TABLE OF zmmt001.
DATA : gs_zmmt001 LIKE LINE OF gt_zmmt001.


DATA : gt_zmmt002 TYPE TABLE OF zmmt002.
DATA : gs_zmmt002 LIKE LINE OF gt_zmmt002.


DATA : gt_zmmt003 TYPE TABLE OF zmmt003.
DATA : gs_zmmt003 LIKE LINE OF gt_zmmt003.

DATA : gt_zmmt004 TYPE TABLE OF zmmt004.
DATA : gs_zmmt004 LIKE LINE OF gt_zmmt004.


DATA : g_click TYPE c .

DATA: gd_count   TYPE string, "上传内表的总行数
      l_index    TYPE sy-index, "当前处理的行数
      l_text(50) TYPE c. "拼接字符串
*&---------------------------------------------------------------------*
*&  包含                ZMMR004_SEL
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-002.
PARAMETERS: material LIKE rlgrap-filename. "物料导入摸版
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN COMMENT 01(20) TEXT-h01.
SELECTION-SCREEN: FUNCTION KEY 1.

SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-003.
PARAMETERS: p_base  RADIOBUTTON GROUP G2."基本视图
PARAMETERS: p_sale  RADIOBUTTON GROUP G2."销售视图
PARAMETERS: p_werks  RADIOBUTTON GROUP G2."工厂视图

SELECTION-SCREEN END OF BLOCK blk2.
*----------------------------------------------------------------------*
***INCLUDE ZMMR004_FRM.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  SELECT_PATH
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM select_path .
  DATA v_material LIKE rlgrap-filename.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      mask             = ',*.* ,*.*.'
      mode             = '0'
      title            = '请选择要上传的信息文件'
    IMPORTING
      filename         = v_material
    EXCEPTIONS
      inv_winsys       = 1
      no_batch         = 2
      selection_cancel = 3
      selection_error  = 4
      OTHERS           = 5.
  IF sy-subrc <> 0.

  ENDIF.

  material = v_material.
ENDFORM.


FORM temp_excel_get USING p_objid TYPE wwwdata-objid.
  DATA: l_objdata     LIKE wwwdatatab,
        l_destination LIKE rlgrap-filename,
        l_rc          LIKE sy-subrc,
        l_errtxt      TYPE string.
  DATA: l_fullpath  TYPE string,
        l_extension TYPE string,
        l_fname     LIKE rlgrap-filename,
        l_formkey   LIKE  wwwdatatab.

  l_extension = p_objid.
  PERFORM get_file_name USING '.xls'
                              'Excel|*.xls;'
                     CHANGING l_fullpath.
  IF l_fullpath = space.
    MESSAGE '请选择下载文件名' TYPE 'E'.
  ELSE.
    CONCATENATE l_fullpath '' INTO l_fname.
    SELECT SINGLE relid objid
      FROM wwwdata
      INTO CORRESPONDING FIELDS OF l_objdata
      WHERE relid = 'MI'
        AND objid = p_objid .

    IF sy-subrc NE 0 OR l_objdata-objid = space.
      MESSAGE e001(00) WITH '文件不存在!'.
    ELSE.
      CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
        EXPORTING
          key         = l_objdata
          destination = l_fname
        IMPORTING
          rc          = l_rc
        CHANGING
          temp        = l_fname.
      IF l_rc NE 0.
        MESSAGE e001(00) WITH '文件下载失败!'.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.



FORM get_file_name USING p_extension
                         p_file_filter
                CHANGING p_fullpath.
  DATA: l_filename TYPE string,
        l_path     TYPE string,
        l_fullpath TYPE string,
        l_titile   TYPE string,
        l_init_dir TYPE string.

  CLEAR p_fullpath.
  l_titile    = TEXT-t04.
  l_init_dir  = TEXT-t03.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title         = l_titile
      default_extension    = '.xls'
      initial_directory    = l_init_dir
      prompt_on_overwrite  = 'X'
      file_filter          = p_file_filter
    CHANGING
      filename             = l_filename
      path                 = l_path
      fullpath             = l_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  p_fullpath = l_fullpath.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_MATERIAL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM upload_material_data .
*&-------------清空所有数据
  CLEAR : gt_base , gt_werks , gt_sale ,gt_data.
  IF p_base = 'X'.
    CALL FUNCTION 'ZXXX001'
      EXPORTING
        filename                = material
        i_begin_col             = '1' "起始列号
        i_begin_row             = '4' "起始行号
        i_end_col               = '24' "终止列号
        i_end_row               = '65535' "终止行号
        im_sheet_name           = 1
      TABLES
        intern                  = gt_data[]
      EXCEPTIONS
        inconsistent_parameters = 1
        upload_ole              = 2
        OTHERS                  = 3.
    IF gt_data[] IS INITIAL.
      MESSAGE '清单中无数据' TYPE 'E'.
    ENDIF.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

*格式转化
    LOOP AT gt_data ASSIGNING <fls_data>.

      CASE <fls_data>-col.
        WHEN '0001'.
          gs_base-material = <fls_data>-value.
        WHEN '0002'.
          gs_base-matl_desc_zh = <fls_data>-value.
        WHEN '0003'.
          gs_base-matl_type = <fls_data>-value.
        WHEN '0004'.
          gs_base-base_uom = <fls_data>-value.
        WHEN '0005'.
          gs_base-matl_group = <fls_data>-value.
        WHEN '0006'.
          gs_base-extmatlgrp = <fls_data>-value.
        WHEN '0007'.
          gs_base-division = <fls_data>-value.
        WHEN '0008'.
          gs_base-old_mat_no = <fls_data>-value.
        WHEN '0009'.
          gs_base-mstae =  <fls_data>-value.
        WHEN '0010'.
          gs_base-groes =  <fls_data>-value.
        WHEN '0011'.
          gs_base-zsku = <fls_data>-value.
        WHEN '0012'.
          gs_base-zfbm = <fls_data>-value.
        WHEN '0013'.
          gs_base-zwzfn = <fls_data>-value.
        WHEN '0014'.
          gs_base-zcknx = <fls_data>-value.
        WHEN '0015'.
          gs_base-zggxh = <fls_data>-value.
        WHEN '0016'.
          gs_base-ztysj = <fls_data>-value.
        WHEN '0017'.
          gs_base-zpm = <fls_data>-value.
        WHEN '0018'.
          gs_base-zpsdj = <fls_data>-value.
        WHEN '0019'.
          gs_base-zbzq = <fls_data>-value.
        WHEN '0020'.
          gs_base-numerator = <fls_data>-value.
        WHEN '0021'.
          gs_base-meinh = <fls_data>-value.
      ENDCASE.

      AT END OF row.
        APPEND gs_base TO gt_base.
        CLEAR gs_base.
      ENDAT.

    ENDLOOP.
    gd_count = lines( gt_base ).
  ENDIF.
  IF p_sale = 'X'.
    CALL FUNCTION 'ZXXX001'
      EXPORTING
        filename                = material
        i_begin_col             = '1' "起始列号
        i_begin_row             = '4' "起始行号
        i_end_col               = '20' "终止列号
        i_end_row               = '65535' "终止行号
        im_sheet_name           = 2
      TABLES
        intern                  = gt_data[]
      EXCEPTIONS
        inconsistent_parameters = 1
        upload_ole              = 2
        OTHERS                  = 3.
    IF gt_data[] IS INITIAL.
      MESSAGE '清单中无数据' TYPE 'E'.
    ENDIF.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    gd_count = lines( gt_data ).
*格式转化
    LOOP AT gt_data ASSIGNING <fls_data>.
      CASE <fls_data>-col.
        WHEN '0001'.
          gs_sale-material = <fls_data>-value.
        WHEN '0002'.
          gs_sale-plant = <fls_data>-value.
        WHEN '0003'.
          gs_sale-sales_org = <fls_data>-value.
        WHEN '0004'.
          gs_sale-distr_chan = <fls_data>-value.
        WHEN '0005'.
          gs_sale-delyg_plnt = <fls_data>-value.
        WHEN '0006'.
          gs_sale-vmstd = <fls_data>-value.
        WHEN '0007'.
          gs_sale-acct_assgt = <fls_data>-value.
        WHEN '0008'.
          gs_sale-provg = <fls_data>-value.
        WHEN '0009'.
          gs_sale-mvgr1 = <fls_data>-value.
        WHEN '0010'.
          gs_sale-mvgr2 = <fls_data>-value.
        WHEN '0011'.
          gs_sale-mvgr3 = <fls_data>-value.
        WHEN '0012'.
          gs_sale-mvgr4 = <fls_data>-value.
        WHEN '0013'.
          gs_sale-mvgr5 = <fls_data>-value.
        WHEN '0014'.
          gs_sale-taxclass_1 = <fls_data>-value.
        WHEN '0015'.
          gs_sale-loadinggrp = <fls_data>-value.
        WHEN '016'.
          gs_sale-prat1 = <fls_data>-value.
      ENDCASE.

      AT END OF row.
        APPEND gs_sale TO gt_sale.
        CLEAR gs_sale.
      ENDAT.
    ENDLOOP.
    gd_count = lines( gt_sale ).
  ENDIF.

  IF p_werks = 'X'.
    CALL FUNCTION 'ZXXX001'
      EXPORTING
        filename                = material
        i_begin_col             = '1' "起始列号
        i_begin_row             = '4' "起始行号
        i_end_col               = '53' "终止列号
        i_end_row               = '65535' "终止行号
        im_sheet_name           = 3
      TABLES
        intern                  = gt_data[]
      EXCEPTIONS
        inconsistent_parameters = 1
        upload_ole              = 2
        OTHERS                  = 3.
    IF gt_data[] IS INITIAL.
      MESSAGE '清单中无数据' TYPE 'E'.
    ENDIF.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    gd_count = lines( gt_data ).
*格式转化
    LOOP AT gt_data ASSIGNING <fls_data>.
      CASE <fls_data>-col.
        WHEN '0001'.
          gs_werks-material = <fls_data>-value.
        WHEN '0002'.
          gs_werks-plant = <fls_data>-value.
        WHEN '0003'.
          gs_werks-pur_group = <fls_data>-value.
        WHEN '0004'.
          gs_werks-kordb = <fls_data>-value.
        WHEN '0005'.
          gs_werks-kautb = <fls_data>-value.
        WHEN '0006'.
          gs_werks-bstme = <fls_data>-value.
        WHEN '0007'.
          gs_werks-ekwsl = <fls_data>-value.
        WHEN '0008'.
          gs_werks-dismm = <fls_data>-value.
        WHEN '0009'.
          gs_werks-disgr = <fls_data>-value.
        WHEN '0010'.
          gs_werks-dispo = <fls_data>-value.
        WHEN '0011'.
          gs_werks-plifz = <fls_data>-value.
        WHEN '0012'.
          gs_werks-disls = <fls_data>-value.
        WHEN '0013'.
          gs_werks-ausss = <fls_data>-value.
        WHEN '0014'.
          gs_werks-beskz = <fls_data>-value.
        WHEN '0015'.
          gs_werks-sobsl = <fls_data>-value.
        WHEN '0016'.
          gs_werks-eisbe = <fls_data>-value.
        WHEN '0017'.
          gs_werks-bstmi = <fls_data>-value.
        WHEN '0018'.
          gs_werks-bstma = <fls_data>-value.
        WHEN '0019'.
          gs_werks-lgpro = <fls_data>-value.
        WHEN '0020'.
          gs_werks-lgfsb = <fls_data>-value.
        WHEN '0021'.
          gs_werks-strgr = <fls_data>-value.
        WHEN '0022'.
          gs_werks-vrmod = <fls_data>-value.
        WHEN '0023'.
          gs_werks-vint1 = <fls_data>-value.
        WHEN '0024'.
          gs_werks-vint2 = <fls_data>-value.
        WHEN '0025'.
          gs_werks-mtvfp = <fls_data>-value.
        WHEN '0026'.
          gs_werks-kzaus = <fls_data>-value.
        WHEN '0027'.
          gs_werks-ausdt = <fls_data>-value.
        WHEN '0028'.
          gs_werks-nfmat = <fls_data>-value.
        WHEN '0029'.
          gs_werks-fevor = <fls_data>-value.
        WHEN '0020'.
          gs_werks-bearz = <fls_data>-value.
        WHEN '0031'.
          gs_werks-basmg = <fls_data>-value.
        WHEN '0032'.
          gs_werks-art1 = <fls_data>-value.
        WHEN '0033'.
          gs_werks-aktiv1 = <fls_data>-value.
        WHEN '0034'.
          gs_werks-art2 = <fls_data>-value.
        WHEN '0035'.
          gs_werks-aktiv2 = <fls_data>-value.
        WHEN '0036'.
          gs_werks-art3 = <fls_data>-value.
        WHEN '0037'.
          gs_werks-aktiv3 = <fls_data>-value.
        WHEN '0038'.
          gs_werks-qmata = <fls_data>-value.
        WHEN '0039'.
          gs_werks-losgr = <fls_data>-value.
        WHEN '0040'.
          gs_werks-vprsv = <fls_data>-value.
        WHEN '0041'.
          gs_werks-stprs = <fls_data>-value.
        WHEN '0042'.
          gs_werks-peinh = <fls_data>-value.
        WHEN '0043'.
          gs_werks-bklas = <fls_data>-value.
        WHEN '0044'.
          gs_werks-bwprh = <fls_data>-value.
        WHEN '0045'.
          gs_werks-bwph1 = <fls_data>-value.
        WHEN '0046'.
          gs_werks-vjbwh = <fls_data>-value.
        WHEN '0047'.
          gs_werks-ekalr = <fls_data>-value.
        WHEN '0048'.
          gs_werks-hkmat = <fls_data>-value.
        WHEN '0049'.
          gs_werks-zplp1 = <fls_data>-value.
        WHEN '0050'.
          gs_werks-zpld1 = <fls_data>-value.
      ENDCASE.

      AT END OF row.
        APPEND gs_werks TO gt_werks.
        CLEAR gs_werks.
      ENDAT.
    ENDLOOP.
    gd_count = lines( gt_werks ).
  ENDIF.
ENDFORM.

*&-------------单位转换
FORM conversion_exit_cunit_input CHANGING p_i_data.
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
    EXPORTING
      input          = p_i_data
      language       = sy-langu
    IMPORTING
      output         = p_i_data
    EXCEPTIONS
      unit_not_found = 1
      OTHERS         = 2.
ENDFORM.

*&-------------单位转换
FORM conversion_exit_cunit_output CHANGING p_i_data.
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
    EXPORTING
      input          = p_i_data
      language       = sy-langu
    IMPORTING
      output         = p_i_data
    EXCEPTIONS
      unit_not_found = 1
      OTHERS         = 2.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  SAVE_MATERIAL_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM save_material_data .
  DATA: lt_number LIKE TABLE OF bapimatinr,
        ls_number LIKE LINE OF lt_number.
  DATA : l_num TYPE i  VALUE  1.
  DATA :lv_idx  TYPE string.
*&---------------基本视图
  IF p_base = 'X' AND g_click NE 'X'.
*&------------取自建表里面的数据
    SELECT
      mandt
      zfbm
      zfbmmc
      INTO CORRESPONDING FIELDS OF TABLE gt_zmmt000
      FROM zmmt000.
    SELECT
        madnt
        zcknx
        zcknxmc
      INTO CORRESPONDING FIELDS OF TABLE gt_zmmt001
      FROM zmmt001.
    SELECT
      mandt
      zwzfn
      zwzfnmc
    INTO CORRESPONDING FIELDS OF TABLE gt_zmmt002
      FROM zmmt002
      .
    SELECT
      mandt
      zpm
      zpmmc
      INTO CORRESPONDING FIELDS OF TABLE gt_zmmt003
      FROM zmmt003
      .
    SELECT
      mandt
      zsyb
      zpsdj
INTO TABLE gt_zmmt004
FROM zmmt004
.
*&--------------物料主数据加前导零
    LOOP AT gt_base ASSIGNING <lfs_base>.
*&-----单位装换  基本单位
      PERFORM conversion_exit_cunit_input CHANGING <lfs_base>-base_uom. "基本单位
      PERFORM conversion_exit_cunit_input CHANGING <lfs_base>-meinh. "订单单位
*&--------------物料主数据加前导零
      CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
        EXPORTING
          input  = <lfs_base>-material
        IMPORTING
          output = <lfs_base>-material.
    ENDLOOP.
*&---------------取出物料数据
    IF p_base IS NOT INITIAL.
      SELECT
        matnr
     INTO TABLE gt_mara
      FROM mara
      FOR ALL ENTRIES IN gt_base
      WHERE
        matnr = gt_base-material.
    ENDIF.
    LOOP AT gt_base ASSIGNING <lfs_base>.
      lv_idx = sy-tabix.

      "进度条
      l_text = l_index.
      CONDENSE l_text.
      CONCATENATE '处理第' l_text '条数据/' gd_count INTO l_text.
      PERFORM set_indicator USING '' l_text.
      l_index = l_index + 1.
*&---------------初始化BAPI变量
*&---------------初始化标识
      l_flag = 0.
      "      l_num = 1.
      <lfs_base>-num = l_num.
      l_num = l_num + 1.
*&-------------检查物资分类,仓库类型 ,P/M码,    父编码
      IF <lfs_base>-zpm IS NOT INITIAL.
        READ TABLE gt_zmmt003 INTO gs_zmmt003 WITH KEY zpm = <lfs_base>-zpm.
        IF sy-subrc <> 0 .
          l_flag = 1.
          <lfs_base>-message = 'P/M错误填写错误'.
          <lfs_base>-light = '@5C@'.    "红灯
          <lfs_base>-type = 'E'.
        ENDIF.
      ENDIF.

      IF <lfs_base>-zwzfn IS NOT INITIAL.
        READ TABLE gt_zmmt002 INTO gs_zmmt002 WITH KEY zwzfn = <lfs_base>-zwzfn.
        IF sy-subrc <> 0 .
          l_flag = 1.
          <lfs_base>-message = '物资分类填写错误'.
          <lfs_base>-light = '@5C@'.    "红灯
          <lfs_base>-type = 'E'.
        ENDIF.
      ENDIF.

      IF <lfs_base>-zcknx IS NOT INITIAL.
        READ TABLE gt_zmmt001 INTO gs_zmmt001 WITH KEY zcknx = <lfs_base>-zcknx.
        IF sy-subrc <> 0 .
          l_flag = 1.
          <lfs_base>-message = '仓库类型填写错误'.
          <lfs_base>-light = '@5C@'.    "红灯
          <lfs_base>-type = 'E'.
        ENDIF.
      ENDIF.

      IF <lfs_base>-zfbm IS NOT INITIAL.
        READ TABLE gt_zmmt000 INTO gs_zmmt000 WITH KEY zfbm = <lfs_base>-zfbm.
        IF sy-subrc <> 0 .
          l_flag = 1.
          <lfs_base>-message = '父编码填写错误'.
          <lfs_base>-light = '@5C@'.    "红灯
          <lfs_base>-type = 'E'.
        ENDIF.
      ENDIF.

      IF <lfs_base>-zpsdj IS NOT INITIAL.
        READ TABLE gt_zmmt004 INTO gs_zmmt004 WITH KEY zpsdj = <lfs_base>-zpsdj.
        IF sy-subrc <> 0 .
          l_flag = 1.
          <lfs_base>-message = '配送等级填写错误'.
          <lfs_base>-light = '@5C@'.    "红灯
          <lfs_base>-type = 'E'.
        ENDIF.
      ENDIF.
*&--------------如果物料类型没给不执行BAPI
      IF <lfs_base>-matl_type IS INITIAL.
        l_flag = 1.
        <lfs_base>-message = '物料类型不能为空'.
        <lfs_base>-light = '@5C@'.    "红灯
*&-----------------------外部给号
      ELSEIF <lfs_base>-matl_type = 'ZDYL' OR
        <lfs_base>-matl_type = 'ZBCP' OR
        <lfs_base>-matl_type = 'ZDBC' OR
        <lfs_base>-matl_type = 'ZSBP' OR
        <lfs_base>-matl_type = 'ZSYL'  .
*&--------物料为空
        IF <lfs_base>-material IS  INITIAL.
          l_flag = 1.
          <lfs_base>-message = '外部编码类型请给物料号'.
          <lfs_base>-light = '@5C@'.    "红灯
          <lfs_base>-type = 'E'.
        ELSE.
*&--------物料号存在也报错
          READ TABLE gt_mara WITH KEY matnr = <lfs_base>-material.
          IF sy-subrc = 0.
            l_flag = 1.
            <lfs_base>-message = '物料号已存在'.
            <lfs_base>-light = '@5C@'.    "红灯
            <lfs_base>-type = 'E'.
          ELSE.
*&---------截取物料号的后面18位
            " <lfs_base>-material =  <lfs_base>-material+22(18).
            headdata-material  =  <lfs_base>-material .
          ENDIF.
        ENDIF.
      ELSE.

        IF <lfs_base>-material IS NOT INITIAL .
          READ TABLE gt_mara WITH KEY matnr = <lfs_base>-material.
          IF sy-subrc = 0.
            l_flag = 1.
            <lfs_base>-message = '物料号已存在'.
            <lfs_base>-light = '@5C@'.    "红灯
            <lfs_base>-type = 'E'.
          ENDIF.
          headdata-material  =  <lfs_base>-material .
        ELSE.
*&--------系统流水号
          CLEAR :  lt_number.
          CALL FUNCTION 'BAPI_MATERIAL_GETINTNUMBER'
            EXPORTING
              material_type   = <lfs_base>-matl_type
            TABLES
              material_number = lt_number.

          READ TABLE lt_number INTO ls_number INDEX 1.
          IF sy-subrc = 0.
            <lfs_base>-material = ls_number-material.
            headdata-material        =  <lfs_base>-material."物料号

          ENDIF.
        ENDIF.
      ENDIF.
*&---------------基本视图
      headdata-basic_view      = 'X'.

      headdata-ind_sector      = 'C'."行业类型【组织级别】
      headdata-matl_type       = <lfs_base>-matl_type."物料类型【组织级别】

      materialdescription-langu = '1'.
      materialdescription-matl_desc = <lfs_base>-matl_desc_zh.
      APPEND materialdescription.

      clientdata-base_uom =  <lfs_base>-base_uom. "基本计量单位
      clientdatax-base_uom = 'X'.
      clientdata-matl_group =  <lfs_base>-matl_group."物料组
      clientdatax-matl_group = 'X'.

      clientdata-extmatlgrp =  <lfs_base>-extmatlgrp."外部物料组(系列)
      clientdatax-extmatlgrp = 'X'.

      clientdata-old_mat_no  =  <lfs_base>-old_mat_no."旧物料号
      clientdatax-old_mat_no = 'X'.

      clientdata-pur_status = <lfs_base>-mstae.
      clientdatax-pur_status = 'X'.

      clientdata-size_dim = <lfs_base>-groes.
      clientdatax-size_dim = 'X'.
      "       clientdata-old_mat_no_long = <lfs_base>-old_mat_no."旧物料号 LONG
      "      clientdatax-old_mat_no_long = 'X'.

      clientdata-division = <lfs_base>-division.  "产品组
      clientdatax-division = 'X'.
*&-----------------------------------------------------------------------&*
***20.01.2017 21:37:02    HANDLR********************新增开始*
*&-----------科目设置组
      clientdata-item_cat = 'NORM'.
      clientdatax-item_cat = 'X'.
***20.01.2017 21:37:02    HANDLR********************新增结束*
*&-----------------------------------------------------------------------&*
*&--------------单位
      IF <lfs_base>-meinh IS NOT INITIAL.

        unitsofmeasure-alt_unit =  <lfs_base>-meinh.
        unitsofmeasure-alt_unit_iso  =  <lfs_base>-meinh.
        unitsofmeasure-numerator = <lfs_base>-numerator.
        unitsofmeasure-denominatr = 1.   "分母固定为1
        unitsofmeasure-gross_wt = 0 . "毛重
        APPEND unitsofmeasure.
        unitsofmeasurex-alt_unit     = <lfs_base>-meinh.
        unitsofmeasurex-alt_unit_iso = <lfs_base>-meinh.
        unitsofmeasurex-numerator    = 'X'.
        unitsofmeasurex-denominatr   = 'X'.
        unitsofmeasurex-gross_wt     = 'X'.
        APPEND unitsofmeasurex.
      ENDIF.
*&-----------------------防止重复提交
      IF l_flag = 0 AND <lfs_base>-type IS INITIAL.
        CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
          EXPORTING
            headdata            = headdata    "表头数据
            clientdata          = clientdata  " 基本数据
            clientdatax         = clientdatax
          " plantdata           = plantdata   " 生产
          " plantdatax          = plantdatax
          " salesdata           = salesdata   "销售
          " salesdatax          = salesdatax
          " storagelocationdata = storagelocationdata  "库存
          " storagelocationdatax = storagelocationdatax
          " valuationdata       = valuationdata  "评估
          " valuationdatax      = valuationdatax
          IMPORTING
            return              = return
          TABLES
            materialdescription = materialdescription  "物料描述
            unitsofmeasure      = unitsofmeasure       " 单位
            unitsofmeasurex     = unitsofmeasurex
          " taxclassifications  = taxclassifications.   "税
          .
        <lfs_base>-type = return-type.
        <lfs_base>-message = return-message.
        IF return-type = 'S'.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
*&-------------将附加数据MODIFY到MARA里面去.
          UPDATE mara
          SET
            zsku =  <lfs_base>-zsku
            zfbm =  <lfs_base>-zfbm
            zwzfn =  <lfs_base>-zwzfn
            zcknx =  <lfs_base>-zcknx
            zggxh =  <lfs_base>-zggxh
            ztysj =  <lfs_base>-ztysj
            zpm =  <lfs_base>-zpm
            zbzq =  <lfs_base>-zbzq
            zpsdj = <lfs_base>-zpsdj
           WHERE matnr = headdata-material.
          IF sy-subrc = 0.
            COMMIT WORK AND WAIT.
          ELSE.
            ROLLBACK WORK.
          ENDIF.
        ELSE .
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.
        IF return-type IS NOT INITIAL.
          CASE return-type.
            WHEN 'S'.
              <lfs_base>-light = '@5B@'.    "绿灯
            WHEN 'E'.
              <lfs_base>-light = '@5C@'.    "红灯
            WHEN 'W'.
              <lfs_base>-light = '@5D@'.    "黄灯
          ENDCASE.

        ENDIF.

        CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
          EXPORTING
            input  = <lfs_base>-material
          IMPORTING
            output = <lfs_base>-material.
      ENDIF.

      CLEAR: headdata,clientdata,clientdatax,return,
       materialdescription,materialdescription[],unitsofmeasure,unitsofmeasure[],
       unitsofmeasurex,unitsofmeasurex[].

      PERFORM conversion_exit_cunit_output CHANGING <lfs_base>-base_uom. "基本单位
      PERFORM conversion_exit_cunit_output CHANGING <lfs_base>-meinh. "订单单位
    ENDLOOP.
  ENDIF.

*&----------------销售视图
  IF p_sale  = 'X' AND g_click NE 'X'.
    LOOP AT gt_sale ASSIGNING <lfs_sale>.
      "进度条
      l_text = l_index.
      CONDENSE l_text.
      CONCATENATE '处理第' l_text '条数据/' gd_count INTO l_text.
      PERFORM set_indicator USING '' l_text.
      l_index = l_index + 1.
*&---------------初始化标识
      l_flag = 0.
*&--------------物料号加前导零
      CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
        EXPORTING
          input  = <lfs_sale>-material
        IMPORTING
          output = <lfs_sale>-material.
*&----------物料号 工厂 销售组织      分销渠道为必输
      IF  <lfs_sale>-material IS INITIAL OR
        <lfs_sale>-plant IS INITIAL OR
        <lfs_sale>-sales_org IS INITIAL OR
        <lfs_sale>-distr_chan IS INITIAL .
        l_flag = 1.
        <lfs_sale>-message = '必输字段为空'.
        <lfs_sale>-light = '@5C@'.    "红灯
        <lfs_sale>-type = 'C'.
      ENDIF.

      headdata-material        = <lfs_sale>-material."物料号
*&--------销售视图
      headdata-sales_view      = 'X'.

      plantdata-plant = <lfs_sale>-plant.    "工厂
      plantdatax-plant = <lfs_sale>-plant.

      salesdata-sales_org = <lfs_sale>-sales_org.    "销售组织
      salesdatax-sales_org = <lfs_sale>-sales_org.

      salesdata-distr_chan = <lfs_sale>-distr_chan.    "分销渠道
      salesdatax-distr_chan = <lfs_sale>-distr_chan.

*      clientdata-division = <lfs_sale>-division.  "产品组
*      clientdatax-division = 'X'.

      salesdata-delyg_plnt = <lfs_sale>-delyg_plnt. "交货工厂
      salesdatax-delyg_plnt =  'X'.

      salesdata-acct_assgt = <lfs_sale>-acct_assgt. "科目设置组  可能为空
      salesdatax-acct_assgt = 'X'.

      salesdata-matl_grp_1 = <lfs_sale>-mvgr1."物料组1
      salesdatax-matl_grp_1 = 'X'.
      salesdata-matl_grp_2 = <lfs_sale>-mvgr2."物料组2
      salesdatax-matl_grp_2 = 'X'.
      salesdata-matl_grp_3 = <lfs_sale>-mvgr3."物料组3
      salesdatax-matl_grp_3 = 'X'.
      salesdata-matl_grp_4 = <lfs_sale>-mvgr4."物料组4
      salesdatax-matl_grp_4 = 'X'.

      salesdata-matl_grp_5 = <lfs_sale>-mvgr5."物料组5
      salesdatax-matl_grp_5 = 'X'.


*&------------停用日期
      salesdata-valid_from = <lfs_sale>-vmstd.
      salesdatax-valid_from = 'X'.
*&------------配送等级
      salesdata-comm_group = <lfs_sale>-provg.
      salesdatax-comm_group = 'X'.
      salesdata-prod_att_1 = <lfs_sale>-prat1. "P码
      salesdatax-prod_att_1 = 'X'.
*
*      salesdata-prod_att_2 = <lfs_sale>-prat2. "M码
*      salesdatax-prod_att_2 = 'X'.

*      salesdata-prod_att_1 = <lfs_sale>-prat1. "停用标识
*      salesdatax-prod_att_1 = 'X'.

      plantdata-loadinggrp = <lfs_sale>-loadinggrp."装载组
      plantdatax-loadinggrp = 'X'.

*&-----------------------------------------------------------------------&*
***20.01.2017 21:44:55    HANDLR********************新增开始*
*&-------------销售视图科目设置组,
      salesdata-item_cat = 'NORM'.
      salesdatax-item_cat = 'X'.
***20.01.2017 21:44:55    HANDLR********************新增结束*
*&-----------------------------------------------------------------------&*
*&---------- 科目设置组 为空时
      IF <lfs_sale>-acct_assgt = '' .
        <lfs_sale>-message = '科目设置组/项目类别组不能为空'.
        <lfs_sale>-light = '@5C@'.    "红灯
        l_flag = 1.
      ENDIF.

      IF <lfs_sale>-taxclass_1 = ''."物料的税分类为空时赋值
        <lfs_sale>-taxclass_1 = '1'.
      ENDIF.
      "税分类1
      SELECT SINGLE land1
        INTO t_land1
        FROM t001w
       WHERE werks = <lfs_sale>-plant.
      taxclassifications-depcountry = t_land1.
      taxclassifications-tax_type_1 = 'MWST'.
      taxclassifications-taxclass_1 = <lfs_sale>-taxclass_1.
      APPEND taxclassifications.

*&-----------------------防止重复提交
      IF l_flag = 0 AND <lfs_sale>-type IS INITIAL.
        CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
          EXPORTING
            headdata             = headdata    "表头数据
            clientdata           = clientdata  " 基本数据
            clientdatax          = clientdatax
            plantdata            = plantdata   " 生产
            plantdatax           = plantdatax
            salesdata            = salesdata   "销售
            salesdatax           = salesdatax
            storagelocationdata  = storagelocationdata  "库存
            storagelocationdatax = storagelocationdatax
            valuationdata        = valuationdata  "评估
            valuationdatax       = valuationdatax
          IMPORTING
            return               = return
          TABLES
            materialdescription  = materialdescription  "物料描述
            unitsofmeasure       = unitsofmeasure       " 单位
            unitsofmeasurex      = unitsofmeasurex
            taxclassifications   = taxclassifications.   "税
        .
        <lfs_sale>-type = return-type.
        <lfs_sale>-message = return-message.
        IF return-type = 'S'.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
        ELSE .
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.
        IF return-type IS NOT INITIAL.
          CASE return-type.
            WHEN 'S'.
              <lfs_sale>-light = '@5B@'.    "绿灯
            WHEN 'E'.
              <lfs_sale>-light = '@5C@'.    "红灯
            WHEN 'W'.
              <lfs_sale>-light = '@5D@'.    "黄灯
          ENDCASE.
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
            EXPORTING
              input  = <lfs_sale>-material
            IMPORTING
              output = <lfs_sale>-material.
        ENDIF.
      ENDIF.
      CLEAR: headdata,clientdata,clientdatax,plantdata,plantdatax,salesdata,salesdatax,
       storagelocationdata,storagelocationdatax,valuationdata,valuationdatax,return,
       materialdescription,materialdescription[],unitsofmeasure,unitsofmeasure[],
       unitsofmeasurex,unitsofmeasurex[],taxclassifications,taxclassifications[].
    ENDLOOP.
  ENDIF.
*&---------------工厂视图

  IF p_werks = 'X' AND g_click NE 'X'.
    LOOP AT gt_werks ASSIGNING <lfs_werks>.
      "进度条
      l_text = l_index.
      CONDENSE l_text.
      CONCATENATE '处理第' l_text '条数据/' gd_count INTO l_text.
      PERFORM set_indicator USING '' l_text.
      l_index = l_index + 1.
*&---------------初始化标识
      l_flag = 0.
*&-----单位装换 订单单位和价格单位
      PERFORM conversion_exit_cunit_input CHANGING <lfs_werks>-bstme. "订单单位
      PERFORM conversion_exit_cunit_input CHANGING <lfs_werks>-peinh. "价格单位
*&--------------物料号加前导零

      CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
        EXPORTING
          input  = <lfs_werks>-material
        IMPORTING
          output = <lfs_werks>-material.
*&--------------如果物料号和工厂为空不执行BAPI
      IF <lfs_werks>-material IS  INITIAL OR
        <lfs_werks>-plant IS  INITIAL.
        <lfs_werks>-message = '必输字段为空'.
        <lfs_werks>-light = '@5C@'.    "红灯
        <lfs_werks>-type = 'E'.
        l_flag = 1.
      ELSE.
        headdata-material   = <lfs_werks>-material."物料号
      ENDIF.
      plantdata-plant = <lfs_werks>-plant.    "工厂
      plantdatax-plant = <lfs_werks>-plant.

*    unitsofmeasure-alt_unit =  <lfs_werks>-bstme.
*    unitsofmeasure-alt_unit_iso  =  <lfs_werks>-bstme.
*    unitsofmeasure-numerator = 1.
*    unitsofmeasure-denominatr = 1.
*    unitsofmeasure-gross_wt = 0 . "毛重
*    APPEND unitsofmeasure.
*    unitsofmeasurex-alt_unit     = <lfs_werks>-bstme.
*    unitsofmeasurex-alt_unit_iso = <lfs_werks>-bstme.
*    unitsofmeasurex-numerator    = 'X'.
*    unitsofmeasurex-denominatr   = 'X'.
*    unitsofmeasurex-gross_wt     = 'X'.
*    APPEND unitsofmeasurex.
*&--------------采购视图
      IF <lfs_werks>-pur_group  IS NOT INITIAL OR
        <lfs_werks>-bstme IS NOT INITIAL OR
*        <lfs_werks>-fabkz IS NOT INITIAL OR
        <lfs_werks>-kautb IS NOT INITIAL OR
        <lfs_werks>-kordb IS NOT INITIAL .
        headdata-purchase_view   = 'X'.
      ENDIF.
      "  set_unit  gs_input-bstme gs_input-numerator gs_input-denominatr 0.           "单位分子/单位分母
      plantdata-pur_group = <lfs_werks>-pur_group .       "采购组
      plantdatax-pur_group = 'X'.

      clientdata-po_unit = <lfs_werks>-bstme.            "订单单位
      clientdatax-po_unit = 'X'.

      clientdata-pur_valkey = <lfs_werks>-ekwsl. " 采购价值代码
      clientdatax-pur_valkey = 'X'.
*      plantdata-jit_relvt = <lfs_werks>-fabkz.  "JIT交货计划
*      plantdatax-jit_relvt = 'X'.
      plantdata-auto_p_ord = <lfs_werks>-kautb . "自动采购订单
      plantdatax-auto_p_ord = 'X'.
      plantdata-sourcelist = <lfs_werks>-kordb. "源清单
      plantdatax-sourcelist = 'X'.
*&--------------生产视图
      IF <lfs_werks>-dismm IS NOT INITIAL .
*&---------如果物料需求类型不为空的话就创建生产视图。
        headdata-mrp_view        = 'X'.
      ENDIF.
      plantdata-mrp_group = <lfs_werks>-disgr. "MRP组
      plantdatax-mrp_group = 'X'.
      " production_scheduler
      plantdata-mrp_type   = <lfs_werks>-dismm."MRP类型
      plantdatax-mrp_type = 'X'.
      plantdata-mrp_ctrler = <lfs_werks>-dispo. "MRP控制者
      plantdatax-mrp_ctrler = 'X'.
      plantdata-plnd_delry  = <lfs_werks>-plifz."计划交货时间
      plantdatax-plnd_delry = 'X'.
      plantdata-lotsizekey = <lfs_werks>-disls."批量(物料计划)
      plantdatax-lotsizekey = 'X'.
      plantdata-assy_scrap =  <lfs_werks>-ausss."装配报废百分比
      plantdatax-assy_scrap = 'X'.

      plantdata-proc_type  =  <lfs_werks>-beskz  ."  采购类型
      plantdatax-proc_type = 'X'.
      plantdata-spproctype =  <lfs_werks>-sobsl."  特殊采购类型
      plantdatax-spproctype = 'X'.
      plantdata-safety_stk  = <lfs_werks>-eisbe  ."安全库存
      plantdatax-safety_stk = 'X'.
      plantdata-minlotsize    = <lfs_werks>-bstmi  ."  最小批量
      plantdatax-minlotsize = 'X'.
      plantdata-maxlotsize    = <lfs_werks>-bstma."  最大批量大小
      plantdatax-maxlotsize = 'X'.

      plantdata-iss_st_loc  = <lfs_werks>-lgpro."生产仓储地点
      plantdatax-iss_st_loc = 'X'.
      plantdata-sloc_exprc =  <lfs_werks>-lgfsb."外部采购仓储地点
      plantdatax-sloc_exprc = 'X'.
      plantdata-plan_strgp = <lfs_werks>-strgr."策略组
      plantdatax-plan_strgp = 'X'.
      plantdata-consummode =  <lfs_werks>-vrmod."消耗模式
      plantdatax-consummode = 'X'.
      plantdata-bwd_cons  =  <lfs_werks>-vint1. "消耗期间:逆向
      plantdatax-bwd_cons = 'X'.

      plantdata-fwd_cons =  <lfs_werks>-vint2."消耗时期-向前
      plantdatax-fwd_cons = 'X'.
      plantdata-availcheck =  <lfs_werks>-mtvfp."可用性检查的检查组
      plantdatax-availcheck = 'X'.

      plantdata-discontinu =  <lfs_werks>-kzaus ."中止指示符
      plantdatax-discontinu = 'X'.
      plantdata-eff_o_day =  <lfs_werks>-ausdt. "中断日期
      plantdatax-eff_o_day = 'X'.
*&--------后继物料要加前导零

      PERFORM frm_add_qdl_matnr CHANGING  <lfs_werks>-nfmat.
      plantdata-follow_up =  <lfs_werks>-nfmat."后续物料
      plantdatax-follow_up = 'X'.
*&--------------工作计划视图
      IF <lfs_werks>-fevor IS NOT INITIAL.
        headdata-work_sched_view = 'X'.
      ENDIF.

      plantdata-production_scheduler =  <lfs_werks>-fevor ."生产管理员
      plantdatax-production_scheduler = 'X'.
      plantdata-proc_time  =  <lfs_werks>-bearz ."处理时间
      plantdatax-proc_time = 'X'.
      plantdata-base_qty =  <lfs_werks>-basmg . "基准数量
      plantdatax-base_qty = 'X' .

*&--------------质量视图 未定?????
      IF <lfs_werks>-art1 IS NOT INITIAL OR <lfs_werks>-art2 IS NOT INITIAL OR <lfs_werks>-art3 IS NOT INITIAL.
        headdata-quality_view    = 'X'.
        plantdata-qm_authgrp = <lfs_werks>-qmata.
        plantdatax-qm_authgrp = 'X'.
      ENDIF.
*&--------------财务视图
      IF <lfs_werks>-vprsv IS NOT INITIAL .
        headdata-account_view    = 'X'.
      ENDIF.
*&------------成本视图
      IF <lfs_werks>-hkmat IS NOT INITIAL.
        headdata-cost_view       = 'X'.
      ENDIF.
*&-----------------------------------------------------------------------&*
***23.01.2017 01:56:24    HANDLR********************新增开始*
*&--------工厂储存视图
      headdata-storage_view = 'X'.
***23.01.2017 01:56:24    HANDLR********************新增结束*
*&-----------------------------------------------------------------------&*

      plantdata-lot_size =  <lfs_werks>-losgr. "批量产品成本核算
      plantdatax-lot_size = 'X'.
      valuationdata-val_area = <lfs_werks>-plant.    "评估范围
      valuationdatax-val_area = <lfs_werks>-plant.

      valuationdata-price_ctrl = <lfs_werks>-vprsv ."价格控制指示符
      valuationdatax-price_ctrl = 'X'.
      valuationdata-std_price  = <lfs_werks>-stprs."  标准价格
      valuationdatax-std_price = 'X'.
      valuationdata-price_unit = <lfs_werks>-peinh." "价格单位
      valuationdatax-price_unit = 'X'.
      valuationdata-val_class = <lfs_werks>-bklas."评估类
      valuationdatax-val_class = 'X'.
      valuationdata-qty_struct = <lfs_werks>-ekalr.  "用QS的成本估算
      valuationdatax-qty_struct = 'X'.

      valuationdata-orig_mat = <lfs_werks>-hkmat."物料来源
      valuationdatax-orig_mat = 'X'.
      valuationdata-commprice1  = <lfs_werks>-bwprh. "基于商法的估价价格 - 级别 1
      valuationdatax-commprice1 = 'X'.
      valuationdata-commprice2  = <lfs_werks>-bwph1."
      valuationdatax-commprice2 = 'X'.
      valuationdata-commprice3  = <lfs_werks>-vjbwh. "基于商业法律的估价价格 - 级别3
      valuationdatax-commprice3 = 'X'.


      valuationdata-plndprice1  = <lfs_werks>-zplp1."未来计划价格
      valuationdatax-plndprice1 = 'X'.

      valuationdata-plndprdate1 = <lfs_werks>-zpld1. "未来计划价格
      valuationdatax-plndprdate1 = 'X'.
*&-----------------------防止重复提交
      IF l_flag = 0 AND <lfs_werks>-type IS INITIAL.
        CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
          EXPORTING
            headdata             = headdata    "表头数据
            clientdata           = clientdata  " 基本数据
            clientdatax          = clientdatax
            plantdata            = plantdata   " 生产
            plantdatax           = plantdatax
            salesdata            = salesdata   "销售
            salesdatax           = salesdatax
            storagelocationdata  = storagelocationdata  "库存
            storagelocationdatax = storagelocationdatax
            valuationdata        = valuationdata  "评估
            valuationdatax       = valuationdatax
          IMPORTING
            return               = return
          TABLES
            materialdescription  = materialdescription  "物料描述
            unitsofmeasure       = unitsofmeasure       " 单位
            unitsofmeasurex      = unitsofmeasurex
            taxclassifications   = taxclassifications.   "税
        .

        IF return-type = 'S'.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
          IF  <lfs_werks>-art1 IS NOT INITIAL AND  headdata-quality_view = 'X'.
            PERFORM bapi_matinspctrl_savereplica USING <lfs_werks>-material <lfs_werks>-art1  <lfs_werks>-aktiv1 <lfs_werks>-plant
                                                 CHANGING return .
            WAIT  UP TO '0.05' SECONDS.
          ENDIF.

          IF  <lfs_werks>-art2 IS NOT INITIAL AND  headdata-quality_view = 'X'.
            PERFORM bapi_matinspctrl_savereplica USING <lfs_werks>-material <lfs_werks>-art2  <lfs_werks>-aktiv2 <lfs_werks>-plant
                                                 CHANGING return .
            WAIT  UP TO '0.05' SECONDS.
          ENDIF.
          IF  <lfs_werks>-art3  IS NOT INITIAL AND  headdata-quality_view = 'X'.
            PERFORM bapi_matinspctrl_savereplica USING <lfs_werks>-material <lfs_werks>-art3 <lfs_werks>-aktiv3  <lfs_werks>-plant
                                                 CHANGING return .
            WAIT  UP TO '0.05' SECONDS.
          ENDIF.
        ELSE .
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.

        IF return-type IS NOT INITIAL.
          CASE return-type.
            WHEN 'S'.
              <lfs_werks>-light = '@5B@'.    "绿灯
            WHEN 'E'.
              <lfs_werks>-light = '@5C@'.    "红灯
            WHEN 'W'.
              <lfs_werks>-light = '@5D@'.    "黄灯
          ENDCASE.
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
            EXPORTING
              input  = <lfs_werks>-material
            IMPORTING
              output = <lfs_werks>-material.

        ENDIF.
        <lfs_werks>-type = return-type.
        <lfs_werks>-message = return-message.
      ENDIF.
      CLEAR: headdata,clientdata,clientdatax,plantdata,plantdatax,salesdata,salesdatax,
       storagelocationdata,storagelocationdatax,valuationdata,valuationdatax,return,
       materialdescription,materialdescription[],unitsofmeasure,unitsofmeasure[],
       unitsofmeasurex,unitsofmeasurex[],taxclassifications,taxclassifications[].
      PERFORM conversion_exit_cunit_output CHANGING <lfs_werks>-bstme. "订单单位
      PERFORM conversion_exit_cunit_output CHANGING <lfs_werks>-peinh. "价格单位
    ENDLOOP.
  ENDIF.
ENDFORM.


FORM build_layout.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-zebra             = 'X'.
  gd_layout-header_text      = '导入结果查询'.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_alv_report .
  IF p_base = 'X'.
    gd_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program       = gd_repid
        is_layout                = gd_layout
        it_fieldcat              = fieldcatalog[]  "输出的列信息
        i_save                   = 'A'          "变式可保存
        i_callback_pf_status_set = 'FRM_SET_STATUS'  "状态栏
        i_callback_user_command  = 'FRM_USER_COMMAND' "按钮处理
      TABLES
        t_outtab                 = gt_base    "输出内容内表
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
  IF p_sale = 'X'.
    gd_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program       = gd_repid
        is_layout                = gd_layout
        it_fieldcat              = fieldcatalog[]  "输出的列信息
        i_save                   = 'A'          "变式可保存
*       it_events                = it_events    "事件内表
        i_callback_pf_status_set = 'FRM_SET_STATUS'  "状态栏
        i_callback_user_command  = 'FRM_USER_COMMAND' "按钮处理
      TABLES
        t_outtab                 = gt_sale    "输出内容内表
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
  IF p_werks = 'X'.
    gd_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program       = gd_repid
        is_layout                = gd_layout
        it_fieldcat              = fieldcatalog[]  "输出的列信息
        i_save                   = 'A'          "变式可保存
*       it_events                = it_events    "事件内表
        i_callback_pf_status_set = 'FRM_SET_STATUS'  "状态栏
        i_callback_user_command  = 'FRM_USER_COMMAND' "按钮处理
      TABLES
        t_outtab                 = gt_werks    "输出内容内表
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
ENDFORM.


FORM frm_add_qdl_matnr CHANGING matnr.
  CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
    EXPORTING
      input        = matnr
    IMPORTING
      output       = matnr
    EXCEPTIONS
      length_error = 1
      OTHERS       = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFORM.

*----------------------------------------------------------------------*
FORM bapi_matinspctrl_savereplica USING f_matnr TYPE mara-matnr
                                         f_itype TYPE tq30t-art
                                         f_aktiv3 TYPE qmat-aktiv
                                         f_werks TYPE marc-werks
    CHANGING return TYPE bapiret2.
  DATA: l_return       TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
        inspectionctrl TYPE bapi1001004_qmat OCCURS 0 WITH HEADER LINE.

  inspectionctrl-insptype = f_itype. "检验类型
  inspectionctrl-material = f_matnr.  "物料号
  inspectionctrl-plant = f_werks.    "工厂
  inspectionctrl-ind_insptype_mat_active = f_aktiv3. "检验类型 - 物料合并已激活
*  inspectionctrl-preferred_insptype = 'X'. "首选的检验类型
*  SELECT SINGLE qkzverf
*    FROM tq34
*    INTO inspectionctrl-qual_score_procedure
*   WHERE art = f_itype.
  inspectionctrl-qual_score_procedure = '06'.   "质量计分过程
  inspectionctrl-ind_insp_with_tsk_list = 'X'."有任务清单的检验  IND_INSP_WITH_TSK_LIST
  inspectionctrl-ind_auto_assign = 'X'."自动分配  IND_AUTO_ASSIGN
  inspectionctrl-ind_insp_by_charac = 'X'."检验特征  IND_INSP_BY_CHARAC

  inspectionctrl-ind_skips_allowed = 'X'."略过允许  IND_SKIPS_ALLOWED
  inspectionctrl-ind_automatic_ud = 'X'."自动使用决策  IND_AUTOMATIC_UD
  inspectionctrl-ind_single_units_possible = 'X'."可能序列号  IND_SINGLE_UNITS_POSSIBLE

  inspectionctrl-contr_insp_lot_create = ''."控制检验批  CONTR_INSP_LOT_CREATE

  " Z01  Z03都有值  Z02 过账到检验库存没有
  IF f_itype = 'Z01' OR f_itype = 'Z03' OR  f_itype = 'Z02'.
    inspectionctrl-ind_post_to_insp_stock = 'X'. "过账到检验库存     INSMK   IND_POST_TO_INSP_STOCK
  ENDIF.

  APPEND inspectionctrl.
  CLEAR inspectionctrl.

  CALL FUNCTION 'BAPI_MATINSPCTRL_SAVEREPLICA'
    TABLES
      return         = l_return
      inspectionctrl = inspectionctrl.
  LOOP AT l_return WHERE type = 'E' OR type = 'A'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.

    return-type = l_return-type.
    return-message = l_return-message.
  ENDLOOP.
*  IF sy-subrc <> 0.
*    READ TABLE l_return WITH KEY type = 'S'.
*    IF sy-subrc = 0.
*      return-type = l_return-type.
*      return-message = l_return-message.
*      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*    ELSE.
*      return-type = 'W'.
*      return-message = l_return-message.
*    ENDIF.
*  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG_BEFORE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcatalog_before .

  CLEAR: fieldcatalog.
  DEFINE build_fieldcat.
    fieldcatalog-fieldname = &1.
    fieldcatalog-seltext_m = &2.
    fieldcatalog-outputlen = &3.
    IF fieldcatalog-fieldname = 'LIGHT'.
      fieldcatalog-key  = 'X'.
    ENDIF.
    IF fieldcatalog-fieldname = 'MESSAGE'.
      fieldcatalog-emphasize = 'X'.
      fieldcatalog-key  = 'X'.
    ENDIF.
    IF fieldcatalog-fieldname = 'MATERIAL'.
      fieldcatalog-key  = 'X'.
    ENDIF.
    IF fieldcatalog-fieldname = 'NUM'.
      fieldcatalog-key  = 'X'.
    ENDIF.
    APPEND fieldcatalog TO fieldcatalog.
    CLEAR fieldcatalog.
  END-OF-DEFINITION.
  IF p_base = 'X'.
    build_fieldcat 'NUM' '序号' 1.
    build_fieldcat 'MATERIAL' '物料号' 1.
    build_fieldcat 'MATL_DESC_ZH' '物料描述' 1.
    build_fieldcat 'MATL_TYPE' '物料类型' 1.
    build_fieldcat 'BASE_UOM' '基本计量单位' 1.
    build_fieldcat 'MATL_GROUP' '物料组' 1.

    build_fieldcat 'EXTMATLGRP' '系列' 1.
    build_fieldcat 'DIVISION' '品牌' 1.
    build_fieldcat 'OLD_MAT_NO' '旧物料号' 1.
    build_fieldcat 'MSTAE' '停用标识' 1.
    build_fieldcat 'GROES' '中箱' 1.

    build_fieldcat 'ZSKU' 'SKU号' 1.
    build_fieldcat 'ZFBM' '父编码' 1.

    build_fieldcat 'ZWZFN' '柜台分类' 1.
    build_fieldcat 'ZCKNX' '仓库类型' 1.
    build_fieldcat 'ZGGXH' '规格型号' 1.
    build_fieldcat 'ZTYSJ' '备注1' 1.
    build_fieldcat 'ZPM' 'P/M码' 1.

    build_fieldcat 'ZPSDJ' '备注2' 1.
    build_fieldcat 'ZBZQ' '保质期' 1.

    build_fieldcat 'NUMERATOR' '包装数量' 1.
    build_fieldcat 'MEINH' '包装单位' 1.
    build_fieldcat 'LIGHT' '执行结果' 1.
    build_fieldcat 'MESSAGE' '消息' 1.
    build_fieldcat 'TYPE' '结果' 1.
  ENDIF.
  IF p_sale = 'X'.
    build_fieldcat 'MATERIAL' '物料号' 1.
    build_fieldcat 'PLANT' '工厂' 1.
    build_fieldcat 'SALES_ORG' '销售组织' 1.
    build_fieldcat 'DISTR_CHAN' '分销渠道' 1.
    build_fieldcat 'DELYG_PLNT' '交货工厂' 1.

    build_fieldcat 'VMSTD' '停用日期' 1.
    build_fieldcat 'ACCT_ASSGT' '科目设置组' 1.
    build_fieldcat 'PROVG' '配送等级' 1.
    build_fieldcat 'MVGR1' '渠道分类' 1.
    build_fieldcat 'MVGR2' '系列' 1.

    build_fieldcat 'MVGR3' '功能' 1.
    build_fieldcat 'MVGR4' '停用状态' 1.
    build_fieldcat 'MVGR5' '单品/套装' 1.
    build_fieldcat 'TAXCLASS_1' '税分类' 1.
    build_fieldcat 'LOADINGGRP' '装载组' 1.
    build_fieldcat 'PRAT1' '产品属性1' 1.

    build_fieldcat 'LIGHT' '执行结果' 1.
    build_fieldcat 'MESSAGE' '消息' 1.
    build_fieldcat 'TYPE' '结果' 1.
  ENDIF.
  IF p_werks = 'X'.
    build_fieldcat 'LIGHT' '执行结果' 1.
    build_fieldcat 'MESSAGE' '消息' 1.
    build_fieldcat 'TYPE' '结果' 1.

    build_fieldcat 'MATERIAL' '物料号' 1.
    build_fieldcat 'PLANT' '工厂' 1.
    build_fieldcat 'PUR_GROUP' '采购组' 1.
    build_fieldcat 'KORDB' '源清单' 1.
    build_fieldcat 'KAUTB' '自动采购订单' 1.

    build_fieldcat 'BSTME' '采购单位' 1.
    build_fieldcat 'EKWSL' '采购价值码' 1.
    build_fieldcat 'DISMM' '物料需求计划类型' 1.
    build_fieldcat 'DISGR' 'MRP组' 1.
    build_fieldcat 'DISPO' 'MRP控制者' 1.
    build_fieldcat 'PLIFZ' '计划交货时间' 1.

    build_fieldcat 'DISLS' '批量' 1.
    build_fieldcat 'AUSSS' '装配报废百分比' 1.
    build_fieldcat 'BESKZ' '采购类型' 1.
    build_fieldcat 'SOBSL' '特殊采购类型' 1.
    build_fieldcat 'EISBE' '安全库存' 1.

    build_fieldcat 'BSTMI' '最小批量' 1.
    build_fieldcat 'BSTMA' '最大批量大小' 1.
    build_fieldcat 'LGPRO' '生产库存地点' 1.
    build_fieldcat 'LGFSB' '外部库存地点' 1.
    build_fieldcat 'STRGR' '策略组' 1.

    build_fieldcat 'VRMOD' '消耗模式' 1.
    build_fieldcat 'VINT1' '消耗期间:逆向' 1.
    build_fieldcat 'VINT2' '消耗期间:向前' 1.
    build_fieldcat 'MTVFP' '可用性检查的检查组' 1.
    build_fieldcat 'KZAUS' '中止指示符' 1.

    build_fieldcat 'AUSDT' '中断日期' 1.
    build_fieldcat 'NFMAT' '后续物料 ' 1.
    build_fieldcat 'FEVOR' '生产管理员' 1.
    build_fieldcat 'BEARZ' '处理时间 ' 1.
    build_fieldcat 'BASMG' '基准数量 ' 1.

    build_fieldcat 'ART1' '检验类型1' 1.
    build_fieldcat 'AKTIV1' '活动的1' 1.
    build_fieldcat 'ART2' '检验类型2' 1.
    build_fieldcat 'AKTIV2' '活动的1' 1.
    build_fieldcat 'ART3' '检验类型3' 1.
    build_fieldcat 'AKTIV3' '活动的1' 1.
    build_fieldcat 'QMATA' 'QM授权组' 1.

    build_fieldcat 'LOSGR' '批量成本核算' 1.
    build_fieldcat 'VPRSV' '价格控指示符' 1.
    build_fieldcat 'STPRS' '标准价格' 1.
    build_fieldcat 'PEINH' '价格单位' 1.
    build_fieldcat 'BKLAS' '评估类' 1.


    build_fieldcat 'BWPRH' '价格1' 1.
    build_fieldcat 'BWPH1' '价格2' 1.
    build_fieldcat 'VJBWH' '价格3' 1.
    build_fieldcat 'EKALR' '用QS的成本核算' 1.
    build_fieldcat 'HKMAT' '物料来源' 1.
    build_fieldcat 'ZPLP1' '未来计划价格' 1.
    build_fieldcat 'ZPLD1' '未来计划日期' 1.
  ENDIF.
ENDFORM.



FORM frm_set_status USING pt_extab TYPE slis_t_extab .
  SET PF-STATUS 'STANDARD'.
ENDFORM. "Frm_SET_STATUS


FORM frm_user_command USING r_ucomm LIKE sy-ucomm
                         rs_selfield TYPE slis_selfield.

  DATA: l_grid  TYPE REF TO cl_gui_alv_grid,
        l_subrc TYPE sy-subrc.

  CASE r_ucomm.
    WHEN 'SAVE'.
      PERFORM save_material_data.
      g_click = 'X'.
*&-------------刷新
      rs_selfield-refresh = 'X'.
*&----------------ALV展示结果
*      CLEAR fieldcatalog[].
*      PERFORM build_fieldcatalog.
*      PERFORM build_layout.
*      PERFORM display_alv_report.
    WHEN OTHERS.
  ENDCASE.


ENDFORM. "user_command


FORM set_indicator USING p_par
                         p_text.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = p_par
      text       = p_text.
ENDFORM.

 

^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
posted on 2017-03-07 09:45  ^ω^SAP傻X^o^  阅读(2261)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3