on 2011 Sep 29 4:35 PM
Hi,
I am trying to call the below classes from a function module to use the below methods to create the shopping cart.
Classes:
/SAPSRM/CL_PDO_FACTORY_SC_ADV
/SAPSRM/CL_PDO_BO_SC
Methods:
GET_ITEM_DETAIL
UPDATE_ITEMS
SUBMIT_UPDATE
SAVE
Could you please guide me, how to pass the input parameters and get the results.A sample code will be very helpful.
Thanks & Regards,
Naresh
Request clarification before answering.
Hi,
I did this report for copy a SC without that classes... , hope help you;
Part 1/2:
REPORT zpruebas_richal3.
TYPE-POOLS: icon.
DATA: lv_cont TYPE i VALUE 1,
lv_num_int TYPE i,
ls_sc_header_u LIKE bbp_pds_sc_header_ic,
ls_sc_header TYPE bbp_pds_sc_header_d,
lt_sc_item TYPE bbp_pds_sc_item_d OCCURS 0 WITH HEADER LINE,
lt_sc_item_u TYPE bbp_pds_sc_item_icu OCCURS 0 WITH HEADER LINE,
lt_sc_account TYPE bbp_pds_acc OCCURS 0 WITH HEADER LINE,
lt_sc_partner TYPE bbp_pds_partner OCCURS 0 WITH HEADER LINE,
lt_sc_confirm TYPE bbp_pds_con OCCURS 0 WITH HEADER LINE,
lt_sc_longtext TYPE bbp_pds_longtext OCCURS 0 WITH HEADER LINE,
lt_sc_sdln TYPE bbp_pds_sdln OCCURS 0 WITH HEADER LINE,
lt_sc_limit TYPE bbp_pds_limit OCCURS 0 WITH HEADER LINE,
lt_sc_orgdata TYPE bbp_pds_org OCCURS 0 WITH HEADER LINE,
lt_sc_tax TYPE bbp_pds_tax OCCURS 0 WITH HEADER LINE,
lt_sc_pridoc TYPE bbp_pds_prc OCCURS 0 WITH HEADER LINE,
lt_sc_messages TYPE bbp_pds_messages OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF lt_items OCCURS 0,
guid_old TYPE crmt_object_guid,
guid_new TYPE crmt_object_guid,
END OF lt_items.
PARAMETERS: p_sc TYPE crmt_object_id_db OBLIGATORY.
START-OF-SELECTION.
CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
EXPORTING
i_object_id = p_sc
IMPORTING
e_header = ls_sc_header
TABLES
e_item = lt_sc_item
e_account = lt_sc_account
e_partner = lt_sc_partner
e_orgdata = lt_sc_orgdata
e_tax = lt_sc_tax
e_pridoc = lt_sc_pridoc.
IF ls_sc_header IS INITIAL.
MESSAGE 'SC dont exits' TYPE 'I'.
STOP.
ENDIF.
* Header;
MOVE-CORRESPONDING ls_sc_header TO ls_sc_header_u.
ls_sc_header_u-guid = lv_cont.
CLEAR: ls_sc_header_u-object_id.
* Items:
LOOP AT lt_sc_item.
MOVE-CORRESPONDING lt_sc_item TO lt_sc_item_u.
ADD 1 TO: lv_cont, lv_num_int.
lt_sc_item_u-guid = lv_cont.
lt_sc_item_u-number_int = lv_num_int.
lt_sc_item_u-parent = ls_sc_header_u-guid.
lt_sc_item_u-ps_handle_itm = 1.
APPEND lt_sc_item_u.
lt_items-guid_old = lt_sc_item-guid.
lt_items-guid_new = lt_sc_item_u-guid.
APPEND lt_items.
ENDLOOP.
DATA: lv_tabix LIKE sy-tabix.
LOOP AT lt_sc_account.
lv_tabix = sy-tabix.
ADD 1 TO lv_cont.
lt_sc_account-guid = lv_cont.
IF lt_sc_account-p_guid EQ ls_sc_header-guid.
lt_sc_account-p_guid = ls_sc_header_u-guid.
ELSE.
READ TABLE lt_items WITH KEY guid_old = lt_sc_account-p_guid.
lt_sc_account-p_guid = lt_items-guid_new.
ENDIF.
MODIFY lt_sc_account INDEX lv_tabix.
ENDLOOP.
LOOP AT lt_sc_partner.
lv_tabix = sy-tabix.
ADD 1 TO lv_cont.
lt_sc_partner-partner_guid = lv_cont.
IF lt_sc_partner-p_guid EQ ls_sc_header-guid.
lt_sc_partner-p_guid = ls_sc_header_u-guid.
ELSE.
READ TABLE lt_items WITH KEY guid_old = lt_sc_partner-p_guid.
lt_sc_partner-p_guid = lt_items-guid_new.
ENDIF.
MODIFY lt_sc_partner INDEX lv_tabix.
ENDLOOP.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Part 2/2;
LOOP AT lt_sc_orgdata.
lv_tabix = sy-tabix.
ADD 1 TO lv_cont.
lt_sc_orgdata-guid = lv_cont.
IF lt_sc_orgdata-p_guid EQ ls_sc_header-guid.
lt_sc_orgdata-p_guid = ls_sc_header_u-guid.
ELSE.
READ TABLE lt_items WITH KEY guid_old = lt_sc_orgdata-p_guid.
lt_sc_orgdata-p_guid = lt_items-guid_new.
ENDIF.
MODIFY lt_sc_orgdata INDEX lv_tabix.
ENDLOOP.
LOOP AT lt_sc_tax.
lv_tabix = sy-tabix.
ADD 1 TO lv_cont.
lt_sc_tax-guid = lv_cont.
IF lt_sc_tax-p_guid EQ ls_sc_header-guid.
lt_sc_tax-p_guid = ls_sc_header_u-guid.
ELSE.
READ TABLE lt_items WITH KEY guid_old = lt_sc_tax-p_guid.
lt_sc_tax-p_guid = lt_items-guid_new.
ENDIF.
MODIFY lt_sc_tax INDEX lv_tabix.
ENDLOOP.
LOOP AT lt_sc_pridoc.
lv_tabix = sy-tabix.
ADD 1 TO lv_cont.
lt_sc_pridoc-guid = lv_cont.
IF lt_sc_pridoc-p_guid EQ ls_sc_header-guid.
lt_sc_pridoc-p_guid = ls_sc_header_u-guid.
ELSE.
READ TABLE lt_items WITH KEY guid_old = lt_sc_pridoc-p_guid.
lt_sc_pridoc-p_guid = lt_items-guid_new.
ENDIF.
MODIFY lt_sc_pridoc INDEX lv_tabix.
ENDLOOP.
CALL FUNCTION 'BBP_PD_SC_CREATE'
EXPORTING
i_save = 'X'
i_header = ls_sc_header_u
IMpoRTING
e_header = ls_sc_header
TABLES
i_item = lt_sc_item_u
i_account = lt_sc_account
i_partner = lt_sc_partner
i_orgdata = lt_sc_orgdata
i_tax = lt_sc_tax
I_PRIDOC = lt_sc_pridoc
e_messages = lt_sc_messages.
* Check errorsS
LOOP AT lt_sc_messages WHERE msgty = 'E' OR msgty = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc EQ 0.
WRITE: icon_led_red AS ICON, 'There was problems :('.
ELSE.
CALL FUNCTION 'BBP_PD_SC_SAVE'
EXPORTING
iv_header_guid = ls_sc_header-guid.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
WRITE: icon_led_green AS ICON, 'SC created with the number', ls_sc_header-object_id.
ENDIF.
* Messages:
LOOP AT lt_sc_messages.
WRITE: /.
IF lt_sc_messages-msgty EQ 'E'.
WRITE: icon_led_red AS ICON.
ELSEIF lt_sc_messages-msgty EQ 'W' OR lt_sc_messages-msgty EQ 'I'.
WRITE: icon_led_yellow AS ICON.
ELSE.
WRITE: icon_led_green AS ICON.
ENDIF.
WRITE: lt_sc_messages-message.
IF lt_sc_messages-field_name IS NOT INITIAL.
WRITE: 'Field: ', lt_sc_messages-field_name.
ENDIF.
ENDLOOP.
Thank You Ricardo!
I need to implement the standard classes and interface to create the shopping cart. I can't call the standard function modules directly for the creation of shopping cart. I want to follow the standard SAP solution.
Thanks,
Naresh
Edited by: Naresh Balani on Sep 30, 2011 2:35 AM
Edited by: Naresh Balani on Sep 30, 2011 3:10 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.