Timecard not going for approval
I have setup the approval style with HR application set and approval rule of HR Supervisor.
I have set the approval style preference to my custom approval style.
But when I submit the timecard it is not going to approval instead it is directly getting saved with status of Approved.
Any ideas??
OTL: Defer approval process on timecard submission is set to YES
PA: AutoApprove Timesheets is set to NO
Regards
Shiva
Make sure your approval style is identified in the Preferences.
It is.Make sure the Preferences eligibility is correct for this user so that they get the Approval Style preference form this rule and not from any other.
Checked it is correct.Make sure that the Preferences Rules have an effective start date which is valid for the period of the timecard you submitted.
Rules effective from 01-JAN-2008.Make sure the subject of the timecard (i.e. the employee) has a supervisor who is effective on the period of the timecard.
Yes, both records exist.Only thing thats troubling me is that manager is in different BG than that of employee.
Similar Messages
-
Tabindex is not going for checkbox and buttons in Safari 5.0.4. Any solutions?
Try updating your system software.
Click your Apple menu icon top left in your screen then click Software Update.
Latest version of Snow Leopard is v10.6.8 / Safari 5.1. -
PO should not go for approval if it is from a contract
Dear Gurus,
This company wants to approve the contract but the POs created from that contract should not go for approval again. Please give an idea to achieve this requirement?
Thanks,
ChameendriHi,
We need to define Contract under characteristics of PO approval process goto SPRO > Materials Management > Purchase Order > Release Procedure fro Purchase Orders > Edit Class
Enter Class : for example POREL , class type 032 > Char tab
Enter POCONTRACT under characteristics
Enter Contract Number under description
Enter CHAR under Data Type
Enter 10 under No.of characters and 0 under decimal places
Then go to PO release strategy > Classification
Enter Contract Number under characteristic Description and Value leave it blank
this is what we did in our company and it is working fine.
POs created with referece to approved contract is not triggering to approval process again.
I dont know whether you are still waiting for the answer.
Please try and let us know the results, if it works.
Thanks.
Udaya -
If Time Recorder Enter Time Entry in SAP, Can It goes for approval on MSS ?
Hi WF Experts,
I would like to know, if Time Recorder Enter Time Entry in SAP for group of employees, can it goes for approval on MSS for individual approval ?
Would really appreciate your prompt response.
Regards,
AashishHi Experts,
I got answer for it. I did it myself. It is possible.
Thanks.
Aashish -
i have a iphone 3gs. while connecting to itune, it advised me to upgrade the phone to ios 6. ii downloaded and upgraded the phone to ios 6.but the phone is not going for set up and not reading the sim. Please advise.
YOu'll have to restore, nothing else you can do.
If you have an older backup you can restore to that. -
Invoice not going for second level approval
i have an issue , gurus
there is a invoice which should go through two level of approvals we have built a customised workflow for that , at the fist level there are say 5 approvers who can approve then at the second level there are again 3 , any one among them can approve the invoice at any level , and thereafter he work item gets deleted from the the remaing agents' inbox , now th issue is that after one among the first level approvers approves , it again comes back to him for approval without going to the next level .
what can be the problem and what is the solution , if any one can help me ..Hi,
It is related to workflow issue .Please check in SWIA
please contact your ABAP (technical team)
there is a problem in BADI
G.Ganesh Kumar -
Hi there,
SRM 5.0 and SP10 after SP upgrade facing following porblme ( this is reckon) if anybody facing same problem please correct me whetehr tis problem of SP or other
Shopping cart with two lines one of them is rejected by approver. Shopper cannot amend line so adds Line 3 in the SC. However on saving cart this
a) does not go back for approval even though value increased and
b) all items including the rejected item appear on PO.
Any clue...
looking for your helpHI there,
BBP_WFL_SECURITY parameter was maintaiend to 'medium' intially I have changed to 'low' and its woking now meaing the shopping cart is going to reapproval.But the rejected item is also going for second time to approver.
Scenario is like.
1. created sc with 3 lines.
2. Line 2nd is rejected by approver.
3. shopper getting the rejected sc and he click on ' change' adding line no 4 a new line and cilck on 'transfer cahnges'
4.NOW the approver's inbox is showing all the four lines including initially one which was rejected. The requirment is that the rejected line should not go to approver. Is it possible???
I am aware of the work around where the rejected line can be deleted in the SC and then send for approval but looking for any other option if availble and standard.
regards
SRM -
Purchase Requistion not going to Approval Inbox in SAP
Hi Gurus,
Kindly help me please ASAP. Some PRs are not going to the approver'sinbox in SAP. We are using SAP ECC6. What may be causing this error? How can I resolve this error? Please help me. Thanks
Thanks and regards,
HappyHello !
You've stated that there is no entries in SWI1 transaction.
This means, we can assume that workflow hasn't triggered for this particular purchase requisition document.
It can be confirmed whether workflow has triggered against this purchase requisition document.
This can be accomplished at SWEL transaction.Go to SWEL(hope event trace is switched on in SWELS transaction during the creation of this purchase requisition).Delete the details in text boxes for the field "Created From Date/Time".Enter the purchase requisition number at the field "'Creator' object instance" and click "Execute" button.
If you see any entries, it means the workflow have triggered for this purchase requisition.Now by examining the workflow log for this work item, it can be identified whether the agent detail is populated in the respective container.
Regards,
S.Suresh -
Document not reported for approval
I have an urgent issue related to workflow, it is like a lot of document that should report for approval, has not been reported since many days. Now when i am checking the log of the documents it is showing a SWW_WI_ERROR_MESSAGE_SEND_S in technical details of the agent list.
Can any one help me for the same?> And this is the step in WF-Batch.
>
So it is a background step. That is (well, at least it can be) significant information. Have you checked that they haven't messed with the authorizations of WF-BATCH?
> Every document posed after 15 september by a user is having the same problem, workflow is not triggering. And in SM58 it is showing "time limit exceeded".
>
So the documents are of different types, it is not restricted to e.g. only purchase orders. Have you checked that the user has normal authorizations (e.g. the same basic roles as another user)?
I assume you have chekced most of the obvious things, such as the document referred in the workflow actually existing.
Surely the workflow must be triggering when this problem can be found in the workflow log. What exactly do you mean by that statement - do all the workflows fail early in the process - perhaps even before the first step is created?
What should the step that fails do? I assume the failure occurs in a customer-developed BOR object type, so please give a bit more information about where the problem occurs. -
Approval process not waiting for approval tasks to be completed
Hi All,
I created an Approval process for a resource. When a request is created for this resource an approval task is assigned to the manager of the user.
Before the approval task is completed by the manager the resource is getting provisioned. Is there something I am missing out here. Any suggestions about what I am missing here.
ThanksThe statuses shown are sometimes misleeding. There is a status for when the approval starts. There is a status when the Standard Approval process completes (this is normally set to auto complete). There there is a status for when the object specific approval starts, a status for if any of the approvals have been completed, and then one for when the whole request is completed. These don't neccessarily provide you with a sure answer to the status of the request.
I think you need to disregard the statuses for now, and just configure the approval tasks as you intend to do so. If you do not want the standard approval to be required, set the Approve task to use the auto complete adapter. Then create an approval process specific to your resource object, and set it to the default. Then create an approval task and make to uncheck the "conditional" checkbox so that it always runs. Set your assignments appropriately, and you will be done. The provisioning will not start until all tasks are completed with a complete status for the tasks within.
If you want to know the statuses between steps, then check those between all of the steps.
-Kevin -
Approver not availabale for approving the leave rquest
Hi Guys,
I Had One problem ,
In the leave request work flow ,
When a leave request is raised , if the approver is not available i want to approve that one with out his notification in back ground, for this one is there any std. program or any another process is there.... plz help me with quick responce
Thanks,
Durga Prasad.Thanks rob,
But I don't want to do like this, is there any another way ?
Why because my project manger is already on vacation , I can't asign substitute for him.
and Oslo all the leave request which are pending and also new request need to be approved in back ground.
Plz advice me
Thanks,,,,
Durga Prasad -
Hi
We are on SRM 5.0 , configuring Extended classic scenario. After SC is approved , even if I assign the vendor while creating the SC , it always creates a incomplete PO and it is in Held status. When Purchaser Logs in and Process the PO, add the vendor and order the PO, it always says that "Awaiting approval". I have configured the "No Approval Workflow" for PO, but still it goes for approval. When I check for the approval inbox, a work item "Create PO" appears in my inbox. I could not process the workitem only forward button is available.
Please help me to solve this issue.
Regards,
CharyHi,
Go to the transaction SWU3 and check ---> Maintain Runtime Environment and observe all green ticks.
You will find a list of all scheduled background jobs XXXXXXXXXXXXXX. Execute each and observe the jobs for different activities.
SWWDHEX
SWWERRE
SWEQSRV
SWFSLSDLEX
Observe whether all automatic workflow customizing is active and green green.
or,
Go to SM37 and put SW* all related to Workflow.
Best regards,
Sridhar. -
PO creation for approved requisitions
Hi Gurus,
can anybody please throw some light and help me with this scenario. We have release procedure setup for requsitions for cost centers only. The approval levels we have are 1000-5000 is level1, 5001-10000 is level2 and 10001+ is level3. If a user puts in a requisition for 4000 USD, it goes for approval to person A. once it is approved this is ready to be convertted to PO. Now at this POint the buyer has teh capability to cut the PO against any amount higher than 4000 which was originally put on the requisition. Now my question here is since the requisition has been aprroved for 4000 USD which is in the limit of 1000 -5000, it is OK for us if the buyer goes ahead and creates a PO for 5000. But we dont want the buyer to create a PO for next limits like 5001 and above as the requsition was approved for only the limit range of 1000-5000. Similarly the buyer can create the PO for a lesser dollar amount also than 4000. These chaanges occur because by the time the PO is created the rrates might change in the real world. Can anybody please let me knwo if there is a way to put a hard error in PO creation if the buyer tries to create thee PO for an amount outside of the approved limit on the requisition.
Thanks
AnushaTechnically what Jurgen said, plus . . .
From a pure business point of view the PR is for business approval of a potential expenditure, value as indicated on the PR. That is business approval only.
The PO is the commercial aspect where the purchasing dept. take the PR and convert it to a PO, at the best cost they can for the requirement.
The person who created the PR puts an indicative value, the buyer who coverts it to a PO puts a definitive value, do you really want to go through the PR release loop every time market conditions dictate otherwise (or at least put a tolerance on it).
Regards,
Nick -
Requisition for approval using - Restricted Recruiter role
Hi,
We have implemented SAP eRec EHP4. As of EHP3 the restricted recruiter was only able to create requesition in Draft mode and release the requisition for approval.
We are using WD on SAP EHP4. We have provided SAP_RCF_RES_RECRUITER_ERC_CI_2 role in R3 to one of the user and Recruiter role on the portal. But when I try to create a requisition and try to release it, it gets released instead of going for approval......
What have we done wrong.....Is there some other way by which the requisition can be sent for approval in EHP4......
ThanksHi All,
In the meantime I was testing the BSP application since I had to give a demo to the client.....Here I could run the workflow, but when I launch the recruiter "approval" page it gives me an error
BSP Exception: Das Objekt default.htm in der URL /sap/bc/bsp/sap/hrrcf_approval/default.htm?objid=90005527&otype=NB&plvar=01&requestdate=20100723&requestedRsncode=01&requestedstatus=1&requester=Mr%2etesttest&SAPWFCBURL=http%3a%2f%2ftcssol%2ehrservicesonline%2ecom%3a8002%2fsap%2fbc%2fwebflow%2fwshandle ist nicht gültig.
I saw through SE80 there is no page like default.htm how do I resolve this, is this also connected with upgrading our SP level?
Thanks
Subbu -
WS14500015 is not working for Multilevel approval
We are trying to Implement the Workflow Template Ws14500015. We have implemented the BADI BBP_WFL_APPROVE_BADI. The workflow works perfectly for 1st level approval. We have checked that the ApproverList Container element gets pouplated with 3 levels of approval when 1 st level approver has not approved it. But as soon as the first level approver approves it this container element is updated with one entry. Please review the code I am attaching. Any help will be highly appreciated.
METHOD if_ex_bbp_wfl_approv_badi~get_remaing_approvers .
Interface parameters:
OBJECT_ID TYPE CRMT_OBJECT_ID "Import
OBJECT_TYPE TYPE CRMT_SUBOBJECT_CATEGORY "Import
GUID TYPE BBP_GUID_32 "Import
ACTUAL_APPROVAL_INDEX TYPE SWH_NUMC10 "Import
APPROVAL_HISTORY_TABLE TYPE BBP_WFL_APPROVAL_HISTORY_BADI "Import
ITEM_APPROVAL_HISTORY_TABLE TYPE BBPT_WFL_ITEM_APPROVAL_BADI "Import
APPROVAL_TABLE TYPE BBPT_WFL_APPROVAL_TABLE_BADI "Export
ITEM_APPROVAL_TABLE TYPE BBPT_WFL_ITEM_APPROVAL_BADI "Export
NO_FURTHER_APPROVAL_NEEDED TYPE BOOLEAN "Export
ITEM_APPROVAL_OBJ TYPE BBPT_WFL_ITEM_APPROVAL_OBJ "Changing
This a default implementation that gives idea about of how line item
approval should work as well to find the number of approval required
and to find the approvers.
Global data---------------------------------------------------------*
TYPES---------------------------------------------------------------*
TYPES : ty_item_info TYPE STANDARD TABLE OF /fir/rmm0bgst001.
"to have the necessary values of custom table .
DATA----------------------------------------------------------------*
DATA : it_item_info TYPE ty_item_info,"to store the approval values.
wa_item_info TYPE /fir/rmm0bgst001. " work area for item_info.
DATA : v_value_per_cctr TYPE bbp_value, " contain value per account
" type in line item of SC
v_value_per TYPE bbp_value. " value for v_value_per_cctr
" in USD
DATA : v_apprv_value TYPE bbp_value. " amount of first level.
DATA: v_call_value1 TYPE bbp_wfl_app_property,"have cost_ctr,
"asset_no or order_no value.
v_co_code TYPE bbp_wfl_app_property," have company code
v_plant_value TYPE bbp_wfl_app_property," have plant value
v_account_type TYPE bbp_wfl_app_criterion ," Account type
" ie COST_CTR, ASSET_NO or ORDER_NO.
v_comp_code TYPE bbp_wfl_app_criterion ,"COMP_CODE
v_plant TYPE bbp_wfl_app_criterion ," PLANT
v_acc_desc TYPE bbp_step_description ." approval desc.
WORKAREA------------------------------------------------------------*
DATA: wa_header TYPE bbp_pds_sc_header_d, " header of line
" item
tables and work area.
it_item TYPE TABLE OF bbp_pds_sc_item_d,
" line item details
wa_item TYPE bbp_pds_sc_item_d,
" have one line item detail.
accounting structures
it_account TYPE TABLE OF bbp_pds_acc,
" account details
wa_account TYPE bbp_pds_acc .
" one account details.
DATA: v_req TYPE bbp_wfl_app_criterion. " for creator.
CONSTANTS-----------------------------------------------------------*
Business objects
CONSTANTS:
c_po TYPE crmt_subobject_category_db VALUE 'BUS2201',
c_shop TYPE crmt_subobject_category_db VALUE 'BUS2121',
c_contract TYPE crmt_subobject_category_db VALUE 'BUS2000113'.
Approval Criteria and properties used
CONSTANTS:
c_cost_centre TYPE bbp_wfl_app_criterion VALUE 'COST_CTR',
c_order_no TYPE bbp_wfl_app_criterion VALUE 'ORDER_NO',
c_asset_no TYPE bbp_wfl_app_criterion VALUE 'ASSET_NO',
c_comp_code TYPE bbp_wfl_app_criterion VALUE 'COMP_CODE',
c_plant TYPE bbp_wfl_app_criterion VALUE 'PLANT',
c_cc_desc TYPE bbp_step_description VALUE
'Cost center approval',
c_io_desc TYPE bbp_step_description VALUE
'Order type approval',
c_as_desc TYPE bbp_step_description VALUE
'Asset Num approval',
c_usd TYPE char3 VALUE 'USD',
c_m TYPE char1 VALUE 'M',
c_x TYPE char1 VALUE 'X',
c_apprv_times TYPE char1 VALUE 3,
c_1 TYPE char2 VALUE '1',
c_as TYPE BBP_ACC_CAT VALUE 'AS',
c_or TYPE BBP_ACC_CAT VALUE 'OR',
c_cc TYPE BBP_ACC_CAT VALUE 'CC',
c_us TYPE char2 VALUE 'US'.
Case when the object type bus212...---------------------------------*
CASE object_type.
WHEN c_shop.
----------- shopping cart --------------------------------------- *
IF NOT approval_table[] IS INITIAL.
approval_history_table[] = approval_table[].
item_approval_history_table[] = item_approval_table[].
REFRESH : approval_table, item_approval_table,
item_approval_obj .
ENDIF.
REFRESH : it_item,it_account.
Get the details of the shopping cart
CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
EXPORTING
i_object_id = object_id
IMPORTING
e_header = wa_header
TABLES
e_item = it_item
e_account = it_account.
Proceed if it_item is not initial.
IF NOT it_item IS INITIAL AND NOT it_account IS INITIAL.
*read the lt_item for plant
READ TABLE it_item INTO wa_item INDEX 1.
CHANGE FOR REQEUSTOR.
CONCATENATE c_us wa_item-created_by INTO v_req.
now read the table with wa_item-be_plant.
SELECT *
FROM /fir/rmm0bgst001
INTO TABLE it_item_info
WHERE zplant = wa_item-be_plant.
SORT it_item BY guid .
SORT it_account BY p_guid .
IF actual_approval_index LE c_apprv_times AND
actual_approval_index GE c_1.
looping at it_item is done to fetch the approver for every
line item
CLEAR: wa_item, wa_account.
LOOP AT it_item INTO wa_item WHERE del_ind IS INITIAL.
LOOP AT it_account INTO wa_account
WHERE p_guid = wa_item-guid.
to calculate the amount before calling the funciton module for
approval table.value respective to account type
v_value_per_cctr =
wa_account-distr_perc * wa_item-value / 100.
read the table respective to account type and for level 1 approval
such that if the value is less than zvalue then no approval required.
CLEAR: wa_item_info.
CASE wa_account-acc_cat .
WHEN c_or.
READ TABLE it_item_info INTO wa_item_info
WITH KEY zlevel = c_1 " 1
zorder_no = wa_account-order_no
zplant = wa_item-be_plant.
WHEN c_as.
READ TABLE it_item_info INTO wa_item_info
WITH KEY zlevel = c_1 " 1
zasset_no = wa_account-asset_no
zplant = wa_item-be_plant.
WHEN c_cc.
READ TABLE it_item_info INTO wa_item_info
WITH KEY zlevel = c_1 " 1
zcost_ctr = wa_account-cost_ctr
zplant = wa_item-be_plant.
ENDCASE.
IF sy-subrc = 0.
v_apprv_value = wa_item_info-zvalue.
ENDIF.
now convert the amount to local currency ie usd
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
date = sy-datum
foreign_amount = v_value_per_cctr
foreign_currency = wa_item-currency
local_currency = c_usd
type_of_rate = c_m
read_tcurr = c_x
IMPORTING
local_amount = v_value_per
EXCEPTIONS
no_rate_found = 1
overflow = 2
no_factors_found = 3
no_spread_found = 4
derived_2_times = 5
OTHERS = 6
IF v_value_per GE v_apprv_value AND sy-subrc = 0.
To Find out Account id of what type ie cost center/IO/Asset.
IF wa_account-acc_cat eq c_cc.
v_call_value1 = wa_account-cost_ctr.
v_account_type = c_cost_centre.
v_acc_desc = c_cc_desc. "'Cost center approval'.
ELSEIF wa_account-acc_cat eq c_or.
v_call_value1 = wa_account-order_no.
v_account_type = c_order_no.
v_acc_desc = c_io_desc. "'Internal Order approval'.
ELSE.
IF NOT wa_account-asset_no IS INITIAL.
v_call_value1 = wa_account-asset_no.
v_account_type = c_asset_no..
v_acc_desc = c_as_desc. "'Asset Number approval'.
ENDIF.
ENDIF.
Defining the PLANT and plant value.
v_plant = c_plant.
v_plant_value = wa_item-be_plant.
defining the COMPNAY CODE and company value.
v_comp_code = c_comp_code.
v_co_code = wa_item-be_co_code.
Calling the Custom function to find the approvers.
CALL FUNCTION '/FIR/RP2P0BGS_ITEM_APPRV_GET'
EXPORTING
sc_guid = wa_header-guid
item_guid = wa_item-guid
approval_description = v_acc_desc
hide_items_not_responsible = c_x "'X'
each cost center approver should see only items he is responsible
criterion1 = v_account_type
criterion2 = v_comp_code
criterion3 = v_plant
value1 = v_call_value1
value2 = v_co_code
value3 = v_plant_value
approval_index = actual_approval_index
TABLES
it_item_info = it_item_info
CHANGING
approval_table = approval_table
item_approval_table = item_approval_table
item_approval_obj = item_approval_obj.
ENDIF." end if if value per cost center is more than
" level one price.
CLEAR wa_account.
ENDLOOP. " end of loop of account.
CLEAR: wa_account,wa_item, wa_item_info.
ENDLOOP. " end of loop at item
CHANGE FOR REQUESTOR.----
DELETE approval_table WHERE approval_agent = v_req.
IF approval_table IS INITIAL.
no_further_approval_needed = c_x. " 'X'.
ENDIF.
ELSE. " end of if actual_approval_index le 3.
this BADI-implementation defines 3 steps
no_further_approval_needed = c_x. "'X'.
ENDIF.
ENDIF. " end of if the it_item is not initial.
ENDCASE. "end of case if bus type is 2121
ENDMETHOD.
Function Module
FUNCTION /fir/rp2p0bgs_item_apprv_get .
""Local Interface:
*" IMPORTING
*" REFERENCE(SC_GUID) TYPE BBP_GUID OPTIONAL
*" REFERENCE(ITEM_GUID) TYPE BBP_GUID OPTIONAL
*" REFERENCE(APPROVAL_DESCRIPTION) TYPE BBP_STEP_DESCRIPTION
*" OPTIONAL
*" REFERENCE(HIDE_ITEMS_NOT_RESPONSIBLE) TYPE BOOLEAN OPTIONAL
*" REFERENCE(CRITERION1) TYPE BBP_WFL_APP_CRITERION OPTIONAL
*" REFERENCE(CRITERION2) TYPE BBP_WFL_APP_CRITERION DEFAULT ''
*" REFERENCE(CRITERION3) TYPE BBP_WFL_APP_CRITERION DEFAULT ''
*" REFERENCE(VALUE1) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
*" REFERENCE(VALUE2) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
*" REFERENCE(VALUE3) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
*" REFERENCE(APPROVAL_INDEX) TYPE SWH_NUMC10 OPTIONAL
*" TABLES
*" IT_ITEM_INFO STRUCTURE /FIR/RMM0BGST001
*" CHANGING
*" REFERENCE(APPROVAL_TABLE) TYPE BBPT_WFL_APPROVAL_TABLE_BADI
*" REFERENCE(ITEM_APPROVAL_TABLE) TYPE BBPT_WFL_ITEM_APPROVAL_BADI
*" REFERENCE(ITEM_APPROVAL_OBJ) TYPE BBPT_WFL_ITEM_APPROVAL_OBJ
*" OPTIONAL
Local data-----------------------------------------------------------*
TYPES: ty_option TYPE STANDARD TABLE OF rfc_db_opt,
ty_fields TYPE STANDARD TABLE OF rfc_db_fld,
ty_data TYPE STANDARD TABLE OF tab512.
DATA:
wa_approval_table TYPE bbp_wfl_approval_table_badi,
wa_item_approval_table TYPE bbps_wfl_item_approval,
wa_approval_def TYPE /fir/rmm0bgst001.
DATA:
v_app_obj_guid TYPE bbp_guid_32,
v_is_new_approval_object TYPE boolean.
DATA : it_update_tab TYPE STANDARD TABLE OF /fir/rmm0bgst001,
it_approval_def TYPE STANDARD TABLE OF /fir/rmm0bgst001,
wa_update_tab TYPE /fir/rmm0bgst001.
DATA : it_actor_tab TYPE STANDARD TABLE OF swhactor,
wa_actor_tab TYPE swhactor,
it_ac_container TYPE STANDARD TABLE OF swcont,
wa_ac_container TYPE swcont.
DATA : it_options TYPE ty_option,
it_fields TYPE ty_fields,
it_data TYPE ty_data.
DATA : wa_options TYPE rfc_db_opt,
wa_fields TYPE rfc_db_fld,
wa_data TYPE tab512.
DATA : v_apprv_io TYPE aufuser2,
v_apprv_cc TYPE verak.
DATA : v_cost_ctr TYPE bbp_wfl_app_property ,
v_order_no TYPE bbp_wfl_app_property ,
v_asset_no TYPE bbp_wfl_app_property ,
v_as_value TYPE bbp_wfl_app_property .
DATA : v_query_table TYPE dd02l-tabname.
DATA : v_apprv_count TYPE char1 VALUE '0'.
to find the number of lines in the table it_update_tab.
DATA : v_lines TYPE i.
DATA : v_app_ind TYPE swh_numc10 VALUE '0'.
DATA : v_destination TYPE char10,
v_system TYPE sysysid,
v_mandt TYPE symandt.
Constants-----------------------------------------------------------*
CONSTANTS:
c_clnt TYPE char4 VALUE 'CLNT',
c_agent_is_user TYPE otype VALUE 'US',
c_x TYPE char1 VALUE 'X',
c_cost_centre TYPE bbp_wfl_app_criterion VALUE 'COST_CTR',
c_order_no TYPE bbp_wfl_app_criterion VALUE 'ORDER_NO',
c_asset_no TYPE bbp_wfl_app_criterion VALUE 'ASSET_NO',
c_csks TYPE char4 VALUE 'CSKS',
c_anlz TYPE char4 VALUE 'ANLZ',
c_coas TYPE char4 VALUE 'COAS',
c_verak TYPE char5 VALUE 'VERAK',
c_user2 TYPE char5 VALUE 'USER2',
c_kostl TYPE char5 VALUE 'KOSTL',
c_aufnr TYPE char5 VALUE 'AUFNR',
c_bukrs TYPE char5 VALUE 'BUKRS',
c_anln1 TYPE char5 VALUE 'ANLN1',
c_c TYPE char1 VALUE 'C',
c_and TYPE char3 VALUE 'AND',
c_eq TYPE char1 VALUE '=',
c_org_object TYPE swc_elem VALUE 'ORG_OBJECT',
c_deli TYPE char1 VALUE '|',
c_l12 TYPE ddleng VALUE '000012',
c_off0 TYPE doffset VALUE '000000',
c_l10 TYPE ddleng VALUE '000010',
c_l20 TYPE ddleng VALUE '000020',
c_l04 TYPE ddleng VALUE '000004',
c_ind01 TYPE swc_index VALUE '000001',
c_el06 TYPE swc_length VALUE '006',
c_tab_name TYPE tabname VALUE '/fir/rmm0bgst001',
c_r10 TYPE sysysid VALUE 'R10',
c_r15 TYPE sysysid VALUE 'R15',
c_r20 TYPE sysysid VALUE 'R20',
c_r40 TYPE sysysid VALUE 'R40',
c_e10 TYPE sysysid VALUE 'E10',
c_e15 TYPE sysysid VALUE 'E15',
c_e20 TYPE sysysid VALUE 'E20',
c_e40 TYPE sysysid VALUE 'E40',
c_121 TYPE symandt VALUE '121',
c_300 TYPE symandt VALUE '300',
c_100 TYPE symandt VALUE '100',
c_120 TYPE symandt VALUE '120',
begin of change for generic entry 06-06-2007----
c_cc TYPE kostl VALUE 'CC',
c_as TYPE anln1 VALUE 'AS',
c_or TYPE aufnr VALUE 'OR'.
end of change for generic entry 06-06-2007----
-perpare the system and client for RFC----
CASE sy-sysid .
WHEN c_r10. "' R10'.
IF sy-mandt = c_120. " '120'.
CONCATENATE c_e10 c_clnt c_121 INTO v_destination.
ENDIF.
WHEN c_r15. " 'R15'.
IF sy-mandt = c_120. " '120'.
CONCATENATE c_e15 c_clnt c_300 INTO v_destination.
ENDIF.
WHEN c_r20. " 'R20'.
IF sy-mandt = c_300. " '300'.
CONCATENATE c_e20 c_clnt c_300 INTO v_destination.
ENDIF.
WHEN c_r40. " 'R40'.
IF sy-mandt = c_100. " '100'.
CONCATENATE c_e40 c_clnt c_100 INTO v_destination.
ENDIF.
ENDCASE.
Comment on logic ---------------------------------------------------*
First find the right approval object the item belongs to.
All items of an approval object are approved together in
this approval step, and therefore only one workitem is
created for this items.
CALL FUNCTION 'BBP_WFL_DIN_APP_OBJ_GET'
EXPORTING
sc_guid = sc_guid
criterion1 = criterion1
value1 = value1
IMPORTING
If 2 items of the same shopping cart have the same
values for the criterias, this function returns the
same (!!!) approval object guid
approval_obj_guid = v_app_obj_guid
TABLES
item_app_obj = item_approval_obj
Check what type of account is ie Order no/Internal order/ASSET.
if the account type is asset_no then responsible cost center is
found.
CLEAR: it_update_tab, wa_update_tab.
CASE criterion1 .
WHEN c_asset_no. " 'ASSET_NO'.
v_asset_no = value1.
CONCATENATE c_anln1 c_eq value1 " 'ANLN1' '=' value1
c_and c_bukrs c_eq value2 INTO wa_options-text
SEPARATED BY space.
APPEND wa_options TO it_options.
wa_fields-fieldname = c_anln1. " 'ANLN1'.
wa_fields-length = c_l12. " '000012'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
wa_fields-fieldname = c_kostl. " 'KOSTL'.
wa_fields-length = c_l10. " '000010'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
wa_fields-fieldname = c_bukrs. " 'BUKRS'.
wa_fields-length = c_l04. " '000004'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION v_destination
EXPORTING
query_table = c_anlz " 'ANLZ'
delimiter = c_deli " '|'
TABLES
OPTIONS = it_options
fields = it_fields
data = it_data
EXCEPTIONS
table_not_available = 1
table_without_data = 2
option_not_valid = 3
field_not_valid = 4
not_authorized = 5
data_buffer_exceeded = 6
OTHERS = 7.
IF sy-subrc = 0.
as it_data table contains only one record
so no sorting required.
READ TABLE it_data INTO wa_data INDEX 1.
v_as_value = wa_data-wa+13(10).
ENDIF.
at the end of this if asset is passed its responsible
cost is obtained and is placed in value1 field.
CLEAR : wa_data , wa_options , wa_fields .
REFRESH: it_data , it_options , it_fields .
v_cost_ctr = v_as_value.
CONCATENATE c_kostl c_eq v_cost_ctr INTO wa_options-text
SEPARATED BY space.
APPEND wa_options TO it_options.
CLEAR: wa_fields.
wa_fields-fieldname = c_verak. " 'VERAK'.
wa_fields-length = c_l20. " '000020'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
CLEAR: wa_fields.
wa_fields-fieldname = c_kostl. " 'KOSTL'.
wa_fields-length = c_l10. " '000010'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
v_query_table = c_csks. " 'CSKS'.
set the initial value of v_asset_no by value1.
CLEAR: v_cost_ctr .
v_asset_no = value1.
WHEN c_cost_centre . " 'COST_CTR' or 'ASSET_NO'.
v_cost_ctr = value1.
CONCATENATE c_kostl c_eq v_cost_ctr INTO wa_options-text
SEPARATED BY space.
APPEND wa_options TO it_options.
CLEAR: wa_fields.
wa_fields-fieldname = c_verak. " 'VERAK'.
wa_fields-length = c_l20. " '000020'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
CLEAR: wa_fields.
wa_fields-fieldname = c_kostl. " 'KOSTL'.
wa_fields-length = c_l10. " '000010'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
v_query_table = c_csks. " 'CSKS'.
WHEN c_order_no. " 'ORDER_NO'.
v_order_no = value1.
CONCATENATE c_aufnr c_eq value1 INTO wa_options-text
SEPARATED BY space.
APPEND wa_options TO it_options.
CLEAR: wa_fields.
wa_fields-fieldname = c_user2. " 'USER2'.
wa_fields-length = c_l20. " '000020'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
CLEAR: wa_fields.
wa_fields-fieldname = c_aufnr. " 'AUFNR'.
wa_fields-length = c_l12. " '000012'.
wa_fields-offset = c_off0. " '000000'.
wa_fields-type = c_c. " 'C'.
APPEND wa_fields TO it_fields.
v_query_table = c_coas. " 'COAS'.
ENDCASE.
LOOP AT it_item_info INTO wa_update_tab
WHERE
zplant = value3 AND
zcost_ctr = v_cost_ctr AND
zorder_no = v_order_no AND
zasset_no = v_asset_no.
APPEND wa_update_tab TO it_update_tab .
ENDLOOP.
-begin of change for generic entry 06-06-2007----
it_update_tab may or may not contain the value as the per the data
maintainted. if initial then only generic value is maintained and the
the record need to be appended.
so the record which need to be appended shud be appended to
it_update_tab appropiatly with the amt of generic entry.
CLEAR : wa_update_tab.
CASE criterion1 .
WHEN c_asset_no.
READ TABLE it_item_info INTO wa_update_tab WITH KEY
zplant = value3
zasset_no = c_as."'AS'
IF sy-subrc = 0.
wa_update_tab-zasset_no = v_asset_no .
wa_update_tab-zlevel = 1.
APPEND wa_update_tab TO it_update_tab.
ENDIF.
WHEN c_cost_centre.
READ TABLE it_item_info INTO wa_update_tab WITH KEY
zplant = value3
zcost_ctr = c_cc."'CC'
IF sy-subrc = 0.
wa_update_tab-zcost_ctr = v_cost_ctr .
wa_update_tab-zlevel = 1.
APPEND wa_update_tab TO it_update_tab.
ENDIF.
WHEN c_order_no.
READ TABLE it_item_info INTO wa_update_tab WITH KEY
zplant = value3
zorder_no = c_or."'OR'
IF sy-subrc = 0.
wa_update_tab-zorder_no = v_order_no .
wa_update_tab-zlevel = 1.
APPEND wa_update_tab TO it_update_tab.
ENDIF.
ENDCASE.
end of change for generic entry 06-06-2007----
RFC to read table for finding the person responsible for the
cost center / order ie approver.
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION v_destination
EXPORTING
query_table = v_query_table
delimiter = c_deli "'|'
TABLES
OPTIONS = it_options
fields = it_fields
data = it_data
EXCEPTIONS
table_not_available = 1
table_without_data = 2
option_not_valid = 3
field_not_valid = 4
not_authorized = 5
data_buffer_exceeded = 6
OTHERS = 7.
IF sy-subrc = 0.
CLEAR :wa_approval_def.
READ TABLE it_data INTO wa_data INDEX 1.
IF v_query_table = c_csks. " 'CSKS'.
v_apprv_cc = wa_data-wa+0(20).
wa_approval_def-zapprover = v_apprv_cc.
ELSE.
v_apprv_io = wa_data-wa+0(20).
wa_approval_def-zapprover = v_apprv_io.
ENDIF.
ENDIF.
find the number of record in the update table.
DESCRIBE TABLE it_update_tab LINES v_lines.
The updation of table runs only for the number of records
avaiable in the update table ie v_lines.
DO v_lines TIMES. " begin of do to approval index times.
CLEAR: it_approval_def.
v_apprv_count = v_apprv_count + 1.
wa_approval_def-zlevel = v_apprv_count .
if the count is more than one then next level of approver
is found using the rfc call swx_get_manager and stored as per.
IF v_apprv_count > 1.
v_apprv_count = v_apprv_count - 1.
READ TABLE it_update_tab INTO wa_update_tab
WITH KEY zlevel = v_apprv_count .
IF sy-subrc = 0 .
NOW FOR FINDING THE SECOND LEVEL OF APPROVER
1ST LEVEL OF APPROVER IS FOUND USING ABOVE READ.
THE FIRST LEVEL OF APPROVER IS USED TO FIND THE SECOND
LEVEL OF APPROVER USING THE SWX_GET_MANAGER.
PREPARE THE TABLES FOR SWX_GET_MANAGER
REFRESH : it_ac_container.
wa_ac_container-element = c_org_object. " 'ORG_OBJECT'.
wa_ac_container-tab_index = c_ind01. " '000001'.
wa_ac_container-elemlength = c_el06. " '006'.
wa_ac_container-type = c_c. " 'C'.
CONCATENATE c_agent_is_user wa_update_tab-zapprover
INTO wa_ac_container-value .
APPEND wa_ac_container TO it_ac_container.
CALL FUNCTION 'SWX_GET_MANAGER' DESTINATION v_destination
TABLES
actor_tab = it_actor_tab
ac_container = it_ac_container
EXCEPTIONS
nobody_found = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE it_actor_tab INTO wa_actor_tab WITH KEY
otype = c_agent_is_user.
wa_approval_def-zapprover = wa_actor_tab-objid.
ENDIF.
ENDIF.
v_apprv_count = v_apprv_count + 1.
ENDIF.
before updating populate the table it_approval_def
it_update_tab is read based on next v_apprv_count and
updates the approver and its value.
READ TABLE it_update_tab INTO wa_update_tab
WITH KEY zlevel = v_apprv_count .
IF sy-subrc = 0.
wa_approval_def-zplant = wa_update_tab-zplant.
wa_approval_def-zcost_ctr = wa_update_tab-zcost_ctr.
wa_approval_def-zorder_no = wa_update_tab-zorder_no.
wa_approval_def-zasset_no = wa_update_tab-zasset_no.
wa_approval_def-zvalue = wa_update_tab-zvalue.
APPEND wa_approval_def TO it_approval_def.
modify the table it_update_tab so that along with the custom
database table the table in use in this function module ie
it_update_tab also remain updated.
benefit is that if the modify to dtab fails. the process works fine.
MODIFY it_update_tab FROM wa_approval_def
TRANSPORTING zapprover
WHERE zlevel = wa_approval_def-zlevel AND
zvalue = wa_approval_def-zvalue.
now enqueue the table for modification.
CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
tabname = c_tab_name " '/fir/rmm0bgst001'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
now modify the table, for updation of approver.
IF sy-subrc = 0.
MODIFY /fir/rmm0bgst001 FROM wa_approval_def.
if sy-subrc goes 0 commit work is called.
also the it_update_tab need to be updated.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ENDIF.
now dequeue the table after the updation.
CALL FUNCTION 'DEQUEUE_E_TABLE'
EXPORTING
tabname = c_tab_name. " '/fir/rmm0bgst001'.
ENDIF.
once all done clear the work areas.
CLEAR : wa_approval_def-zlevel , wa_approval_def-zapprover.
ENDDO. " END OF DO STATEMENT.
SORT it_approval_def BY zlevel ASCENDING.
as per the logic for the different level of approval.
for second level of approval only records above 2 should be
present in the apprval table.
so for approval index = 2 delete the first record ie for zlevel = 1.
and for approval index = 3 delete first two records ie zlevel = 1 and
zlevel = 2. thus only one approval of zlevel 3 is left in the table
which is used to update the approval table.
IF approval_index = 2 .
DELETE it_approval_def INDEX 1.
ELSEIF approval_index = 3.
DELETE it_approval_def INDEX 1.
DELETE it_approval_def INDEX 1.
ELSEIF approval_index GT 3.
REFRESH : it_approval_def .
ENDIF.
for above 3 as approval index there shud be no enteries in the table.
so the table is refreshed and thus the approval table will not
contain anything.
approval_index is assigned to a varaiable
v_app_ind = approval_index.
v_app_ind is incremented for every next record so that approver is
assigned to next approval index.
beign of change 28th may 2007----
clear : v_app_ind .
v_app_ind = v_app_ind + 1.
LOOP AT it_approval_def INTO wa_approval_def.
wa_approval_table-approval_index = v_app_ind.
CONCATENATE c_agent_is_user wa_approval_def-zapprover
INTO wa_approval_table-approval_agent.
wa_approval_table-approval_description = approval_description.
wa_approval_table-approval_object_guid = v_app_obj_guid.
wa_approval_table-hide_items_not_responsible =
hide_items_not_responsible.
APPEND wa_approval_table TO approval_table.
v_app_ind = v_app_ind + 1 .
CLEAR: wa_approval_def.
ENDLOOP.
sort the approval table so that approvers come in sequence.
SORT approval_table BY approval_index.
ENDIF.
fill item table (which items belongs to which approval object)
wa_item_approval_table-approval_object_guid = v_app_obj_guid.
wa_item_approval_table-approval_item_guid = item_guid.
APPEND wa_item_approval_table TO item_approval_table.
CLEAR :wa_item_approval_table,wa_approval_table,it_update_tab.
ENDFUNCTION.
Thanks
Arghadip
[email protected]Hi,
You have to debug the entire system behaviour , the approval process using the second approver.
As first step , please check the security level of the second approver. Restart of workflow is based on the security level of the approver.
you can find the parameter for security level in the personalization tab of the user .
there is one function module which determines wether the workflow should be restarted (or) not.
i do not remember the exact name of the function module.
1)start transaction se37
2)enter bbpwflrestart*.
3) system will return a number of function modules , of them one function module determines wether to restart the workflow (or) not.
Please check what does the above function module return for the user and the shopping cart , there will be one parameter 'restart' which triggers the start
Maybe you are looking for
-
Avtivation of BC set from Third party system
Dear All, We are using BC sets for configuration of regular business organizational units. We also have a workflow in third party system (like MS Share Point) for approval of such elements. Now we are looking to call BC sets for configuration of thes
-
HELP! Years ago - SEVEN to be exact- I PURCHASED Adobe CS2 and used it extensively. Then I was in an accident that took five years to recover from. After my recovery I tried to get back to using my Adobe products only to find that Adobe was discourag
-
How to remove/uninstall custom installed perl modules?
Hello all. Yesterday I upgraded from 10.3.7 to 10.4.5, then started to reinstall a bundle of perl modules (via the Terminal and 'perl Makefile.PL -- make -- make test -- [sudo] make install'). As I saw too late, some of those modules I installed are
-
I tried to sync Firefox mobile to my PC. Then I tried to upgrade to Firefox 4.0, which was a mistake, because I already had 4.0. I checked yes to install it again. Then I tried to uninstall and reinstall 4.0. That is when I started getting the error
-
Urgent :deployment kit or executable utility
hay great programmers i have a very urgent problem i want to make my developer project as executable is this possible the next thing is that is there any deployment kit available for developer 6i so that it will automatically install the application