In one of my previous blog A small tip to analyze code by code and export to markdown format it is introduced that the following header extension are supported in One order read function module CRM_ORDER_READ.
When the given header extension is read via CRM_ORDER_READ, take OPPORT_H for example:
DATA: lt_header_guid TYPE crmt_object_guid_tab,
lv_guid TYPE crmt_object_guid,
lv_object_id TYPE CRMT_OBJECT_ID_DB value '21',
lt_oppt TYPE CRMT_OPPORT_H_WRKT,
lt_partner TYPE crmt_partner_external_wrkt.
START-OF-SELECTION.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_object_id
IMPORTING
output = lv_object_id.
SELECT SINGLE guid INTO lv_guid FROM crmd_orderadm_h
WHERE object_id = lv_object_id AND process_type = 'CXOP'.
CHECK sy-subrc = 0.
APPEND lv_guid TO lt_header_guid.
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_header_guid
IMPORTING
* et_partner = lt_partner
et_opport_h = lt_oppt.
The calling hierarchy could be found from below:
Every header extension has one corresponding read function module acting as entry point for read which will be called by CRM_ORDER_READ_OW with naming convention CRM_
Take OPPORT_H read for example, I draw a picture to demonstrate this two-fold buffer evaluation logic:
In the runtime, OPPORT_H object buffer could be monitored in the context of CRM_OPPORT_H_READ_OB,
and database buffer in CRM_OPPORT_H_READ_DB accordingly.
The object buffer is declared in function group CRM_OPPORT_H_OB:
and database buffer is defined in function group CRM_OPPORT_H_DB:
Further reading
I have written a series of blogs to explain how One Order API works. The blogs are written based on a simple scenario: read, change and save field “Closing Date” in Opportunity header level.
Buffer logic in One Order header extension Read
Change Scenario
CRM_ORDER_MAINTAIN
|- CRM_ORDER_MAINTAIN_MULTI_OW
|- CRM_ORDER_MAINTAIN_SINGLE_OW
|- CRM_ORDER_H_MAINTAIN_OW
|- CRM_OPPORT_H_MAINTAIN_OW
|- CRM_OPPORT_H_CHECK_OW
|- CRM_OPPORT_H_PUT_OB
|- CRM_OPPORT_H_PUBLISH_OW
Save Scenario
CRM_ORDER_SAVE
|- CRM_ORDER_SAVE_OW
|- CRM_EVENT_SET_EXETIME_MULTI_OW
|- CRM_ORDER_TABLE_SAVE
|- CRM_OBJECT_NAMES_DETERMINE
|- CRM_ORDER_UPDATE_TABLES_DETERM
|- CRM_ORDER_SET_OBJECTS_TO_SAVE
CRM_OPPORT_H_UPDATE_DU
Create Scenario
CRM_ORDER_MAINTAIN
|- CRM_ORDER_MAINTAIN_MULTI_OW
|- CRM_ORDER_MAINTAIN_SINGLE_OW
|- CRM_ORDER_H_MAINTAIN_OW
|- CRM_ORDERADM_H_MAINTAIN_OW
|- CRM_OPPORT_H_MAINTAIN_OW
要获取更多Jerry的原创文章,请关注公众号"汪子熙":