《100小时学会SAP》很老的一本书,现在想认真的花些时间学习一下。
系统环境:
选用仁鹏的ECC6 EHP7 纯净系统虚拟机,WIN2003, SQLSERVER2008,磁盘大小80GB。(虽然自己也是BASIS,安装出来其实也是一样,就用这个把,很方便,应该把时间都花到模块上)。
WIN2003 ECC6 EHP7 纯净版_免费高速下载|百度网盘-分享无限制
系统跑起来后,给了16G物理内存,调整SAP总的内存占用 em/initial_size_MB 10000 给SAP 10GB。建立逻辑系统用 T-code: SALE ,SCC4新建一个client100,里面要指定逻辑系统。
退出系统,用SAP* ,pass 登陆client100, 密码不对。 参数文件(C:\usr\sap\ECC\SYS\profile)中加: login/no_automatic_user_sapstar = 0 搞定。 没空用rz10,自己的系统直接就改参数文件了。
登陆client100,用scc9 从源client000中,参数选SAP_CUST, 把000拷贝到100中。
(3小时完成,db02看看 free 20G, OS C盘还剩5G, 够用就行)

MM配置:
按书中完成MM后台配置,之后要求创建5个原材料物料主数据。
正好练习一下ABAP,写了一个物料主数据的批导入程序:
程序导入数据模版:
| 物料类型 | 物料号 | 行业领域 | 工厂 | 物料描述 | 基本计量单位 | 物料组 | 采购组 | MRP类型 | MRP控制者 | 批量 | 计划交货时间 | 计划边际码 | 安全库存 | 可用性检查 | 评估类 | 价格控制 | 价格单位 | 移动平均价 |
| ROH | R999-701 | M | P999 | 金属片 | M2 | 1 | PG1 | PD | 1 | EX | 3 | Z01 | 60 | 2 | 3000 | V | 1 | 21 |
*&---------------------------------------------------------------------*
*& REPORT ZMM0001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMM0001.
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.
"输入参数
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.
"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."税分类
"RETURN
DATA RETURN TYPE BAPIRET2.
*声明一个输入框,变量是DATASET
PARAMETERS: DATASET TYPE LOCALFILE.
*屏幕选择输入框,去打开取文件名FORM.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR DATASET.
PERFORM OPEN_FILE USING DATASET.
START-OF-SELECTION.
PERFORM IMPORT_FROM_FILE TABLES RECORD[] USING DATASET.
*如果内表中没内容,退出
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 OPEN_FILE CHANGING X TYPE LOCALFILE .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = ''
DEF_PATH = ''
MASK = ',*.TXT,*.TXT.'
MODE = '0'
TITLE = '取文件名'
IMPORTING
FILENAME = X
EXCEPTIONS
INV_WINSYS = 01
NO_BATCH = 02
SELECTION_CANCEL = 03
SELECTION_ERROR = 04.
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 MM模块自学实践
本文详细介绍了一位SAP初学者如何通过《100小时学会SAP》这本书籍指导,搭建并配置SAP ECC6EHP7系统环境,进行MM模块的学习与实践。包括系统环境设置、物料主数据批导入程序的编写、参数调整等内容。
https://basis.blog.youkuaiyun.com/article/details/51799475
1750





