BADI for filed level restriction
Hello All,
Is there any BADI available to restrict general employee to not to change the defaulted account assignment and to let Analyst/Approver to change. If it is there how can I go further into this.
Also how to let and control the users to go for Cross company code purchasing.
System: SRM Server 5.0
Thank you,
Manyam
Message was edited by: manyam gt
Message was edited by: manyam gt
Hi,
The foll thread will provide a solution you are looking for :
G/L account field to be disabled for SC screen
Regards,
Disha.
Pls reward points for helpful answers
Similar Messages
-
WRITE_BACK BADI for Parent Level Data Save
Hi Experts,
I am using write back badi for Parent level data saving in BPC 10, but my requirement is to save data at parent level for time period 2007.Q1 without segregating at corresponding base members level.
Is it possible so? if yes , please suggest.
I will highly appreciate for your quick response.
Regards,
Dipesh MudrasHi Dipesh,
BPC NetWeaver related questions should be posted in the corresponding forum, cf.
SAP Planning and Consolidation, version for SAP NetWeaver
Regards,
Gregor -
BADI for storage location restriction in IW32
Dear All,
I am working on one scenario in this user has to get the error message :-
1. Whenever he doesn't enter the Storage Location in Component Tab (in IW32) and also he should not be able to save the Maintenance Order.
2. There is ZTABLE (ZTPM058) , if there is no entry of the Storage location in the ZTABLE then also he should get the error.
I have used the BADI BADI_DI_PCS2_1 to do this but the problem is when the user enter the component manually then it works fine , but when he selects the component from List button (it is in the bottom of the component tab screen) , then this BADI doesn't work correctly.
Basically when the user selects component from List then it should first put data into the component tab and then give the error . but this is not happening.
Please suggest what can be done.
Below is the code that I have written :-
l_ucomm = sy-ucomm.
if diad_resbd-MENGE is not INITIAL.
SELECT SINGLE ingpr "Plant Section
lgort "Storage Location
INTO (l_ingpr,
l_lgort)
FROM ztpm058
WHERE lgort = diad_resbd-lgort
AND ingpr = diad_caufvd-ingpr.
IF sy-subrc <> 0.
if l_ucomm <> 'IMKL'.
CONCATENATE 'FOR ITEM NO' diad_resbd-posnr
', COMPONENT' diad_resbd-matnr
'AND PLANNER GROUP' diad_caufvd-ingpr
'THERE IS NO STORAGE LOCATION' diad_resbd-lgort INTO txtmgs SEPARATED BY space.
clear l_ucomm.
clear sy-ucomm.
MESSAGE txtmgs TYPE 'E' .
elseif l_ucomm = 'IMKL'. (OK CODE when user press List button)
CONCATENATE 'FOR ITEM NO' diad_resbd-posnr
', COMPONENT' diad_resbd-matnr
'AND PLANNER GROUP' diad_caufvd-ingpr
'THERE IS NO STORAGE LOCATION' diad_resbd-lgort
INTO txtmgs SEPARATED BY space.
clear l_ucomm.
clear sy-ucomm.
MESSAGE txtmgs TYPE 'W' .
endif.
endif.
ELSE.
message 'Please enter the Quantity' type 'W'.
clear l_ucomm.
clear sy-ucomm.
endif.
Thanks and Regards,
Rachit KhannaDear Rajesh Kumar Raju
Go to IMG-->Logistics Execution >Shipping> Picking -->Determine Picking Location -->Define Rules for Picking Location Determination. There you have to assign the MALA rule to your delivery type
Also maintain in OMJ8 and in material master under MRP2 view the default storage location in the field "Prod. stor. location"
thanks
G. Lakshmipathi -
Userexit/badi for tolerance levels in production order
Hi ,
I have a requirment where I have to set the under/over delivery tolerance limits to a fixed value based on the order quantity.I am not able to get any user exit or Badi to do the same.I am aware that this tolerance flows in from the work schedulling view in Material Master,But i need to change this in CO01/Co02.
Can any one please help me out.
Thank you,
Suvarna.*" IMPORTING
*" VALUE(IS_HEADER_NEW) LIKE CAUFVD STRUCTURE CAUFVD
*" VALUE(IS_HEADER_OLD) LIKE CAUFVD STRUCTURE CAUFVD
*" VALUE(IS_ITEM_NEW) LIKE AFPOD STRUCTURE AFPOD
*" VALUE(IS_ITEM_OLD) LIKE AFPOD STRUCTURE AFPOD
*" EXCEPTIONS
*" NO_CHANGES_ALLOWED
As shown we have AFPOD as the importing parameter and i cannot change the fields in structure.(I need to change UEBTO and UNTTO in AFPOD)
Please let me know if Iam missing out anything. -
BADI for restrict creation of business transaction independently
Hello Experts,
I have a requirement where I need to check if the Business activity (say any 'Z' transaction) has a opportunity follow-up document then only that business transaction need to be executed else should give the error that "Z transaction need to be created through opportunity only and can not be created individually".
I found one BADI CRM_ORDERADM_H_BADI where I can check for the condition but the issue is that as soon as I entered to CRMD_ORDER this BADI gets triggered where I need to trigger this BADI only when the user is trying to create the 'Z' business transaction individually.
Any Suggestion will be highly appreciated.
Thanks in Advance & Best Regards,
Deepak GuptaDeepak, there is a parameter called CRM_MODE and this has the following values depending upon the transaction context:
A - Create
B - Change
C - Display and
D - Delete
Now, in the same BAdI, since you are restricting the creation of the activity, check the CRM_MODE for the Activity, if it is A, then, call the function module CRM_ORDER_READ with the GUID of the activity and extract only the document flow ET_DOC_FLOW. Check this export table and see if the parent is an opportunity (BUS2000111). If your condition is not met, add an Error message in the transaction. -
I am looking to see whether org level restriction and cost center/fund center level restriction is possible for certain set of transactions.
I am using USOBX table for this analysis. This table has a check flag field ( same as in SU24) which says whether the Tcode (program) does the authority check for certain auth objects. Example- X (checked but not maintained in USOBT). This table pulls up several authorization objects under the 'X' category. However, when I do the System trace for the same tcode, all the objects (marked as X) are not captured. Instead only a few are captured.
Can we rely on the USOBX data or should we do system Trace for every tcode. I am just pulling a report and not creating roles at this point. So trace is time consuming. But data reliability is equally important.
My objective is to verify whether org level and cost center/fund center level restriction is possible or not for some tcodes.
Do you have any suggestion to achieve this faster (through USOBX or any other means)?
Thanks in advance
KeeI would suggest you to check USOBX_C and USOBT_C instead of USOBX and USOBT as it will have your customization as well and not just the standard ones given by SAP.
Also when check field is X ...it means the object is checked but not maintained for the t-code as you already said but I am not sure how much it will help you as the they will not be pulled by PFCG when you are creating the role until you change the object to Check / maintain . When you do that the check field will be Y and not X. So basically it is the Y one which you need to see.
Going for trace is time consuming for every t-code and I am not sure if it really needed. When your roles are in testing phase and are tested by the functional team or the team which needs it and if they are missing some object, you can run a trace and find the missing object....
I am not sure on what basis you want to change some field to Org level ...but typically it is done if you want to do segregation of roles based on these org level. There could be various other reasons and it is better to talk to your functional counterparts before changing a field to Org level.
for ex : If you want to segregate on company code, you will create co. code as Org level and create roles for different company code. -
Exit or badi for me21n- for adding new field in delivery tab(Item level)
HI,
My Requirement is to add the New Field(Inspection Lot) in delivery tab in item level of me21n .
I want to know this can be done by any Exit or Badi or modifying the standard sap is the only way to do this...
Kindly help me to solve the issue..it's quite urgent , i unable to find one,i used the exit mequery1 but did not work ......
Thanks in Advance.Hi Nagaraju,
Actually,for every T-code,SAP has provided a lot of BADIs where the customer can write their own codes depending
upon the functionality required.
In order to find the BAD for a particular T-code,go to the T-code SE24 and type in cl_exithandler and click on
Display.
You will get a list of methods in that class,double click on the Get_Instance method from the list.
you will get the code for that method.Scroll down and you will find one of the parameters "Exit Name" there.Put a
breakpoint on that function module and press F8.
In the debugging mode,double click on the Exit Name to get the value contained in it.You will see the first BADI
provided in that T-code.
Note down this and then keep on pressng the F8 and noting down the BADIs being displayed.
Now ,you will have to find out the BADI which fits your requirement.
Now,it is not required to opy that BADI into ZBADI.Instead it is better to create a new implementation for this
BADI.
Go to the T-code SE18 and see its definition.
Now,go to the T-code SE19 and create a new implementation and write the code there.
Once done,activate that implementation and the BADI also.
Now run the T-code and debug the code that you have written.You can modify the code accordng to your requirements.
In case you have any further clarifications,do let me know.
Regards,
Puneet Jhari. -
Use of BADI for SNP capacity levelling
I am using APO V5.1.
I'm interested in using the Business Add in (BADI) for SNP capacity levelling.
Can anyone tell me which BADI this is, and the possible functionality it can provide?
Thanks for any information on this...To give you a couple of examples of what we use the BADi for:
1) Based on a product characteristic, the levelling will only level certain products. E.g. you could set a characteristic to mark products for internal use versus export use and then level the internal requirements first.
2) The levelling will only level planned production for highlighted orders in the data view.
Hope that helps for ideas
Regards
Ian -
BADI for MIGO for restricting User to entered other MVT types?
Hi All,
BADI for MIGO for restricting User to entered other MVT types?
I want to restrict some of user not to use 501 Movement type ..I already created a Ztable for checking User for 501 type.
Please let me know any Enhancement to be used to restrict user ?
Thanks and Regards
SteveHi Steave,
You can use this enhancement exit MB_CF001, this exit will be called every time before posting, you can use your logic in this exit. see its documentation first before implementing.
Regards
Ahsan -
In ME21N,User Exit/BADI for Defaulting Vendor number at item level.
Hi Experts.
In ME21N, for every purchase order, we have condtion tab for each line item.
Many condition typesot taxes are listed based on the config for the materials.
My requirements is, When we go inside by selecting a condition type we find vendor number displayed.
I need a user exit/BADI for defaulting the Vendor number.
Regards
Balaji RHi,
check with below link,
fo this one you will find both user exit and badis
https://www.sdn.sap.com/irj/scn/wiki?path=/display/abap/find%252bapplication%252bclass%252bwith%252bexits%252band%252bbadis%252bfor%252ba%252btransaction
Regards,
Madhu -
Exit or Badi for FB01 to update KMNAM filed value to BKPF free field
Hi Experts,
Please provide me the correct Exits or Badi for to update KMKPF-KMNAM value to BKPF reference field while posting FB01.
I tired with substitution but it was not solved my requirement.
I have to update the KMNAM value into BKPF-XREF2 field as the user selects account assignment model while posting FB01.
Please advise and share me, is there any other solution you have.
Thanks & Regards
Sankar.Hi ,
These is not exits or badis or BTE are not available eith import paremeters KMKPF.
So you need to get this value using Assign statement in any user exit which contains export parmeter as BKPF .
ASSIGN ('(SAPLSPO4)KMKPF-KMNAM) TO <fs_KMNAM>.
I hope this may helpfull..
Thank you,
Thanks,
AMS -
BADI for Classic and Extended Classic Scenario
Hi,
Please provide list of Reports and BADI's for
Classic and Extended Classic Scenario.
Thanks,
SriniHi,
In SRM there will be a number of BADI's are Available, We can utilize them according to the requirements
As per the request few important BAID are provided below..
Workflows
1). BBP_CHNG_AGNT_ALLOW: Allow / Allow Change/Add Approver
This BADI is implemented not to allow users to change the approvers in the workflow.
2). BBP_WFL_SECUR_BADI: Overwrites the authorization level of the approver
This BADI controls the restart of the workflow
Purchasing Related
1). BBP_PGRP_FIND: Shopping Cart: Determine Responsible Purchasing Group(s)
This determines the responsible purchasing group for the shopping carts.
Shopping Cart Related
1). BBP_SC_MODIFY_UI: BADI to Change Shopping Cart Layout
2). BBP_GROUP_LOC_PO: Exit Grouping of Items for Local Purchase Orders
This splits local PO if more than one contract in a PO.
3). BBP_TARGET_OBJECTS: Exit while determining target objects in backend
4). BBP_WF_LIST: Change Worklists and Search Results Lists
This is used to restrict the search results for the user.
5). BBP_CTR_BE_CREATE: Exit when Creating a Contract in the Backend System
6). BBP_CREATE_PO_BACK: Exit while creating a purchase order in the backend system
This BADI is used to add the shopping carts attachments to the PO and also to make adjustments in payment terms, currency etcu2026
7). BBP_DOC_CHECK_BADI: General BAdI in Cross-Check for Message Returns
8). BBP_DOC_CHANGE_BADI: BAdI for Changing EBP Purchasing Documents
9). BBP_ECS_PO_OUT_BADI: ECS: PO Transfer to Logistics Backend
Thanks
prasad .s -
Hi Folks,
My PO ordered quantity is greated than my PR quantity and that's because PR is not set to closed. Is there any way how to close the PR using exit/badi?
Thanks!Dear Friend,
U r creating PO with Reference to PR.
if u r doing like this u can check that at the PO Level itself.
For this u can use the EXIT or BADI.
Then Function group for the PO is XMO6 . in this there is one include . Include ZXM06U43
Please Implement this Exit. this will trigger at the Check function of the PO.
So u can restrict ur PO at the time of Creation..
2 BADI for this is ME_PROCESS_PO_CUST.
This BADI contains some many methods.
For ur Requirement just implement Process_item method .
Hope this will Help u.
With Regards,
Sumodh.P -
EXIT NAME OR BADI FOR FIELD IN MIGO TRANSACTION (full poins will be given)
Hai all,
VERY URGENT REQ.
In MIGO transaction, I want to know the BADI or EXIT NAME in which the following fields are avilable .
Fields name: exgrp, EXCISE_ACTION
exact screen field name is : J_1IEXHEAD-EXGRP
J_1IEXHEAD-EXCISE_ACTION
Full Points will be given for correct answer.
Thanks in advance.
s.senthil kumarHi,
Try this code .We can get the User exits and Badis for the Tcode.
Code:
& Report ZPJA_PM002 (Ver4) &
& PJA Consultancy Services (www.pjas.com) &
& This report attmpts to find Enhancements, Program-Exits, BADIs &
& and Business Transaction Events in a particular program/tcode. &
& Other search options: &
& Program: RPR_ABAP_SOURCE_SCAN &
& FModule: &
& Text Elements: &
& P_DEVC Show user-exits from development class &
& P_LIMIT Limit submit program selection &
& P_FUNC Show function modules &
& P_SUBM Show submit programs &
& S01 Selection data (TCode takes precedence over program name) &
report zpja_pm002
no standard page heading
line-size 221.
data: tabix like sy-tabix,
w_linnum type i,
w_off type i,
w_index like sy-tabix,
w_include like trdir-name,
w_prog like trdir-name,
w_incl like trdir-name,
w_area like rs38l-area,
w_level,
w_fsel like sy-ucomm, " Determination of screen field
w_str(50) type c,
w_funcname like tfdir-funcname.
constants: c_fmod(40) type c value 'Function modules selected: ',
c_subm(40) type c value 'Submit programs selected: ',
c_col1(12) type c value 'Enhanmt Type',
c_col2(40) type c value 'Enhancement',
c_col3(30) type c value 'Program/Include',
c_col4(20) type c value 'Enhancement Name',
c_col5(40) type c value 'Enhancement Description',
c_col6(8) type c value 'Project',
c_col7(1) type c value 'S',
c_col8(12) type c value 'ChangeName',
c_col9(10) type c value 'ChangeDate'.
Work Areas: ABAP Workbench
data: begin of wa_d010inc.
data: master type d010inc-master.
data: end of wa_d010inc.
data: begin of wa_tfdir.
data: funcname type tfdir-funcname,
pname type tfdir-pname,
include type tfdir-include.
data: end of wa_tfdir.
data: begin of wa_tadir.
data: devclass type tadir-devclass.
data: end of wa_tadir.
data: begin of wa_tstc.
data: pgmna type tstc-pgmna.
data: end of wa_tstc.
data: begin of wa_tstcp.
data: param type tstcp-param.
data: end of wa_tstcp.
data: begin of wa_enlfdir.
data: area type enlfdir-area.
data: end of wa_enlfdir.
Work Areas: BADIs
data: begin of wa_sxs_attr.
data: exit_name type sxs_attr-exit_name.
data: end of wa_sxs_attr.
data: begin of wa_sxs_attrt.
data: text type sxs_attrt-text.
data: end of wa_sxs_attrt.
Work Areas: Enhancements
data: begin of wa_modsap.
data: member type modsap-member.
data: end of wa_modsap.
data: begin of wa_modsapa.
data: name type modsapa-name.
data: end of wa_modsapa.
data: begin of wa_modsapt.
data: modtext type modsapt-modtext.
data: end of wa_modsapt.
Work Areas: Business Transaction Events
data: begin of wa_tbe01t.
data: text1 type tbe01t-text1.
data: end of wa_tbe01t.
data: begin of wa_tps01t.
data: text1 type tps01t-text1.
data: end of wa_tps01t.
user-exits
types: begin of ty_mod,
member like modact-member,
name like modact-name,
status like modattr-status,
anam like modattr-anam,
adat like modattr-adat,
end of ty_mod.
data: w_mod type ty_mod.
types: begin of t_userexit,
type(12) type c,
pname like trdir-name,
txt(300),
level type c,
modname(30) type c,
modtext(60) type c,
modattr type ty_mod,
end of t_userexit.
data: i_userexit type standard table of t_userexit with header line.
Function module developmnet classes
types: begin of t_devclass,
clas like trdir-clas,
end of t_devclass.
data: i_devclass type standard table of t_devclass with header line.
types: begin of t_enlfdir,
area type enlfdir-area,
end of t_enlfdir.
data: i_enlfdir type standard table of t_enlfdir with header line.
Submit programs
types: begin of t_submit,
pname like trdir-name,
level,
done,
end of t_submit.
data: i_submit type standard table of t_submit with header line.
Source code
types: begin of t_sourcetab, "#EC * (SLIN lügt!)
line(200), "#EC * (SLIN lügt!)
end of t_sourcetab. "#EC * (SLIN lügt!)
data: sourcetab type standard table of t_sourcetab with header line.
data c_overflow(30000) type c.
Description of an ABAP/4 source analysis token
data: i_stoken type standard table of stokex with header line.
data wa_stoken like i_stoken.
Description of an ABAP/4 source analysis statement
data: i_sstmnt type standard table of sstmnt with header line."#EC NEEDED
keywords for searching ABAP code
types: begin of t_keywords,
word(30),
end of t_keywords.
data: keywords type standard table of t_keywords with header line.
function modules within program
types: begin of t_fmodule,
name like rs38l-name,
pname like trdir-name,
pname2 like trdir-name,
level,
bapi,
done,
end of t_fmodule.
data: i_fmodule type standard table of t_fmodule with header line.
& Selection Options &
selection-screen begin of block selscr1 with frame title text-s01.
parameter: p_pname like trdir-name memory id rid,
p_tcode like syst-tcode,
p_limit(4) type n default 100,
p_devc like rihea-dy_ofn default ' ',
p_func like rihea-dy_ofn default ' ',
p_subm like rihea-dy_ofn default ' '.
selection-screen end of block selscr1.
& START-OF-SELECTION &
start-of-selection.
if p_pname is initial and p_tcode is initial.
message e008(hrfpm). "Make entry on the selection screen
stop.
endif.
ensure P_LIMIT is not zero.
if p_limit = 0.
p_limit = 1.
endif.
perform data_select.
perform get_submit_data.
perform get_fm_data.
perform get_additional_data.
perform data_display.
& Form DATA_SELECT &
form data_select.
data selection message to sap gui
call function 'SAPGUI_PROGRESS_INDICATOR'
destination 'SAPGUI'
keeping logical unit of work
exporting
text = 'Get programs/includes' "#EC NOTEXT
exceptions
system_failure
communication_failure
. "#EC *
determine search words
keywords-word = 'CALL'.
append keywords.
keywords-word = 'FORM'.
append keywords.
keywords-word = 'PERFORM'.
append keywords.
keywords-word = 'SUBMIT'.
append keywords.
keywords-word = 'INCLUDE'.
append keywords.
if not p_tcode is initial.
get program name from TCode
select single pgmna from tstc into wa_tstc-pgmna
where tcode eq p_tcode.
if not wa_tstc-pgmna is initial.
p_pname = wa_tstc-pgmna.
TCode does not include program name, but does have refereve TCode
else.
select single param from tstcp into wa_tstcp-param
where tcode eq p_tcode.
if sy-subrc = 0.
check wa_tstcp-param(1) = '/'.
check wa_tstcp-param+1(1) = '*'.
if wa_tstcp-param ca ' '.
endif.
w_off = sy-fdpos + 1.
subtract 2 from sy-fdpos.
if sy-fdpos gt 0.
p_tcode = wa_tstcp-param+2(sy-fdpos).
endif.
select single pgmna from tstc into wa_tstc-pgmna
where tcode eq p_tcode.
p_pname = wa_tstc-pgmna.
if sy-subrc 0.
message e110(/saptrx/asc) with 'No program found for: ' p_tcode."#EC NOTEXT
endif.
else.
message e110(/saptrx/asc) with 'No program found for: ' p_tcode."#EC NOTEXT
endif.
endif.
endif.
Call customer-function aus Program coding
read report p_pname into sourcetab.
if sy-subrc > 0.
message e017(enhancement) with p_pname raising no_program."#EC *
endif.
scan abap-source sourcetab tokens into i_stoken
statements into i_sstmnt
keywords from keywords
overflow into c_overflow
with includes.
if sy-subrc > 0. "keine/syntakt. falsche Ablauflog./Fehler im Skanner
message e130(enhancement) raising syntax_error. "#EC *
endif.
check I_STOKEN for entries
clear w_linnum.
describe table i_stoken lines w_linnum.
if w_linnum gt 0.
w_level = '0'.
w_prog = ''.
w_incl = ''.
perform data_search tables i_stoken using w_level w_prog w_incl.
endif.
endform. "DATA_SELECT
& Form GET_FM_DATA &
form get_fm_data.
data selection message to sap gui
call function 'SAPGUI_PROGRESS_INDICATOR'
destination 'SAPGUI'
keeping logical unit of work
exporting
text = 'Get function module data' "#EC NOTEXT
exceptions
system_failure
communication_failure. "#EC *
Function module data
sort i_fmodule by name.
delete adjacent duplicates from i_fmodule comparing name.
loop at i_fmodule where done ne 'X'.
clear: i_stoken, i_sstmnt, sourcetab, wa_tfdir, w_include .
refresh: i_stoken, i_sstmnt, sourcetab.
store function groups
select single area from enlfdir into wa_enlfdir-area
where funcname = i_fmodule-name.
i_enlfdir-area = wa_enlfdir-area.
append i_enlfdir.
Store development classes
if not wa_enlfdir-area is initial.
select single devclass into wa_tadir-devclass
from tadir where pgmid = 'R3TR'
and object = 'FUGR'
and obj_name = wa_enlfdir-area.
check not wa_tadir-devclass is initial.
move wa_tadir-devclass to i_devclass-clas.
append i_devclass.
endif.
clear wa_tfdir.
select single funcname pname include from tfdir into wa_tfdir
where funcname = i_fmodule-name.
check sy-subrc = 0.
call function 'FUNCTION_INCLUDE_SPLIT'
exporting
program = wa_tfdir-pname
importing
group = w_area.
concatenate 'L' w_area 'U' wa_tfdir-include into w_include.
i_fmodule-pname = w_include.
i_fmodule-pname2 = wa_tfdir-pname.
modify i_fmodule.
read report i_fmodule-pname into sourcetab.
if sy-subrc = 0.
scan abap-source sourcetab tokens into i_stoken
statements into i_sstmnt
keywords from keywords
with includes.
if sy-subrc > 0.
message e130(enhancement) raising syntax_error.
endif.
check i_stoken for entries
clear w_linnum.
describe table i_stoken lines w_linnum.
if w_linnum gt 0.
w_level = '1'.
w_prog = i_fmodule-pname2.
w_incl = i_fmodule-pname.
perform data_search tables i_stoken using w_level w_prog w_incl.
endif.
endif.
endloop.
sort funtion groups
sort i_devclass.
delete adjacent duplicates from i_devclass.
sort i_enlfdir.
delete adjacent duplicates from i_enlfdir.
endform. "GET_FM_DATA
& Form GET_SUBMIT_DATA &
form get_submit_data.
data selection message to sap gui
call function 'SAPGUI_PROGRESS_INDICATOR'
destination 'SAPGUI'
keeping logical unit of work
exporting
text = 'Get submit data' "#EC NOTEXT
exceptions
system_failure
communication_failure
. "#EC *
sort i_submit.
delete adjacent duplicates from i_submit comparing pname.
w_level = '0'.
loop at i_submit where done ne 'X'.
check i_submit-pname ne p_pname. " ensure not the same as origianl program
clear: i_stoken, i_sstmnt, sourcetab.
refresh: i_stoken, i_sstmnt, sourcetab.
read report i_submit-pname into sourcetab.
if sy-subrc 0.
delete i_submit.
continue.
else.
scan abap-source sourcetab tokens into i_stoken
statements into i_sstmnt
keywords from keywords
with includes.
if sy-subrc > 0.
continue.
endif.
check i_stoken for entries
clear w_linnum.
describe table i_stoken lines w_linnum.
if w_linnum gt 0.
w_prog = i_submit-pname.
w_incl = ''.
perform data_search tables i_stoken using w_level w_prog w_incl.
endif.
endif.
restrict number of submit program selected for processing
describe table i_submit lines w_linnum.
if w_linnum ge p_limit.
w_level = '1'.
endif.
i_submit-done = 'X'.
modify i_submit.
endloop.
sort i_submit.
delete adjacent duplicates from i_submit comparing pname.
endform. "GET_SUBMIT_DATA
& Form DATA_SEARCH &
form data_search tables p_stoken structure stoken
using p_level p_prog p_incl.
loop at p_stoken.
clear i_userexit.
tabix = sy-tabix + 1.
i_userexit-level = p_level.
if i_userexit-level = '0'.
if p_incl is initial.
i_userexit-pname = p_pname.
else.
concatenate p_pname '/' p_incl into i_userexit-pname.
endif.
else.
if p_incl is initial.
i_userexit-pname = p_prog.
else.
concatenate p_prog '/' p_incl into i_userexit-pname.
endif.
endif.
Include
if p_stoken-str eq 'INCLUDE'.
check p_level eq '0'. " do not perform for function modules (2nd pass)
w_index = sy-tabix + 1.
read table p_stoken index w_index into wa_stoken.
check not wa_stoken-str cs 'STRUCTURE'.
check not wa_stoken-str cs 'SYMBOL'.
read table i_submit with key pname = wa_stoken-str.
if sy-subrc 0.
i_submit-pname = wa_stoken-str.
i_submit-level = p_level.
append i_submit.
endif.
endif.
Enhancements
if p_stoken-str eq 'CUSTOMER-FUNCTION'.
clear w_funcname.
read table p_stoken index tabix.
translate p_stoken-str using ''' '.
condense p_stoken-str.
if p_prog is initial.
concatenate 'EXIT' p_pname p_stoken-str into w_funcname
separated by '_'.
else.
concatenate 'EXIT' p_prog p_stoken-str into w_funcname
separated by '_'.
endif.
select single member from modsap into wa_modsap-member
where member = w_funcname.
if sy-subrc = 0. " check for valid enhancement
i_userexit-type = 'Enhancement'.
i_userexit-txt = w_funcname.
append i_userexit.
else.
clear wa_d010inc.
select single master into wa_d010inc-master
from d010inc
where include = p_prog.
concatenate 'EXIT' wa_d010inc-master p_stoken-str into w_funcname
separated by '_'.
i_userexit-type = 'Enhancement'.
i_userexit-txt = w_funcname.
endif.
endif.
BADIs
if p_stoken-str cs 'cl_exithandler='.
w_index = sy-tabix + 4.
read table p_stoken index w_index into wa_stoken.
i_userexit-txt = wa_stoken-str.
replace all occurrences of '''' in i_userexit-txt with space.
i_userexit-type = 'BADI'.
append i_userexit.
endif.
Business transaction events
if p_stoken-str cs 'OPEN_FI_PERFORM'.
i_userexit-type = 'BusTrEvent'.
i_userexit-txt = p_stoken-str.
replace all occurrences of '''' in i_userexit-txt with space.
i_userexit-modname = i_userexit-txt+16(8).
case i_userexit-txt+25(1).
when 'E'.
clear wa_tbe01t.
select single text1 into wa_tbe01t-text1 from tbe01t
where event = i_userexit-txt+16(8)
and spras = sy-langu.
if wa_tbe01t-text1 is initial.
i_userexit-modtext = ''. "#EC NOTEXT
else.
i_userexit-modtext = wa_tbe01t-text1.
endif.
i_userexit-modname+8 = '/P&S'. "#EC NOTEXT
when 'P'.
clear wa_tps01t.
select single text1 into wa_tps01t-text1 from tps01t
where procs = i_userexit-txt+16(8)
and spras = sy-langu.
i_userexit-modtext = wa_tps01t-text1.
i_userexit-modname+8 = '/Process'.
endcase.
append i_userexit.
endif.
Program exits
if p_stoken-str cs 'USEREXIT_'.
i_userexit-type = 'Program Exit'.
i_userexit-txt = p_stoken-str.
replace all occurrences of '''' in i_userexit-txt with space.
append i_userexit.
endif.
Submit programs
if p_stoken-str cs 'SUBMIT'.
check p_level eq '0'. " do not perform for function modules (2nd pass)
check not p_stoken-str cs '_'. " ensure not SUBMIT_XXX
w_index = sy-tabix + 1.
read table p_stoken index w_index into wa_stoken.
check not wa_stoken-str cs '_'. " ensure not SUBMIT_XXX
replace all occurrences of '''' in wa_stoken-str with space.
read table i_submit with key pname = wa_stoken-str.
if sy-subrc 0.
i_submit-pname = wa_stoken-str.
i_submit-level = p_level.
append i_submit.
endif.
endif.
Perform routines (which reference external programs)
if p_stoken-str cs 'PERFORM'.
check p_level eq '0'. " do not perform for function modules (2nd pass)
w_index = sy-tabix + 1.
read table p_stoken index w_index into wa_stoken.
if not wa_stoken-ovfl is initial.
w_off = wa_stoken-off1 + 10.
w_str = c_overflow+w_off(30).
find ')' in w_str match offset w_off.
w_off = w_off + 1.
wa_stoken-str = w_str(w_off).
endif.
check wa_stoken-str cs '('.
w_off = 0.
while sy-subrc = 0.
if wa_stoken-str+w_off(1) eq '('.
replace section offset w_off length 1 of wa_stoken-str with ''.
replace all occurrences of ')' in wa_stoken-str with space.
read table i_submit with key pname = wa_stoken-str.
if sy-subrc 0.
i_submit-pname = wa_stoken-str.
append i_submit.
endif.
exit.
else.
replace section offset w_off length 1 of wa_stoken-str with ''.
shift wa_stoken-str left deleting leading space.
endif.
endwhile.
endif.
Function modules
if p_stoken-str cs 'FUNCTION'.
clear i_fmodule.
check p_level eq '0'. " do not perform for function modules (2nd pass)
w_index = sy-tabix + 1.
read table p_stoken index w_index into wa_stoken.
if wa_stoken-str cs 'WF_'.
if wa_stoken-str cs 'IDOC'.
break-point.
endif.
if wa_stoken-str cs 'BAPI'.
i_fmodule-bapi = 'X'.
endif.
replace first occurrence of '''' in wa_stoken-str with space.
replace first occurrence of '''' in wa_stoken-str with space.
if sy-subrc = 4. " didn't find 2nd quote (ie name truncated)
clear wa_tfdir.
concatenate wa_stoken-str '%' into wa_stoken-str.
select single funcname into wa_tfdir-funcname from tfdir
where funcname like wa_stoken-str.
if sy-subrc = 0.
i_fmodule-name = wa_tfdir-funcname.
else.
continue.
endif.
else.
i_fmodule-name = wa_stoken-str.
endif.
read table i_fmodule with key name = i_fmodule-name.
if sy-subrc 0.
i_fmodule-level = p_level.
append i_fmodule.
endif.
endif.
endloop.
endform. "DATA_SEARCH
& Form GET_ADDITIONAL_DATA &
form get_additional_data.
data selection message to sap gui
call function 'SAPGUI_PROGRESS_INDICATOR'
destination 'SAPGUI'
keeping logical unit of work
exporting
text = 'Get additional data' "#EC NOTEXT
exceptions
system_failure
communication_failure
. "#EC *
loop at i_userexit.
Enhancement data
if i_userexit-type cs 'Enh'.
clear: wa_modsapa.
select single name into wa_modsapa-name from modsap
where member = i_userexit-txt.
check sy-subrc = 0.
i_userexit-modname = wa_modsapa-name.
clear wa_modsapt.
select single modtext into wa_modsapt-modtext from modsapt
where name = wa_modsapa-name
and sprsl = sy-langu.
i_userexit-modtext = wa_modsapt-modtext.
MOH - enhancement to get the project name
clear w_mod.
select single modactmember modactname modattr~status
modattranam modattradat
into w_mod
from modact
inner join modattr
on modattrname = modactname
where modact~member = wa_modsapa-name
and modact~typ = space.
i_userexit-modattr = w_mod.
MOH - eoe
endif.
BADI data
if i_userexit-type eq 'BADI'.
clear wa_sxs_attr.
select single exit_name into wa_sxs_attr-exit_name from sxs_attr
where exit_name = i_userexit-txt.
if sy-subrc = 0.
i_userexit-modname = i_userexit-txt.
else.
i_userexit-modname = 'Dynamic call'. "#EC NOTEXT
endif.
clear wa_sxs_attrt.
select single text into wa_sxs_attrt-text from sxs_attrt
where exit_name = wa_sxs_attr-exit_name
and sprsl = sy-langu.
i_userexit-modtext = wa_sxs_attrt-text.
endif.
modify i_userexit.
endloop.
get enhancements via program package
clear wa_tadir.
select single devclass into wa_tadir-devclass from tadir
where pgmid = 'R3TR'
and object = 'PROG'
and obj_name = p_pname.
if sy-subrc = 0.
clear: wa_modsapa, wa_modsapt.
select name from modsapa into wa_modsapa-name
where devclass = wa_tadir-devclass.
select single modtext from modsapt into wa_modsapt-modtext
where name = wa_modsapa-name
and sprsl = sy-langu.
read table i_userexit with key modname = wa_modsapa-name.
if sy-subrc 0.
i_userexit-modtext = wa_modsapt-modtext.
i_userexit-type = 'Enhancement'. "#EC NOTEXT
i_userexit-modname = wa_modsapa-name.
i_userexit-txt = 'Determined from program DevClass'."#EC NOTEXT
i_userexit-pname = 'Unknown'. "#EC NOTEXT
append i_userexit.
endif.
endselect.
endif.
Get IDOCs
loop at i_devclass.
endloop.
endform. "GET_ADDITIONAL_DATA
& Form DATA_DISPLAY &
form data_display.
data selection message to sap gui
call function 'SAPGUI_PROGRESS_INDICATOR'
destination 'SAPGUI'
keeping logical unit of work
exporting
text = 'Prepare screen for display' "#EC NOTEXT
exceptions
system_failure
communication_failure
. "#EC *
sort i_userexit by type txt modname.
delete adjacent duplicates from i_userexit comparing txt modname.
format headings
write: 'Enhancements from main program'. "#EC NOTEXT
write: /.
uline.
format color col_heading.
write: / sy-vline,
(12) c_col1, "Enhanmt Type
sy-vline,
(40) c_col2, "Enhancement
sy-vline,
(30) c_col3, "Program/Include
sy-vline,
(20) c_col4, "Enhancement name
sy-vline,
(60) c_col5, "Enhancement description
sy-vline,
(8) c_col6, "Project
sy-vline,
(1) c_col7, "S
sy-vline,
(12) c_col8, "ChangeName
sy-vline,
(10) c_col9, "ChangeDate
sy-vline.
format reset.
uline.
format lines
loop at i_userexit.
set line colour
case i_userexit-type.
when 'Enhancement'.
format color 3 intensified off.
when 'BADI'.
format color 4 intensified off.
when 'BusTrEvent'.
format color 5 intensified off.
when 'Program Exit'.
format color 6 intensified off.
when others.
format reset.
endcase.
write: / sy-vline,
i_userexit-type,
sy-vline,
i_userexit-txt(40),
sy-vline,
i_userexit-pname(30),
sy-vline,
i_userexit-modname(20),
sy-vline,
i_userexit-modtext(60),
sy-vline,
i_userexit-modattr-name,
sy-vline,
i_userexit-modattr-status,
sy-vline,
i_userexit-modattr-anam,
sy-vline,
i_userexit-modattr-adat no-zero,
sy-vline.
hide: i_userexit-type,
i_userexit-txt,
i_userexit-pname,
i_userexit-modname,
i_userexit-modtext.
endloop.
format reset.
uline.
user-exits from development class of function modules
if p_devc = 'X'.
write: /.
write: / 'User-exits from function module development class'."#EC NOTEXT
write: 157''.
uline (90).
write: 157''.
loop at i_devclass.
clear wa_modsapa.
select name from modsapa into wa_modsapa
where devclass = i_devclass-clas.
select single name modtext into corresponding fields of wa_modsapt
from modsapt
where name = wa_modsapa-name
and sprsl = sy-langu.
format color 3 intensified off.
write: / sy-vline,
(12) 'Enhancement',
sy-vline,
wa_modsapa-name,
sy-vline,
wa_modsapt-modtext,
sy-vline.
endselect.
endloop.
uline (90).
format reset.
endif.
describe table i_fmodule lines w_linnum.
write: / c_fmod , at 35 w_linnum. "#EC NOTEXT
write: 157''.
if p_func = 'X'.
display fuction modules used in program
uline (38).
write: 157''.
loop at i_fmodule.
write: sy-vline,
i_fmodule-name,
sy-vline,
i_fmodule-bapi,
sy-vline.
write: 157''.
endloop.
uline (38).
write: 157''.
endif.
describe table i_submit lines w_linnum.
write: / c_subm , at 35 w_linnum. "#EC NOTEXT
write: 157''.
if p_subm = 'X'.
display submit programs used in program
uline (44).
write: 157''.
loop at i_submit.
write: sy-vline,
i_submit-pname,
sy-vline.
write: 157''.
endloop.
uline (44).
endif.
issue message with number of user-exits displayed
describe table i_userexit lines w_linnum.
message s697(56) with w_linnum.
endform. "DATA_DISPLAY
& User Selection Processing &
at line-selection.
get cursor field w_fsel.
case w_fsel.
when 'I_USEREXIT-MODNAME'.
case i_userexit-type.
when 'Enhancement'.
set parameter id 'MON' field i_userexit-modname.
call transaction 'SMOD' and skip first screen.
when 'BADI'.
check i_userexit-modname ne 'Dynamic call'.
set parameter id 'EXN' field i_userexit-modname.
call transaction 'SE18' and skip first screen.
when 'BusTrEvent'.
submit rfopfi00 with attr_typey_selm = 'A'
with event = i_userexit-modname(8)
via selection-screen
and return.
when others.
endcase.
when 'I_USEREXIT-PNAME'.
check i_userexit-modname ne 'Unknown'.
w_off = 0.
find '/' in i_userexit-pname match offset w_off.
if w_off = 0.
set parameter id 'RID' field i_userexit-pname.
call transaction 'SE38' and skip first screen.
else.
w_off = w_off + 1.
w_prog = i_userexit-pname+w_off.
set parameter id 'RID' field w_prog.
call transaction 'SE38' and skip first screen.
endif.
when others.
endcase.
Thank You,
Saritha -
Row Level Restrictions on DeskI Report not working under InfoView
When running/refreshing DesktopIntelligence XI r3 (Full Client) reports under InfoView, the row-level restrictions applied in the universe are not being included in the SQL (additional filtering is NOT happening). However, if a user creates a report using the same universe in WebIntelligence or if the user runs the same report in DesktopIntelligence, the row-level restrictions are working.
It strikes me that the problem has to do with security rights granted (or not granted), but I can't figure out which settings would allow the proper running of a DeskI report under InfoView.
Thanks for any assistance rendered!Mike,
Do people connect to Infoview and Deski using the same authentication method and the same username?
How does this compare to how your data restrictions are configured?
Are you using @Variable('BOUSER') restrictions? Have you taken domain into account e.g. "Domain\UserName" vs "UserName"?
Maybe you are looking for
-
Authentication : SSO & WWV_CUSTOM-F_ security-group _ app_id
Hi, In my application express application a user is authenticated by measn of single sign on. So when a user goes to 'http://myhost/pls/apex/f?p=101:1' he is redirected to the SSO server and when validated is redirected to 'http://myhost/pls/apex/f?p
-
Batch Determination at SO Level
Dear All, I have configured batch determination at SO level. The batch number auto appears. But, I have a problem where the system choose batch number which is already allocated to the shipping area deliveries. I am not sure whether it is the setting
-
Hi All, Can you please guide me how to go ahead and implement the schenario. A user will send SMS to a predefined number. XI receives the details and finally gets the data from R/3 and finally send as a sms to the user. I have searched forum and foun
-
How to use COMMIT and ROLLBACK in BAPIs
Hi experts, Can we use COMMIT or ROLLBACK in the BAPI just like how we implement it in the ABAP programming ?? If it is yes, Where can we exactly use normal COMMIT and where we use BAPI_TRANSACTION_COMMIT when we are implementing BAPIs ? Plea
-
Hello N. Gasparotto, I have written and tried the code. I got the desired result. Actually I have a form. That form has "slope" as label with the list of values: 0-2% 2-6% 10-15% 6-8% and so on. the code for that form is written in jsp which includes