SAP ABAP学习代码笔记09

*&---------------------------------------------------------------------*
*& Report ZMMD0009_TEST_DL
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZMMD0009_TEST_DL.

DATA: BEGIN OF RECORD OCCURS 0,
      HEAD_MATL_TYPE TYPE MTART,"物料类型
      HEAD_MATERIAL TYPE MATNR,"物料号
      HEAD_IND_SECTOR TYPE MBRSH,"行业领域
      MARC_PLANT TYPE WERKS_D, "工厂
      T_MAKT_MATL_DESC TYPE MAKTX,"物料描述
      MARA_BASE_UOM TYPE MEINS,"基本计量单位
      MARA_MATL_GROUP TYPE MATKL,"物料组
      MARC_PUR_GROUP TYPE EKGRP,"采购组
      MARC_MRP_TYPE TYPE DISMM, "MRP类型
      MARC_MRP_CTRLER TYPE DISPO,"MRP控制者
      MARC_LOTSIZEKEY TYPE DISLS,"批量
      MARC_PLND_DELRY TYPE PLIFZ,"计划交货时间
      MARC_SM_KEY TYPE FHORI," 计划边际码
      MARC_SAFETY_STK TYPE EISBE,"安全库存
      MARC_AVAILCHECK TYPE MTVFP,"可用性检查
      MBEW_VAL_CLASS TYPE BKLAS,"评估类
      MBEW_PRICE_CTRL TYPE VPRSV,"价格控制
      MBEW_PRICE_UNIT TYPE PEINH,"价格单位
      MBEW_MOVING_PR TYPE VERPR_BAPI,"移动平均价
 END OF RECORD.
 "BREAK-POINT.
"输入参数
DATA:
HEADDATA TYPE BAPIMATHEAD, "表头数据
CLIENTDATA TYPE BAPI_MARA, "基本数据
CLIENTDATAX TYPE BAPI_MARAX,
PLANTDATA TYPE BAPI_MARC, "工厂级别数据
PLANTDATAX TYPE BAPI_MARCX,
FORECASTPARAMETERS TYPE BAPI_MPOP, "预测
FORECASTPARAMETERSX TYPE BAPI_MPOPX,
PLANNINGDATA TYPE BAPI_MPGD, "计划
PLANNINGDATAX TYPE BAPI_MPGDX,
STORAGELOCATIONDATA TYPE BAPI_MARD, "存储位置
STORAGELOCATIONDATAX TYPE BAPI_MARDX,
VALUATIONDATA TYPE BAPI_MBEW, "评估数据
VALUATIONDATAX TYPE BAPI_MBEWX,
WAREHOUSENUMBERDATA TYPE BAPI_MLGN, "仓库数据
WAREHOUSENUMBERDATAX TYPE BAPI_MLGNX,
SALESDATA TYPE BAPI_MVKE, "销售数据
SALESDATAX TYPE BAPI_MVKEX,
STORAGETYPEDATA TYPE BAPI_MLGT, "存储类型数据
STORAGETYPEDATAX TYPE BAPI_MLGTX.
"BREAK-POINT.
"TABLE参数
DATA:
MATERIALDESCRIPTION TYPE TABLE OF BAPI_MAKT WITH HEADER LINE,"描述
UNITSOFMEASURE TYPE TABLE OF BAPI_MARM WITH HEADER LINE,"单位
UNITSOFMEASUREX TYPE TABLE OF BAPI_MARMX WITH HEADER LINE,
TAXCLASSIFICATIONS TYPE TABLE OF BAPI_MLAN WITH HEADER LINE."税分类
"BREAK-POINT.

"声明RETURN返回值参数
DATA RETURN TYPE BAPIRET2.


*&-----------------------------------------------------------------------
*&建立输入框,读取EXCEL文件
*&-----------------------------------------------------------------------
*声明一个输入框,变量是DATASET,参考本地文件参数LOCALFILEPARAMETERS: DATASET TYPE LOCALFILE.
*读取屏幕选择输入框内的值,去打开文件名FORM.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR DATASET.
  PERFORM OPEN_FILE USING DATASET.
