WS14500015 Not working properly
arghadip kar
arghadipkar at yahoo.com
Mon Apr 9 09:21:32 EDT 2007
Hi All
I am having problem to execute Workflow Template WS14500015.The Workflow is not recognizing any of the Approval table that I am populating in the BADI. The BADI is getting called as a custom table is getting updated. Can anyone tell me what is missing in my code that is hindering in populating the approval table that will help me poulate agents. Do I need to implement any OSS Notes for it. I found that there is a Function Module bbp_pdh_wfl_trace. Do I need to pouplate any field of any table to enable Workflow to work. Here I am attaching my piece of code:
Implementation Name
ZR0BGS_EBP_SC
interface : IF_EX_BBP_WFL_APPROV_BADI~GET_REMAING_APPROVERS
METHOD if_ex_bbp_wfl_approv_badi~get_remaing_approvers .
* This a default implementation that gives idea about of how line item
* approval should work
*****begin of code : Dharmendra ***********
TYPES : BEGIN OF ty_account.
INCLUDE TYPE bbp_pds_acc.
TYPES: app_crit_name TYPE bbp_wfl_app_criterion,
app_crit_value TYPE char32.
TYPES: END OF ty_account.
TYPES :BEGIN OF ty_item_copy,
app_crit_value1 TYPE bbp_wfl_app_property,
END OF ty_item_copy.
TYPES :
ty_item_info TYPE STANDARD TABLE OF zrp2p0bgst001,
ty_account_copy TYPE STANDARD TABLE OF ty_account.
DATA : lt_item_info TYPE ty_item_info,
lt_account_copy TYPE ty_account_copy,
ls_item_info TYPE zrp2p0bgst001.
DATA :l_tabix TYPE sytabix,
l_num_apprv TYPE SWH_NUMC10 VALUE '0',
l_value_per TYPE bbp_value.
DATA : l_temp_value TYPE bbp_value VALUE '0',
l_temp_level TYPE SWH_NUMC10 VALUE '0'.
FIELD-SYMBOLS :
<l_fs_account> TYPE ty_account.
*****end of code***************************
DATA:
ls_header TYPE bbp_pds_sc_header_d,
* tables for different approval criteria
lv_call_crit1 TYPE bbp_wfl_app_criterion,
lv_call_value1 TYPE bbp_wfl_app_property,
lv_co_code TYPE bbp_wfl_app_property,
lv_plant_value TYPE bbp_wfl_app_property,
* local help variables
lv_guid TYPE crmt_object_guid,
* item fields and structures
ls_item TYPE bbp_pds_sc_item_d,
****dk****
lt_item_copy TYPE TABLE OF bbp_pds_sc_item_d,
ls_item_copy TYPE bbp_pds_sc_item_d,
lv_account_type TYPE bbp_wfl_app_criterion ,
lv_comp_code TYPE bbp_wfl_app_criterion ,
lv_plant TYPE bbp_wfl_app_criterion ,
lv_acc_desc TYPE bbp_step_description ,
****dk****
lt_item TYPE TABLE OF bbp_pds_sc_item_d,
* accounting structures
ls_account TYPE bbp_pds_acc,
lt_account TYPE TABLE OF bbp_pds_acc,
ls_account_copy TYPE ty_account.
DATA: ls_approver TYPE bbp_wfl_approval_table_badi.
* Business objects (local)
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 (local)
CONSTANTS:
c_cost_centre TYPE bbp_wfl_app_criterion VALUE 'COST_CTR',
c_prod_categ TYPE bbp_wfl_app_criterion VALUE 'PROD_CAT'.
CASE object_type.
WHEN c_shop.
* ----------- shopping cart ---------------------------------- *
*** get the details of the shopping cart
CALL FUNCTION 'BBP_PD_SC_GETDETAIL'
EXPORTING
i_object_id = object_id
IMPORTING
e_header = ls_header
TABLES
e_item = lt_item
e_account = lt_account
.
****dk****
lt_account_copy[] = lt_account[].
IF NOT lt_item IS INITIAL.
lt_item_copy[] = lt_item[].
SORT lt_item_copy BY be_plant.
DELETE ADJACENT DUPLICATES FROM lt_item_copy
COMPARING be_plant.
SELECT mandt
zplant
zcost_ctr
zorder_no
zasset_no
zlevel
zvalue
zapprover
FROM zrp2p0bgst001
INTO TABLE lt_item_info
FOR ALL ENTRIES IN lt_item
WHERE
zplant = lt_item-be_plant.
SORT lt_item_info BY zplant zcost_ctr
zorder_no zasset_no zlevel zvalue.
ENDIF.
****dk~~****
SORT lt_item BY guid.
SORT lt_account BY p_guid.
LOOP AT lt_item INTO ls_item WHERE del_ind IS INITIAL.
READ TABLE lt_account INTO ls_account
WITH KEY p_guid = ls_item-guid.
IF sy-subrc = 0.
l_tabix = sy-tabix.
LOOP AT lt_account INTO ls_account FROM l_tabix.
IF ls_account-p_guid <> ls_item-guid.
EXIT.
ELSE.
********logic**dk*****
** CALCULATING THE VALUE PER COST CENTER /INTERNAL ORDER OR ASSET.
l_value_per = ls_account-distr_perc * ls_item-value / 100.
READ TABLE lt_item_info INTO ls_item_info WITH KEY
zplant = ls_item-be_plant
zcost_ctr = ls_account-cost_ctr
zorder_no = ls_account-order_no
zasset_no = ls_account-asset_no.
** AS THE TABLE ZRP2P0BGST001, ONLY ONE OUT OF COST CENTER
**,INTERNAL ORDER AND ASSET NUMBER
** WILL BE FILLED AND REST WILL BE EMPTY. ..
** CORRSOPONDING TO COMPANY CODE , SO ABOVE WILL
** FETCH FIRST RECORD.
** FIRST RECORD WITH THE REQUIRED VALUE IS READ.
l_temp_value = ls_item_info-zvalue.
l_temp_level = ls_item_info-zlevel.
IF l_value_per < l_temp_value.
l_num_apprv = -1. " NO APPROVER REQUIRED.
ELSE.
LOOP AT lt_item_info INTO ls_item_info
WHERE
zplant = ls_item-be_plant AND
zcost_ctr = ls_account-cost_ctr AND
zorder_no = ls_account-order_no AND
zasset_no = ls_account-asset_no .
IF ls_item_info-zvalue GE l_value_per
AND l_value_per GT l_temp_value .
l_num_apprv = l_temp_level.
EXIT.
ELSE.
l_temp_value = ls_item_info-zvalue.
l_temp_level = ls_item_info-zlevel.
ENDIF.
ENDLOOP.
ENDIF.
IF l_num_apprv IS INITIAL.
l_num_apprv = l_temp_level.
ENDIF.
*** IF L_NUM_APPRV IS -1 THEN CALL BELOW.
IF l_num_apprv = -1.
IF approval_table[] IS INITIAL.
* if no approver found because send sc to default administrator
ls_approver-approval_index = actual_approval_index.
*** the agent is 'US' + user
ls_approver-approval_agent = 'USADMNIN1'.
ls_approver-name = 'Peter Admin'.
APPEND ls_approver TO approval_administrators.
ENDIF.
ELSE.
** NOW THE NUMBER OF APPROVER IS KNOWN SO THE APPROVER IS
** FOUND USING THE RFC AND THE CUSTOM
** TABLE ZRP2P0BGST001 IS UPDATED WITH LATEST APPROVER.
*** Found out to which cost center/IO/AN this item belongs
READ TABLE lt_account INTO ls_account
WITH KEY p_guid = ls_item-guid.
IF sy-subrc = 0.
IF NOT ls_account-cost_ctr IS INITIAL.
lv_call_value1 = ls_account-cost_ctr.
lv_account_type = 'COST_CTR'.
lv_acc_desc = 'Cost center approval'.
ENDIF.
IF NOT ls_account-order_no IS INITIAL.
lv_call_value1 = ls_account-order_no.
lv_account_type = 'ORDER_NO'.
lv_acc_desc = 'Internal Order approval'.
ENDIF.
IF NOT ls_account-asset_no IS INITIAL.
lv_call_value1 = ls_account-asset_no.
lv_account_type = 'ASSET_NO'.
lv_acc_desc = 'Asset Number approval'.
lv_comp_code = 'COMPANY_CODE'.
lv_co_code = ls_item-be_co_code.
ENDIF.
ENDIF.
*** above to Found out to which cost center/IO/AN this item belongs
***** DEFINING THE PLANT VALUE IN THE LV_PLANT_VALUE.
lv_plant = 'PLANT'.
lv_plant_value = ls_item-be_plant.
CALL FUNCTION 'ZBBP_WFL_DIN_ITEM_APPROVAL_GET'
EXPORTING
sc_guid = ls_header-guid
item_guid = ls_item-guid
approval_description = lv_acc_desc
hide_items_not_responsible = 'X'
* each cost center approver should see only items he is responsible
criterion1 = lv_account_type
criterion2 = lv_comp_code
criterion3 = lv_plant
value1 = lv_call_value1
value2 = lv_co_code
value3 = lv_plant_value
approval_index = l_num_apprv
CHANGING
approval_table = approval_table
item_approval_table = item_approval_table
item_approval_obj = item_approval_obj.
ENDIF.
*******logic***~~~*****
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDCASE.
ENDMETHOD.
function modue
FUNCTION zbbp_wfl_din_item_approval_get.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(SC_GUID) TYPE BBP_GUID
*" VALUE(ITEM_GUID) TYPE BBP_GUID
*" VALUE(APPROVAL_DESCRIPTION) TYPE BBP_STEP_DESCRIPTION OPTIONAL
*" VALUE(HIDE_ITEMS_NOT_RESPONSIBLE) TYPE BOOLEAN OPTIONAL
*" VALUE(CRITERION1) TYPE BBP_WFL_APP_CRITERION
*" VALUE(CRITERION2) TYPE BBP_WFL_APP_CRITERION DEFAULT ''
*" VALUE(CRITERION3) TYPE BBP_WFL_APP_CRITERION DEFAULT ''
*" VALUE(VALUE1) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
*" VALUE(VALUE2) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
*" VALUE(VALUE3) TYPE BBP_WFL_APP_PROPERTY DEFAULT ''
*" VALUE(APPROVAL_INDEX) TYPE SWH_NUMC10
*" 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
*"----------------------------------------------------------------------
***************************************************************
*** This is only an example function you could use as an example
*** for implementing your own logic for approval determination!!
***!!! It is not designed to be used in productive systems!!!
****************************************************************
DATA:
ls_approval_table TYPE bbp_wfl_approval_table_badi,
ls_item_approval_table TYPE bbps_wfl_item_approval,
ls_approval_def TYPE zrp2p0bgst001.
DATA:
lv_app_obj_guid TYPE bbp_guid_32,
lv_is_new_approval_object TYPE boolean.
CONSTANTS:
c_agent_is_user TYPE otype VALUE 'US'.
*** First find the right approval object the item belongs to.
*** All items of an approval object are approved togheter in
*** this approval step, and therefore only one workitem is
*** created for this items. IF possible use this standard function
*** BBP_WFL_DIN_APP_OBJ_GET for creating the approval object.
CALL FUNCTION 'BBP_WFL_DIN_APP_OBJ_GET'
EXPORTING
sc_guid = sc_guid
criterion1 = criterion1
* CRITERION2 = ''
* CRITERION3 = ''
value1 = value1
* VALUE2 = ''
* VALUE3 = ''
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 = lv_app_obj_guid
TABLES
*** This table saves the criterias for which the approval object
*** was created. For example:
*** |approval object1| "cost center" | 1000 |
*** |approval object2| "cost center" | 1200 |
*** |approval object3| "prod categ " | office |
item_app_obj = item_approval_obj
.
*** Check if this approval object already exists in the approval
*** table
****** READ TABLE approval_table INTO ls_approval_table
****** WITH KEY approval_object_guid = lv_app_obj_guid
****** approval_index = approval_index.
****** IF sy-subrc EQ 4.
****** lv_is_new_approval_object = 'X'.
****** ENDIF.
******
****** IF lv_is_new_approval_object = 'X'.
*** Now read your own approval table based on your criteria's
*********************dk******************
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 : lt_update_tab TYPE STANDARD TABLE OF zrp2p0bgst001,
lt_approval_def TYPE STANDARD TABLE OF zrp2p0bgst001,
ls_update_tab TYPE zrp2p0bgst001.
DATA : lt_actor_tab TYPE STANDARD TABLE OF swhactor,
ls_actor_tab TYPE swhactor,
lt_ac_container TYPE STANDARD TABLE OF swcont,
ls_ac_container TYPE swcont.
DATA : lt_options TYPE ty_option,
lt_fields TYPE ty_fields,
lt_data TYPE ty_data.
DATA : ls_options TYPE rfc_db_opt,
ls_fields TYPE rfc_db_fld,
ls_data TYPE tab512.
DATA : lv_apprv_asset TYPE usnam,
lv_apprv_cc TYPE verak.
DATA : lv_cost_ctr TYPE bbp_wfl_app_property VALUE '',
lv_order_no TYPE bbp_wfl_app_property VALUE '',
lv_asset_no TYPE bbp_wfl_app_property VALUE ''.
DATA : lv_query_table TYPE dd02l-tabname.
DATA : l_apprv_count TYPE char1 VALUE '0'.
***** if passed value is an internal order then ******
***** cost center is derived from the coas and then preson
***** responsible from the cskx table.
IF criterion1 = 'ORDER_NO'.
lv_order_no = value1.
* ls_options-text = 'AUFNR = VALUE1'.
CONCATENATE 'AUFNR' '=' VALUE1 INTO LS_OPTIONS-TEXT
SEPARATED BY SPACE.
APPEND ls_options TO lt_options.
ls_fields-fieldname = 'AUFNR'.
ls_fields-length = '000012'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
ls_fields-fieldname = 'KOSTV'.
ls_fields-length = '000010'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'E10CLNT121'
EXPORTING
query_table = 'COAS'
delimiter = '|'
TABLES
OPTIONS = lt_options
fields = lt_fields
data = lt_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 LT_DATA TABLE CONTAINS ONLY ONE RECORD SO NO SORTING REQUIRED.
READ TABLE lt_data INTO ls_data INDEX 1.
value1 = ls_data-wa+12(10).
ENDIF.
*** AT THE END OF THIS IF INTERNAL ORDER IS PASSED ITS RESPONSIBLE
*** COST OBTAINED AND PLACED IN VALUE1 FIELD.
CLEAR : ls_data , ls_options , ls_fields ,
lt_data , lt_options , lt_fields .
ENDIF.
****************************************
*** RFC TO READ TABLE FOR FINDING THE PERSON RESPONSIBLE FOR THE
*** COST CENTER / ASSET IE APPROVER.
CASE criterion1 .
WHEN 'COST_CTR' OR 'ORDER_NO'.
IF criterion1 = 'COST_CTR'.
lv_cost_ctr = value1.
ENDIF.
* ls_options-text = 'KOSTL = VALUE1'.
CONCATENATE 'KOSTL' '=' VALUE1 INTO LS_OPTIONS-TEXT
SEPARATED BY SPACE.
APPEND ls_options TO lt_options.
ls_fields-fieldname = 'VERAK'.
ls_fields-length = '000020'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
ls_fields-fieldname = 'KOSTL'.
ls_fields-length = '000010'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
lv_query_table = 'CSKS'.
WHEN 'ASSET_NO' .
lv_asset_no = value1.
* ls_options-text = 'ANLN1 = VALUE1 AND BUKRS = VALUE2'.
CONCATENATE 'ANLN1' '=' VALUE1 'AND' 'BUKRS' '=' VALUE2 INTO
LS_OPTIONS-TEXT SEPARATED BY SPACE.
APPEND ls_options TO lt_options.
ls_fields-fieldname = 'XV0NM'.
ls_fields-length = '000012'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
ls_fields-fieldname = 'ANLN1'.
ls_fields-length = '000012'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
ls_fields-fieldname = 'BUKRS'.
ls_fields-length = '000004'.
ls_fields-offset = '000000'.
ls_fields-type = 'C'.
APPEND ls_fields TO lt_fields.
lv_query_table = 'ANLX'.
ENDCASE.
*** SELECT ALL THE RECORD FRIOM ZRP2P0BGST001...
*** BASED ON ABOVE PLANT AND COST_CTR/IO/ASSET.
SELECT * FROM zrp2p0bgst001
INTO TABLE lt_update_tab
WHERE
zplant = value3 AND
zcost_ctr = lv_cost_ctr AND
zorder_no = lv_order_no AND
zasset_no = lv_asset_no.
IF sy-subrc = 0.
SORT lt_update_tab BY zplant zcost_ctr
zorder_no zasset_no zlevel zvalue.
**** NOW PREPARE THE WORKAREA FOR UPDATING THE TABLE ZRP2P0BGST001..
READ TABLE LT_UPDATE_TAB INTO LS_APPROVAL_DEF WITH
KEY zplant = value3
zcost_ctr = lv_cost_ctr
zorder_no = lv_order_no
zasset_no = lv_asset_no
ZLEVEL = 1 .
IF SY-SUBRC = 0.
* LS_APPROVAL_DEF-ZVALUE =
ENDIF.
ELSE.
*** RAISE ERROR AS NO RECORDS FOUND.
ENDIF.
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'E10CLNT121'
EXPORTING
query_table = lv_query_table
delimiter = '|'
TABLES
OPTIONS = lt_options
fields = lt_fields
data = lt_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.
READ TABLE lt_data INTO ls_data INDEX 1.
IF lv_query_table = 'CSKS'.
lv_apprv_cc = ls_data-wa+0(20).
ls_approval_def-zapprover = lv_apprv_cc.
ENDIF.
IF lv_query_table = 'ANLX'.
lv_apprv_asset = ls_data-wa+0(12).
ls_approval_def-zapprover = lv_apprv_asset.
ENDIF.
ENDIF.
**** NOW PREPARE THE WORKAREA FOR UPDATING THE TABLE ZRP2P0BGST001..
**** ls_approval_def-mandt = sy-mandt.
**** ls_approval_def-zplant = value3.
**** ls_approval_def-zcost_ctr = lv_cost_ctr.
**** ls_approval_def-zorder_no = lv_order_no.
**** ls_approval_def-zasset_no = lv_asset_no.
*** THIS WILL PICK MAX THREE RECORDS AS PER THE CORRECT
*** REQUIREMENT.
DO approval_index TIMES. " begin of do.
l_apprv_count = l_apprv_count + 1.
ls_approval_def-zlevel = l_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.
IF l_apprv_count > 1.
l_apprv_count = l_apprv_count - 1.
READ TABLE lt_update_tab INTO ls_update_tab
WITH KEY zlevel = l_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
ls_ac_container-element = 'ORG_OBJECT'.
ls_ac_container-tab_index = '000001'.
ls_ac_container-elemlength = '006'.
ls_ac_container-type = 'C'.
CONCATENATE 'US' ls_update_tab-zapprover
INTO ls_ac_container-value .
* ls_ac_container-value = ls_update_tab-zapprover.
APPEND ls_ac_container TO lt_ac_container.
CALL FUNCTION 'SWX_GET_MANAGER' DESTINATION 'R10CLNT120'
TABLES
actor_tab = lt_actor_tab
ac_container = lt_ac_container
EXCEPTIONS
nobody_found = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE lt_actor_tab INTO ls_actor_tab INDEX 1.
ls_approval_def-zapprover = ls_actor_tab-objid.
ENDIF.
*** CODE ENDS FOR FINDING THE HIGHER OERDR OF MANAGER.
ENDIF.
l_apprv_count = l_apprv_count + 1.
ENDIF.
*** BEFORE UPDATING POPULATE THE TABLE LT_APPROVAL_DEF***
*** LT_UPDATE_TAB IS READ BASED ON NEXT L_APPRV_COUNT AND
*** UPDATING THE APPROVER AND VALUE.
READ TABLE lt_update_tab INTO ls_update_tab
WITH KEY zlevel = l_apprv_count .
IF SY-SUBRC = 0.
LS_APPROVAL_DEF-ZVALUE = LS_UPDATE_TAB-ZVALUE.
APPEND ls_approval_def TO lt_approval_def.
ENDIF.
*** NOW ENQUEUE THE TABLE FOR MODIFICATION.*****
CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
tabname = 'ZRP2P0BGST001'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
**** NOW MODIFY THE TABLE FOR UPDATING THE APPROVER.
IF sy-subrc = 0.
MODIFY zrp2p0bgst001 FROM ls_approval_def.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
**** NOW DEQUEUE THE TABLE AFTER THE UPDATION.
CALL FUNCTION 'DEQUEUE_E_TABLE'
EXPORTING
tabname = 'ZRP2P0BGST001'.
CLEAR : ls_approval_def-zlevel , ls_approval_def-zapprover.
ENDDO. " END OF DO STATEMENT.
*********************~~~******************
* IF sy-subrc NE 4.
*** Fill approval table (who is responsible for which approval
*** object in which approval step)
SORT lt_approval_def BY zplant zcost_ctr zorder_no zasset_no
zlevel zvalue.
LOOP AT lt_approval_def INTO ls_approval_def.
ls_approval_table-approval_index = ls_approval_def-zlevel.
CONCATENATE c_agent_is_user ls_approval_def-zapprover
INTO ls_approval_table-approval_agent.
* ls_approval_table-name = ls_approval_def-agent_string1.
ls_approval_table-approval_description = approval_description.
ls_approval_table-approval_object_guid = lv_app_obj_guid.
ls_approval_table-hide_items_not_responsible =
hide_items_not_responsible.
APPEND ls_approval_table TO approval_table.
ENDLOOP.
*** IF ls_approval_def-approval_agent2 IS NOT INITIAL.
****** Second approver for the same workitem exists
*** CONCATENATE c_agent_is_user ls_approval_def-approval_agent2
*** INTO ls_approval_table-approval_agent.
*** ls_approval_table-name = ls_approval_def-agent_string2.
*** APPEND ls_approval_table TO approval_table.
*** ENDIF.
* ENDIF.
****** ENDIF.
*** Fill item table (Which items belongs to which approval object)
ls_item_approval_table-approval_object_guid = lv_app_obj_guid.
ls_item_approval_table-approval_item_guid = item_guid.
APPEND ls_item_approval_table TO item_approval_table.
ENDFUNCTION.
Please analyse the code and provide me solution. Thanks in advance
Thanks and Regards
Arghadip
---------------------------------
TV dinner still cooling?
Check out "Tonight's Picks" on Yahoo! TV.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.mit.edu/pipermail/sap-wug/attachments/20070409/2baa76f7/attachment.htm
More information about the SAP-WUG
mailing list