Copy routing (create on a base of existing one)

本文介绍如何使用SAP的FM函数CP_CC_S_LOAD_COMPLEX_BY_TSK加载源路由到内存,使用CP_CC_S_COPY_BY_TSK复制所需的区域,并通过CP_CC_S_SAVE将新路由保存到数据库。演示了从现有路由完整复制到新路由的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

In article  Delete Routing - piece of cake I've shown you how to use FM from  CEWB transaction to delete routings. If you go through all FM that are inside function groups of  CEWBthen you'll see that there is a lot of possibilities there. For example creation of a new routing, you can do it step by step or create a routing on a base of existing one. Today I'll show how to copy existing routing to new one with usage of FM  CP_CC_S_LOAD_COMPLEX_BY_TSK to load source routing to memory ,  CP_CC_S_COPY_BY_TSK to copy areas we want and  CP_CC_S_SAVE to save new routing to database. In my example I will copy completely source routing to target but in any case you can also omit some of the areas and create them after save (like material allocation or components assignment ).

form create_routing_by_copy_ewb using f_plnty_s
                                      f_plnnr_s
                                      f_plnal_s
                                      f_matnr_s
                                      f_werks_s
                                      f_vbeln_s
                                      f_posnr_s
                                
changing 
                                      f_plnty_t
                                      f_plnal_t
                                      f_plnnr_t
.
*This is the code from http://abapblog.com.
  datafs_copy_by_tsk type copy_by_tsk.
  dataf_classes_in_workarea like classes_in_workarea.
  dataf_tsk_plnty_selection type cpsc_plnty_type.
  dataf_tsk_plnnr_selection type cpsc_plnnr_type.
  dataf_tsk_plnal_selection type cpsc_plnal_type.
  dataf_tsk_selection type cpsc_tsk_sel_type.
  dataf_tsk_ident type  cpcl_tsk_ident_type.
  dataf_mtk_ident type czcl_mtk_type.
  dataft_capp_opr type standard table of capp_opr.
  datafs_opr_class_data type opr_class_data.
  dataf_error type cpcc_message_type.

* objects for loading source routing
  f_classes_in_workarea-mtk_inarea 'X'.
  f_classes_in_workarea-tsk_inarea 'X'.
  f_classes_in_workarea-seq_inarea 'X'.
  f_classes_in_workarea-opr_inarea 'X'.
  f_classes_in_workarea-suo_inarea 'X'.
  f_classes_in_workarea-prt_inarea 'X'.
  f_classes_in_workarea-com_inarea 'X'.
  f_classes_in_workarea-itm_inarea 'X'.
  f_classes_in_workarea-bom_inarea 'X'.

* fill selection conditions
  concatenate 'I' 'EQ' f_plnty_s into f_tsk_plnty_selection.
  append f_tsk_plnty_selection to f_tsk_selection-plnty.

  concatenate 'I' 'EQ' f_plnnr_s into f_tsk_plnnr_selection.
  append f_tsk_plnnr_selection to f_tsk_selection-plnnr.

  concatenate 'I' 'EQ' f_plnal_s into f_tsk_plnal_selection.
  append f_tsk_plnal_selection to f_tsk_selection-plnal.


* load source routing into EWB
  call function 'CP_CC_S_LOAD_COMPLEX_BY_TSK'
    exporting
      i_class                        'P'
      i_classes_in_workarea          f_classes_in_workarea
      i_cpsc_tsk_sel                 
f_tsk_selection
      i_date_from                    
sy-datum
      i_date_to                      sy-datum
    exceptions
      workarea_not_found             1
      workarea_wrong_type            2
      class_in_workarea_inconsistent 3
      workarea_not_specified         4
      opr_not_found                  5
      no_selection_criteria          6
      invalid_selection_period       7
      key_date_required_for_ecm      8
      others                         9.
  if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.

