on 09-23-2011 3:55 PM
Hi All,
I am using BAPI 'BAPI_SLSTRANSACT_CREATEMULTI' to create a CRM Order from an external system. The requirement is to determine pricing based on the Campaign Id entered. When I fill the DOC_FLOW interface parameters the campaign id gets populated at the header but no corresponding campaign condition gets determined for the product even when I populate the linkage for the item in doc_flow.
I observed that when I go into the created order and manually add the Campaign Id at the item level, the pricing gets adjusted accordingly.
Please let me know what I am missing.
For the Header:
FORM doc_flow_create_bapi USING us_header_handle
P_ORDERHEADER STRUCTURE ZZCRMS_ORDERADM_H.
DATA:
lv_idx TYPE i,
l_campaign TYPE CGPL_GUID16. "Campaign GUID
CHECK NOT P_ORDERHEADER-OFRCODE IS INITIAL.
SELECT SINGLE PROJECT_GUID
INTO l_campaign
FROM CRMD_MKTPL_COUP
WHERE OFRCODE = P_ORDERHEADER-OFRCODE.
IF SY-SUBRC = 0.
PERFORM get_handle_guid32 USING us_header_handle
CHANGING ls_doc_flow-ref_handle
ls_doc_flow-ref_guid.
ls_doc_flow-OBJKEY_A = l_campaign.
ls_doc_flow-OBJTYPE_A = 'BUS2010020'.
ls_doc_flow-OBJKEY_B = ls_doc_flow-ref_guid.
ls_doc_flow-OBJTYPE_B = 'BUS2000115'.
ls_doc_flow-BREL_KIND = 'A'.
ls_doc_flow-VONA_KIND = 'F'. "('A')
ls_doc_flow-reltype = 'VONA'.
ls_doc_flow-BREL_MODE = 'A'.
INSERT ls_doc_flow INTO TABLE lt_doc_flow.
PERFORM get_handle_guid32 USING us_header_handle
CHANGING ls_input_field-ref_handle
ls_input_field-ref_guid.
ls_input_field-ref_kind = 'A'. "'C'
ls_input_field-objectname = gc_object_name-doc_flow.
ls_input_field-logical_key = 'INS'.
ls_input_field-fieldname = 'OBJKEY_A'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'OBJTYPE_A'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'OBJKEY_B'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'OBJTYPE_B'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'BREL_KIND'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'VONA_KIND'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'BREL_MODE'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'RELTYPE'.
INSERT ls_input_field INTO TABLE lt_input_fields.
For the Item (while looping at the items):
FORM doc_flow_itm_bapi USING us_item_handle
P_ORDERHEADER STRUCTURE ZZCRMS_ORDERADM_H
P_ITEM STRUCTURE ZZCRMS_ORDERADM_I.
DATA:
lv_idx TYPE i,
l_campaign TYPE CGPL_GUID16. "Campaign GUID
CHECK NOT P_ORDERHEADER-OFRCODE IS INITIAL.
SELECT SINGLE PROJECT_GUID
INTO l_campaign
FROM CRMD_MKTPL_COUP
WHERE OFRCODE = P_ORDERHEADER-OFRCODE.
IF SY-SUBRC = 0.
PERFORM get_handle_guid32 USING us_item_handle
CHANGING ls_doc_flow-ref_handle
ls_doc_flow-ref_guid.
ls_doc_flow-REF_KIND = 'B'.
ls_doc_flow-OBJKEY_A = l_campaign.
ls_doc_flow-OBJTYPE_A = 'BUS2010020'.
ls_doc_flow-OBJKEY_B = ls_doc_flow-ref_guid.
ls_doc_flow-OBJTYPE_B = 'BUS2000115'.
ls_doc_flow-BREL_KIND = 'D'.
ls_doc_flow-VONA_KIND = 'F'. "('A')
ls_doc_flow-reltype = 'VONA'.
ls_doc_flow-BREL_MODE = 'B'.
INSERT ls_doc_flow INTO TABLE lt_doc_flow.
PERFORM get_handle_guid32 USING us_item_handle
CHANGING ls_input_field-ref_handle
ls_input_field-ref_guid.
ls_input_field-ref_kind = 'B'.
ls_input_field-objectname = gc_object_name-doc_flow.
ls_input_field-logical_key = 'INS'.
ls_input_field-fieldname = 'OBJKEY_A'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'OBJTYPE_A'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'OBJKEY_B'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'OBJTYPE_B'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'BREL_KIND'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'VONA_KIND'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'BREL_MODE'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ls_input_field-fieldname = 'RELTYPE'.
INSERT ls_input_field INTO TABLE lt_input_fields.
ENDIF.
Thanks in Advance
Shounak
All,
I figured out the problem. In the DOC_FLOW tables parameter, I was passing VONA_KIND = 'F' ; it should not be filled with any values.
Thanks
Shounak
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.