ca02/ca12 Material Assignment(ca02/ca12分配物料)
2018-02-23 16:21
260 查看
REPORT zmkp_api_change_routing.
* global fields, declarations
* ================================================
INCLUDE fc27date.
INCLUDE cp_cs_const_message.
TYPE-POOLS: cc01,
cpsc,
cpcl,
cmcl,
czcl,
cssc,
cscl.
TYPES: BEGIN OF create_parameter_type,
matnr TYPE mapl-matnr,
werks TYPE mapl-werks,
verwe TYPE plko-verwe,
statu TYPE plko-statu,
plnme TYPE plko-plnme,
steus TYPE plpo-steus,
steuf TYPE plfhd-steuf,
fhmat TYPE plfhd-matnr,
sttag TYPE plko-datuv,
number(4) TYPE n.
TYPES: END OF create_parameter_type.
DATA g_parameter TYPE create_parameter_type.
* selection screen
* ================================================
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01.
PARAMETERS: p_plnty TYPE plko-plnty DEFAULT 'S',
"task list type
p_plnnr TYPE plko-plnnr,
"task list group number
p_plnal TYPE plko-plnal DEFAULT '1',
"group counter
p_sttag TYPE plko-datuv DEFAULT sy-datum.
"keydate
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-t02.
PARAMETERS: p_matnr TYPE mapl-matnr,
"material
p_werks TYPE mapl-werks DEFAULT '1100',
"plant
p_verwe TYPE plko-verwe DEFAULT '1',
"usage
p_statu TYPE plko-statu DEFAULT '4',
"status
p_plnme TYPE plko-plnme DEFAULT 'TAI'.
SELECTION-SCREEN END OF BLOCK b2.
g_parameter-matnr = p_matnr.
g_parameter-werks = p_werks.
g_parameter-verwe = p_verwe.
g_parameter-statu = p_statu.
g_parameter-plnme = p_plnme.
g_parameter-sttag = p_sttag.
* main program
* ================================================
* 1. load task list into internal EWB-buffer
PERFORM load_task_list
USING
p_plnty
p_plnnr
p_plnal
p_sttag.
* 2. change the loaded task list
PERFORM change_task_list
USING
p_sttag.
* 3. save changed task list to database
PERFORM save_to_database.
COMMIT WORK.
WRITE: / 'program ready.'.
*&———————————————————————*
*& Form LOAD_TASK_LIST
*&———————————————————————*
* load task listr into internal EWB-BUFFER
*———————————————————————-*
* –>I_PLNTY task list type
* –>I_PLNNR task list number = group number
* –>I_PLNAL group counter
* –>I_STTAG keydate
*———————————————————————-*
FORM load_task_list
USING
i_plnty LIKE plko-plnty
i_plnnr LIKE plko-plnnr
i_plnal LIKE plko-plnal
i_sttag LIKE plko-datuv.
DATA: l_classes_in_workarea LIKE classes_in_workarea,
l_tsk_plnty_selection TYPE cpsc_plnty_type,
lt_tsk_plnty_selection TYPE cpsc_plnty_type OCCURS 0,
l_tsk_plnnr_selection TYPE cpsc_plnnr_type,
lt_tsk_plnnr_selection TYPE cpsc_plnnr_type OCCURS 0,
l_tsk_plnal_selection TYPE cpsc_plnal_type,
lt_tsk_plnal_selection TYPE cpsc_plnal_type OCCURS 0,
l_tsk_selection TYPE cpsc_tsk_sel_type.
* objects for loading
l_classes_in_workarea-mtk_inarea = 'X'.
l_classes_in_workarea-tsk_inarea = 'X'.
l_classes_in_workarea-seq_inarea = 'X'.
l_classes_in_workarea-opr_inarea = 'X'.
l_classes_in_workarea-suo_inarea = 'X'.
l_classes_in_workarea-prt_inarea = 'X'.
* fill selection conditions – PLNTY
CONCATENATE 'I' 'EQ' i_plnty INTO l_tsk_plnty_selection.
APPEND l_tsk_plnty_selection TO lt_tsk_plnty_selection.
l_tsk_selection-plnty = lt_tsk_plnty_selection.
CONCATENATE 'I' 'EQ' i_plnnr INTO l_tsk_plnnr_selection.
APPEND l_tsk_plnnr_selection TO lt_tsk_plnnr_selection.
l_tsk_selection-plnnr = lt_tsk_plnnr_selection.
CONCATENATE 'I' 'EQ' i_plnal INTO l_tsk_plnal_selection.
APPEND l_tsk_plnal_selection TO lt_tsk_plnal_selection.
l_tsk_selection-plnal = lt_tsk_plnal_selection.
* load objects into EWB
CALL FUNCTION 'CP_CC_S_LOAD_COMPLEX_BY_TSK'
EXPORTING
i_class = 'P'
i_classes_in_workarea = l_classes_in_workarea
i_cpsc_tsk_sel = l_tsk_selection
i_date_from = i_sttag
i_date_to = i_sttag
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.
ENDFORM. " load_task_list
*&———————————————————————*
*& Form create_task_list
*&———————————————————————*
* text
*———————————————————————-*
* –>I_PARAMETER text
*———————————————————————-*
FORM create_task_list
USING
i_parameter TYPE create_parameter_type.
DATA: l_tsk LIKE tsk_class_data,
l_opr LIKE opr_class_data,
l_vornr(4) TYPE n,
l_mtk LIKE mtk_class_data,
l_max_vornr(4) TYPE n.
* create task list header
* ===============================================
CLEAR l_tsk.
l_tsk-plnty = 'S'. "task list type
l_tsk-plnnr = '50000325'.
l_tsk-plnal = '01'.
l_tsk-zaehl = '1'.
l_tsk-verwe = '1'.
l_tsk-werks = '1100'.
l_tsk-statu = '4'.
l_tsk-plnme = i_parameter-plnme.
CALL FUNCTION 'CP_CL_S_TSK_CHANGE'
EXPORTING
i_ecn_s = ' '
i_key_date_s = i_parameter-sttag
i_flg_tsk_check = 'X'
i_mark_txt_update = ' '
i_tsk_class_data = l_tsk
i_flg_collect_all_msg = ' '
* IMPORTING
* E_ECM_DATA_ERROR_TYPE =
EXCEPTIONS
task_not_consistent = 1
no_authority = 2
no_valid_task = 3
task_not_locked = 4
ecm_data_not_suitable = 5
OTHERS = 6.
* material task list allocation
* ===============================================
l_mtk-plnty = l_tsk-plnty. "task list type
l_mtk-plnnr = l_tsk-plnnr. "task list group
l_mtk-plnal = l_tsk-plnal. "group counter
l_mtk-matnr = i_parameter-matnr. "material
l_mtk-werks = i_parameter-werks. "plant
CALL FUNCTION 'CZ_CL_S_MTK_CREATE'
EXPORTING
i_key_date_s = i_parameter-sttag
i_mtk_class_data = l_mtk
EXCEPTIONS
allocation_not_consistent = 1
no_authority = 2
no_authority_for_material = 3
task_not_locked = 4
no_valid_material = 5
no_valid_sales_document = 6
counter_overflow = 7
ident_already_exists = 8
no_valid_task = 9
path_incomplete = 10
ecm_data_not_suitable = 11
OTHERS = 12.
WRITE: 'task list group ', l_tsk-plnnr, 'Updated'.
ENDFORM. " create_task_list
*&———————————————————————*
*& Form SAVE_TO_DATABASE
*&———————————————————————*
* save to database
*———————————————————————-*
FORM save_to_database.
CALL FUNCTION 'CP_CC_S_SAVE'.
ENDFORM. " save_to_database
*———————————————————————*
* FORM change_task_list *
*———————————————————————*
* changes the short text of all operations to
* 'SIMPLE_EWB_TEST'
*———————————————————————*
* –> i_sttag keydate *
*———————————————————————*
FORM change_task_list
USING
i_sttag LIKE plko-datuv.
DATA: lt_opr_class_data LIKE tsk_class_data OCCURS 0,
l_opr_class_data LIKE tsk_class_data,
lt_opr_ident TYPE cpcl_tsk_tab_type,
* l_opr_ident TYPE cpcl_tsk_type,
l_opr_ident LIKE LINE OF lt_opr_ident,
lt_opr_lock TYPE cpcl_tsk_lock_tab_type.
CALL FUNCTION 'CP_CL_S_TSK_PROVIDE'
* EXPORTING
* I_DATE_FROM = DATE-MIN_GRG
* I_DATE_TO = DATE-MAX_GRG
* I_PLNTY =
* I_PLNNR =
* I_PLNAL =
* I_FLG_PROVIDE_INV = ' '
* IMPORTING
* E_TSK_INV =
TABLES
e_tsk_class_data = lt_opr_class_data
EXCEPTIONS
wrong_key = 1
OTHERS = 2.
* lock the operations and reload operations
LOOP AT lt_opr_class_data INTO l_opr_class_data.
MOVE-CORRESPONDING l_opr_class_data TO l_opr_ident.
APPEND l_opr_ident TO lt_opr_ident.
ENDLOOP.
CALL FUNCTION 'CP_CC_S_RELOAD_BY_TSK'
EXPORTING
i_flg_set_lock = 'X'
IMPORTING
e_tsk_lock = lt_opr_lock
CHANGING
c_tsk_ident = lt_opr_ident
EXCEPTIONS
reloading_not_allowed = 1
OTHERS = 2.
IF NOT lt_opr_lock[] IS INITIAL.
WRITE: /'error: some operations are already locked'.
EXIT.
ENDIF.
* again: provide all operations from EWB buffer
* reason: between first providing and locking another user can can
* change the operations
CALL FUNCTION 'CP_CL_S_TSK_PROVIDE'
TABLES
e_tsk_class_data = lt_opr_class_data
EXCEPTIONS
wrong_key = 1
OTHERS = 2.
* 3. change the task list
PERFORM create_task_list
USING
g_parameter.
ENDFORM.
" change_task_list
* global fields, declarations
* ================================================
INCLUDE fc27date.
INCLUDE cp_cs_const_message.
TYPE-POOLS: cc01,
cpsc,
cpcl,
cmcl,
czcl,
cssc,
cscl.
TYPES: BEGIN OF create_parameter_type,
matnr TYPE mapl-matnr,
werks TYPE mapl-werks,
verwe TYPE plko-verwe,
statu TYPE plko-statu,
plnme TYPE plko-plnme,
steus TYPE plpo-steus,
steuf TYPE plfhd-steuf,
fhmat TYPE plfhd-matnr,
sttag TYPE plko-datuv,
number(4) TYPE n.
TYPES: END OF create_parameter_type.
DATA g_parameter TYPE create_parameter_type.
* selection screen
* ================================================
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01.
PARAMETERS: p_plnty TYPE plko-plnty DEFAULT 'S',
"task list type
p_plnnr TYPE plko-plnnr,
"task list group number
p_plnal TYPE plko-plnal DEFAULT '1',
"group counter
p_sttag TYPE plko-datuv DEFAULT sy-datum.
"keydate
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-t02.
PARAMETERS: p_matnr TYPE mapl-matnr,
"material
p_werks TYPE mapl-werks DEFAULT '1100',
"plant
p_verwe TYPE plko-verwe DEFAULT '1',
"usage
p_statu TYPE plko-statu DEFAULT '4',
"status
p_plnme TYPE plko-plnme DEFAULT 'TAI'.
SELECTION-SCREEN END OF BLOCK b2.
g_parameter-matnr = p_matnr.
g_parameter-werks = p_werks.
g_parameter-verwe = p_verwe.
g_parameter-statu = p_statu.
g_parameter-plnme = p_plnme.
g_parameter-sttag = p_sttag.
* main program
* ================================================
* 1. load task list into internal EWB-buffer
PERFORM load_task_list
USING
p_plnty
p_plnnr
p_plnal
p_sttag.
* 2. change the loaded task list
PERFORM change_task_list
USING
p_sttag.
* 3. save changed task list to database
PERFORM save_to_database.
COMMIT WORK.
WRITE: / 'program ready.'.
*&———————————————————————*
*& Form LOAD_TASK_LIST
*&———————————————————————*
* load task listr into internal EWB-BUFFER
*———————————————————————-*
* –>I_PLNTY task list type
* –>I_PLNNR task list number = group number
* –>I_PLNAL group counter
* –>I_STTAG keydate
*———————————————————————-*
FORM load_task_list
USING
i_plnty LIKE plko-plnty
i_plnnr LIKE plko-plnnr
i_plnal LIKE plko-plnal
i_sttag LIKE plko-datuv.
DATA: l_classes_in_workarea LIKE classes_in_workarea,
l_tsk_plnty_selection TYPE cpsc_plnty_type,
lt_tsk_plnty_selection TYPE cpsc_plnty_type OCCURS 0,
l_tsk_plnnr_selection TYPE cpsc_plnnr_type,
lt_tsk_plnnr_selection TYPE cpsc_plnnr_type OCCURS 0,
l_tsk_plnal_selection TYPE cpsc_plnal_type,
lt_tsk_plnal_selection TYPE cpsc_plnal_type OCCURS 0,
l_tsk_selection TYPE cpsc_tsk_sel_type.
* objects for loading
l_classes_in_workarea-mtk_inarea = 'X'.
l_classes_in_workarea-tsk_inarea = 'X'.
l_classes_in_workarea-seq_inarea = 'X'.
l_classes_in_workarea-opr_inarea = 'X'.
l_classes_in_workarea-suo_inarea = 'X'.
l_classes_in_workarea-prt_inarea = 'X'.
* fill selection conditions – PLNTY
CONCATENATE 'I' 'EQ' i_plnty INTO l_tsk_plnty_selection.
APPEND l_tsk_plnty_selection TO lt_tsk_plnty_selection.
l_tsk_selection-plnty = lt_tsk_plnty_selection.
CONCATENATE 'I' 'EQ' i_plnnr INTO l_tsk_plnnr_selection.
APPEND l_tsk_plnnr_selection TO lt_tsk_plnnr_selection.
l_tsk_selection-plnnr = lt_tsk_plnnr_selection.
CONCATENATE 'I' 'EQ' i_plnal INTO l_tsk_plnal_selection.
APPEND l_tsk_plnal_selection TO lt_tsk_plnal_selection.
l_tsk_selection-plnal = lt_tsk_plnal_selection.
* load objects into EWB
CALL FUNCTION 'CP_CC_S_LOAD_COMPLEX_BY_TSK'
EXPORTING
i_class = 'P'
i_classes_in_workarea = l_classes_in_workarea
i_cpsc_tsk_sel = l_tsk_selection
i_date_from = i_sttag
i_date_to = i_sttag
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.
ENDFORM. " load_task_list
*&———————————————————————*
*& Form create_task_list
*&———————————————————————*
* text
*———————————————————————-*
* –>I_PARAMETER text
*———————————————————————-*
FORM create_task_list
USING
i_parameter TYPE create_parameter_type.
DATA: l_tsk LIKE tsk_class_data,
l_opr LIKE opr_class_data,
l_vornr(4) TYPE n,
l_mtk LIKE mtk_class_data,
l_max_vornr(4) TYPE n.
* create task list header
* ===============================================
CLEAR l_tsk.
l_tsk-plnty = 'S'. "task list type
l_tsk-plnnr = '50000325'.
l_tsk-plnal = '01'.
l_tsk-zaehl = '1'.
l_tsk-verwe = '1'.
l_tsk-werks = '1100'.
l_tsk-statu = '4'.
l_tsk-plnme = i_parameter-plnme.
CALL FUNCTION 'CP_CL_S_TSK_CHANGE'
EXPORTING
i_ecn_s = ' '
i_key_date_s = i_parameter-sttag
i_flg_tsk_check = 'X'
i_mark_txt_update = ' '
i_tsk_class_data = l_tsk
i_flg_collect_all_msg = ' '
* IMPORTING
* E_ECM_DATA_ERROR_TYPE =
EXCEPTIONS
task_not_consistent = 1
no_authority = 2
no_valid_task = 3
task_not_locked = 4
ecm_data_not_suitable = 5
OTHERS = 6.
* material task list allocation
* ===============================================
l_mtk-plnty = l_tsk-plnty. "task list type
l_mtk-plnnr = l_tsk-plnnr. "task list group
l_mtk-plnal = l_tsk-plnal. "group counter
l_mtk-matnr = i_parameter-matnr. "material
l_mtk-werks = i_parameter-werks. "plant
CALL FUNCTION 'CZ_CL_S_MTK_CREATE'
EXPORTING
i_key_date_s = i_parameter-sttag
i_mtk_class_data = l_mtk
EXCEPTIONS
allocation_not_consistent = 1
no_authority = 2
no_authority_for_material = 3
task_not_locked = 4
no_valid_material = 5
no_valid_sales_document = 6
counter_overflow = 7
ident_already_exists = 8
no_valid_task = 9
path_incomplete = 10
ecm_data_not_suitable = 11
OTHERS = 12.
WRITE: 'task list group ', l_tsk-plnnr, 'Updated'.
ENDFORM. " create_task_list
*&———————————————————————*
*& Form SAVE_TO_DATABASE
*&———————————————————————*
* save to database
*———————————————————————-*
FORM save_to_database.
CALL FUNCTION 'CP_CC_S_SAVE'.
ENDFORM. " save_to_database
*———————————————————————*
* FORM change_task_list *
*———————————————————————*
* changes the short text of all operations to
* 'SIMPLE_EWB_TEST'
*———————————————————————*
* –> i_sttag keydate *
*———————————————————————*
FORM change_task_list
USING
i_sttag LIKE plko-datuv.
DATA: lt_opr_class_data LIKE tsk_class_data OCCURS 0,
l_opr_class_data LIKE tsk_class_data,
lt_opr_ident TYPE cpcl_tsk_tab_type,
* l_opr_ident TYPE cpcl_tsk_type,
l_opr_ident LIKE LINE OF lt_opr_ident,
lt_opr_lock TYPE cpcl_tsk_lock_tab_type.
CALL FUNCTION 'CP_CL_S_TSK_PROVIDE'
* EXPORTING
* I_DATE_FROM = DATE-MIN_GRG
* I_DATE_TO = DATE-MAX_GRG
* I_PLNTY =
* I_PLNNR =
* I_PLNAL =
* I_FLG_PROVIDE_INV = ' '
* IMPORTING
* E_TSK_INV =
TABLES
e_tsk_class_data = lt_opr_class_data
EXCEPTIONS
wrong_key = 1
OTHERS = 2.
* lock the operations and reload operations
LOOP AT lt_opr_class_data INTO l_opr_class_data.
MOVE-CORRESPONDING l_opr_class_data TO l_opr_ident.
APPEND l_opr_ident TO lt_opr_ident.
ENDLOOP.
CALL FUNCTION 'CP_CC_S_RELOAD_BY_TSK'
EXPORTING
i_flg_set_lock = 'X'
IMPORTING
e_tsk_lock = lt_opr_lock
CHANGING
c_tsk_ident = lt_opr_ident
EXCEPTIONS
reloading_not_allowed = 1
OTHERS = 2.
IF NOT lt_opr_lock[] IS INITIAL.
WRITE: /'error: some operations are already locked'.
EXIT.
ENDIF.
* again: provide all operations from EWB buffer
* reason: between first providing and locking another user can can
* change the operations
CALL FUNCTION 'CP_CL_S_TSK_PROVIDE'
TABLES
e_tsk_class_data = lt_opr_class_data
EXCEPTIONS
wrong_key = 1
OTHERS = 2.
* 3. change the task list
PERFORM create_task_list
USING
g_parameter.
ENDFORM.
" change_task_list
相关文章推荐
- 后台批量分配物料--interface
- 【量化小讲堂-Python&Pandas系列12】诺奖得主的仓位分配算法,有效吗?
- ubuntu中报错:无法分配内存 (errno=12)
- Activiti 学习笔记12:分配个人任务
- API分配物料类别集
- SQL Server 维护脚本分享(12)查看数据库空间分配情况(准确)
- Activiti 学习笔记12:分配个人任务
- Storage Location在物料分配时的选择逻辑
- 物料价格分析取未分摊和未分配价格差异
- 【JVM】12_空间分配担保
- 深度学习【12】DL平台GPU分配
- 12. 分配排序
- 物料事务处理无法查看分配
- 物料只允许分配****库存组织
- 物料描述不可更新(分配组织后)
- 12-jbpm工作流之 分配任务给一个"组的成员"GroupTask
- OC基础-继承的在内存分配的体现12
- Effective STL 12 STL 使用reserve来避免不必要的重新分配
- (12)数组定义以及引用类型堆内存分配、数组名赋值问题
- activiti学习--12 个人任务及三种分配方式:直接设置代理人+流程变量设置代理人+实现类的方式设置代理人+将任务代理人设置为别人