*&---------------------------------------------------------------------*
*& 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,参考本地文件参数LOCALFILE。
PARAMETERS: 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.
SAP ABAP学习代码笔记09
最新推荐文章于 2024-06-04 20:26:31 发布