1, CP_EX_PLAN_READ
可以通过函数 CP_EX_PLAN_READ对PP模块中的routing进行展开。
SE37,展开的结果放在各个Table参数中。

2, 前台操作
前台可以通过tcode:CA03来查看routing的展开
输入物料,工厂,销售订单和行项目后回车,


3, 例子代码
下面这个例子将2中的工厂 8800,物料SMA50620100,销售订单690000090行项目100的对应的routing展开。
简单逻辑:
1,从MAPL中取得routing对应的group和group counter
2,调用函数CP_EX_PLAN_READ展开
其中,
task list type:

status:04是release

Task list usage:

| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  | 
						REPORT ztest_explode_routing. DATA:git_plpo_exp LIKE STANDARD TABLE OF coplpo,      gwa_plpo_exp LIKE LINE OF git_plpo_exp,      git_plko_exp LIKE STANDARD TABLE OF plko,      gwa_plko_exp LIKE LINE OF git_plko_exp,      git_plmk_exp LIKE STANDARD TABLE OF plmkb,      gwa_plmk_exp LIKE LINE OF git_plmk_exp,      git_plmz_exp LIKE STANDARD TABLE OF plmz,      gwa_plmz_exp LIKE LINE OF git_plmz_exp,      git_plfh_exp TYPE STANDARD TABLE OF plfh,      gwa_plfh_exp TYPE plfh,      git_plas_exp TYPE STANDARD TABLE OF plas,      gwa_plas_exp TYPE plas. DATA:g_plnnr TYPE mapl-plnnr, "Group      g_plnal TYPE mapl-plnal, "Group Counter      g_vbeln TYPE vbap-vbeln, "Sales Order      g_posnr TYPE vbap-posnr, "Item      g_werks TYPE vbap-werks. * explode material routing g_vbeln = '0690000090'. g_posnr = '000100'. g_werks = '8800'. SELECT SINGLE mapl~plnnr  "Group               mapl~plnal  "Group Counter   FROM mapl  INNER JOIN plko ON mapl~plnty = plko~plnty                 AND mapl~plnnr = plko~plnnr                 AND mapl~plnal = plko~plnal                 AND mapl~zaehl = plko~zaehl                 AND mapl~werks = plko~werks   INTO ( g_plnnr, g_plnal )  WHERE mapl~plnty = 'N'  "Task List Type    AND mapl~werks = g_werks    AND mapl~matnr = 'SMA50620100'    AND mapl~datuv <=  sy-datum    AND mapl~loekz = ''    AND mapl~vbeln = g_vbeln "SO copy from    AND mapl~posnr = g_posnr "Item copy from    AND plko~loekz = ''    AND plko~verwe = '1'  "Task list usage    AND plko~statu = '4'  "release routing   . CALL FUNCTION 'CP_EX_PLAN_READ'   EXPORTING *   CMODE_IMP     = 'R'     plnty_imp     = 'N'      "N:routing     plnnr_imp     = g_plnnr  "Group     plnal_imp     = g_plnal  "Group Counter     sttag_imp     = sy-datum *   CHECK_IMP     = abap_true *   cuobj_imp     = i_cuobj  "Configuration *   PARNT_IMP     = ' ' *   FCAPO_IMP     = ' ' *   TCA11_IMP     = ' ' *   FLG_VAL_REC_IMP                      = ' ' *   STLNR_IMP     = *   I_PLAS_KEY_TAB                       = *   PRODCOST      = ' ' *   I_BUSINESS_OBJECT                    = *   I_FLG_CHARACTERISTICS_PLANNING       = ' ' *   I_EDGNO       =     vbeln_imp     = g_vbeln  "Sales Order     posnr_imp     = g_posnr  "Item *   LOSGR_IMP     = 1     i_plant       = g_werks *   I_FLG_CALLED_F_MRP                   = ' ' *   IMPORTING *   RES_APPR_CHK_EXP                     = *   ERROR_EXP     = *   E_MAPL        = *   PI_SET_USED   =   TABLES *   MLST_EXP      = *   PLAB_EXP      =     plas_exp      = git_plas_exp     plfh_exp      = git_plfh_exp *   PLFL_EXP      = *   PLFT_EXP      = *   PLFV_EXP      =     plko_exp      = git_plko_exp     plmz_exp      = git_plmz_exp     plpo_exp      = git_plpo_exp *   PLTX_EXP      = *   AENNR_EXP     =     plmk_exp      = git_plmk_exp *   PLMW_EXP      =   EXCEPTIONS     not_found     = 1     plnal_initial = 2     OTHERS        = 3. IF sy-subrc = 0.   WRITE: 'Routing exploded successfully'. ENDIF.  | 
					
4, 测试
运行代码,加断点debug测试,可以发现展开的结果保存在函数返回内表中。

以组件分配(Allocation)为例,组件分配保存在内表git_plmz_exp中,

在CA03中也可以看到组件分配情况,与内表中内容一致。

以上。


发表评论