*--------------取文件名的FORM--------------------------------------------
FORM OPEN_FILE CHANGING X TYPE LOCALFILE ."读取文件
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      DEF_FILENAME     = ''
      DEF_PATH         = ''
      MASK             = ',Excel Files(*.xlsx),*.xlsx,Excel Files(*.xls),*.xls,ALL Files(*),*.'
     "MASK             = ',Excel(*.xls),*.XLS.'
      MODE             = '0'
      TITLE            = '取文件名'
    IMPORTING
      FILENAME         = X
    EXCEPTIONS
      INV_WINSYS       = 01
      NO_BATCH         = 02
      SELECTION_CANCEL = 03
      SELECTION_ERROR  = 04
      OTHERS           = 05.
ENDFORM.
*&------------------------------------------------------------------------


START-OF-SELECTION.
  PERFORM IMPORT_FROM_FILE TABLES RECORD[] USING DATASET.
"BREAK-POINT.
*如果内表中没内容,退出
  IF RECORD[] IS INITIAL.
    WRITE:/'输入数据为空'.
    EXIT.
  ENDIF.
 DATA: PR_UNIT TYPE MEINS."基本计量单位
  LOOP AT RECORD.
    CLEAR HEADDATA.
    HEADDATA-MATERIAL = RECORD-HEAD_MATERIAL. "物料号
    HEADDATA-MATL_TYPE = RECORD-HEAD_MATL_TYPE. "物料类型
    HEADDATA-IND_SECTOR = RECORD-HEAD_IND_SECTOR."行业领域
    HEADDATA-BASIC_VIEW = 'X'.
    HEADDATA-SALES_VIEW = 'X'.
    HEADDATA-PURCHASE_VIEW = 'X'.
    HEADDATA-MRP_VIEW = 'X'.
    HEADDATA-WAREHOUSE_VIEW = 'X'.
    HEADDATA-ACCOUNT_VIEW = 'X'.
    HEADDATA-COST_VIEW = 'X'.
    "基本数据
    CLEAR CLIENTDATA.
    CLIENTDATA-MATL_GROUP = RECORD-MARA_MATL_GROUP. "物料组
    PERFORM GET_PR_UNIT USING RECORD-MARA_BASE_UOM CHANGING PR_UNIT. "基本计量单位
    CLIENTDATA-BASE_UOM = PR_UNIT.
    CLEAR CLIENTDATAX.
    CLIENTDATAX-MATL_GROUP = 'X'.
    CLIENTDATAX-BASE_UOM = 'X'.
    CLIENTDATAX-EXTMATLGRP = 'X'.
    CLIENTDATAX-ITEM_CAT = 'X'.
    CLIENTDATAX-NET_WEIGHT = 'X'.
    CLIENTDATAX-TRANS_GRP = 'X'.
    "工厂级别数据
    CLEAR PLANTDATA.
    PLANTDATA-PLANT = RECORD-MARC_PLANT. "工厂
    PLANTDATA-PUR_GROUP = RECORD-MARC_PUR_GROUP."采购组
    PLANTDATA-MRP_TYPE = RECORD-MARC_MRP_TYPE."MRP类型
    PLANTDATA-MRP_CTRLER = RECORD-MARC_MRP_CTRLER."MRP控制者
    PLANTDATA-LOTSIZEKEY = RECORD-MARC_LOTSIZEKEY."批量
    PLANTDATA-PLND_DELRY = RECORD-MARC_PLND_DELRY."计划交货时间
    PLANTDATA-SM_KEY = RECORD-MARC_SM_KEY." 计划边际码
    PLANTDATA-SAFETY_STK = RECORD-MARC_SAFETY_STK."安全库存
    PLANTDATA-AVAILCHECK = RECORD-MARC_AVAILCHECK."可用性检查
    CLEAR PLANTDATAX.
    PLANTDATAX-PLANT = RECORD-MARC_PLANT.
    PLANTDATAX-AVAILCHECK = 'X'.
    PLANTDATAX-LOADINGGRP = 'X'.
    PLANTDATAX-PUR_GROUP = 'X'.
    PLANTDATAX-BATCH_MGMT = 'X'.
    PLANTDATAX-AUTO_P_ORD = 'X'.
    PLANTDATAX-IND_POST_TO_INSP_STOCK = 'X'.
    PLANTDATAX-QUOTAUSAGE = 'X'.
    PLANTDATAX-SOURCELIST = 'X'.
    PLANTDATAX-MRP_GROUP = 'X'.
    PLANTDATAX-MRP_TYPE = 'X'.
    PLANTDATAX-MRP_CTRLER = 'X'.
    PLANTDATAX-LOTSIZEKEY = 'X'.
    PLANTDATAX-MINLOTSIZE = 'X'.
    PLANTDATAX-MAXLOTSIZE = 'X'.
    PLANTDATAX-ROUND_VAL = 'X'.
    PLANTDATAX-PROC_TYPE = 'X'.
    PLANTDATAX-BACKFLUSH = 'X'.
    PLANTDATAX-PLND_DELRY = 'X'.
    PLANTDATAX-GR_PR_TIME = 'X'.
    PLANTDATAX-SAFETY_STK = 'X'.
    PLANTDATAX-SM_KEY = 'X'.
    PLANTDATAX-PLAN_STRGP = 'X'.
    PLANTDATAX-ALT_BOM_ID = 'X'.
    "会计、成本
    CLEAR VALUATIONDATA.
    VALUATIONDATA-VAL_AREA = RECORD-MARC_PLANT. "评估范围===================
    VALUATIONDATA-VAL_CLASS = RECORD-MBEW_VAL_CLASS. "评估类
    VALUATIONDATA-PRICE_CTRL = RECORD-MBEW_PRICE_CTRL. "价格控制
    VALUATIONDATA-PRICE_UNIT = RECORD-MBEW_PRICE_UNIT. "价格单位
    VALUATIONDATA-MOVING_PR = RECORD-MBEW_MOVING_PR. "移动平均价
    CLEAR VALUATIONDATAX.
    VALUATIONDATAX-VAL_AREA = RECORD-MARC_PLANT.
    VALUATIONDATAX-VAL_CLASS = 'X'.
    VALUATIONDATAX-PRICE_CTRL = 'X'.
    VALUATIONDATAX-PRICE_UNIT = 'X'.
    VALUATIONDATAX-MOVING_PR = 'X'.
    "物料描述
    CLEAR MATERIALDESCRIPTION[].
    MATERIALDESCRIPTION-LANGU_ISO = 'ZH'.
    MATERIALDESCRIPTION-MATL_DESC = RECORD-T_MAKT_MATL_DESC. "物料描述
    APPEND MATERIALDESCRIPTION.
   CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
   EXPORTING
   HEADDATA = HEADDATA
   CLIENTDATA = CLIENTDATA
   CLIENTDATAX = CLIENTDATAX
   PLANTDATA = PLANTDATA
   PLANTDATAX = PLANTDATAX
   VALUATIONDATA = VALUATIONDATA
   VALUATIONDATAX = VALUATIONDATAX
   IMPORTING
   RETURN = RETURN
   TABLES
   MATERIALDESCRIPTION = MATERIALDESCRIPTION[].
  IF SY-SUBRC = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    WAIT = 'X'.
    WRITE:/ RETURN-MESSAGE.
  ENDIF.
  ENDLOOP.
  "获取基本计量单位内码
FORM GET_PR_UNIT USING UNIT1 CHANGING UNIT2.
  SELECT SINGLE MSEHI INTO UNIT2 FROM T006A WHERE SPRAS = 1 AND MSEH3 = UNIT1.
  IF SY-SUBRC <> 0.
    UNIT2 = UNIT1.
  ENDIF.
ENDFORM.

*--------把文件放内表的FORM----------------
FORM IMPORT_FROM_FILE TABLES RECORD_TEMP LIKE RECORD[]
                      USING X TYPE LOCALFILE.
  DATA: FLENGTH TYPE I.
  CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
      FILENAME            = X
      FILETYPE            = 'DAT'
    IMPORTING
      FILELENGTH          = FLENGTH
    TABLES
      DATA_TAB            = RECORD_TEMP
    EXCEPTIONS
      CONVERSION_ERROR    = 1
      FILE_OPEN_ERROR     = 2
      FILE_READ_ERROR     = 3
      INVALID_TABLE_WIDTH = 4
      INVALID_TYPE        = 5.
ENDFORM.
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值