on 10-16-2007 9:29 AM
Hello all,
in classic scenario, SRM 4.0, R/3 4.7.
User is creating one Shopping Cart from catalog which contains items from one supplier. Company is having two contracts with supplier, thus considered as two sources of supply in the backend. (Contracts are only in the backend, not in SRM).
Because of that EBP is creating two Purchase Orders in the backed where we want to have only one PO which will count only for the supplier, and not consider if supplier has several contracts.
Is that possible?
TIA
Gordan
Hi Gordan,
You can modify the standard code or try (not done myself before) to use the badi_group_po_badi
Please refer to the standard code :
METHOD split_backend_po .
INCLUDE bbp_pd_con_cl.
DATA: lt_object_split TYPE bbpt_bs_object_be_split,
ls_object_split LIKE LINE OF lt_object_split,
lt_object_group TYPE bbpt_bs_object_be_split,
lt_object_pack TYPE bbpt_bs_object_pack,
ls_object_pack LIKE LINE OF et_object_pack,
lt_item LIKE ls_object_pack-items,
ls_item LIKE LINE OF lt_item.
FIELD-SYMBOLS: <object_split> LIKE LINE OF lt_object_split,
<object_pack> LIKE LINE OF et_object_pack.
*=======================================================================
map splitting criteria fields
split_po_be_map_criteria(
EXPORTING is_objtype_pack = is_objtype_pack
IMPORTING et_object_split = lt_object_split ).
*=======================================================================
sort object list for PO grouping
SORT lt_object_split BY fixed_vend
proc_org_ot
proc_org_id
proc_group_ot
proc_group_id
agreement
be_doc_type
be_co_code
vper_end
vper_start
plant_country
number_int.
*=======================================================================
LOOP AT lt_object_split ASSIGNING <object_split>.
IF lt_object_group IS NOT INITIAL.
IF ls_object_split-fixed_vend <> <object_split>-fixed_vend OR
ls_object_split-proc_org_ot <> <object_split>-proc_org_ot OR
ls_object_split-proc_org_id <> <object_split>-proc_org_id OR
ls_object_split-proc_group_ot <> <object_split>-proc_group_ot OR
ls_object_split-proc_group_id <> <object_split>-proc_group_id OR
ls_object_split-agreement <> <object_split>-agreement OR
ls_object_split-be_doc_type <> <object_split>-be_doc_type OR
ls_object_split-be_co_code <> <object_split>-be_co_code OR
ls_object_split-plant_country <> <object_split>-plant_country OR
( ( <object_split>-vper_end IS NOT INITIAL OR
ls_object_split-vper_end IS NOT INITIAL ) AND
( ls_object_split-vper_start <> <object_split>-vper_start OR
ls_object_split-vper_end <> <object_split>-vper_end ) ).
call BADI (customer can split PO)
badi_group_po_be(
IMPORTING et_object_pack = lt_object_pack
CHANGING ct_object_split = lt_object_group ).
APPEND LINES OF lt_object_pack TO et_object_pack.
REFRESH lt_object_group.
ENDIF.
ENDIF.
APPEND <object_split> TO lt_object_group.
save current line for next round
ls_object_split = <object_split>.
ENDLOOP.
IF lt_object_group IS NOT INITIAL.
call BADI (customer can split PO)
badi_group_po_be(
IMPORTING et_object_pack = lt_object_pack
CHANGING ct_object_split = lt_object_group ).
APPEND LINES OF lt_object_pack TO et_object_pack.
ENDIF.
LOOP AT et_object_pack ASSIGNING <object_pack>.
get next PO ID
<object_pack>-pack_logsys = iv_logsys.
<object_pack>-pack_objtype = c_b_po.
get_next_foll_object_id(
EXPORTING is_object = <object_pack>
IMPORTING ev_object_id = <object_pack>-pack_object_id ).
Kind regards,
Yann
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.