on 03-19-2014 11:48 AM
Hi Experts,
I would like to know about PO triggering concept in SRM7. Particularly, I want to know what are the fields when changed triggers PO output. For example when i change price at item level PO output gets triggered, but if I change internal note / account assignment, output is not triggered.
I tried to debug a bit into this as below
In class CL_BBP_ACTION_OUTPUT_PO method CHECK_RELEVANCE_DIFF there is a FM
CALL FUNCTION 'BBP_PD_ALL_GET_DIFF'
EXPORTING
iv_guid1 = mv_object_key
iv_guid2 = mv_object_key
iv_comp_method = bbppd_comp-po_output
is_read_flags = ls_read_flags
IMPORTING
ev_objects_differ = lv_objectdiffers.
if lv_objectdiffers is 'X' then output is triggered.
If we go two levels inside we have forms get_diff_header and get_diff_itemlist to identify any kind of difference at Header/ Item level respectively. Inside each of these forms there are separate FMs to compare different sets of data. For example for comparing longtexts we have BBP_PDLTX_GET_DIFF and for Organisational data BBP_PDLTX_GET_DIFF etc., Before calling these FMs there is another FM BBP_PDH_CLEAR_FIELDS where the fields are compared with table BBPD_COMP_FIELDS.
I could not understand the role of table BBPD_COMP_FIELDS in PO triggering. Even though I maintain PRICE /GROSS_PRICE/ TOTAL_VALUE in table BBPD_COMP_FIELDS with COMPARE_KIND indicator as 'E", output still gets triggered.
Thanks,
sankar.
Hi Sankar,
In standard, in PO for change versions, the application first checks the PO status whether it is ordered or not & then checks the differences between change and active versions using the compare method POO.
Depending on the differences, new output generation is determined. Therefore, during version comparison, the system checks for the fields in the system table BBPV_COMP_FIELDS for the method POO whether they defined as exclusive(E) or inclusive(I). The comparison is excluded if
a particular field along with its dependent fields are set as E. So, when those particular field/fields are changed and order the PO it will not generate a new output.
For checking those differences, the FM used is BBP_PD_ALL_GET_DIFF. The application sends the flags of the required sets to be compared to find the differences between active and change version for determining a new output. Those sets will then be cross_checked with the fields in the table BBPV_COMP_FIELDS. Based on the values in this table new output determination is done. This is the procedure how a new output is determined for PO change version.
As per the standard system behaviour, a new output will be generated whenever the PO is changed & reordered. By default, the following three fields of structure BBP_PDS_ITEMS are set as 'E' in table BBPC_COMP_FILEDS. That means, when any of these fields are only changed in & reordered the PO, a new output will not be generated. But for the rest of all changes in PO, a new output will be generated.
BBPD_COMP_FIELDS:
POO BBP_PDS_ITEM BE_OBJECT_ID E
POO BBP_PDS_ITEM BE_OBJECT_TYPE E
POO BBP_PDS_ITEM BE_OBJ_ITEM E
If you define any field in this table BBPV_COMP_FIELDS as E that has no dependencies with any other field from other structures and if you change that field which is set as E and reorder the PO then NO new output will be generated.
Example: if you define PO Header description which is set a E in table BBPV_COMF_FIELDS, like this ==> POO Description BBP_PDS_HEADER E as description does not have any dependencies with any other field and if you change description only in PO and reorder the PO. For this
change no new output is generated !!
However, if you change field which has dependencies and those dependent fields are not defined in this table as E instead only the changed field is defined then output will generated if you change this field in PO and reorder the PO.
Example: Define ==> POO Currency BBP_PDS_HEADER E in table BBPV_COMP_FIELDS.
Change currency and reorder the PO. An output will be generated for this change although Currency is defined as E. This is because, for currency other dependent fields of BBP_PDS_PRC and BBP_PDS_ITEM structures will also be changed dynamically at run time.
As to "Price", this field is an exception to this input, you CANNOT prevent the output to be generated again when changing it. "Price" plays a main role in PO. Obviously when you change price in PO, this change has to be informed to the vendor. So in that point of view it is must to generate new output so that the changes can be intimated to the vendor. Due to this reason, output still gets triggered even you have maintained it in this table.
I hope this could help you understand the logic.
Regards,
Wendy
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.