物料主数据批导bapi

创建物料主数据,根据模板不同批导原材料,半成品,成品。可根据实际需求对字段进行增删。

   1 report zmmr_bapi_mm01 no standard page HEADING.
   2 type-POOLS:slis,truxs,icon.
   3 tables: sscrfields,lips,resb,marc,ckmlab02.
   4 data num type stprs_bapi.
   5 data flag type i.                 "标识符,如果不为1则不创建物料
   6 
   7 types:begin of ty_tab,
   8   head_material type matnr,       "物料号
   9   head_ind_sector type mbrsh,     "行业领域
  10   head_matl_type type mtart,      "物料类型
  11   marc_plant type werks_d,        "工厂
  12   mvke_sales_org type vkorg,      "销售组织
  13   mvke_distr_chan type vtweg,     "分销渠道
  14   t_makt_matl_desc type maktx,    "物料描述
  15   mara_base_uom type meins,       "基本计量单位
  16   mara_matl_group type matkl,     "物料组
  17   mara_extwg type extwg,          "客户
  18   mara_item_cat type mtpos_mara,  "普通项目组类别
  19   t_marm_unit_of_wt type gewei,   "重量单位
  20   mara_wrkst type wrkst,          "基本物料
  21   mara_ihivi type adge_ihivi,     "是否客供
  22   mara_zeinr type dzeinr,         "客户物料编码
  23   mvke_dwerk type maktx,          "交货工厂
  24   mvke_sktof type sktof,          "现金折扣
  25   t_mlan_taxclass1 type taxkm,    "税分类
  26   mvke_matl_stats type stgma,     "物料统计组
  27   mvke_acct_assgt type ktgrm,     "科目设置组
  28   mvke_item_cat type mtpos,       "项目类别组
  29   marc_availcheck type mtvfp,     "可用性检查
  30   mara_trans_grp type tragr,      "运输组
  31   marc_loadinggrp type ladgr,     "装载组
  32   marc_pur_group type ekgrp,      "采购组
  33   marc_batch_mgmt type xchpf,     "批次管理标示
  34   marc_auto_p_ord type kautb,     "自动采购订单标识
  35   marc_webaz type webaz,          "收货处理时间
  36   marc_insmk type insmk_mat,      "过账到检验库存
  37   marc_mrp_group type disgr,      "MRP组
  38   marc_maabc type maabc,          "ABC标识
  39   marc_mrp_type type dismm,       "MRP类型
  40   marc_mrp_ctrler type dispo,     "MRP控制者
  41   marc_lotsizekey type disls,     "批量
  42   marc_minlotsize type bstmi,     "最小批量
  43   marc_round_val type bstrf,      "舍入值
  44   marc_proc_type type beskz,      "采购类型
  45   marc_lgpro type lgpro,          "生产仓储地点
  46   marc_rgekz type rgekz,          "反冲
  47   marc_lgfsb type lgfsb,          "外部采购仓储地点
  48   marc_sm_key type fhori,         "计划边际码
  49   marc_plnd_delry type plifz,     "计划交货时间
  50   marc_sbdkz type sbdkz,          "集中/独立
  51 *  mpop_prmod TYPE mpop-prmod,     "预测模型
  52   mbew_val_class type bklas,      "评估级别
  53   mbew_ml_settle type ck_ml_abst, "价格确定
  54   mbew_std_price type ck_pvprs_1, "标准价格
  55   mbew_moving_pr type ck_pvprs_1, "移动平均价
  56   mbew_price_ctrl type vprsv,     "价格控制
  57   mbew_price_unit type peinh,     "价格单位
  58   mbew_hrkft type hrkft,          "原始组
  59   mbew_orig_mat type hkmat,       "物料来源
  60   marc_losgr type ck_losgr,       "成品核算批量
  61 end of ty_tab.
  62 
  63 types:begin of ty_tab2,
  64   head_material type matnr,       "物料号
  65   head_ind_sector type mbrsh,     "行业领域
  66   head_matl_type type mtart,      "物料类型
  67   marc_plant type werks_d,        "工厂
  68   mvke_sales_org type vkorg,      "销售组织
  69   mvke_distr_chan type vtweg,     "分销渠道
  70   t_makt_matl_desc type maktx,    "物料描述
  71   mara_base_uom type meins,       "基本计量单位
  72   mara_matl_group type matkl,     "物料组
  73   mara_extwg type extwg,          "客户
  74   mara_spart type spart,          "产品组
  75   mara_item_cat type mtpos_mara,  "普通项目组类别
  76   t_marm_unit_of_wt type gewei,   "重量单位
  77   mara_formt type formt,          "替代料标识
  78   mara_wrkst type wrkst,          "基本物料
  79   mara_zeinr type dzeinr,         "客户物料编码
  80   mvke_dwerk type maktx,          "交货工厂
  81   mvke_sktof type sktof,          "现金折扣
  82   t_mlan_taxclass1 type taxkm,    "税分类
  83   mvke_matl_stats type stgma,     "物料统计组
  84   mvke_acct_assgt type ktgrm,     "科目设置组
  85   mvke_item_cat type mtpos,       "项目类别组
  86   marc_availcheck type mtvfp,     "可用性检查
  87   mara_trans_grp type tragr,      "运输组
  88   marc_loadinggrp type ladgr,     "装载组
  89   marc_ekgrp type ekgrp,          "采购组
  90   marc_kautb type kautb,          "自动采购单
  91   marc_xchpf type xchpf,          "批次管理
  92   marc_webaz type webaz,          "收货处理时间
  93   marc_mrp_group type disgr,      "MRP组
  94   marc_mrp_type type dismm,       "MRP类型
  95   marc_mrp_ctrler type dispo,     "MRP控制者
  96   marc_lotsizekey type disls,     "批量大小
  97   marc_bstmi type bstmi,          "最小批量大小
  98   marc_bstrf type bstrf,          "舍入值
  99   marc_proc_type type beskz,      "采购类型
 100   marc_sobsl type sobsl,          "特殊采购类型
 101   marc_lgpro type lgpro,          "生产仓储地点
 102   marc_lgfsb type lgfsb,          "外部采购仓储地点
 103   marc_dzeit type dzeit,          "生产时间
 104   marc_plifz type plifz,          "计划交货时间
 105   marc_eisbe type eisbe,          "安全库存
 106   marc_sm_key type fhori,         "计划边际码
 107   marc_strgr type strgr,          "策略组
 108   marc_vrmod type vrmod,          "消耗模式
 109   marc_vint1 type vint1,          "逆向消耗期间
 110   marc_vint2 type vint2,          "向前消耗期间
 111   marc_altsl type altsl,          "选择方法
 112   marc_sbdkz type sbdkz,          "集中/独立
 113   mpop_prmod type mpop-prmod,     "预测模型
 114   mbew_val_class type bklas,      "评估级别
 115   mbew_ml_settle type ck_ml_abst, "价格确定
 116   mbew_std_price type ck_pvprs_1, "标准价格
 117   mbew_price_ctrl type vprsv,     "价格控制
 118   mbew_orig_mat type hkmat,       "物料来源
 119   marc_awsls type awsls,          "差异码
 120   marc_losgr type ck_losgr,       "成本核算批量
 121 end of ty_tab2.
 122 
 123 data:it_tab type table of  ty_tab ,   "原材料
 124       wa_tab type ty_tab.
 125 data:it_tab2 type table of  ty_tab2,  "成品
 126       wa_tab2 type ty_tab2.
 127 
 128 *输入参数
 129 data: headdata                type bapimathead,     "表头数据
 130       clientdata              type bapi_mara,       "基本数据
 131       clientdatax             type bapi_marax,
 132       plantdata like  bapi_marc,                    "工厂数据
 133       plantdatax  like  bapi_marcx,
 134       forecastparameters type  bapi_mpop,           "预测
 135       forecastparametersx type bapi_mpopx,
 136       planningdata type bapi_mpgd,                  "计划
 137       planningdatax type bapi_mpgdx,
 138       valuationdata type bapi_mbew,                 "评估数据
 139       valuationdatax type bapi_mbewx,
 140       warehousenumberdata type bapi_mlgn,           "仓库数据
 141       warehousenumberdatax type bapi_mlgnx,
 142       salesdata type bapi_mvke,                     "销售数据
 143       salesdatax type bapi_mvkex,
 144       storagetypedata type bapi_mlgt,               "存储类型数据
 145       storagetypedatax type bapi_mlgtx.
 146 
 147 *表参数
 148 data: materialdescription type table of bapi_makt with header line,   "描述
 149       unitsofmeasure type table of bapi_marm with header line,        "单位
 150       unitsofmeasurex type table of bapi_marmx with header line,
 151       taxclassifications type table of bapi_mlan with header line,    "税分类
 152       return like table of bapiret2 with header line.                 "错误信息
 153 
 154 data pr_unit type meins.  "基本单位
 155 data pr_unit2 type meins. "重量单位
 156 
 157 data: begin of gt_out occurs 0, "保存return信息
 158   text(255),
 159 end of gt_out.
 160 
 161 *TYPES:BEGIN OF ty_fieldnames ,
 162 *  name TYPE CHAR255,
 163 *END OF ty_fieldnames.
 164 *DATA it_fname TYPE TABLE OF ty_fieldnames WITH HEADER LINE.
 165 data:begin of it_fname occurs 0,
 166   name type char255,
 167 end of it_fname.
 168 
 169 
 170 SELECTION-screen begin of block blk_001 with frame title text-001 . "选择文件路径
 171   parameters:p_file like rlgrap-filename.
 172 SELECTION-screen end of block blk_001.
 173 SELECTION-screen: uline /1(82).
 174 SELECTION-screen: uline 83(83).
 175 SELECTION-screen begin of block blk_002 with frame title text-002.  "确定创建物料类型
 176   parameters:radio_1 radiobutton group radi,    "原材料
 177   radio_2 radiobutton group radi.               "半成品/成品
 178 SELECTION-screen end of block blk_002.
 179 
 180 
 181 SELECTION-screen function key 1. "应用工具栏增加按钮
 182 
 183 initialization.
 184 write icon_change_text as icon to sscrfields-functxt_01+0(4).
 185 sscrfields-functxt_01+4(*) = '下载模板'."分配字符位置
 186 
 187 at SELECTION-screen.
 188 perform selection_screeen.   "模板下载
 189 
 190 
 191 at SELECTION-screen on value-REQUEST for p_file  .
 192 perform open.
 193 
 194 START-of-SELECTION.
 195 if radio_1 = 'X'.
 196   perform upload_file.      "上传数据
 197   perform mm01_1.           "执行批导(原材料).
 198 else.
 199   perform upload_file2.     "上传数据
 200   perform mm01_2.           "执行批导(成品/半成品)
 201 endif.
 202 
 203 
 204 end-of-SELECTION.
 205 perform result_message.   "显示执行结果
 206 
 207 *&---------------------------------------------------------------------*
 208 *&      Form  MM01
 209 *&---------------------------------------------------------------------*
 210 *       text
 211 *----------------------------------------------------------------------*
 212 *  -->  p1        text
 213 *  <--  p2        text
 214 *----------------------------------------------------------------------*
 215 form mm01_1.
 216   loop at it_tab into wa_tab.
 217 *前导0
 218     call function 'CONVERSION_EXIT_ALPHA_INPUT'
 219     exporting
 220       input  = wa_tab-head_material
 221     importing
 222       output = wa_tab-head_material.
 223 
 224 *判断物料是否以存在
 225     select single * from marc where matnr = wa_tab-head_material and werks = wa_tab-marc_plant.
 226     if sy-subrc = 0.
 227       concatenate wa_tab-head_material ' 物料在' wa_tab-marc_plant ' 工厂已存在!' into gt_out-text.
 228       append gt_out.
 229       clear gt_out.
 230       continue.
 231     endif.
 232 
 233     if wa_tab-mbew_moving_pr = ''.
 234       concatenate wa_tab-head_material '->原材料的移动平均价格为空' into gt_out-text.
 235       append gt_out.
 236       clear gt_out.
 237       continue.
 238     endif.
 239 
 240     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "科目设置组
 241     exporting
 242       input        = wa_tab-mvke_acct_assgt
 243     importing
 244       output        = wa_tab-mvke_acct_assgt.
 245     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "可用性检查
 246     exporting
 247       input         = wa_tab-marc_availcheck
 248     importing
 249       output        = wa_tab-marc_availcheck.
 250     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "运输组
 251     exporting
 252       input         = wa_tab-mara_trans_grp
 253     importing
 254       output        = wa_tab-mara_trans_grp.
 255     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "装载组
 256     exporting
 257       input         = wa_tab-marc_loadinggrp
 258     importing
 259       output        = wa_tab-marc_loadinggrp.
 260     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "MRP组
 261     exporting
 262       input         = wa_tab-marc_mrp_group
 263     importing
 264       output        = wa_tab-marc_mrp_group.
 265     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "MRP控制者
 266     exporting
 267       input         = wa_tab-marc_mrp_ctrler
 268     importing
 269       output        = wa_tab-marc_mrp_ctrler.
 270     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "计划边际值
 271     exporting
 272       input         = wa_tab-marc_sm_key
 273     importing
 274       output        = wa_tab-marc_sm_key.
 275 
 276 *判断是否客供,提示价格信息
 277     if wa_tab-mara_ihivi <> 'X'.
 278       clear num.
 279       num = wa_tab-mbew_std_price / wa_tab-mbew_price_unit.
 280       case wa_tab-marc_maabc.   "ABC标识
 281       when 'A'.
 282         if num > 100.
 283           perform pop_confirm using wa_tab-marc_maabc wa_tab-head_material.
 284           if flag = 1.  "为否时执行下一物料
 285             clear flag.
 286             continue.
 287           endif.
 288         endif.
 289       when 'B'.
 290         if num > 5.
 291           perform pop_confirm using wa_tab-marc_maabc wa_tab-head_material.
 292           if flag = 1.
 293             clear flag.
 294             continue.
 295           endif.
 296         endif.
 297       when others.
 298         perform pop_confirm using wa_tab-marc_maabc wa_tab-head_material.
 299         if flag = 1.
 300           clear flag.
 301           continue.
 302         endif.
 303       endcase.
 304     endif.
 305 
 306     clear headdata.
 307     headdata-material = wa_tab-head_material.
 308     headdata-matl_type = wa_tab-head_matl_type.
 309     headdata-ind_sector = wa_tab-head_ind_sector.
 310     headdata-basic_view = 'X'.        "基本数据视图
 311     headdata-sales_view = 'X'.        "销售视图
 312     headdata-purchase_view = 'X'.     "采购视图
 313     headdata-mrp_view = 'X'.          "物料需求计划(MRP)视图
 314 *    headdata-forecast_view = 'X'.     "预测视图
 315     headdata-warehouse_view = 'X'.    "工作计划视图
 316     headdata-account_view = 'X'.      "会计视图
 317     headdata-cost_view = 'X'.         "成本视图
 318 
 319 *基本数据
 320     clear pr_unit.
 321     perform frm_unit using wa_tab-mara_base_uom changing pr_unit."基本单位
 322     clear: clientdata.
 323     clientdata-base_uom = pr_unit.                    "基本计量单位
 324     clientdata-matl_group = wa_tab-mara_matl_group.   "物料组
 325     clientdata-item_cat = wa_tab-mara_item_cat.       "普通项目类别组
 326     clientdata-trans_grp = wa_tab-mara_trans_grp.     "运输组
 327     clientdata-extmatlgrp = wa_tab-mara_extwg.        "客户
 328     clientdata-basic_matl = wa_tab-mara_wrkst.        "基本物料
 329     clientdata-high_visc = wa_tab-mara_ihivi.         "是否客供
 330     clientdata-document = wa_tab-mara_zeinr.          "客户物料编码
 331     clear clientdatax.
 332     clientdatax-base_uom = 'X'.   "基本计量单位
 333     clientdatax-matl_group = 'X'.
 334     clientdatax-item_cat = 'X'.
 335     clientdatax-net_weight = 'X'.
 336     clientdatax-trans_grp = 'X'.
 337     clientdatax-extmatlgrp = 'X'.
 338     clientdatax-basic_matl = 'X'.
 339     clientdatax-high_visc = 'X'.
 340     clientdatax-document = 'X'.
 341 
 342 *工厂级别数据
 343     clear:plantdata.
 344     plantdata-plant = wa_tab-marc_plant.   "工厂
 345     plantdata-availcheck = wa_tab-marc_availcheck.    "可用性检查
 346     plantdata-loadinggrp = wa_tab-marc_loadinggrp.    "装载组
 347     plantdata-pur_group = wa_tab-marc_pur_group.      "采购组
 348     plantdata-batch_mgmt = wa_tab-marc_batch_mgmt.    "批次管理标示
 349     plantdata-auto_p_ord = wa_tab-marc_auto_p_ord.    "自动采购订单标识
 350     plantdata-gr_pr_time = wa_tab-marc_webaz.         "自动采购订单标识
 351     plantdata-ind_post_to_insp_stock = wa_tab-marc_insmk.    "过账到检验库存
 352     plantdata-mrp_group = wa_tab-marc_mrp_group.      "MRP组
 353     plantdata-abc_id = wa_tab-marc_maabc.             "ABC标识
 354     plantdata-mrp_type = wa_tab-marc_mrp_type.        "MRP类型
 355     plantdata-mrp_ctrler = wa_tab-marc_mrp_ctrler.    "MRP控制者
 356     plantdata-lotsizekey = wa_tab-marc_lotsizekey.    "批量
 357     plantdata-minlotsize = wa_tab-marc_minlotsize.    "最小批量
 358     plantdata-round_val = wa_tab-marc_round_val.      "舍入值
 359     plantdata-proc_type = wa_tab-marc_proc_type.      "采购类型
 360     plantdata-iss_st_loc = wa_tab-marc_lgpro.         "生产仓储地点
 361     plantdata-backflush = wa_tab-marc_rgekz.          "反冲
 362     plantdata-sloc_exprc = wa_tab-marc_lgfsb.         "外部采购仓储地点
 363     plantdata-sm_key = wa_tab-marc_sm_key.            "计划边际码
 364     plantdata-plnd_delry = wa_tab-marc_plnd_delry.    "计划交货时间
 365     plantdata-dep_req_id = wa_tab-marc_sbdkz.         "集中/独立
 366     plantdata-lot_size = wa_tab-marc_losgr.           "批量产品核算
 367     clear plantdatax.
 368     plantdatax-plant = wa_tab-marc_plant.
 369     plantdatax-availcheck = 'X'.
 370     plantdatax-loadinggrp = 'X'.
 371     plantdatax-pur_group = 'X'.
 372     plantdatax-batch_mgmt = 'X'.
 373     plantdatax-auto_p_ord = 'X'.
 374     plantdatax-gr_pr_time = 'X'.
 375     plantdatax-ind_post_to_insp_stock = 'X'.
 376     plantdatax-mrp_group = 'X'.
 377     plantdatax-abc_id = 'X'.
 378     plantdatax-mrp_type = 'X'.
 379     plantdatax-mrp_ctrler = 'X'.
 380     plantdatax-lotsizekey = 'X'.
 381     plantdatax-minlotsize = 'X'.
 382     plantdatax-round_val = 'X'.
 383     plantdatax-proc_type = 'X'.
 384     plantdatax-iss_st_loc = 'X'.
 385     plantdatax-backflush = 'X'.
 386     plantdatax-sloc_exprc = 'X'.
 387     plantdatax-sm_key = 'X'.
 388     plantdatax-plnd_delry = 'X'.
 389     plantdatax-dep_req_id = 'X'.
 390     plantdatax-lot_size = 'X'.
 391 
 392 *销售数据
 393     clear salesdata.
 394     salesdata-sales_org = wa_tab-mvke_sales_org.      "销售组织
 395     salesdata-distr_chan = wa_tab-mvke_distr_chan.    "分销渠道
 396     salesdata-delyg_plnt = wa_tab-mvke_dwerk.         "交货工厂
 397     salesdata-cash_disc = wa_tab-mvke_sktof.          "现金折扣标志
 398     salesdata-matl_stats = wa_tab-mvke_matl_stats.    "物料统计组
 399     salesdata-acct_assgt = wa_tab-mvke_acct_assgt.    "科目设置组
 400     salesdata-item_cat = wa_tab-mvke_item_cat.        "项目类别组
 401     clear salesdatax.
 402     salesdatax-sales_org = wa_tab-mvke_sales_org.
 403     salesdatax-distr_chan = wa_tab-mvke_distr_chan.
 404     salesdatax-delyg_plnt = 'X'.
 405     salesdatax-cash_disc = 'X'.
 406     salesdatax-matl_stats = 'X'.
 407     salesdatax-acct_assgt = 'X'.
 408     salesdatax-item_cat = 'X'.
 409 
 410 **预测
 411 *    CLEAR:forecastparameters,forecastparametersx.
 412 *    forecastparameters-plant = wa_tab-marc_plant.         "工厂
 413 *    forecastparameters-fore_model = wa_tab-mpop_prmod.    "预测模型
 414 *    forecastparametersx-plant = wa_tab-marc_plant.
 415 *    forecastparametersx-fore_model = 'X'.
 416 
 417 *会计、成本
 418     clear valuationdata.
 419     valuationdata-val_area = wa_tab-marc_plant.
 420     valuationdata-val_class = wa_tab-mbew_val_class.      "评估级别
 421     valuationdata-ml_settle = wa_tab-mbew_ml_settle.      "价格确定
 422     valuationdata-std_price = wa_tab-mbew_std_price.      "标准价格
 423     valuationdata-moving_pr = wa_tab-mbew_moving_pr.      "移动平均价
 424     valuationdata-price_unit = wa_tab-mbew_price_unit.    "价格单位
 425     valuationdata-price_ctrl = wa_tab-mbew_price_ctrl.    "价格控制
 426     valuationdata-orig_group = wa_tab-mbew_hrkft.         "原始组
 427     valuationdata-orig_mat = wa_tab-mbew_orig_mat.        "物料来源
 428     clear valuationdatax.
 429     valuationdatax-val_area = wa_tab-marc_plant.
 430     valuationdatax-val_class = 'X'.
 431     valuationdatax-ml_settle = 'X'.
 432     valuationdatax-price_ctrl = 'X'.
 433     valuationdatax-price_unit = 'X'.
 434     valuationdatax-moving_pr = 'X'.
 435     valuationdatax-std_price = 'X'.
 436     valuationdatax-orig_group = 'X'.
 437     valuationdatax-orig_mat = 'X'.
 438 
 439 *物料描述
 440     clear materialdescription[].
 441     materialdescription-langu_iso = 'ZH'.
 442     materialdescription-matl_desc = wa_tab-t_makt_matl_desc.
 443     append materialdescription.
 444 
 445 *单位
 446     clear unitsofmeasure[].
 447     unitsofmeasure-alt_unit = pr_unit.
 448     unitsofmeasure-unit_of_wt = wa_tab-t_marm_unit_of_wt.
 449     append unitsofmeasure.
 450     clear unitsofmeasurex[].
 451     unitsofmeasurex-alt_unit = pr_unit.
 452     unitsofmeasurex-unit_of_wt = 'X'.
 453     append unitsofmeasurex.
 454 
 455 *税分类
 456     clear taxclassifications[].
 457     taxclassifications-depcountry = 'CN'.
 458     taxclassifications-tax_type_1 = 'MWST'.
 459     taxclassifications-taxclass_1 = wa_tab-t_mlan_taxclass1.  "税分类
 460     append taxclassifications.
 461 
 462     call function 'BAPI_MATERIAL_SAVEDATA'
 463     exporting
 464       headdata            = headdata
 465       clientdata          = clientdata
 466       clientdatax         = clientdatax
 467       plantdata           = plantdata
 468       plantdatax          = plantdatax
 469       forecastparameters  = forecastparameters
 470       forecastparametersx = forecastparametersx
 471       valuationdata       = valuationdata
 472       valuationdatax      = valuationdatax
 473       salesdata           = salesdata
 474       salesdatax          = salesdatax
 475     importing
 476       return              = return
 477     tables
 478       materialdescription = materialdescription[]
 479       unitsofmeasure      = unitsofmeasure[]
 480       unitsofmeasurex     = unitsofmeasurex
 481       taxclassifications  = taxclassifications[].
 482     if return-type = 'E' or return-type = 'A'.
 483       call function 'BAPI_TRANSACTION_ROLLBACK'.
 484       concatenate wa_tab-head_material ' 原材料—>' return-message into gt_out-text.
 485       append gt_out.
 486       clear gt_out.
 487     else.
 488       call function 'BAPI_TRANSACTION_COMMIT'
 489       exporting
 490         wait = 'X'.
 491       concatenate wa_tab-head_material ' 物料创建成功。' into gt_out-text.
 492       append gt_out.
 493       clear gt_out.
 494     endif.
 495   endloop.
 496 endform.                                                    "mm01
 497 
 498 *  PERFORM alv.
 499 *&---------------------------------------------------------------------*
 500 *&      Form  vq_fn
 501 *&---------------------------------------------------------------------*
 502 *       text
 503 *----------------------------------------------------------------------*
 504 form mm01_2.
 505   loop at it_tab2 into wa_tab2.
 506 
 507     call function 'CONVERSION_EXIT_ALPHA_INPUT'
 508     exporting
 509       input  = wa_tab2-head_material
 510     importing
 511       output = wa_tab2-head_material.
 512 
 513 *判断物料是否以存在
 514     select single * from marc where matnr = wa_tab2-head_material and werks = wa_tab2-marc_plant.
 515     if sy-subrc = 0.
 516       concatenate wa_tab2-head_material ' 物料在' wa_tab2-marc_plant ' 工厂已存在!' into gt_out-text.
 517       append gt_out.
 518       clear gt_out.
 519       continue.
 520     endif.
 521 
 522 *如果为移动平均,
 523     clear ckmlab02.
 524     if wa_tab2-mbew_price_ctrl = 'S'.
 525       select single * from ckmlab02 into ckmlab02 where bwkey = wa_tab2-marc_plant.  "Y3
 526       if ckmlab02 is initial.
 527         wa_tab2-mbew_ml_settle = '3'.       "价格确定
 528       else.
 529         wa_tab2-mbew_ml_settle = '2'.
 530       endif.
 531     endif.
 532 
 533     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "科目设置组
 534     exporting
 535       input        = wa_tab2-mvke_acct_assgt
 536     importing
 537       output        = wa_tab2-mvke_acct_assgt.
 538     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "可用性检查
 539     exporting
 540       input         = wa_tab2-marc_availcheck
 541     importing
 542       output        = wa_tab2-marc_availcheck.
 543     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "运输组
 544     exporting
 545       input         = wa_tab2-mara_trans_grp
 546     importing
 547       output        = wa_tab2-mara_trans_grp.
 548     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "装载组
 549     exporting
 550       input         = wa_tab2-marc_loadinggrp
 551     importing
 552       output        = wa_tab2-marc_loadinggrp.
 553     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "MRP控制者
 554     exporting
 555       input         = wa_tab2-marc_mrp_ctrler
 556     importing
 557       output        = wa_tab2-marc_mrp_ctrler.
 558     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "计划边际值
 559     exporting
 560       input         = wa_tab2-marc_sm_key
 561     importing
 562       output        = wa_tab2-marc_sm_key.
 563     call function 'CONVERSION_EXIT_ALPHA_INPUT'     "差异码
 564     exporting
 565       input         = wa_tab2-marc_awsls
 566     importing
 567       output        = wa_tab2-marc_awsls.
 568 
 569     clear headdata.
 570     headdata-material       = wa_tab2-head_material.
 571     headdata-matl_type      = wa_tab2-head_matl_type.
 572     headdata-ind_sector     = wa_tab2-head_ind_sector.
 573     headdata-basic_view     = 'X'.    "基本数据视图
 574     headdata-sales_view = 'X'.        "销售视图
 575     headdata-purchase_view = 'X'.     "采购视图
 576     headdata-mrp_view = 'X'.          "物料需求计划(MRP)视图
 577     headdata-forecast_view = 'X'.     "预测视图
 578     headdata-warehouse_view = 'X'.    "工作计划视图
 579     headdata-account_view = 'X'.      "会计视图
 580     headdata-cost_view = 'X'.         "成本视图
 581 
 582 *基本数据
 583     clear pr_unit.
 584     perform frm_unit using wa_tab2-mara_base_uom changing pr_unit."基本单位
 585     clear: clientdata.
 586     clientdata-base_uom = pr_unit.                     "基本计量单位
 587     clientdata-matl_group = wa_tab2-mara_matl_group.   "物料组
 588     clientdata-item_cat = wa_tab2-mara_item_cat.       "普通项目类别组
 589     clientdata-trans_grp = wa_tab2-mara_trans_grp.     "运输组
 590     clientdata-extmatlgrp = wa_tab2-mara_extwg.        "客户
 591     clientdata-division = wa_tab2-mara_spart.          "产品组
 592     clientdata-pageformat = wa_tab2-mara_formt.        "替代料标识
 593     clientdata-basic_matl = wa_tab2-mara_wrkst.        "基本物料
 594     clientdata-document = wa_tab2-mara_zeinr.          "客户物料编码
 595     clear clientdatax.
 596     clientdatax-base_uom = 'X'.   "基本计量单位
 597     clientdatax-matl_group = 'X'.
 598     clientdatax-item_cat = 'X'.
 599     clientdatax-trans_grp = 'X'.
 600     clientdatax-extmatlgrp = 'X'.
 601     clientdatax-division = 'X'.
 602     clientdatax-pageformat = 'X'.
 603     clientdatax-basic_matl = 'X'.        "基本物料
 604     clientdatax-document = 'X'.          "客户物料编码
 605 
 606 
 607 *工厂级别数据
 608     clear:plantdata.
 609     plantdata-plant = wa_tab2-marc_plant.   "工厂
 610     plantdata-availcheck = wa_tab2-marc_availcheck.    "可用性检查
 611     plantdata-loadinggrp = wa_tab2-marc_loadinggrp.    "装载组
 612     plantdata-pur_group = wa_tab2-marc_ekgrp.          "采购组
 613     plantdata-auto_p_ord = wa_tab2-marc_kautb.         "自动采购单
 614     plantdata-batch_mgmt = wa_tab2-marc_xchpf.         "批次管理
 615     plantdata-gr_pr_time = wa_tab2-marc_webaz.         "收货处理时间
 616     plantdata-mrp_group = wa_tab2-marc_mrp_group.      "MRP组
 617     plantdata-mrp_type = wa_tab2-marc_mrp_type.        "MRP类型
 618     plantdata-mrp_ctrler = wa_tab2-marc_mrp_ctrler.    "MRP控制者
 619     plantdata-lotsizekey = wa_tab2-marc_lotsizekey.    "批量大小
 620     plantdata-minlotsize = wa_tab2-marc_bstmi.         "最小批量大小
 621     plantdata-round_val = wa_tab2-marc_bstrf.         "舍入值
 622     plantdata-proc_type = wa_tab2-marc_proc_type.      "采购类型
 623     plantdata-spproctype = wa_tab2-marc_sobsl.         "特殊采购类型
 624     plantdata-iss_st_loc = wa_tab2-marc_lgpro.         "生产仓储地点
 625     plantdata-sloc_exprc = wa_tab2-marc_lgfsb.         "外部采购仓储地点
 626     plantdata-inhseprodt = wa_tab2-marc_dzeit.         "自制生产天数
 627     plantdata-plnd_delry = wa_tab2-marc_plifz.         "计划交货时间
 628     plantdata-safety_stk = wa_tab2-marc_eisbe.         "安全库存
 629     plantdata-plan_strgp = wa_tab2-marc_strgr.         "策略组
 630     plantdata-consummode = wa_tab2-marc_vrmod.         "消耗模式
 631     plantdata-bwd_cons = wa_tab2-marc_vint1.           "逆向消耗期间
 632     plantdata-fwd_cons = wa_tab2-marc_vint2.           "消耗时期-向前
 633     plantdata-alt_bom_id = wa_tab2-marc_altsl.         "选择方法(选择可替换物料单的方法)
 634     plantdata-sm_key = wa_tab2-marc_sm_key.            "计划边际码
 635     plantdata-dep_req_id = wa_tab2-marc_sbdkz.         "集中/独立
 636     plantdata-variance_key = wa_tab2-marc_awsls.       "差异码
 637     plantdata-lot_size = wa_tab2-marc_losgr.           "成本核算批量
 638     clear plantdatax.
 639     plantdatax-plant = wa_tab2-marc_plant.
 640     plantdatax-availcheck = 'X'.
 641     plantdatax-loadinggrp = 'X'.
 642     plantdatax-pur_group = 'X'.
 643     plantdatax-auto_p_ord = 'X'.
 644     plantdatax-batch_mgmt = 'X'.
 645     plantdatax-gr_pr_time = 'X'.
 646     plantdatax-mrp_group = 'X'.
 647     plantdatax-mrp_type = 'X'.
 648     plantdatax-mrp_ctrler = 'X'.
 649     plantdatax-lotsizekey = 'X'.
 650     plantdatax-minlotsize = 'X'.
 651     plantdatax-round_val = 'X'.
 652     plantdatax-proc_type = 'X'.
 653     plantdatax-spproctype = 'X'.
 654     plantdatax-iss_st_loc = 'X'.
 655     plantdatax-sloc_exprc = 'X'.
 656     plantdatax-inhseprodt = 'X'.
 657     plantdatax-plnd_delry = 'X'.
 658     plantdatax-safety_stk = 'X'.
 659     plantdatax-plan_strgp = 'X'.
 660     plantdatax-consummode = 'X'.
 661     plantdatax-bwd_cons = 'X'.
 662     plantdatax-fwd_cons = 'X'.
 663     plantdatax-alt_bom_id = 'X'.
 664     plantdatax-sm_key = 'X'.
 665     plantdatax-dep_req_id = 'X'.
 666     plantdatax-variance_key = 'X'.
 667     plantdatax-lot_size = 'X'.
 668 
 669 
 670 *销售数据
 671     clear salesdata.
 672     salesdata-sales_org = wa_tab2-mvke_sales_org.      "销售组织
 673     salesdata-distr_chan = wa_tab2-mvke_distr_chan.    "分销渠道
 674     salesdata-delyg_plnt = wa_tab2-mvke_dwerk.         "交货工厂
 675     salesdata-cash_disc = wa_tab2-mvke_sktof.          "现金折扣标志
 676     salesdata-matl_stats = wa_tab2-mvke_matl_stats.    "物料统计组
 677     salesdata-acct_assgt = wa_tab2-mvke_acct_assgt.    "科目设置组
 678     salesdata-item_cat = wa_tab2-mvke_item_cat.        "项目类别组
 679     clear salesdatax.
 680     salesdatax-sales_org = wa_tab2-mvke_sales_org.
 681     salesdatax-distr_chan = wa_tab2-mvke_distr_chan.
 682     salesdatax-delyg_plnt = 'X'.
 683     salesdatax-cash_disc = 'X'.
 684     salesdatax-matl_stats = 'X'.
 685     salesdatax-acct_assgt = 'X'.
 686     salesdatax-item_cat = 'X'.
 687 
 688 *预测
 689     clear:forecastparameters,forecastparametersx.
 690     forecastparameters-plant = wa_tab2-marc_plant.       "工厂
 691     forecastparameters-fore_model = wa_tab2-mpop_prmod.  "预测模型
 692     forecastparametersx-plant = wa_tab2-marc_plant.
 693     forecastparametersx-fore_model = 'X'.
 694 
 695 *会计、成本
 696     clear valuationdata.
 697     valuationdata-val_area = wa_tab2-marc_plant.
 698     valuationdata-val_class = wa_tab2-mbew_val_class.     "评估级别
 699     valuationdata-ml_settle = wa_tab2-mbew_ml_settle.     "价格确定
 700     valuationdata-std_price = wa_tab2-mbew_std_price.     "标准价格
 701     valuationdata-price_ctrl = wa_tab2-mbew_price_ctrl.   "价格控制
 702     valuationdata-orig_mat = wa_tab2-mbew_orig_mat.       "物料来源
 703     clear valuationdatax.
 704     valuationdatax-val_area = wa_tab2-marc_plant.
 705     valuationdatax-val_class = 'X'.
 706     valuationdatax-ml_settle = 'X'.
 707     valuationdatax-price_ctrl = 'X'.
 708     valuationdatax-std_price = 'X'.
 709     valuationdatax-orig_mat = 'X'.
 710 
 711 
 712 *物料描述
 713     clear materialdescription[].
 714     materialdescription-langu_iso = 'ZH'.
 715     materialdescription-matl_desc = wa_tab2-t_makt_matl_desc.
 716     append materialdescription.
 717 
 718 
 719 *单位
 720     clear unitsofmeasure[].
 721     unitsofmeasure-alt_unit = pr_unit.
 722     unitsofmeasure-unit_of_wt = wa_tab2-t_marm_unit_of_wt.
 723     append unitsofmeasure.
 724     clear unitsofmeasurex[].
 725     unitsofmeasurex-alt_unit = pr_unit.
 726     unitsofmeasurex-unit_of_wt = 'X'.
 727     append unitsofmeasurex.
 728 
 729 
 730 *税分类
 731     clear taxclassifications[].
 732     taxclassifications-depcountry = 'CN'.
 733     taxclassifications-tax_type_1 = 'MWST'.
 734     taxclassifications-taxclass_1 = wa_tab2-t_mlan_taxclass1.  "税分类
 735     append taxclassifications.
 736 
 737     call function 'BAPI_MATERIAL_SAVEDATA'
 738     exporting
 739       headdata            = headdata
 740       clientdata          = clientdata
 741       clientdatax         = clientdatax
 742       plantdata           = plantdata
 743       plantdatax          = plantdatax
 744       forecastparameters  = forecastparameters
 745       forecastparametersx = forecastparametersx
 746       valuationdata       = valuationdata
 747       valuationdatax      = valuationdatax
 748       salesdata           = salesdata
 749       salesdatax          = salesdatax
 750     importing
 751       return              = return
 752     tables
 753       materialdescription = materialdescription[]
 754       unitsofmeasure      = unitsofmeasure[]
 755       unitsofmeasurex     = unitsofmeasurex
 756       taxclassifications  = taxclassifications[].
 757     if return-type = 'E' or return-type = 'A'.
 758       call function 'BAPI_TRANSACTION_ROLLBACK'.
 759       concatenate wa_tab-head_material ' 原材料—>' return-message into gt_out-text.
 760       append gt_out.
 761       clear gt_out.
 762     else.
 763       call function 'BAPI_TRANSACTION_COMMIT'
 764       exporting
 765         wait = 'X'.
 766       concatenate wa_tab2-head_material ' 成品创建成功。' into gt_out-text.
 767       append gt_out.
 768       clear gt_out.
 769     endif.
 770   endloop.
 771 endform.                                                    "mm01
 772 
 773 *&---------------------------------------------------------------------*
 774 *&      Form  open
 775 *&---------------------------------------------------------------------*
 776 *       text
 777 *----------------------------------------------------------------------*
 778 form open .
 779 
 780   call function 'KD_GET_FILENAME_ON_F4'
 781   exporting
 782 *     PROGRAM_NAME        = SYST-REPID
 783 *     DYNPRO_NUMBER       = SYST-DYNNR
 784 *     FIELD_NAME          = ' '
 785 *mask    = '*.txt,*.txt'
 786     mask    = '*.xlsx,*.xls'
 787     static  = 'X'
 788 *     MASK                = ' '
 789 *     FILEOPERATION       = 'R'
 790 *     PATH                =
 791   changing
 792     file_name           = p_file
 793 *     LOCATION_FLAG       = 'P'
 794 *   EXCEPTIONS
 795 *     MASK_TOO_LONG       = 1
 796 *     OTHERS              = 2
 797     .
 798 endform.                    "vq_fn
 799 
 800 *&---------------------------------------------------------------------*
 801 *&      Form  vq_fn1
 802 *&---------------------------------------------------------------------*
 803 *       text
 804 *----------------------------------------------------------------------*
 805 "vq_fn
 806 
 807 *&---------------------------------------------------------------------*
 808 *&      Form  upload_file
 809 *&---------------------------------------------------------------------*
 810 *       text
 811 *----------------------------------------------------------------------*
 812 form upload_file .
 813   data: it_raw_data type truxs_t_text_data.
 814   field-SYMBOLS <fs> type ty_tab.
 815   field-SYMBOLS:<fw>.
 816   data: i_excel type table of alsmex_tabline,"表格结构。"
 817         w_excel type alsmex_tabline.
 818   data:num_col type i.
 819   refresh: it_tab.
 820   "调用此函数,将Excel中的内容以类似坐标的形式存储到I_excel内表中。"
 821   call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
 822   exporting
 823     filename                = p_file
 824     i_begin_col             = 1
 825     i_begin_row             = 1
 826     i_end_col               = 55       "控制传入字段个数
 827     i_end_row               = 2500
 828   tables
 829     intern                  = i_excel
 830   exceptions
 831     inconsistent_parameters = 1
 832     upload_ole              = 2
 833     others                  = 3.
 834   delete i_excel where row = 1.        "删除第一行文本抬头。
 835   if i_excel is initial.
 836     call function 'POPUP_TO_CONFIRM_WITH_MESSAGE'
 837     exporting
 838 *     DEFAULTOPTION        = 'Y'
 839       diagnosetext1        = '数据错误'
 840 *     DIAGNOSETEXT2        = ' '
 841 *     DIAGNOSETEXT3        = ' '
 842       textline1            =  'Excel表格中没有内容!'
 843       titel                = '提示' .
 844     return.
 845   endif.
 846   sort i_excel by row col.
 847 
 848   loop at i_excel into w_excel.
 849     num_col = w_excel-col.
 850     assign component  num_col  of structure wa_tab to <fw>.
 851     <fw> = w_excel-value.
 852     at end of row.
 853       append wa_tab to it_tab.
 854       clear:wa_tab.
 855     endat.
 856     clear:w_excel.
 857   endloop.
 858 endform.                    " UPLOAD_FILE
 859 
 860 *&---------------------------------------------------------------------*
 861 *&      Form  upload_file2
 862 *&---------------------------------------------------------------------*
 863 *       text
 864 *----------------------------------------------------------------------*
 865 form upload_file2.
 866   data: it_raw_data type truxs_t_text_data.
 867   field-SYMBOLS <fs> type ty_tab2.
 868   field-SYMBOLS:<fw>.
 869 
 870   data: i_excel type table of alsmex_tabline,"表格结构。"
 871         w_excel type alsmex_tabline.
 872   data:num_col type i.
 873   refresh: it_tab2.
 874   "调用此函数,将Excel中的内容以类似坐标的形式存储到I_excel内表中。"
 875   call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
 876   exporting
 877     filename                = p_file
 878     i_begin_col             = 1
 879     i_begin_row             = 1
 880     i_end_col               = 60       "控制传入字段个数
 881     i_end_row               = 2500
 882   tables
 883     intern                  = i_excel
 884   exceptions
 885     inconsistent_parameters = 1
 886     upload_ole              = 2
 887     others                  = 3.
 888   delete i_excel where row = 1.         "删除第一行文本抬头。
 889   if i_excel is initial.
 890     call function 'POPUP_TO_CONFIRM_WITH_MESSAGE'
 891     exporting
 892 *     DEFAULTOPTION        = 'Y'
 893       diagnosetext1        = '数据错误'
 894 *     DIAGNOSETEXT2        = ' '
 895 *     DIAGNOSETEXT3        = ' '
 896       textline1            =  'Excel表格中没有内容!'
 897       titel                = '提示' .
 898     return.
 899   endif.
 900   sort i_excel by row col.
 901 
 902   loop at i_excel into w_excel.
 903     num_col = w_excel-col.
 904     assign component  num_col  of structure wa_tab2 to <fw>.
 905     <fw> = w_excel-value.
 906     at end of row.
 907       append wa_tab2 to it_tab2.
 908       clear:wa_tab2.
 909     endat.
 910     clear:w_excel.
 911   endloop.
 912 endform.                    " UPLOAD_FILE
 913 
 914 *获取基本计量单位内码
 915 form frm_unit using unit1 changing unit2.
 916   call function 'CONVERSION_EXIT_CUNIT_INPUT'
 917   exporting
 918     input          = unit1
 919     language       = sy-langu
 920   importing
 921     output         = unit2
 922   exceptions
 923     unit_not_found = 1
 924     others         = 2.
 925   if sy-subrc <> 0.
 926 *   message id sy-msgid type sy-msgty number sy-msgno
 927 *           with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 928   endif.
 929 endform.                    "frm_unit
 930 
 931 
 932 *&---------------------------------------------------------------------*
 933 *&      Form  result_message
 934 *&---------------------------------------------------------------------*
 935 *       text
 936 *----------------------------------------------------------------------*
 937 form result_message.
 938   loop at gt_out.
 939     write: / gt_out-text.
 940   endloop.
 941 endform.                    "sub_output_result
 942 
 943 
 944 *&---------------------------------------------------------------------*
 945 *&      Form  selection_screeen
 946 *&---------------------------------------------------------------------*
 947 *       text
 948 *----------------------------------------------------------------------*
 949 form selection_screeen .
 950   case sscrfields-ucomm.
 951   when 'FC01'.
 952     if radio_1 = 'X'.
 953       perform download_template.
 954     else.
 955       perform download_template2.
 956     endif.
 957   endcase.
 958 endform.                    "SELECTION_SCREEEN
 959 
 960 
 961 *&---------------------------------------------------------------------*
 962 *&      Form  download_template
 963 *&---------------------------------------------------------------------*
 964 *       text
 965 *----------------------------------------------------------------------*
 966 form download_template.
 967 
 968   data lv_file like rlgrap-filename.
 969   data lv_string type string.
 970 
 971   call function 'KD_GET_FILENAME_ON_F4'
 972   exporting
 973 *     PROGRAM_NAME        = SYST-REPID
 974 *     DYNPRO_NUMBER       = SYST-DYNNR
 975 *     field_name          = lv_string
 976     static              = 'X'
 977     mask                = ',EXCEL,*.xls.'
 978 *     FILEOPERATION       = 'R'
 979 *     PATH                =
 980   changing
 981     file_name           = lv_file.
 982   clear wa_tab.
 983   wa_tab-head_material = 'YCL07'.
 984   wa_tab-head_ind_sector = 'M'.
 985   wa_tab-head_matl_type = '8030'.
 986   wa_tab-marc_plant = '7888'.
 987   wa_tab-mvke_sales_org = '7888'.
 988   wa_tab-mvke_distr_chan = '10'.
 989   wa_tab-t_makt_matl_desc = 'YCL07原材料'.
 990   wa_tab-mara_base_uom = 'EA'.
 991   wa_tab-mara_matl_group = '00103'.
 992   wa_tab-mara_extwg = 'DW'.
 993   wa_tab-mara_item_cat = 'NORM'.
 994   wa_tab-t_marm_unit_of_wt = 'KG'.
 995   wa_tab-mara_wrkst = '基本数据2_基本物料'.
 996   wa_tab-mara_ihivi = 'X'.
 997   wa_tab-mara_zeinr = '基本数据2_客户物料编码'.
 998   wa_tab-mvke_dwerk = '7888'.
 999   wa_tab-mvke_sktof = 'X'.
