ABAP工艺路线批导

接口创建工艺路线

FUNCTION zplm_routing.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      IT_ROUTING STRUCTURE  ZPLM_ROUTING OPTIONAL
*"      IT_RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------

  DATA:ls_zplm_routinglog TYPE zplm_routinglog,
       lt_zplm_routinglog LIKE STANDARD TABLE OF ls_zplm_routinglog.

  ls_zplm_routinglog-datum = sy-datum.
  ls_zplm_routinglog-uzeit = sy-uzeit.
  LOOP AT it_routing INTO DATA(ls_log).
    MOVE-CORRESPONDING ls_log TO ls_zplm_routinglog.
    ADD 1 TO ls_zplm_routinglog-zsn.
    APPEND ls_zplm_routinglog TO lt_zplm_routinglog.
  ENDLOOP.
  MODIFY zplm_routinglog FROM TABLE lt_zplm_routinglog.

  DATA:l_plnnr TYPE plnnr, "任务清单组键值
       l_plnal TYPE plnal. "组计数器

  DATA:lt_tsk    TYPE TABLE OF bapi1012_tsk_c, "任务清单头数据
       ls_tsk    LIKE LINE OF lt_tsk,
       lt_mtk    TYPE TABLE OF bapi1012_mtk_c, "物料任务清单分配
       ls_mtk    LIKE LINE OF lt_mtk,
       lt_opr    TYPE TABLE OF bapi1012_opr_c, "工序
       ls_opr    LIKE LINE OF lt_opr,
       lt_return TYPE TABLE OF bapiret2 WITH HEADER LINE. "返回参数



  LOOP AT it_routing INTO DATA(ls_routing).
    IF l_plnnr NE ls_routing-plnnr AND l_plnal NE ls_routing-plnal.

      ls_tsk-task_list_group = ls_routing-plnnr. "任务清单组码
      l_plnnr = ls_tsk-task_list_group.
      l_plnal = ls_routing-plnal.

      ls_tsk-plant             = ls_routing-werks .  "工厂
      ls_tsk-task_list_usage   = ls_routing-verwe.   "用途
      ls_tsk-task_list_status  = ls_routing-statu.   "状态
      ls_tsk-valid_from        = ls_routing-sttag.        "有效起始日期
      ls_tsk-description       = ls_routing-matnr.   "工艺描述
      ls_tsk-task_measure_unit = 'PC'.   "计量单位
      APPEND ls_tsk TO lt_tsk.

      ls_mtk-plant              = ls_routing-werks.    "工厂
      ls_mtk-material           = ls_routing-matnr.    "产品编号
      ls_mtk-material_external  = ls_routing-matnr.    "产品编号
      ls_mtk-valid_from         = ls_routing-sttag.         "有效起始日期
*  lt_mtk-valid_to_date      = '99991231'.       "有效截止日期
      APPEND ls_mtk TO lt_mtk.

    ENDIF.

    " 工序
    CLEAR ls_opr.
    ls_opr-sequence_no       = '000000'.      "序列
    ls_opr-activity          = ls_routing-vornr. "工序编码
    ls_opr-control_key       = ls_routing-steus. "控制码
    ls_opr-work_cntr         = ls_routing-arbpl. "工作中心
    ls_opr-plant             = ls_routing-werks. "工厂
    ls_opr-description       = ls_routing-ltxa1. "工序描述
    ls_opr-base_quantity     = ls_routing-bmsch. "基础数量
    ls_opr-cost_relevant     = 'X'.             "与成本核算相关标志
    ls_opr-std_unit_01       = ls_routing-vge01."时间单位
    ls_opr-std_value_01      = ls_routing-vgw01."机器时间
    ls_opr-std_unit_02       = ls_routing-vge02."时间单位
    ls_opr-std_value_02      = ls_routing-vgw02."人工时间
    ls_opr-std_unit_03       = ls_routing-vge03."时间单位
    ls_opr-std_value_03      = ls_routing-vgw03."模具或动力
    ls_opr-std_unit_04       = ls_routing-vge04."时间单位
    ls_opr-std_value_04      = ls_routing-vgw04."动力或维修
    ls_opr-std_unit_05       = ls_routing-vge05."时间单位
    ls_opr-std_value_05      = ls_routing-vgw05."维修或其他
    ls_opr-std_unit_06       = ls_routing-vge06."时间单位
    ls_opr-std_value_06      = ls_routing-vgw06."其他
    ls_opr-valid_from        = ls_routing-sttag.  "有效起始日期
*  lt_opr-valid_to_date     = '99991231'."有效截止日期
    ls_opr-denominator       = 1.
    ls_opr-nominator         = 1.
    ls_opr-operation_measure_unit = 'PC'. "计量单位
    ls_opr-ind_splitting_reqrd = 'X'.    "是否拆分
    ls_opr-max_no_of_splits = ls_routing-splim.       "最大拆分数
    ls_opr-ind_cont_flow_production = 'X'.       "标志: 流水生产
    ls_opr-cost_relevant = 'X'.       "与成本核算相关标志
    APPEND ls_opr TO lt_opr.


    AT END OF plnal.

      CALL FUNCTION 'BAPI_ROUTING_CREATE'
        IMPORTING
          group                  = l_plnnr
          groupcounter           = l_plnal
        TABLES
          task                   = lt_tsk
          materialtaskallocation = lt_mtk
          operation              = lt_opr
          return                 = lt_return.


      LOOP AT lt_return WHERE type EQ 'E' OR type EQ 'A'.
        EXIT.
      ENDLOOP.

      IF sy-subrc EQ 0.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
      ENDIF.

      APPEND LINES OF lt_return TO it_return.

      CLEAR:l_plnnr,l_plnal,lt_tsk,lt_mtk,lt_opr,lt_return.
    ENDAT.
  ENDLOOP.

ENDFUNCTION.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值