目录
2.2.4 "如果选择查询信息,则根据选择条件获取查询信息... 5
2.2.1 1"如果录入的销售订单号不为空,则获取销售订单号对应的客户及客户信息... 8
2.2.1 2"获取销售订单的变式配置信息里的系统电压和电池阻然... 8
2.2.1 3"初始化生产订单的开始日期和结束日期... 9
2.2.1 4"获取生产订单的明细数据,主要是工作中心数据... 9
2.2.1 7"如果选择路径为空,则调出文件选择路径... 11
2.2.20"如果导入物料及工厂有对应的生产计划订单,则删除生产计划订单... 11
2.2.30"如果导入模板工作中心不为空,则修改生产订单工作中心... 18
2.2.33 "调用Bapi修改生产订单的工作中心... 19
2.1程序说明
-
- 生产订单导入前需要将选择物料期间内的计划订单清除。
- 生产订单的订单类型是ND01。
- 计划开始日期写入订单开始日期,计划完成日期写入订单完成日期。
- 当数据中有销售订单时,用事务代码:CO08创建。
- 版本号写入生产版本及客户屏幕的“极板”字段。
- 工作中心写入工序概览中,当工作中心为1001001时,批量更新工作中心为1001开头的工序(根据工作中心前四位的编码)
2.2 程序实现
2.2.1 选择下载模板,则下载模板
"---下载模板
WHEN P_DOWN.
PERFORM SUB_DOWNLOAD_TEMPLATE.
2.2.2"导出模板的名称
DATA:TEMPFILE TYPE STRING.
CONCATENATE '生产订单' '_' SY-DATUM+6(2) '_' SY-DATUM+4(2) '_' SY-DATUM(4) '_' SY-UZEIT '.xls' INTO TEMPFILE.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = TEMPFILE
DEF_PATH = G_FILE
MASK = ',*.xls,*.*.'
MODE = '0'
TITLE = 'Save path'
IMPORTING
FILENAME = G_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 08
SELECTION_CANCEL = 12
SELECTION_ERROR = 16.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
2.2.3"调用OLE,将模板导出导Excel
IF G_FILE IS NOT INITIAL.
* start Excel
IF H_EXCEL-HEADER = SPACE OR H_EXCEL-HANDLE = -1.
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
ENDIF.
*--- get list of workbooks, initially empty
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
SET PROPERTY OF H_EXCEL 'Visible' = 0.
CALL METHOD OF H_MAPL 'Add' = H_MAP.
PERFORM SET_FIRST_SHEET.
LINE = 1.
L_RC = 0.
ROW = 19.
PERFORM FILL_RANGE USING LINE 1 '工厂'.
PERFORM FILL_RANGE USING LINE 2 '销售订单号'.
PERFORM FILL_RANGE USING LINE 3 '行项目'.
PERFORM FILL_RANGE USING LINE 4 '客户名称'.
PERFORM FILL_RANGE USING LINE 5 '物料编号'.
PERFORM FILL_RANGE USING LINE 6 '物料描述'.
PERFORM FILL_RANGE USING LINE 7 ''.
PERFORM FILL_RANGE USING LINE 8 ''.
PERFORM FILL_RANGE USING LINE 9 '订单数量'.
PERFORM FILL_RANGE USING LINE 10 '销售订单交期'.
PERFORM FILL_RANGE USING LINE 11 '计划开始日期'.
PERFORM FILL_RANGE USING LINE 12 '计划完成日期'.
PERFORM FILL_RANGE USING LINE 13 '工作中心'.
PERFORM FILL_RANGE USING LINE 14 '版本号'.
PERFORM FILL_RANGE USING LINE 15 '备注'.
PERFORM FILL_RANGE USING LINE 16 '计划生产数'.
LINE = LINE + 1.
PERFORM FILL_RANGE USING LINE 10 'YYYYMMDD'.
PERFORM FRM_COLFORMART USING 1.
PERFORM FRM_COLFORMART USING 2.
PERFORM FRM_COLFORMART USING 3.
PERFORM FRM_COLFORMART USING 5.
PERFORM FRM_COLFORMART USING 11.
PERFORM FRM_COLFORMART USING 12.
PERFORM FRM_COLFORMART USING 13.
PERFORM FRM_COLFORMART USING 14.
CALL METHOD OF H_MAP 'SAVEAS'
EXPORTING
#1 = G_FILE.
CALL METHOD OF H_EXCEL 'QUIT'.
FREE OBJECT: COLUMNS,
H_MAPL,
H_MAP,
H_EXCEL.
MESSAGE '模板下载完成' TYPE 'S'.
ENDIF.
2.2.4 "如果选择查询信息,则根据选择条件获取查询信息
WHEN P_QUERY OR P_DELE.
PERFORM SUB_GET_DATA TABLES G_IT_UPLOAD_DATA[].
PERFORM SUB_DISPLAY_ALV TABLES G_IT_UPLOAD_DATA[] .
2.2.5"获取生产订单数据
SELECT *
INTO CORRESPONDING FIELDS OF TABLE L_IT_UPLOAD_DATA
FROM AFKO AS AK INNER JOIN AFPO AS AP
ON AK~AUFNR = AP~AUFNR
WHERE DWERK = P_WERKS
AND MATNR IN S_MATNR
AND GSTRI IN S_ERDAT
AND DAUAT IN ('ND01').
PERFORM SUB_PROCESS_DATA TABLES L_IT_UPLOAD_DATA.
"----定义唯一物料编号结构
DATA:BEGIN OF WA_MATNR,
MATNR TYPE MATNR, "物料编号
END OF WA_MATNR.
"----定义单位内表
DATA:BEGIN OF WA_MARA,
MATNR TYPE MATNR, "物料编号
MEINS TYPE MEINS, "单位
END OF WA_MARA.