1000   wa_tab-t_mlan_taxclass1 = '1'.
1001   wa_tab-mvke_matl_stats = '1'.
1002   wa_tab-mvke_acct_assgt = '03'.
1003   wa_tab-mvke_item_cat = 'NORM'.
1004   wa_tab-marc_availcheck = '02'.
1005   wa_tab-mara_trans_grp = '0001'.
1006   wa_tab-marc_loadinggrp = '0001'.
1007   wa_tab-marc_pur_group = '104'.
1008   wa_tab-marc_batch_mgmt = 'X'.
1009   wa_tab-marc_auto_p_ord = 'X'.
1010   wa_tab-marc_webaz = '5'.
1011   wa_tab-marc_insmk = 'X'.
1012   wa_tab-marc_mrp_group = '0007'.
1013   wa_tab-marc_maabc = 'A'.
1014   wa_tab-marc_mrp_type = 'PD'.
1015   wa_tab-marc_mrp_ctrler = '001'.
1016   wa_tab-marc_lotsizekey = 'EX'.
1017   wa_tab-marc_minlotsize = '105'.
1018   wa_tab-marc_round_val = '205'.
1019   wa_tab-marc_proc_type = 'F'.
1020   wa_tab-marc_lgpro = '1021'.
1021   wa_tab-marc_rgekz = '1'.
1022   wa_tab-marc_lgfsb = '1021'.
1023   wa_tab-marc_sm_key = '000'.
1024   wa_tab-marc_plnd_delry = '30'.
1025   wa_tab-marc_sbdkz = '1'.
1026   wa_tab-mbew_val_class = '3000'.
1027   wa_tab-mbew_ml_settle = '2'.
1028   wa_tab-mbew_std_price = '5'.
1029   wa_tab-mbew_moving_pr = '5'.
1030   wa_tab-mbew_price_ctrl = 'V'.
1031   wa_tab-mbew_price_unit = '1'.
1032   wa_tab-mbew_hrkft = 'Z10'.
1033   wa_tab-mbew_orig_mat = 'X'.
1034   wa_tab-marc_losgr = '10'.
1035   append wa_tab to it_tab.
1036   clear wa_tab.
1037 
1038   if it_fname is initial.
1039     perform append_filename using:'物料号',
1040           '行业领域',
1041           '物料类型',
1042           '工厂',
1043           '销售组织',
1044           '分销渠道',
1045           '物料描述',
1046           '基本计量单位',
1047           '物料组',
1048           '客户',
1049           '普通项目组类别',
1050           '重量单位',
1051           '基本物料',
1052           '是否客供',
1053           '客户物料编码',
1054           '交货工厂',
1055           '现金折扣',
1056           '税分类',
1057           '物料统计组',
1058           '科目设置组',
1059           '项目类别组',
1060           '可用性检查',
1061           '运输组',
1062           '装载组',
1063           '采购组',
1064           '批次管理标示',
1065           '自动采购订单标识',
1066           '收货处理时间',
1067           '过账至检验库存',
1068           'MRP组',
1069           'ABC标识',
1070           'MRP类型',
1071           'MRP控制者',
1072           '批量',
1073           '最小批量',
1074           '舍入值',
1075           '采购类型',
1076           '生产仓储地点',
1077           '反冲',
1078           '外部采购仓储地点',
1079           '计划边际码',
1080           '计划交货时间',
1081           '集中/独立',
1082           '评估级别',
1083           '价格确定',
1084           '标准价格',
1085           '移动平均价',
1086           '价格控制',
1087           '价格单位',
1088           '原始组',
1089           '物料来源',
1090           '成品核算PL'.
1091   endif.
1092   lv_string = lv_file.
1093   call function 'GUI_DOWNLOAD'
1094   exporting
1095 *         BIN_FILESIZE                    =
1096     filename                        = lv_string
1097     filetype                       = 'DBF'
1098 *      filetype                        = 'DAT'
1099     append                       = 'X'
1100     write_field_separator           = 'X'
1101     codepage                        = '8400'   "指定写文件时用的字符集
1102   tables
1103     data_tab                        = it_tab
1104     fieldnames                      = it_fname[].
1105   if sy-subrc <> 0.
1106 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
1107 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
1108   endif.
1109   clear: it_tab,it_fname[],lv_string.
1110 endform.                    "download_templat
1111 
1112 
1113 *&---------------------------------------------------------------------*
1114 *&      Form  download_template2
1115 *&---------------------------------------------------------------------*
1116 *       text
1117 *----------------------------------------------------------------------*
1118 form download_template2.
1119 
1120   data lv_file like rlgrap-filename.
1121   data lv_string type string.
1122 
1123   call function 'KD_GET_FILENAME_ON_F4'
1124   exporting
1125 *     PROGRAM_NAME        = SYST-REPID
1126 *     DYNPRO_NUMBER       = SYST-DYNNR
1127 *     field_name          = lv_string
1128     static              = 'X'
1129     mask                = ',EXCEL,*.xls.'
1130 *     FILEOPERATION       = 'R'
1131 *     PATH                =
1132   changing
1133     file_name           = lv_file.
1134   clear wa_tab2.
1135   wa_tab2-head_material = 'CP01'.
1136   wa_tab2-head_ind_sector = 'M'.
1137   wa_tab2-head_matl_type = '8010'.
1138   wa_tab2-marc_plant = '7888'.
1139   wa_tab2-mvke_sales_org = '7888'.
1140   wa_tab2-mvke_distr_chan = '10'.
1141   wa_tab2-t_makt_matl_desc = 'CP01成品测试'.
1142   wa_tab2-mara_base_uom = 'EA'.
1143   wa_tab2-mara_matl_group = '00501030'.
1144   wa_tab2-mara_extwg = 'DW'.
1145   wa_tab2-mara_spart = '01'.
1146   wa_tab2-mara_item_cat = 'NORM'.
1147   wa_tab2-t_marm_unit_of_wt = 'KG'.
1148   wa_tab2-mara_formt = 'Y'.
1149   wa_tab2-mara_wrkst = '基本物料'.
1150   wa_tab2-mara_zeinr = '客户物料编码'.
1151   wa_tab2-mvke_dwerk = '7888'.
1152   wa_tab2-mvke_sktof = 'X'.
1153   wa_tab2-t_mlan_taxclass1 = '1'.
1154   wa_tab2-mvke_matl_stats = '1'.
1155   wa_tab2-mvke_acct_assgt = '01'.
1156   wa_tab2-mvke_item_cat = 'NORM'.
1157   wa_tab2-marc_availcheck = '02'.
1158   wa_tab2-mara_trans_grp = '0001'.
1159   wa_tab2-marc_loadinggrp = '0001'.
1160   wa_tab2-marc_ekgrp = '101'.
1161   wa_tab2-marc_kautb = 'X'.
1162   wa_tab2-marc_xchpf = 'X'.
1163   wa_tab2-marc_webaz = '1'.           "收货处理时间
1164   wa_tab2-marc_mrp_group = 'F001'.
1165   wa_tab2-marc_mrp_type = 'PD'.
1166   wa_tab2-marc_mrp_ctrler = '050'.
1167   wa_tab2-marc_lotsizekey = 'EX'.     "批量大小
1168   wa_tab2-marc_bstmi = '100'.         "最小批量大小
1169   wa_tab2-marc_bstrf = '100'.         "舍入值
1170   wa_tab2-marc_proc_type = 'X'.       "采购类型
1171   wa_tab2-marc_sobsl = '10'.          "特殊采购类型
1172   wa_tab2-marc_lgpro = '3002'.        "生产仓储地点
1173   wa_tab2-marc_lgfsb = '3002'.        "外部采购仓储地点
1174   wa_tab2-marc_dzeit = '3'.           "自制生产天数
1175   wa_tab2-marc_plifz = '1'.           "计划交货时间
1176   wa_tab2-marc_eisbe = '100'.         "安全库存
1177   wa_tab2-marc_sm_key = '000'.        "计划边际码
1178   wa_tab2-marc_strgr = '10'.          "策略组
1179   wa_tab2-marc_vrmod = '2'.           "消耗模式
1180   wa_tab2-marc_vint1 = '999'.         "逆向消耗期间
1181   wa_tab2-marc_vint2 = '999'.         "向前消耗期间
1182   wa_tab2-marc_altsl = '1'.           "选择方法
1183   wa_tab2-marc_sbdkz = '1'.           "集中/独立
1184   wa_tab2-mpop_prmod = 'D'.           "预测模型
1185   wa_tab2-mbew_val_class = '7920'.    "评估级别
1186   wa_tab2-mbew_ml_settle = '3'.       "价格确定
1187   wa_tab2-mbew_std_price = '5'.       "标准价格
1188   wa_tab2-mbew_price_ctrl = 'S'.      "价格控制
1189   wa_tab2-mbew_orig_mat = 'X'.        "物料来源
1190   wa_tab2-marc_awsls = '000001'.      "差异码
1191   wa_tab2-marc_losgr = '100'.         "成本核算批量
1192   append wa_tab2 to it_tab2.
1193   clear wa_tab2.
1194 
1195   if it_fname is initial.
1196     perform append_filename using:'物料号',
1197           '行业领域',
1198           '物料类型',
1199           '工厂',
1200           '销售组织',
1201           '分销渠道',
1202           '物料描述',
1203           '基本计量单位',
1204           '物料组',
1205           '客户',
1206           '产品组',
1207           '普通项目组类别',
1208           '重量单位',
1209           '替代料标识',
1210           '基本物料',
1211           '客户物料编码',
1212           '交货工厂',
1213           '现金折扣',
1214           '税分类',
1215           '物料统计组',
1216           '科目设置组',
1217           '项目类别组',
1218           '可用性检查',
1219           '运输组',
1220           '装载组',
1221           '采购组',
1222           '自动采购单',
1223           '批次管理',
1224           '收货处理时间',
1225           'MRP组',
1226           'MRP类型',
1227           'MRP控制者',
1228           '批量大小',
1229           '最小批量大小',
1230           '舍入值',
1231           '采购类型',
1232           '特殊采购类型',
1233           '生产仓储地点',
1234           '外部采购仓储地点',
1235           '生产时间',
1236           '计划交货时间',
1237           '安全库存',
1238           '计划边际码',
1239           '策略组',
1240           '消耗模式',
1241           '逆向消耗模式',
1242           '向前消耗模式',
1243           '选择方法',
1244           '集中/独立',
1245           '预测模型',
1246           '评估级别',
1247           '价格确定',
1248           '标准价格',
1249           '价格控制',
1250           '物料来源',
1251           '差异码',
1252           '成本核算批量'.
1253   endif.
1254   lv_string = lv_file.
1255   call function 'GUI_DOWNLOAD'
1256   exporting
1257 *         BIN_FILESIZE                    =
1258     filename                        = lv_string
1259     filetype                        = 'DBF'
1260 *         APPEND                          = ' '
1261     write_field_separator           = 'X'
1262     codepage                        = '8400'   "指定写文件时用的字符集
1263   tables
1264     data_tab                        = it_tab2
1265     fieldnames                      = it_fname[].
1266   if sy-subrc <> 0.
1267 * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
1268 *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
1269   endif.
1270   clear:it_tab2,it_fname[],lv_string.
1271 endform.                    "download_templat
1272 
1273 *&---------------------------------------------------------------------*
1274 *&      Form  append_filename
1275 *&---------------------------------------------------------------------*
1276 *       text
1277 *----------------------------------------------------------------------*
1278 *      -->P_NAME     text
1279 *----------------------------------------------------------------------*
1280 form append_filename using p_name .
1281   it_fname-name = p_name.
1282   append it_fname.
1283   clear it_fname.
1284 endform.                    "append_filename
1285 *&---------------------------------------------------------------------*
1286 *&      Form  POP_CONFIRM
1287 *&---------------------------------------------------------------------*
1288 *      弹出确认对话框进行价格判断
1289 *----------------------------------------------------------------------*
1290 *  -->  p1        text
1291 *  <--  p2        text
1292 *----------------------------------------------------------------------*
1293 form pop_confirm using value(char_abc) value(material).
1294   data: resul type c,
1295         str   type char255.
1296   clear:resul,str.
1297   if char_abc = 'A'.
1298     concatenate material '原材料 ' char_abc '类价格大于100,继续导入?' into str.
1299 elseif char_abc = 'B'.
1300     concatenate material '原材料 ' char_abc '类价格大于5,继续导入?' into str.
1301   else.
1302     concatenate material '原材料 ' char_abc '类价格大于1,继续导入?' into str.
1303   endif.
1304   call function 'POPUP_TO_CONFIRM'
1305   exporting
1306     text_question         = str
1307     icon_button_1         = ''
1308     icon_button_2         = ''
1309     default_button        = '1'
1310     display_cancel_button = ''  "显示取消的按钮并可用
1311     start_column          = 40
1312     start_row             = 10
1313   importing
1314     answer                = resul.
1315   if resul = '1'.
1316   else.
1317     concatenate material ' 物料未创建!' into gt_out-text.
1318     append gt_out.
1319     clear gt_out.
1320     flag = 1.
1321     return.
1322   endif.
1323 endform.                    " POP_CONFIRM

在下载模板的时候使用的是 GUI_DOWNLOAD 这个函数,通过这个函数的 filetype = 'DBF',codepage = '8400' 可以保存带有前导零的数据,但是下载的模板抬头的中文的每列最多只能显示五个汉字。

如果 filetype = 'DAT',抬头的文本数据可以完整下载,但是主要数据则会去除数字的前导零。

如果有知道如何解决的话请在评论区留言,谢谢!!!

posted @ 2019-11-07 09:36  肆意点  阅读(1109)  评论(0编辑  收藏  举报