* select areas that should be copied from our source routing
  fs_copy_by_tsk-seq_copy       'X'.
  fs_copy_by_tsk-cla_tsk_copy   'X'.
  fs_copy_by_tsk-odp_seq_copy   'X'.
  fs_copy_by_tsk-opr_copy       'X'.
  fs_copy_by_tsk-mtk_copy       'X'.
  fs_copy_by_tsk-odp_opr_copy   'X'.
  fs_copy_by_tsk-cla_opr_copy   'X'.
  fs_copy_by_tsk-suo_copy       'X'.
  fs_copy_by_tsk-odp_suo_copy   'X'.
  fs_copy_by_tsk-com_copy       'X'.
  fs_copy_by_tsk-prt_copy       'X'.
  fs_copy_by_tsk-odp_prt_copy   'X'.
  fs_copy_by_tsk-mst_copy       'X'.
  fs_copy_by_tsk-cha_copy       'X'.
  fs_copy_by_tsk-chv_copy       'X'.
  fs_copy_by_tsk-pac_copy       'X'.

* copy routing
  call function 'CP_CC_S_COPY_BY_TSK'
    exporting
*     I_ECN_SOURCE                   = ' '
*     I_KEY_DATE_SOURCE              = I_KEY_DATE_SOURCE
*     I_ECN_S                        = ' '
      i_key_date_s                   sy-datum
      i_plnty_source                 
f_plnty_s
      i_plnnr_source                 
f_plnnr_s
      i_plnal_source                 
f_plnal_s
      i_plnty_target                 
f_plnty_t
      i_plnnr_target                 
f_plnnr_t
      i_plnal_target                 
f_plnal_t
      i_plant_target                 
f_werks_s
      i_material_root_target         
f_matnr_s
      i_plant_root_target            
f_werks_s
      i_sales_order_root_target      
f_vbeln_s
      i_sales_order_item_root_target 
f_posnr_s
      i_material_root_source         
f_matnr_s
      i_plant_root_source            
f_werks_s
*     I_SALES_ORDER_ROOT_SOURCE      = I_SALES_ORDER_ROOT_SOURCE
*     I_SALES_ORDER_ITEM_ROOT_SOURCE = I_SALES_ORDER_ITEM_ROOT_SOURCE
      i_copy_objects_by_tsk          fs_copy_by_tsk
*     I_FLG_CONSISTENCY_CHECK        = 'X'
*     I_ITM_IDENT_MAPPING            = I_ITM_IDENT_MAPPING
*     I_FLG_ECM_RECALCULATION        = 'X'
    importing
      e_plnty_target                 f_plnty_t
      e_plnnr_target                 
f_plnnr_t
      e_plnal_target                 
f_plnal_t
*     E_PLANT_TARGET                 = E_PLANT_TARGET
*     E_HANDLE_TARGET                = E_HANDLE_TARGET
      e_ecm_data_error_type          f_error
    
exceptions
      path_source_incomplete         1
      path_target_incomplete         2
      no_valid_source_task           3
      task_not_copied                4
      ecm_evaluation_necessary       5
      others                         6.
  if sy-subrc eq 0.
*   save routing to database
    call function 'CP_CC_S_SAVE'
      exceptions
        error_at_save 1
        others        2.
    if sy-subrc <> 0.
      rollback work.
    else.
      commit work.
    endif.
  endif.
endform.                    "create_routing_by_cpy_ewb

