on 2007 Feb 23 7:05 AM
Hi Gurus,
In our requirement BBPCF02 will display the PO which are based on the document type "ECDP" and "ECPO" i want to add one more document type "EB" ..so when ever i enter this tcode in ITS it should disply the POs which are based on document types as "ECDP" "ECPO" and "EB".
I have heard about BADI BBP_WF_LIST in this which methos i need to implement how to procedd further ..
please help
THnak you
Message was edited by:
joseph Prashanth
Hi
<b>As promised to you, here is the sample Code for the BADI Implementation...</b>
<u>You need to make few changes to the code base o the RFC function call and update the e_pdlist table of this BADI, which holds the final data ( all the POS / Confirmations to be displayed on ITS Web page, once the BBPCF02 or BBPCF03 Service is called)</u>
Let me know incase you need any further help.
METHOD if_ex_bbp_wf_list~bbp_wf_list.
DATA: t_header_guids TYPE TABLE OF bbp_guid_tab,
t_pdlist TYPE TABLE OF bbp_pds_pdlist,
t_messages TYPE TABLE OF bbp_pds_messages,
t_sc_guids TYPE TABLE OF bbp_guid_tab,
t_ref_doc TYPE TABLE OF bbps_sc_refdata,
t_itemlist TYPE TABLE OF bbp_pds_sc_itemlist,
t_conf_pdlist TYPE TABLE OF bbp_pds_pdlist.
DATA: wa_sc_guids TYPE bbp_guid_tab,
wa_pdlist TYPE bbp_pds_pdlist,
wa_ref_doc TYPE bbps_sc_refdata,
wa_itemlist TYPE bbp_pds_sc_itemlist,
wa_conf_pdlist TYPE bbp_pds_pdlist.
IF sy-tcode EQ 'BBPCF02'.
*--- First Get all the Reference documents
*--- Get all the Shopping Carts
CALL FUNCTION 'BBP_PD_SC_GETLIST'
TABLES
i_header_guids = t_header_guids
e_pdlist = t_pdlist
e_messages = t_messages.
*--- Sort the SC based on SC number
SORT t_pdlist BY object_id.
*--- Get all the Header Guids
LOOP AT t_pdlist INTO wa_pdlist.
wa_sc_guids-guid = wa_pdlist-guid.
APPEND wa_sc_guids TO t_sc_guids.
ENDLOOP.
*--- Get all the Reference Document for the Header Guids
CALL FUNCTION 'BBP_PD_SC_REF_GETLIST'
EXPORTING
i_item_not_deleted = 'X'
TABLES
it_header_guids = t_sc_guids
et_refdata = t_ref_doc
it_logical_systems = 'R3BACKENDSYSTEM' -> Give he R/3 backend system RFC Destination name here
EXCEPTIONS
nothing_found = 1
OTHERS = 2.
*--- Retain only the PO (Business Object 2012)
DELETE t_ref_doc WHERE ( be_object_type NE 'BUS2012' AND
be_object_type NE 'BUS2012001' ).
*--- Sort all reference documents based on be_object_id - Purchase Order numbers.
SORT t_ref_doc BY be_object_id.
*--- Loop on all remaianing POs
*--- Use SC Guid (Header)
LOOP AT t_ref_doc INTO wa_ref_doc.
DELETE e_pdlist WHERE object_id = wa_ref_doc-be_object_id.
ENDLOOP.
*--- Here make a call to the R/3 system by using your RFC Function module
*---- and update e_pdlist [] table which finally will contain all the
*--- detialed confirmations starting with Document type - "EB"
*---- based on the document type "ECDP" and "ECPO" - Add one more document type "EB" ..
*---- so when ever BBPCF02 is called in ITS it should disply the POs
*--- which are based on document types as "ECDP" "ECPO" and "EB".
ELSEIF sy-tcode EQ 'BBPCF03'. " Display All PO/Confirmations
*--- Similar code as above
ENDIF. "if sy-tcode eq 'BBPCF02'.
ENDMETHOD.
Hope this will help.
Please reward suitable points.
Regards
- Atul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
i have implemented BBP_WF_LIST with BUS2203 with method BBP_WF_LIST
i have made some chnages to the code ::
method IF_EX_BBP_WF_LIST~BBP_WF_LIST.
IF SY-TCODE EQ 'BBPCF02'.
BREAK-POINT.
MOVE 'BUS2201' TO FLT_VAL.
DATA : LT_SRM_EKKO TYPE TABLE OF ZSRM_EKKO,
LS_SRM_EKKO LIKE LINE OF LT_SRM_EKKO.
DATA : LS_PDLIST LIKE LINE OF E_PDLIST.
DATA : LV_SYSID TYPE LOGSYS.
IF sy-sysid EQ 'UPD'.
LV_SYSID = 'UHD_111'.
ELSEIF sy-sysid EQ 'UPQ'.
LV_SYSID = 'SAPUHQ100'.
ELSEIF sy-sysid EQ 'UPP'.
LV_SYSID = 'SAPUHP100'.
ENDIF.
CALL FUNCTION 'ZFM_PO_TO_SRM' DESTINATION LV_SYSID
TABLES
LT_EKKO = LT_SRM_EKKO.
LOOP AT LT_SRM_EKKO INTO LS_SRM_EKKO.
MOVE LS_SRM_EKKO-ZOBJECT_ID TO LS_PDLIST-OBJECT_ID.
SHIFT LS_PDLIST-OBJECT_ID LEFT DELETING LEADING '0'.
APPEND LS_PDLIST TO E_PDLIST.
ENDLOOP.
ENDIF.
ENDMETHOD.
<b>I AM NOT GETTING THE POs AS THE SCREEN IS NOT DISPLAYING ANY POs IT IS JUST HANGING THERE...
CAN ANYONE SUGGEST CODE CHANGES..</b>
.
Yes it is RFC enabled and i am getting the EB POs in the LT_SRM_EKKO..
CALL FUNCTION 'ZFM_PO_TO_SRM' DESTINATION LV_SYSID
TABLES
LT_EKKO = LT_SRM_EKKO.
LOOP AT LT_SRM_EKKO INTO LS_SRM_EKKO.
MOVE LS_SRM_EKKO-ZOBJECT_ID TO LS_PDLIST-OBJECT_ID.
SHIFT LS_PDLIST-OBJECT_ID LEFT DELETING LEADING '0'.
APPEND LS_PDLIST TO E_PDLIST.
ENDLOOP.
I am appending to E_PDLIST but still it is going to hang stage...
My understanding:
You have a PO type EB in R/3.
You want to confirm goods for this R/3 PO in SRM.
You have the following options for PO creation in R/3:
1) You create a PO directly in ME21N. There is no reference to PR. (This PO will not be visible in SRM confirmation)
2) You create PO in ME21N with ref to PR in R/3. This PR in R/3 is created from a classic scenario shopping cart in SRM. (This PO will be visible in SRM)
3) You create PO in ME21N with ref to PR in R/3. This PR in R/3 is created directly in ME51N in R/3 and is not created from classic scenario shopping cart in SRM. (This PO will NOT be visible in SRM)
4) A PO R/3 is created out of classic scenario shopping cart in SRM. (This PO will be visible in SRM)
Best regards
Ramki
The Problem is i am appending the EB POs to the E_PDLIST but the thing is it is appending only PO numbers (object_id) how to populate GUIDs because E_PDLIST has GUID field i need to populate this also can i populate this...as i am getting from R3 how can i get GUIDs for that POs...
Please help..
.
Hi
Please confirm these point ->
<b>Which EBP Scenario you are using ?</b>
<u>The Back-end documents [e.g., Purchase orders / Purchase Requistions], which are getting created in the R/3 system only or they are created first in SRM system and then are getting replicated to R/3 system.</u>
<u>Similarly, what about confirmations and Good Receipts, are getting created in the R/3 system only or they are created first in SRM system and then are getting replicated to R/3 system.</u>
Please provide these details at the earliest.
Hope this will help.
Please reward suitable points.
Regards
- Atul
Hi
<b>As promised to you, here is the sample Code for the BADI Implementation...</b>
<u>You need to make few changes to the code base o the RFC function call and update the e_pdlist table of this BADI, which holds the final data ( all the POS / Confirmations to be displayed on ITS Web page, once the BBPCF02 or BBPCF03 Service is called)</u>
Let me know incase you need any further help.
METHOD if_ex_bbp_wf_list~bbp_wf_list.
DATA: t_header_guids TYPE TABLE OF bbp_guid_tab,
t_pdlist TYPE TABLE OF bbp_pds_pdlist,
t_messages TYPE TABLE OF bbp_pds_messages,
t_sc_guids TYPE TABLE OF bbp_guid_tab,
t_ref_doc TYPE TABLE OF bbps_sc_refdata,
t_itemlist TYPE TABLE OF bbp_pds_sc_itemlist,
t_conf_pdlist TYPE TABLE OF bbp_pds_pdlist.
DATA: wa_sc_guids TYPE bbp_guid_tab,
wa_pdlist TYPE bbp_pds_pdlist,
wa_ref_doc TYPE bbps_sc_refdata,
wa_itemlist TYPE bbp_pds_sc_itemlist,
wa_conf_pdlist TYPE bbp_pds_pdlist.
IF sy-tcode EQ 'BBPCF02'.
*--- First Get all the Reference documents
*--- Get all the Shopping Carts
CALL FUNCTION 'BBP_PD_SC_GETLIST'
TABLES
i_header_guids = t_header_guids
e_pdlist = t_pdlist
e_messages = t_messages.
*--- Sort the SC based on SC number
SORT t_pdlist BY object_id.
*--- Get all the Header Guids
LOOP AT t_pdlist INTO wa_pdlist.
wa_sc_guids-guid = wa_pdlist-guid.
APPEND wa_sc_guids TO t_sc_guids.
ENDLOOP.
*--- Get all the Reference Document for the Header Guids
CALL FUNCTION 'BBP_PD_SC_REF_GETLIST'
EXPORTING
i_item_not_deleted = 'X'
TABLES
it_header_guids = t_sc_guids
et_refdata = t_ref_doc
it_logical_systems = 'R3BACKENDSYSTEM' -> Give he R/3 backend system RFC Destination name here
EXCEPTIONS
nothing_found = 1
OTHERS = 2.
*--- Retain only the PO (Business Object 2012)
DELETE t_ref_doc WHERE ( be_object_type NE 'BUS2012' AND
be_object_type NE 'BUS2012001' ).
*--- Sort all reference documents based on be_object_id - Purchase Order numbers.
SORT t_ref_doc BY be_object_id.
*--- Loop on all remaianing POs
*--- Use SC Guid (Header)
LOOP AT t_ref_doc INTO wa_ref_doc.
DELETE e_pdlist WHERE object_id = wa_ref_doc-be_object_id.
ENDLOOP.
*--- Here make a call to the R/3 system by using your RFC Function module
*---- and update e_pdlist [] table which finally will contain all the
*--- detialed confirmations starting with Document type - "EB"
*---- based on the document type "ECDP" and "ECPO" - Add one more document type "EB" ..
*---- so when ever BBPCF02 is called in ITS it should disply the POs
*--- which are based on document types as "ECDP" "ECPO" and "EB".
ELSEIF sy-tcode EQ 'BBPCF03'. " Display All PO/Confirmations
*--- Similar code as above
ENDIF. "if sy-tcode eq 'BBPCF02'.
ENDMETHOD.
Hope this will help.
Please reward suitable points.
Regards
- Atul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
<b>As promised to you, here is the sample Code for the BADI Implementation...</b>
<u>You need to make few changes to the code base o the RFC function call and update the e_pdlist table of this BADI, which holds the final data ( all the POS / Confirmations to be displayed on ITS Web page, once the BBPCF02 or BBPCF03 Service is called)</u>
Let me know incase you need any further help.
METHOD if_ex_bbp_wf_list~bbp_wf_list.
DATA: t_header_guids TYPE TABLE OF bbp_guid_tab,
t_pdlist TYPE TABLE OF bbp_pds_pdlist,
t_messages TYPE TABLE OF bbp_pds_messages,
t_sc_guids TYPE TABLE OF bbp_guid_tab,
t_ref_doc TYPE TABLE OF bbps_sc_refdata,
t_itemlist TYPE TABLE OF bbp_pds_sc_itemlist,
t_conf_pdlist TYPE TABLE OF bbp_pds_pdlist.
DATA: wa_sc_guids TYPE bbp_guid_tab,
wa_pdlist TYPE bbp_pds_pdlist,
wa_ref_doc TYPE bbps_sc_refdata,
wa_itemlist TYPE bbp_pds_sc_itemlist,
wa_conf_pdlist TYPE bbp_pds_pdlist.
IF sy-tcode EQ 'BBPCF02'.
*--- First Get all the Reference documents
*--- Get all the Shopping Carts
CALL FUNCTION 'BBP_PD_SC_GETLIST'
TABLES
i_header_guids = t_header_guids
e_pdlist = t_pdlist
e_messages = t_messages.
*--- Sort the SC based on SC number
SORT t_pdlist BY object_id.
*--- Get all the Header Guids
LOOP AT t_pdlist INTO wa_pdlist.
wa_sc_guids-guid = wa_pdlist-guid.
APPEND wa_sc_guids TO t_sc_guids.
ENDLOOP.
*--- Get all the Reference Document for the Header Guids
CALL FUNCTION 'BBP_PD_SC_REF_GETLIST'
EXPORTING
i_item_not_deleted = 'X'
TABLES
it_header_guids = t_sc_guids
et_refdata = t_ref_doc
it_logical_systems = 'R3BACKENDSYSTEM' -> Give he R/3 backend system RFC Destination name here
EXCEPTIONS
nothing_found = 1
OTHERS = 2.
*--- Retain only the PO (Business Object 2012)
DELETE t_ref_doc WHERE ( be_object_type NE 'BUS2012' AND
be_object_type NE 'BUS2012001' ).
*--- Sort all reference documents based on be_object_id - Purchase Order numbers.
SORT t_ref_doc BY be_object_id.
*--- Loop on all remaianing POs
*--- Use SC Guid (Header)
LOOP AT t_ref_doc INTO wa_ref_doc.
DELETE e_pdlist WHERE object_id = wa_ref_doc-be_object_id.
ENDLOOP.
*--- Here make a call to the R/3 system by using your RFC Function module
*---- and update e_pdlist [] table which finally will contain all the
*--- detialed confirmations starting with Document type - "EB"
*---- based on the document type "ECDP" and "ECPO" - Add one more document type "EB" ..
*---- so when ever BBPCF02 is called in ITS it should disply the POs
*--- which are based on document types as "ECDP" "ECPO" and "EB".
ELSEIF sy-tcode EQ 'BBPCF03'. " Display All PO/Confirmations
*--- Similar code as above
ENDIF. "if sy-tcode eq 'BBPCF02'.
ENDMETHOD.
Hope this will help.
Please reward suitable points.
Regards
- Atul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
<b>As promised to you, here is the sample Code for the BADI Implementation...</b>
<u>You need to make few changes to the code base o the RFC function call and update the e_pdlist table of this BADI, which holds the final data ( all the POS / Confirmations to be displayed on ITS Web page, once the BBPCF02 or BBPCF03 Service is called)</u>
Let me know incase you need any further help.
METHOD if_ex_bbp_wf_list~bbp_wf_list.
DATA: t_header_guids TYPE TABLE OF bbp_guid_tab,
t_pdlist TYPE TABLE OF bbp_pds_pdlist,
t_messages TYPE TABLE OF bbp_pds_messages,
t_sc_guids TYPE TABLE OF bbp_guid_tab,
t_ref_doc TYPE TABLE OF bbps_sc_refdata,
t_itemlist TYPE TABLE OF bbp_pds_sc_itemlist,
t_conf_pdlist TYPE TABLE OF bbp_pds_pdlist.
DATA: wa_sc_guids TYPE bbp_guid_tab,
wa_pdlist TYPE bbp_pds_pdlist,
wa_ref_doc TYPE bbps_sc_refdata,
wa_itemlist TYPE bbp_pds_sc_itemlist,
wa_conf_pdlist TYPE bbp_pds_pdlist.
IF sy-tcode EQ 'BBPCF02'.
*--- First Get all the Reference documents
*--- Get all the Shopping Carts
CALL FUNCTION 'BBP_PD_SC_GETLIST'
TABLES
i_header_guids = t_header_guids
e_pdlist = t_pdlist
e_messages = t_messages.
*--- Sort the SC based on SC number
SORT t_pdlist BY object_id.
*--- Get all the Header Guids
LOOP AT t_pdlist INTO wa_pdlist.
wa_sc_guids-guid = wa_pdlist-guid.
APPEND wa_sc_guids TO t_sc_guids.
ENDLOOP.
*--- Get all the Reference Document for the Header Guids
CALL FUNCTION 'BBP_PD_SC_REF_GETLIST'
EXPORTING
i_item_not_deleted = 'X'
TABLES
it_header_guids = t_sc_guids
et_refdata = t_ref_doc
it_logical_systems = 'R3BACKENDSYSTEM' -> Give he R/3 backend system RFC Destination name here
EXCEPTIONS
nothing_found = 1
OTHERS = 2.
*--- Retain only the PO (Business Object 2012)
DELETE t_ref_doc WHERE ( be_object_type NE 'BUS2012' AND
be_object_type NE 'BUS2012001' ).
*--- Sort all reference documents based on be_object_id - Purchase Order numbers.
SORT t_ref_doc BY be_object_id.
*--- Loop on all remaianing POs
*--- Use SC Guid (Header)
LOOP AT t_ref_doc INTO wa_ref_doc.
DELETE e_pdlist WHERE object_id = wa_ref_doc-be_object_id.
ENDLOOP.
*--- Here make a call to the R/3 system by using your RFC Function module
*---- and update e_pdlist [] table which finally will contain all the
*--- detialed confirmations starting with Document type - "EB"
*---- based on the document type "ECDP" and "ECPO" - Add one more document type "EB" ..
*---- so when ever BBPCF02 is called in ITS it should disply the POs
*--- which are based on document types as "ECDP" "ECPO" and "EB".
ELSEIF sy-tcode EQ 'BBPCF03'. " Display All PO/Confirmations
*--- Similar code as above
ENDIF. "if sy-tcode eq 'BBPCF02'.
ENDMETHOD.
Hope this will help.
Please reward suitable points.
Regards
- Atul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I would rather use BBPCF03 (confirm centrally) to be able to receive your EB backend documents : it is standard behaviour
Then use BADI already mentionned to restrict the list to what you want .
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.
Hi
<b>For BBPCF02 / BBPCF03 Internet Services,</b>
<u>You need to implement the BADI - BBP_WF_LIST for the filter type - BUS2203 for doing this job.</u>
<b>Here is the documetation of this BADI</b>
BBP_WF_LIST
____________________________________________________
Short Text
Display Worklists and Search Results Lists
With the Business Add-In BBP_WF_LIST , you can tailor the
display of worklists and search results lists for purchase order documents (and Sourcing applications) in SRM Server according to your own criteria.
Standard settings
The following methods are available:
BBP_WF_LIST for purchasing documents
BBP_WF_LIST_SOCO for the Sourcing application
In the standard version, the following differences exist between the display of worklists and search results lists:
Normal employees see only their own requirements and documents
The purchaser's worklist in Sourcing and in the application for processing purchase orders is dependent on assignment to an organizational unit.
The goods recipient and invoicing party can find all purchase orders, confirmations, and invoices.
As standard, the system sorts the purchasing documents in ascending order by the last date of processing.
To distinguish between the worklists and search results lists of the SRM Server applications, the BAdI is implemented dependent on the following filters:
BUS2201
Filter value for the worklist in purchase order processing in SAP Enterprise Buyer
BUS2203
Filter value for the worklist in confirmation processing in SAP Enterprise Buyer
BUS2205
Filter value for the search results list in invoice processing in SAP Enterprise Buyer
BUS2121
Filter value for the worklist in shopping cart status check in SAP Enterprise Buyer
BUS2200
Filter value for the search results list in bid invitation processing in SAP Bidding Engine
BUS2202
Filter value for the search results list in bid processing in SAP Bidding Engine
BUS2000113
Filter value for the search results list in contract processing in SAP Enterprise Buyer
Activities
Implement and activate the BAdI if you wish to adapt worklists and search results lists.
Note that the filter value Object type (field OBJECT_TYPE) determines for which application the BAdI implementation is active.
Example
Using the BadI BBP_WF_LIST you can sort the worklist by document number, for example, or remove documents belonging to a particular user from the worklist.
The implementation of the BadI using Business object type BUS2205 allows you to change the list of invoices and the purchase orders associated with these invoices independently of one another. For example, you could sort the purchase orders by purchase order number and the invoices by the name of the user who created them.
You can exclude bid invitations from a certain product category, for example, from the purchaser's search results list in SAP Bidding Engine.
You can exclude contracts from a certain purchasing organization or purchasing group, for example, from the purchaser's search results list in SAP Enterprise Buyer.
Further notes
If the BadI is used for confirmations and purchase orders, it always accesses the list of the actual document and its purchase orders.
The purchaser's worklist contains only requirements that, according to Customizing, are to be processed in the Sourcing application. See the IMG activity Define Sourcing for Product Categories.
*--------------------------------*
Change Output List Purchasing Documents
Functionality
With method BBP_WF_LIST in SAP Enterprise Buyer, you can adapt the display list of the worklist for purchasing documents and search results lists according to your own criteria.
Parameters
Importing
FLT_VAL
Filter value
I_PDLIST_NEW
Entry list of worklist or the search results list and additional information
Changing
E_PDLIST
Output list of worklist or the search results list (contains only GUIDs)
See also
BAdI BBP_WF_LIST
Method BBP_WF_LIST_SOCO
Implementation
Incase you need the Method Implemenatation part, as well, do let me know.
Hope this will help.
Please reward suitable points.
Regards
- Atul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Joseph
I am sorry, I did not understand the problem. In my opinion, you do not have any problem. Or am I missing anything ?
1) If you add EB as a transaction type for PO in SRM and use it to create POs in SRM, then the POs will be proposed in BBPCF02.
You do not need to do any additional coding for this to happen.
Why do you want to use BBP_WF_LIST badi ?
2) Even of you want to use BBP_WF_LIST, why do you want to use BBP_WF_LIST_SOCO ? This is used in sourcing cockpit and obviously will not work.
You need to use the method BBP_WF_LIST.
Best regards
Ramki
Thanks for u reply...
I general BBPCF02 is showing POs with document type ECDP and ECPO.i want to add one more condition that ::In R3 there are POs which are created based on document type EB, i want those POs to be displayed in this tcode BBPCF02..thats why i want to implement this BADI...
One more doubt is this the correct BADI which solves my problem??
Upto now i created a FM in R3 to get POs based on ECDP , ECPO and EB which is RFC enabled. i will call this FM in the SRM BADI and populate the OBJECT_ID field..Is it correct way to achieve??
If u have some code how to write BADI code please help...
Hi Joseph
Now, I understand.
Can you pl try this (am not sure whether it will work)?
1) Add EB to attribute BSA in PPOMA_BBP and see if you can create confirmations for it?
2) Sorry on sample code part..I don't have any..
I guess you need to use I_PDLIST (or I_PDLIST_NEW depending on your SRM version) and influence E_PDLIST. You can remote call your FM in R/3 and update E_PDLIST.
Best regards
Ramki
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.