在cProjects中创建项目时,我使用的是 BADI BADI DPR_FIN_GECCO_ATTR
来操作在SAP PS中创建的外部WBS ID。
SAP接受我为阶段级传递的ID,但对于任务级,SAP在我的WBS ID的末尾附加了一个字符串 "TTO"。 任何想法,为什么会发生这种情况,我如何能摆脱它。 TTO "违反了PS中的屏蔽结构?
constants: lc_phase_id_ps type char30 value 'DPR_TV_PROJECT_ELEMENT_ID_PS',
lc_task_id_co type char30 value 'DPR_TV_PROJECT_ELEMENT_ID_CO'.
field-symbols: <project_ext> type dpr_ts_project_ext,
<project_int> type dpr_ts_project_int,
<phase_ext> type dpr_ts_phase_ext,
<phase_int> type dpr_ts_phase_int,
<task_ext> type dpr_ts_task_ext,
<task_int> type dpr_ts_task_int,
<attributes> type dpr_ts_iaom_object_attribute.
case ir_common->get_object_type( ).
when cl_dpr_co=>sc_ot_project.
"not doing anything with this data yet
assign ir_project_ext->* to <project_ext>.
assign ir_project_int->* to <project_int>.
when cl_dpr_co=>sc_ot_phase.
assign ir_attributes_ext->* to <phase_ext>.
assign ir_attributes_int->* to <phase_int>.
read table ct_attributes assigning <attributes>
with key data_element = lc_phase_id_ps.
if sy-subrc = 0.
<attributes>-value = <phase_ext>-phase_id. "something like Z/001-001
endif.
when cl_dpr_co=>sc_ot_task.
assign ir_attributes_ext->* to <task_ext>.
assign ir_attributes_int->* to <task_int>.
read table ct_attributes assigning <attributes>
with key data_element = lc_task_id_co.
if sy-subrc = 0.
<attributes>-value = <task_ext>-search_field. "something like Z/001-001-001
"sometime after this badi call it is changed to Z/001-001-001/TTO
endif.
endcase.
我已经找到了SAP改变WBS的地方。
在类 CL_IM_CPRO_PROJECT_LABEL
办法 IF_EX_GCC_PS_PROJECT_LABEL~GET_WBS_ELEMENT
有下面的逻辑,这是GCC_PS_PROJECT_LABEL的标准BAdI实现的一部分。
if lv_object_type_co ne 'DPO'.
read table attributes_of_ext_obj
into ls_attribute
with key data_element = 'DPR_TV_PROJECT_ELEMENT_ID_CO'.
if sy-subrc = 0.
if lv_object_type_co eq 'TTO' or "Aufgabe "H860739
lv_object_type_co eq 'ITO'. "Checklistenpunkt "H860739
concatenate ls_attribute-value "H860739
lv_object_type_co "H860739
into ls_value. "<<==Here it is "H860739
wbs_element = ls_value. "H860739
else. "H860739
wbs_element = ls_attribute-value.
endif. "H860739
else.
message e013(iaom_cprojects)
with 'DPR_TV_PROJECT_ELEMENT_ID_CO'
raising error_occurred.
endif.
"...
"... Code removed
endif.
这是GCC_PS_PROJECT_LABEL的标准BAdI实现的一部分。
我通过使用方法末尾的隐式增强点来增强方法,并在那里重置WBS元素来解决这个问题。