### 回答1: BAPI_ROUTING_CREATE是一个SAP提供的用于创建工艺路线的BAPI。使用BAPI_ROUTING_CREATE可以通过编程的方式,在SAP系统中创建工艺路线。 使用BAPI_ROUTING_CREATE创建工艺路线的步骤如下: 1. 准备数据:需要准备工厂代码、物料号、工艺路线的版本号、工艺路线描述等必要的信息,同时需要准备工序、工作中心、组件等工艺路线的详细信息。 2. 调用BAPI_ROUTING_CREATE:使用SAP的RFC函数模块来调用BAPI_ROUTING_CREATE,将准备好的数据作为输入参数传递给BAPI_ROUTING_CREATE。BAPI_ROUTING_CREATE会根据输入参数创建工艺路线。 3. 处理返回值:BAPI_ROUTING_CREATE会返回创建后的工艺路线的版本号等信息,需要对返回值进行处理,判断是否创建成功。 以下是一个简单的示例代码,用于使用BAPI_ROUTING_CREATE创建SAP工艺路线: ``` DATA: lt_routing_operation TYPE STANDARD TABLE OF bapi_routing_operation, ls_routing_operation LIKE LINE OF lt_routing_operation, lt_routing_header TYPE STANDARD TABLE OF bapi_routing_header, ls_routing_header LIKE LINE OF lt_routing_header. * 准备工艺路线数据 ls_routing_header-material = 'MAT001'. ls_routing_header-plant = '1000'. ls_routing_header-routing_group = '001'. ls_routing_header-routing_group_counter = '01'. APPEND ls_routing_header TO lt_routing_header. ls_routing_operation-operation = '0010'. ls_routing_operation-work_center = 'WC001'. ls_routing_operation-component = 'MAT001'. ls_routing_operation-component_qty = '1.0'. APPEND ls_routing_operation TO lt_routing_operation. * 调用BAPI_ROUTING_CREATE CALL FUNCTION 'BAPI_ROUTING_CREATE' EXPORTING routing_header = ls_routing_header client = sy-mandt TABLES routing_operation = lt_routing_operation EXCEPTIONS error_during_update = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ``` 在这个示例代码中,我们首先准备了工艺路线的数据,然后调用BAPI_ROUTING_CREATE进行创建。请注意,在实际使用中,需要根据具体情况对代码进行修改。 ### 回答2: BAPI_ROUTING_CREATE是一个SAP系统中用于创建工艺路线的标准函数模块。它可以通过编程的方式,将新的工艺路线信息导入到SAP系统中。 使用BAPI_ROUTING_CREATE函数模块,首先需要传入一些必要的参数。比如说,我们需要提供工艺路线的版本号、物料号和工厂代码。这些信息需要提前准备好,并作为输入参数传递给函数模块。 在调用BAPI_ROUTING_CREATE函数模块之后,系统将根据传入的参数创建一条新的工艺路线。在创建过程中,我们可以设置一些相关的属性,比如工序的顺序、工作中心、耗时等。这些属性也需要作为函数模块的输入参数,并在调用时进行设置。 一旦调用成功,系统将返回一个结构体,其中包含了新创建工艺路线的各个字段信息,比如路线号、版本号、状态等。此外,如果在创建工艺路线的过程中发生了错误,系统也会返回相应的错误信息供我们进行处理。 总而言之,BAPI_ROUTING_CREATE是一个非常有用的函数模块,它可以帮助我们通过编程的方式在SAP系统中创建新的工艺路线。使用该函数模块,我们可以实现自动化的工艺路线创建,并且能够灵活地设置各种相关属性。 ### 回答3: BAPI_ROUTING_CREATE是一个SAP系统中可用的功能模块,用于创建工艺路线。工艺路线是描述制造过程的一系列步骤和操作的集合。通过使用BAPI_ROUTING_CREATE,可以在SAP系统中创建新的工艺路线。 使用BAPI_ROUTING_CREATE时,需提供一些必要的参数。首先,需要提供一个唯一的工艺路线编号。其次,需要指定工作中心,即进行操作的地点或设备。还需要提供一个有效日期,表示工艺路线的生效日期。此外,还需要指定产品和版本信息。 一旦提供了上述参数,就可以调用BAPI_ROUTING_CREATE来创建工艺路线。系统会根据提供的参数,在数据库中创建一个新的工艺路线记录。可以在工艺路线中添加各种操作和步骤,包括工序、检查点和质量控制点等。还可以定义生产时间、工时和相关的工作中心和资源。 使用BAPI_ROUTING_CREATE时,还可以设置一些其他的可选参数,如是否计划外的操作、成本、工作中心之间的依赖关系等。 总之,BAPI_ROUTING_CREATE是一个方便的功能模块,可以在SAP系统中快速创建新的工艺路线。它提供了许多参数选项,以满足各种需求。通过使用BAPI_ROUTING_CREATE,可以简化和优化制造过程中的工艺路线管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值