SAP生产订单导入程序代码

目录

2.      程序说明... 2

2.1程序说明... 2

2.2  程序实现... 3

2.2.1 选择下载模板,则下载模板... 3

2.2.2"导出模板的名称... 3

2.2.3"调用OLE,将模板导出导Excel 3

2.2.4      "如果选择查询信息,则根据选择条件获取查询信息... 5

2.2.5"获取生产订单数据... 5

2.2.6定义采购组结构... 5

2.2.7处理唯一物料号... 6

2.2.8"------取物料名称... 6

2.2.9 "获取物料MRP数据... 7

2.2.1 0"整合数据... 7

2.2.1 1"如果录入的销售订单号不为空,则获取销售订单号对应的客户及客户信息... 8

2.2.1 2"获取销售订单的变式配置信息里的系统电压和电池阻然... 8

2.2.1 3"初始化生产订单的开始日期和结束日期... 9

2.2.1 4"获取生产订单的明细数据,主要是工作中心数据... 9

2.2.1 5"选择文件的搜索帮助... 10

2.2.1 6"----导入模板... 10

2.2.1 7"如果选择路径为空,则调出文件选择路径... 11

2.2.1 8"上传文件... 11

2.2.1 9"当存在错误信息时显示... 11

2.2.20"如果导入物料及工厂有对应的生产计划订单,则删除生产计划订单... 11

2.2.21---导入EXCEL数据到内表... 12

2.2.22----格式化导入数据到内表... 12

2.2.23"获取计划订单类型为LA或KD的... 12

2.2.24--分析导入数据... 12

2.2.25"调用Bapi将计划工单删除... 15

2.2.25"显示导入信息... 16

2.2.27--创建生产订单... 17

2.2.28写入创建订单所需数据... 17

2.2.29"获取错误消息... 18

2.2.30"如果导入模板工作中心不为空,则修改生产订单工作中心... 18

2.2.31 "获取创建好的生产订单数据... 18

2.2.32 "处理生产订单的工作中心... 19

2.2.33 "调用Bapi修改生产订单的工作中心... 19

2.1程序说明

    1. 生产订单导入前需要将选择物料期间内的计划订单清除。
    2. 生产订单的订单类型是ND01。
    3. 计划开始日期写入订单开始日期,计划完成日期写入订单完成日期。
    4. 当数据中有销售订单时,用事务代码:CO08创建。
    5. 版本号写入生产版本及客户屏幕的“极板”字段。
    6. 工作中心写入工序概览中,当工作中心为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  '工厂'.
    PERFORM FILL_RANGE  USING LINE  '销售订单号'.
    PERFORM FILL_RANGE  USING LINE  '行项目'.
    PERFORM FILL_RANGE  USING LINE  '客户名称'.
    PERFORM FILL_RANGE  USING LINE  '物料编号'.
    PERFORM FILL_RANGE  USING LINE  '物料描述'.
    PERFORM FILL_RANGE  USING LINE  ''.
    PERFORM FILL_RANGE  USING LINE  ''.
    PERFORM FILL_RANGE  USING LINE  '订单数量'.
    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 OBJECTCOLUMNS,
                  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.
 

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啊曼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值