Events in PSCD module for correspondance
Hi experts,
I am working on PSCD module and new to it. I need to write code to get additiona;l data from DFKKOP and DFKKKO table. I am using FMCAM2 AND FPCOPARA transactions for correspondance and printing respectively.
FMCAM2 - generate invoice
FPCOPARA - Correspondance printing
The events which I know that work in this are FFK_SAMPLE_706 and FF_SAMPLE_707. But when executing these transactions they events are not triggered.
It would be great if any one can help me on this and on how ot find the events releated to the transactions.
Do we have any documentation for the correspodance..on how it works..
Thanks a lot.
Govind Parmar
solved my self.
Similar Messages
-
Matrix certification for SAP PSCD module
Hello,
I would like to know if the SAP PSCD module is already certified to run on SLES (SUSE Linux Enterprise Server)?
Do you have a matrix of modules certified to run on SLES?
Best RegardsDear Francisco Martinez,
you should have a look to the <a href="http://service.sap.com/pam">Product Availability Matrix</a> at the SAP Service Marketplace. On the right pane, navigate to <i>SAP Industry-Specific Components</i> and then <i>SAP PUBLIC SECTOR PSCD</i>.
For example, when choosing <i>SAP PUBLIC SECTOR PSCD 4.72</i>, you will see, that PSCD is an addon for <i>SAP R/3 ENTERPRISE</i>. You now have to check, on which platforms <i>SAP R/3 ENTERPRISE</i> is certified.
On the right pane, navigate to <i>SAP Application Components</i> and then <i>SAP R/3 ENTERPRISE</i>. Choose your SAP R/3 Enterprise release and check on which database platforms it is released (If database is certified, the Application Server is certified as well. Because of this, you always have to check for the database platforms!).
Choose your database and check which operating systems are certified.
Best Regards
Hannes -
Dispatchig event from one module and listen it in an other module
Hi,
I would like to know if it's possible to dispatch event from module for example "M1" and listen this event to call the corresponding command but in an other module "M2". Knowing that M1 produces an swf "SWF1" and M2 produces an other swf "SWF2". For example :
In the view of a module M1, I should have this statement : CairngormEventDispatcher.getInstance().dispatchEvent(new MyClassEvent(parm));
know in module "M2" I would like to know how to recover this event and then executing command corresponding to this event.
If it's not clear enough I can explain it again.
I need really your help for the rest of my development.
Thank you in advance. :)
Ziad.Hi Ziad,
Sorry, but this forum is for discussing the future of cairngorm, not how to use it today.
I suggest you post your question on the FlexCoders mailing list or on the Cairngorm Documentation Group :
http://tech.groups.yahoo.com/group/cairngorm-documentation/
Thanks ;) -
Function module for F4 help download
HI Experts
What is the function module for F4 help download.
Thanks in advanceHi,
Function module is F4IF_FIELD_VALUE_REQUEST.
Use the Function moduel like this in this i create screen 100 by using se51.
REPORT zcl_f4_help.
TYPES: BEGIN OF values,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF values.
DATA: carrier(3) TYPE c,
connection(4) TYPE c.
DATA: progname TYPE sy-repid,
dynnum TYPE sy-dynnr,
dynpro_values TYPE TABLE OF dynpread,
field_value LIKE LINE OF dynpro_values,
values_tab TYPE TABLE OF values.
CALL SCREEN 100.
MODULE init OUTPUT.
progname = sy-repid.
dynnum = sy-dynnr.
CLEAR: field_value, dynpro_values.
field_value-fieldname = 'CARRIER'.
APPEND field_value TO dynpro_values.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE value_carrier INPUT.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'DEMOF4HELP'
fieldname = 'CARRIER1'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'CARRIER'.
ENDMODULE.
MODULE value_connection INPUT.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = progname
dynumb = dynnum
translate_to_upper = 'X'
TABLES
dynpfields = dynpro_values.
READ TABLE dynpro_values INDEX 1 INTO field_value.
SELECT carrid connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE values_tab
WHERE carrid = field_value-fieldvalue.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CONNID'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'CONNECTION'
value_org = 'S'
TABLES
value_tab = values_tab.
ENDMODULE.
you use this exaple code.
Plz Reward if Help,
Mahi. -
Function Module for search help Exit
How to create a function Module for search help exits?
please explain in details with step by step process.Hi,
How to create a function Module for search help exits?
function module for search help F4IF_SHLP_EXIT_EXAMPLE
dynamic search help use 'F4IF_INT_TABLE_VALUE_REQUEST'
please check out the link below it will help you
A repository object maintained in the ABAP Dictionary. It supplies input fields on Dynpros with single- or multi-column input helps. Search helps can be linked in the Dictionary with components from structures, data elements, and check tables. A search help enables you to search for entry values with assigned data, without you having to know the exact spelling of the value.
http://help.sap.com/saphelp_46c/helpdata/EN/cf/21ee52446011d189700000e8322d00/content.htm
please explain in details with step by step process.
create a search help exit:
1. create an fm with this interface:
*" TABLES
*" SHLP_TAB TYPE SHLP_DESCR_TAB_T
*" RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*" VALUE(SHLP) TYPE SHLP_DESCR_T
*" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
put this logic in it:
Delete duplicate filter logic.
This logic only needs to apply at the 'DISP' event - which is just
before the hit list is displayed
if callcontrol-step = 'DISP'.
delete adjacent duplicates from record_tab.
endif.
2. edit your search help in se11 and enter the name of the above search help exit fm
check this sample code..for dynamic search help
REPORT ZTEST_F4HELP .
*---Report with selection screen and to display the list of
possible entries for field 'B' as per the value in field 'A'.
parameters: p_vbeln type vbak-vbeln,
p_posnr type vbap-posnr.
at selection-screen on value-request for p_posnr.
data: begin of help_item occurs 0,
posnr type vbap-posnr,
matnr type vbap-matnr,
arktx type vbap-arktx,
end of help_item.
data: dynfields type table of dynpread with header line.
dynfields-fieldname = 'P_VBELN'.
append dynfields.
call function 'DYNP_VALUES_READ'
exporting
dyname = sy-cprog
dynumb = sy-dynnr
translate_to_upper = 'X'
tables
dynpfields = dynfields
exceptions
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
others = 11.
read table dynfields with key fieldname = 'P_VBELN'.
p_vbeln = dynfields-fieldvalue.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = p_vbeln
importing
output = p_vbeln.
select posnr matnr arktx into table help_item
from vbap
where vbeln = p_vbeln.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'POSNR'
dynprofield = 'P_POSNR'
dynpprog = sy-cprog
dynpnr = sy-dynnr
value_org = 'S'
tables
value_tab = help_item.
also check this link it will help you
/message/3854825#3854825 [original link is broken]
*********please reward points if the information is helpful to you************* -
Any function module for validation
Hi,
I am new to ABAP.
Can any body tell me whether there is any built in function module for
field validation.
Thanks in advance
ArchanaHi,
u can validate the field values using at selectiion-screen
AT SELECTION-SCREEN
When user enters the values in the fields of selection screen and clicks on execute button, this event gets triggered. This event is basically for checking the values entered by the user for the fields of the selection screen i.e., data validity checking. This event is for entire selection screen. For example:
You are accepting carrid, connid, fldate from user and you dont want to proceed if user enters no value for carrid and fldate. Using AT SELECTION-SCREEN can do this.
Select-options: carrid1 for sflight-carrid,
Connid1 for sflight-connid,
F1date1 for sflight-f1date.
AT SELECTION-SCREEN.
If carrid1-low ne and fldate1-low = .
Error message.
Endif.
In this case, if both the fields are entered blank, then the user gets error message.
Basically, this event is for many fields on selection screen. Usually, it is for the fields which are logically related.
AT SELECTION-SCREEN ON <field>
When you want to check for specific value of a field. For example, carrid should be in the range of LH and SQ. This can be done in this event. Basically, this event is for checking individual fields. You can have many AT selection-screen events in your program (i.e., for each field specified in the Select-Options).
Select-Options carrid1 for sflight-carrid.
AT SELECTION-SCREEN.
If carrid1-low ne LH and carrid1-high ne SQ.
Error message.
Endif.
Here the system will not proceed on entering wrong values.
Regards,
Sruthi -
Generic function module for delta - which FM ?
Hi all,
I want to create a custom generic datasource in R3 which uses a function module for delta extraction. This is straight forward for full extract (copy FM RSAX_BIW_GET_DATA_SIMPLE - I already did this and have a full extraction working to BW). However I need to extract delta - and the above function module does not have example code for that (I have seen some forum posts that it 'can' be used - but this looks like a pseudo get around where the delta field name is passed in I_T_SELECT).
FM RSVD_BW_GET_DELTA_DATA seems to be an example code of a FM which can allow delta (i.e. manually codes how to fill date/time stamp information). However when I code this and try test in RSA3 it seems to try to populate the delta selection field before calling my function module! I need it to call my function and allow the function to specifiy the date criteria.
Can anyone help with an example of how this should best be done ?
Or can it only be done in a pseudo form using 'RSAX_BIW_GET_DATA_SIMPLE' example FM.
Note: I have setup the RSO2 datasource to allow delta.
Also - I have spent several hours searching the forum - but please answer with a link if you think it does answer exactly this problem.
Thanks for any help
MartinHi again,
Have had a few requests for the code I used - I created a new custom function copied from 'RSAX_BIW_GET_DATA_SIMPLE'. AEDAT has been set as the delta date for this data source in transaction RSO2.
Main sample code is -
1. Code to receive selection criteria and store in internal ranges -
FUNCTION zbw_sodetail_get_detail.
""Global interface:
*" IMPORTING
*" VALUE(I_REQUNR) TYPE SRSC_S_IF_SIMPLE-REQUNR
*" VALUE(I_DSOURCE) TYPE SRSC_S_IF_SIMPLE-DSOURCE
*" VALUE(I_MAXSIZE) TYPE SRSC_S_IF_SIMPLE-MAXSIZE
*" VALUE(I_INITFLAG) TYPE SRSC_S_IF_SIMPLE-INITFLAG
*" VALUE(I_READ_ONLY) TYPE SRSC_S_IF_SIMPLE-READONLY
*" TABLES
*" I_T_SELECT TYPE SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
*" I_T_FIELDS TYPE SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
*" E_T_DATA STRUCTURE ZBW_SODETAIL OPTIONAL
*--- Sales order item create date
LOOP AT i_t_select INTO l_s_select WHERE fieldnm = 'ERDAT'.
MOVE-CORRESPONDING l_s_select TO r_erdat.
APPEND r_erdat.
ENDLOOP.
*--- Sales order item change date - DELTA only - auto filled before
this function is called.
C (Initialise Delta) - Low = blank, High = today - safety limit
D (Delta) - low = , High = . *from roosgendlm
LOOP AT i_t_select INTO l_s_select WHERE fieldnm = 'AEDAT'.
MOVE-CORRESPONDING l_s_select TO r_aedat.
APPEND r_aedat.
ENDLOOP.
2. Code to use selection criteria to get initial or delta. Note that for delta the delta date field to be used is automatically populated with the date of the last delta run (from table roosgendlm) -
SELECT VBAK~KNUMV
VBAPVBELN VBAPPOSNR VBAPMATNR VBAPARKTX VBAP~SPART
VBAPWERKS VBAPERDAT VBAPAEDAT VBAPNETWR VBAP~WAERK
VBAPABGRU VBAPZPROMISE VBAP~CUOBJ
VBEP~EDATU
INTO CORRESPONDING FIELDS OF TABLE ZBW_SODETAIL_ITAB
FROM VBAK JOIN VBAP ON VBAKVBELN = VBAPVBELN
JOIN VBEP ON VBAPVBELN = VBEPVBELN
AND VBAPPOSNR = VBEPPOSNR
WHERE VBAP~VBELN IN R_VBELN "Order number
AND VBAP~POSNR IN R_POSNR "Order item number
AND VBAP~ERDAT IN R_ERDAT "Order item date created
AND ( VBAP~ERDAT IN R_AEDAT OR "Created date in Delta range
VBAP~AEDAT IN R_AEDAT OR "Order item change Delta range
VBAK~AEDAT IN R_AEDAT ). "Order header change Delta range
Note that if the data source is called in initial or full extract mode the delta change date (aedat) will automatically be blank.
I have been using this successfully.
I hope this helps
Martin. -
Function module for assigned wage types
Hi experts,
We need wage type wise count and sum of the amount for each wage type defined in infotype '0008' for the given from and to dates. Is there any function module available for the same.
Please suggest.
Regards,
Kaustubh Kabre.Hi,
<li>I do not look for function module for this case as i know that we can or have to read wage types and corresponding amount in the program. LDB PNP should be given in program attributes.
REPORT RPABAP06.
TABLES:PERNR.
INFOTYPES:0008.
DATA: BEGIN OF WAGETYPES,
LGA LIKE P0008-LGA01,
BET LIKE P0008-BET01,
ANZ LIKE P0008-ANZ01,
EIN LIKE P0008-EIN01,
OPK LIKE P0008-OPK01,
END OF WAGETYPES.
DATA:total type P0008-BET01.
GET PERNR.
RP_PROVIDE_FROM_LAST P0008 SPACE PN-BEGDA PN-ENDDA.
DO 20 TIMES VARYING WAGETYPES-LGA FROM P0008-LGA01 NEXT P0008-LGA02
VARYING WAGETYPES-BET FROM P0008-BET01 NEXT P0008-BET02.
IF WAGETYPES-LGA IS INITIAL.
EXIT.
ELSE.
TOTAL = TOTAL + WAGETYPES-BET.
WRITE: / WAGETYPES-LGA, WAGETYPES-BET.
ENDIF.
ENDDO.
WRITE TOTAL.
Thanks
Venkat.O -
Menubar load modules for each sub-menu
I am creating an application using the MENUBAR but cannot get a module to open when a sub-menu is clicked. I have stripped my app down to bare bones to eliminate other factors. The menubar has several main options, such as, Button1, Button2, Button3 and then each has a sub-menu dropdown. If Button1 has Button1Sub1 and Button1Sub2 dropdowns I want to have a different module launch when either of the sub-menus are clicked.
I have been successful in using ModuleManager to open a particular module referencing the creationComplete="moduleLoadHandler()" but not by selecting a menu item from the menubar. My application needs to be as user-friendly and Windows-like as possible. There are many different modules which need to be loaded and unloaded.
I have attached a screenshot image of my project tree and circled the ActionModule.swf file to show its location.
I have attached my code below:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="creationHandler();" >
<mx:Script>
<![CDATA[
import mx.controls.menuClasses.IMenuBarItemRenderer;
import mx.controls.MenuBar;
import mx.controls.menuClasses.MenuBarItem;
import mx.controls.Alert;
import mx.modules.Module;
import mx.events.ModuleEvent;
import mx.modules.ModuleManager;
import mx.modules.IModuleInfo;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.events.FlexEvent;
import mx.events.MenuEvent;
import mx.collections.*;
public var _moduleInfo:IModuleInfo;
[Bindable]
public var menuBarCollection:XMLListCollection;
private var menubarXML:XMLList =
<>
<menuitem label="Menu1" data="top">
<menuitem label="MenuItem 1-A" data="1A" itemClick="moduleLoadHandler()"/>
<menuitem label="MenuItem 1-B" data="1B"/>
</menuitem>
<menuitem label="Menu2" data="top">
<menuitem label="MenuItem 2-A" type="check" data="2A"/>
<menuitem type="separator"/>
<menuitem label="MenuItem 2-B" >
<menuitem label="SubMenuItem 3-A" type="radio"
groupName="one" data="3A"/>
<menuitem label="SubMenuItem 3-B" type="radio"
groupName="one" data="3B"/>
</menuitem>
</menuitem>
<menuitem label="Menu3" data="top">
<menuitem label="MenuItem 3-A" data="3A"/>
<menuitem label="MenuItem 3-B" data="3B"/>
</menuitem>
<menuitem label="Menu4" data="top">
<menuitem label="MenuItem 4-A" data="4A"/>
<menuitem label="MenuItem 4-B" data="4B"/>
</menuitem>
</>;
private function creationHandler():void{
menuBarCollection = new XMLListCollection(menubarXML);
private function moduleLoadHandler(event:ModuleEvent ):void{
canvas.addChild( _moduleInfo.factory.create() as Module );
_moduleInfo = ModuleManager.getModule('ActionModule.swf');
_moduleInfo.addEventListener(ModuleEvent.READY, moduleLoadHandler);
_moduleInfo.load();
// Event handler for the MenuBar control's itemClick event.
private function menuHandler(event:MenuEvent):void {
// Don't open the Alert for a menu bar item that
// opens a popup submenu.
//if (event.item.@data != "top") {
// Alert.show("Label: " + event.item.@label + "\n" +
// "Data: " + event.item.@data, "Clicked menu item");
private function onTopSelection(event:MenuEvent):void{
var mb:MenuBar=event.target as MenuBar;
var selectedIndex:int=mb.selectedIndex;
for (var i:int=0;i<mb.menuBarItems.length;i++){
if(i==selectedIndex){
(mb.menuBarItems[i] as MenuBarItem).setStyle("fontWeight","bold");
else{
(mb.menuBarItems[i] as MenuBarItem).setStyle("fontWeight","normal");
]]>
</mx:Script>
<mx:Canvas id="canvas" height="75%" width="75%"
paddingTop="10" paddingLeft="10">
<mx:MenuBar labelField="@label" itemClick="menuHandler(event);" dataProvider="{menuBarCollection}" change="onTopSelection(event)" />
</mx:Canvas>
</mx:Application>Hi,
I am also doing the same way, but ended up with some issues.
I have a Main Application with a menu Bar on Top and Rest of the area occupied by a ModuleLoader.
First I set the URL to login module, on successful login I initialize my menu Bar based on User role and load a new module, it contains only a SuperTabNavigator.
On click of an item in my Application Menu, I add a Custom Componenet built on Canvas (Named MyCanMod , this contains a Module loader and a progress bar in it , I have attached the code) as a tab to the tab navigator.
On menu item click, I take the data of my menu item and set that as the URL of my Module Loader inside the Custom canvas. Then it is added as a tab to my tab navigator.
private function openItem(event:MenuEvent):void
var myModule:MyCanMod = new MyCanMod(); tabNav.addChild(myModule);
tabNav.selectedChild = myModule;
myModule.label = event.item.@label;
myModule.icon = document_icon;
myModule.urlParam = event.item.@module;
urlParam is a bined to the module Loader url in my Custom componenet.
All works fine. I am not unloading any modules and all the module loader are set to current domain.
When the user logs out and logs back with out refreshing the browser I get Type Error or some time null Object error and it is random. If I refresh the browser and login back, every thing is fine.
I do have reference for IDragManager,HistoryManager,PopUpManager,RemoteObject in main application.
I am not concerned about unloading modules now, but then on Tab close event I unloaded the module, and that did not solve the problem.
I get an error like
TypeError: Error #1034: Type Coercion failed: cannot convert flexlib.controls::PromptingTextInput@6152a851 to flexlib.controls.PromptingTextInput.
at mx.core::UIComponent/createReferenceOnParentDocument()
at mx.core::Container/createComponentFromDescriptor()
at mx.core::Container/createComponentsFromDescriptors()
at mx.core::Container/createChildren()
at mx.core::UIComponent/initialize()
at mx.core::Container/initialize()
at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()
at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::childAdded()
at mx.core::Container/addChildAt()
at mx.core::Container/addChild()
Any help is appreciated; I am really struck with it, please help. -
Cannot load underlying module for 'Darwin'
I had to move my "Developer" account from some external drive to the internal drive of my Mac.
For this I zipped the users folder, copied to the internal "users" drive and unzipped it there.
Then I changed the users folder in the users settings. I also updated the permissions on the user "Developer" folder,
allowing admins "R&W", the user "R&W" (+ setting it as owner) and everyone else no permissions.
I was able to login to the new home dir. I opened my old Xcode project (that was updated automatically in some fashion).
But when I compile it I get the error "cannot load underlying module for 'Darwin'"
=> What went wrong ?
Btw:
I already removed Xcode, downloaded it again and placed it into the programs folder - same issue ... :-)Here is the stack trace:
<unknown>:0: error: cannot load underlying module for 'Darwin'
0 swift 0x00000001025fe968 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x00000001025fee54 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff828c1f1a _sigtramp + 26
3 libsystem_platform.dylib 0x0000000000000028 _sigtramp + 2104746280
4 swift 0x0000000101b63588 swift::ModuleFile::getType(swift::Fixnum<31u, unsigned int>) + 856
5 swift 0x0000000101b6936b swift::ModuleFile::getDecl(swift::Fixnum<31u, unsigned int>, swift::Optional<swift::DeclContext*>) + 16027
6 swift 0x0000000101b81671 swift::ModuleFile::loadExtensions(swift::NominalTypeDecl*) + 385
7 swift 0x0000000101bbbd01 swift::SerializedModuleLoader::loadExtensions(swift::NominalTypeDecl*, unsigned int) + 49
8 swift 0x00000001029683af swift::ASTContext::loadExtensions(swift::NominalTypeDecl*, unsigned int) + 63
9 swift 0x00000001029c5339 swift::NominalTypeDecl::getExtensions() + 73
10 swift 0x00000001029ec9e6 swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 22
11 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
12 swift 0x0000000101c1123f (anonymous namespace)::SwiftDeclConverter::recordObjCOverride(swift::AbstractFunctionDecl* ) + 191
13 swift 0x0000000101c047ab (anonymous namespace)::SwiftDeclConverter::VisitObjCMethodDecl(clang::ObjCMethodDecl const*, swift::DeclContext*, bool) + 2299
14 swift 0x0000000101bfffb4 clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3076
15 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
16 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
17 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
18 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
19 swift 0x00000001029c313c swift::NominalTypeDecl::getMembers(bool) const + 28
20 swift 0x00000001029eca1f swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 79
21 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
22 swift 0x0000000101c04b17 (anonymous namespace)::SwiftDeclConverter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl const*, swift::DeclContext*) + 183
23 swift 0x0000000101bfffea clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3130
24 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
25 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
26 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
27 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
28 swift 0x00000001029c35f5 swift::ExtensionDecl::getMembers(bool) const + 21
29 swift 0x00000001029ec9fd swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 45
30 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
31 swift 0x0000000101c04b17 (anonymous namespace)::SwiftDeclConverter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl const*, swift::DeclContext*) + 183
32 swift 0x0000000101bfffea clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3130
33 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
34 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
35 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
36 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
37 swift 0x00000001029c35f5 swift::ExtensionDecl::getMembers(bool) const + 21
38 swift 0x00000001029ec9fd swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 45
39 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
40 swift 0x0000000101c04b17 (anonymous namespace)::SwiftDeclConverter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl const*, swift::DeclContext*) + 183
41 swift 0x0000000101bfffea clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3130
42 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
43 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
44 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
45 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
46 swift 0x00000001029c35f5 swift::ExtensionDecl::getMembers(bool) const + 21
47 swift 0x00000001029ec9fd swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 45
48 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
49 swift 0x0000000101c1123f (anonymous namespace)::SwiftDeclConverter::recordObjCOverride(swift::AbstractFunctionDecl* ) + 191
50 swift 0x0000000101c047ab (anonymous namespace)::SwiftDeclConverter::VisitObjCMethodDecl(clang::ObjCMethodDecl const*, swift::DeclContext*, bool) + 2299
51 swift 0x0000000101bfffb4 clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3076
52 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
53 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
54 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
55 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
56 swift 0x00000001029c35f5 swift::ExtensionDecl::getMembers(bool) const + 21
57 swift 0x00000001029ec9fd swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 45
58 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
59 swift 0x0000000101c04b17 (anonymous namespace)::SwiftDeclConverter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl const*, swift::DeclContext*) + 183
60 swift 0x0000000101bfffea clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3130
61 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
62 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
63 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
64 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
65 swift 0x00000001029c35f5 swift::ExtensionDecl::getMembers(bool) const + 21
66 swift 0x00000001029ec9fd swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 45
67 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
68 swift 0x0000000101c04b17 (anonymous namespace)::SwiftDeclConverter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl const*, swift::DeclContext*) + 183
69 swift 0x0000000101bfffea clang::declvisitor::Base<clang::declvisitor::make_const_ptr, (anonymous namespace)::SwiftDeclConverter, swift::Decl*>::Visit(clang::Decl const*) + 3130
70 swift 0x0000000101bff37c swift::ClangImporter::Implementation::importDeclImpl(clang::NamedDecl const*, bool&, bool&) + 316
71 swift 0x0000000101c03ad2 swift::ClangImporter::Implementation::importDeclAndCacheImpl(clang::NamedDecl const*, bool) + 226
72 swift 0x0000000101c07d3e swift::ClangImporter::Implementation::loadAllMembers(swift::Decl const*, unsigned long long, bool*) + 1486
73 swift 0x00000001029ccb56 swift::IterableDeclContext::loadAllMembers() const + 102
74 swift 0x00000001029c35f5 swift::ExtensionDecl::getMembers(bool) const + 21
75 swift 0x00000001029ec9fd swift::NominalTypeDecl::lookupDirect(swift::DeclName) + 45
76 swift 0x00000001029eae8a swift::DeclContext::lookupQualified(swift::Type, swift::DeclName, unsigned int, swift::LazyResolver*, llvm::SmallVectorImpl<swift::ValueDecl*>&) const + 3178
77 swift 0x00000001028ebd20 swift::TypeChecker::lookupMember(swift::Type, swift::DeclName, swift::DeclContext*, bool) + 112
78 swift 0x00000001028ec3c2 swift::TypeChecker::lookupConstructors(swift::Type, swift::DeclContext*) + 34
79 swift 0x00000001028c965a swift::TypeChecker::addImplicitConstructors(swift::NominalTypeDecl*, llvm::SmallVectorImpl<swift::Decl*>&) + 1050
80 swift 0x00000001028c253d swift::TypeChecker::checkInheritanceClause(swift::Decl*, swift::DeclContext*, swift::GenericTypeResolver*) + 5213
81 swift 0x00000001028c459f swift::TypeChecker::validateDecl(swift::ValueDecl*, bool) + 1631
82 swift 0x00000001028d2ebf swift::ASTVisitor<(anonymous namespace)::DeclChecker, void, void, void, void, void, void>::visit(swift::Decl*) + 2287
83 swift 0x00000001028c3f0b swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) + 123
84 swift 0x00000001028aa1d8 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, unsigned int) + 1384
85 swift 0x0000000101bdf5dd swift::CompilerInstance::performSema() + 2381
86 swift 0x0000000101944788 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 2008
87 swift 0x000000010194286d main + 1677
88 libdyld.dylib 0x00007fff849515c9 start + 1
Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ usr/bin/swift -frontend -c /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/Speaker.swift -primary-file /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/EventViewController.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeechTableViewCell.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeechDAO.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeechTableViewController .swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/BaseViewController.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/MyCoreDataUtil.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeakerViewController.swi ft /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeakerExtension.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/MyGraficsUtil.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeakerDAO.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/Speech.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeechViewController.swif t /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/AppDelegate.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/EventDAO.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeakerTableViewCell.swif t /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/Event.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/EventTableViewController. swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/BaseTableViewController.s wift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/EventExtension.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/AppDelegate2.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/EventTableViewCell.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeechExtention.swift /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/SpeakerTableViewControlle r.swift -target x86_64-apple-ios7.1 -target-cpu core2 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/D eveloper/SDKs/iPhoneSimulator8.2.sdk -I /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Products/Debug-iphonesimulator -F /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Products/Debug-iphonesimulator -g -import-objc-header /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/MyEvent-Bridging-Header.h -module-cache-path /Users/developer/Library/Developer/Xcode/DerivedData/ModuleCache -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfi sevremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.bui ld/swift-overrides.hmap -Xcc -iquote -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /MyEvent-generated-files.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfi sevremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.bui ld/MyEvent-own-target-headers.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfi sevremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.bui ld/MyEvent-all-target-headers.hmap -Xcc -iquote -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /MyEvent-project-headers.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfi sevremphydfg/Build/Products/Debug-iphonesimulator/include -Xcc -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchai n/usr/include -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfi sevremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.bui ld/DerivedSources/x86_64 -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfi sevremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.bui ld/DerivedSources -Xcc -DDEBUG=1 -emit-module-doc-path /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /Objects-normal/x86_64/EventViewController~partial.swiftdoc -Onone -module-name MyEvent -emit-module-path /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /Objects-normal/x86_64/EventViewController~partial.swiftmodule -serialize-diagnostics-path /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /Objects-normal/x86_64/EventViewController.dia -emit-dependencies-path /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /Objects-normal/x86_64/EventViewController.d -o /Users/developer/Library/Developer/Xcode/DerivedData/MyEvent-duznkkgndabyibfise vremphydfg/Build/Intermediates/MyEvent.build/Debug-iphonesimulator/MyEvent.build /Objects-normal/x86_64/EventViewController.o
1. While type-checking 'EventViewController' at /Users/developer/_CloudStation/Work2/MyEvent5/MyEvent/EventViewController.swift :11:1
2. While reading from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ usr/lib/swift/iphonesimulator/Foundation.swiftmodule
3. While deserializing decl #105 (EXTENSION_DECL) -
Is their any function module for deleting condition record i am trying
Hi Experts,
Is their any function module for deleting condition record i am trying this way.......
DATA: TABLE (4) TYPE C.
DATA: KNUM LIKE KONH-KNUMH
DATA: K_VEWE LIKE T681-KVEWE VALUE 'A'.
DATA: T681_STR LIKE T681.
DATA: LV_NUM TYPE I.
GET PARAMETERS
PARAMETERS: TABNO LIKE T681-KOTABNR.
PARAMETERS: TESTMODE DEFAULT 'X' AS CHECKBOX.
REFRESH INT_KNUMH.
Select single * from T681 into T681_STR
where kvewe = K_VEWE AND
KOTABNR = TABNO.
IF SY-SUBRC NE 0.
WRITE: / 'No entry in T681 for number ', TABNO.
WRITE: / 'Check whether corresponding condition table exists.'.
EXIT.
ENDIF.
TABLE = T681_STR-KOTAB.
SELECT KNUMH FROM (TABLE) INTO KNUM.
SELECT SINGLE * FROM KONH WHERE KNUMH = KNUM.
IF SY-SUBRC NE 0.
INT_KNUMH-KNUMH = KNUM.
COLLECT INT_KNUMH.
ENDIF.
ENDSELECT.
DESCRIBE TABLE INT_KNUMH LINES LV_NUM.
IF LV_NUM EQ 0.
WRITE: / 'No inconsistent entries found.'.
WRITE: / 'Each record in the condition table has a corresponding.'.
WRITE: / 'entry in the KONH table.'.
EXIT.
ENDIF.
LOOP AT INT_KNUMH.
IF TESTMODE IS INITIAL.
DELETE FROM (TABLE) WHERE
KNUMH = INT_KNUMH-KNUMH.
IF SY-SUBRC = 0.
WRITE: / 'KNUMH =', INT_KNUMH-KNUMH(10), ' deleted from table ' ,TABLE.
ELSE.
WRITE: / 'DELETE: SY-SUBRC is', SY-SUBRC , ' FOR KNUMH = ' .
WRITE: INT_KNUMH-KNUMH(10).
ENDIF.
ELSE.
WRITE: / 'TESTRUN: KNUMH =', INT_KNUMH-KNUMH(10).
ENDIF.
ENDLOOP.
is their any Standerd Function module for comparing tables if the condition record not exist in it has to exit if it is their then compare those two tables if not exist in one table also that has to be delete the condition record
Please let me know .....Hi,
You can use Function module PRICING_CHECK to check condition record. Do a where-used list on it to see how to call it.
Regards
Kiran Sure -
Custom login module for EP7.4 with Captcha
Hi
I am trying to create a custom login module which validates the captcha shown at the login screen using SAP help link:
http://help.sap.com/saphelp_nw73/helpdata/en/48/ff4faf222b3697e10000000a42189b/content.htm?frameset=/en/48/fcea4f62944e88e10000000a421937/frameset.htm¤t_toc=/en/74/8ff534d56846e2abc61fe5612927bf/plain.htm&node_id=20
The session is being set in the Captcha servlet which is used to render the image on the login page.
However when I am trying to compare it with input or print the session value, its throwing an exception.
I checked in the NWA logs and it just shows the following error message:
6. com.temp.loginModule.MyLoginModuleClass OPTIONAL ok exception true Authentication did not succeed.
Please help me analyse the error stack. Can someone point where do i check the detailed logs to trace the issue?
Please find below source of my login module.
package com.temp.loginModule;
import java.io.IOException;
import java.util.Map;
import javax.security.auth.login.LoginException;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import nl.captcha.Captcha;
import com.sap.engine.interfaces.security.auth.AbstractLoginModule;
import com.sap.engine.lib.security.http.HttpGetterCallback;
import com.sap.engine.lib.security.http.HttpCallback;
import com.sap.engine.lib.security.LoginExceptionDetails;
import com.sap.engine.lib.security.Principal;
public class MyLoginModuleClass extends AbstractLoginModule{
private CallbackHandler callbackHandler = null;
private Subject subject = null;
private Map sharedState = null;
private Map options = null;
// This is the name of the user you have created on
// the AS Java so you can test the login module
private String userName = null;
private boolean successful;
private boolean nameSet;
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
// This is the only required step for the method
super.initialize(subject, callbackHandler, sharedState, options);
// Initializing the values of the variables
this.callbackHandler = callbackHandler;
this.subject = subject;
this.sharedState = sharedState;
this.options = options;
this.successful = false;
this.nameSet = false;
* Retrieves the user credentials and checks them. This is
* the first part of the authentication process.
public boolean login() throws LoginException {
// HttpGetterCallback httpGetterCallback = new HttpGetterCallback();
// httpGetterCallback.setType(HttpCallback.REQUEST_PARAMETER);
// httpGetterCallback.setName("captchaInput");
String value = null;
// try {
// callbackHandler.handle(new Callback[] { httpGetterCallback });
// String[] arrayRequestparam = (String[]) httpGetterCallback.getValue();
// if(arrayRequestparam!=null && arrayRequestparam.length>0)
// value = arrayRequestparam[0];
// } catch (UnsupportedCallbackException e) {
// throwNewLoginException("An error occurred while trying to validate credentials.");
// } catch (IOException e) {
// throwUserLoginException(e, LoginExceptionDetails.IO_EXCEPTION);
value = getRequestValue("captchaInput");
userName = getRequestValue("j_username");
HttpGetterCallback httpGetterCallbackSessionCaptcha = new HttpGetterCallback();
httpGetterCallbackSessionCaptcha.setType(HttpCallback.SESSION_ATTRIBUTE);
httpGetterCallbackSessionCaptcha.setName("myCaptchaLogin");
try {
callbackHandler.handle(new Callback[] { httpGetterCallbackSessionCaptcha });
Captcha arraySessionParam = (Captcha) httpGetterCallbackSessionCaptcha.getValue();
// System.out.println("****************************************************httpGetterCallbackSessionCaptcha" + (arraySessionParam==null?"null session":arraySessionParam.getAnswer())+
// "\n captchaInput" + value+"*********************");
if(arraySessionParam==null || !arraySessionParam.isCorrect(value)){
throwNewLoginException("Entered code does not match with the image code.Session:"+(arraySessionParam==null?"null":arraySessionParam.getAnswer())+" Param:"+ value);
// throwUserLoginException(new Exception("Entered code does not match with the image code."));
httpGetterCallbackSessionCaptcha.setValue(null);
} catch (UnsupportedCallbackException e) {
throwNewLoginException("An error occurred while trying to validate credentials.");
} catch (IOException e) {
throwUserLoginException(e, LoginExceptionDetails.IO_EXCEPTION);
// Retrieve the user credentials via the callback
// handler.
// In this case we get the user name from the HTTP
// NameCallback.
// NameCallback nameCallback = new NameCallback("User name: ");
/* The type and the name specify which part of the HTTP request
* should be retrieved. For Web container authentication, the
* supported types are defined in the interface
* com.sap.engine.lib.security.http.HttpCallback.
* For programmatical authentication with custom callback
* handler the supported types depend on the used callback handler.
// try {
// callbackHandler.handle(new Callback[] {nameCallback});
// catch (UnsupportedCallbackException e) {
// return false;
// catch (IOException e) {
// throwUserLoginException(e, LoginExceptionDetails.IO_EXCEPTION);
// userName = nameCallback.getName();
// if( userName == null || userName.length() == 0 ) {
// return false;
/* When you know the user name, update the user information
* using data from the persistence. The operation must
* be done before the user credentials checks. This method also
* checks the user name so that if a user with that name does not
* exist in the active user store, a
* java.lang.SecurityException is thrown.
// try {
// refreshUserInfo(userName);
// } catch (SecurityException e) {
// throwUserLoginException(e);
/* Checks if the given user name starts with the specified
* prefix in the login module options. If no prefix is specified,
* then all users are trusted.
// String prefix = (String) options.get("user_name_prefix");
// if ((prefix != null) && !userName.startsWith(prefix)) {
// throwNewLoginException("The user is not trusted.");
/* This is done if the authentication of the login module is
* successful.
* Only one and exactly one login module from the stack must put
* the user name in the shared state. This user name represents
* the authenticated user.
* For example if the login attempt is successful, method
* getRemoteUser() of
* the HTTP request will retrieve exactly this name.
if (sharedState.get(AbstractLoginModule.NAME) == null) {
sharedState.put(AbstractLoginModule.NAME, userName);
nameSet = true;
successful = true;
return true;
* Commit the login. This is the second part of the authentication
* process.
* If a user name has been stored by the login() method,
* the user name is added to the subject as a new principal.
public boolean commit() throws LoginException {
if (successful) {
/* The principals that are added to the subject should
* implement java.security.Principal.You can use the class
* com.sap.engine.lib.security.Principal for this purpose.
Principal principal = new Principal(userName);
subject.getPrincipals().add(principal);
/* If the login is successful, then the principal corresponding
* to the <userName> (the same user name that has been added
* to the subject) must be added in the shared state too.
* This principal is considered to be the main principal
* representing the user.
* For example, this principal will be retrieved from method
* getUserPrincipal() of the HTTP request.
if (nameSet) {
sharedState.put(AbstractLoginModule.PRINCIPAL, principal);
} else {
userName = null;
return true;
* Abort the authentication process.
public boolean abort() throws LoginException {
if (successful) {
userName = null;
successful = false;
return true;
* Log out the user. Also removes the principals and
* destroys or removes the credentials that were associated
* with the user during the commit phase.
public boolean logout() throws LoginException {
// Remove principals and credentials from subject
if (successful) {
subject.getPrincipals(Principal.class).clear();
successful = false;
return true;
private String getRequestValue(String parameterName)
throws LoginException {
HttpGetterCallback httpGetterCallback = new HttpGetterCallback();
httpGetterCallback.setType(HttpCallback.REQUEST_PARAMETER);
httpGetterCallback.setName(parameterName);
String value = null;
try {
callbackHandler.handle(new Callback[] { httpGetterCallback });
String[] arrayRequestparam = (String[]) httpGetterCallback.getValue();
value = arrayRequestparam[0];
} catch (UnsupportedCallbackException e) {
return null;
} catch (IOException e) {
throwUserLoginException(e, LoginExceptionDetails.IO_EXCEPTION);
return value;
Regards
Ramanender SinghRamanender,
JAAS modules usually requires a restart whenever you need to change them. So be very careful with what you expect once you re-deploy your code.
Once the library is loaded it will never reload itself until you perform a restart of the VM.
Connect to the debug port may help, but basic debugging will not take you too far either.
I would recommend you to use the log tracing facility on your code. Just enter the following class attribute:
import com.sap.tc.logging.Location;
private static final Location trace = Location.getLocation(<your_classname_here>.class);
trace.warningT("Some Warning Text Here..." + variable here);
trace.debugT("Some Warning Text Here..." + variable here);
You may need to go NWA and set the Location Severity Level to Debug according to your needs.
Leave the trace code on your module for IT personnel to debug it if necessary. Don't forget to have the severity level of your code properly set.
Meaning: You don't want to have every trace message your module sills out with warningT() or infoT().
There is a excellent blog here on how this works
Then you will be able to inspect some variable contents while the callbackhandler is being executed.
Pay special attention with the timing - variables have a lifetime when dealing with login modules.
Use the entering(<method_name>) and exiting(<method_name> just ot make sure where in the code the variable should be populated and when.
BR,
Ivan -
Merge modules for Business Objects XI service pack 4
I am in the process of developing a deployment package in Installshield 2009 - Basic MSI Project. I tried adding the merge modules I downloaded earlier from the web page, http://support.businessobjects.com/downloads/runtime.asp
Currently I do not see this web page. It would be nice if you could tell me whether do we have a merge module for Crystal Reports XI service pack 4. If we have where from i can download them. Thank youThanks a lot for the immediate response. However, I am not using the crystal reports Version, R2 release.
I had actually installed Business Object XI and applied service pack 4 on it. I checked the version in Help->About. It is 11.0.0.
Also my environment is XP Sp2, Visual studio 2003 and Visual studio 6.0. I understand that R2 release is needed if the environment is Visual Studio 2005.
I would like to give a clear picture of the issue I work through.
After deploying the software in the client machine, I came to know that when client tried to print the embedded crystal report (.dsr file) from CrViewer,
1. Page set-up dialog bog gets displayed.
2. After clicking 'OK' button in the page set-up dialog box, nothing happens. It is suppose to bring print dialog.
I simulated this in my development machine (confirmed that Print dialog is is not getting displayed when 'OK' button is clicked from 'Page setup' dialog)
I researched and found out from some web page that if Business Objects XI is updated to Service pack 4, this issue gets resolved
So i applied service pack 4 in my dev. machine and tested the functionality by clicking 'OK' button. This issue is no more.
Next logical step is to propagate the sp4 changes to the installer. I searched for the merge modules corresponding to Business Objects XI - service pack 4. I could not locate it now.
I searched my backup folder, I located some previously downloaded merge modules downloaded from the web page, http://support.businessobjects.com/downloads/runtime.asp
I tried to include these merge modules and received an error message "Internal build error" . My research revealed that inclusion of the merge module, CrystalReports11_RDC_Reportengine.msm (43,306 Kb, 7/4/2007) throws "Internal build error" during compilation of MSI project in Installshield 2009.
Any idea, tips and help to resolve the issue would be appreciated. Thank you. -
Need a Pegging module for dependent requirements.
Hi
Need a Pegging functional module for dependent requirements.
There is MD_PEGGING_NODIALOG ,where we need to pass the planned order number.
Please advise how to get the pegged requirements for dependent requirements or other MRP elements other than planned order.
Thanks
PrasadHello,
Function module MD_PEGGING_NODIALOG works with data structures of MRP list or current requirements/stock list. For a given material, you first need to fetch the relevant structures by the help of following FMs; BAPI_MATERIAL_MRP_LIST and BAPI_MATERIAL_STOCK_REQ_LIST. You can loop at the structures exported by these FMs and run MD_PEGGING_NODIALOG with the corresponding parameters of the MRP element you require. You can run MD_PEGGING_NODIALOG with any MRP element you like as in MD04 and MD05 transactions.
Regards. -
Need separate duplicate JMS modules for each server?
Using WebLogic 9.2.2 on AIX 5.3.
I'm trying to set up a domain with 6 managed servers. I need to deploy several JMS queues and a foreign server to each JMSServer on each server. I looked at the JMSModule object, and I'm trying to determine whether it's possible to define a single JMSModule that I can deploy to all of my servers. So far, this doesn't appear to be possible. As a result, I have to do tons of painful cut/paste inside the console. Is this how it's supposed to work?David,
Sorry, if I was not clear earlier.
A Module can be targeted to a single Cluster, one or more comma separated list of WLS servers and the servers don't have to be part of a cluster (note that certain resources such as UDD or CF that can be targeted to an entire cluster, cannot be done so, if the module is not targeted to the cluster. And to achieve the same, the user has to manually add/remove the managed servers to the list of Module's/sub-deployment's targets whenever a server is added or removed to/from the cluster/domain).
So, in your case, you can define all the JMS resources for that domain in a single Module descriptor and deploy it to a list of all the managed servers. Then you can use the sub-deployments to group and target them onto other related targets (for example, one or more queues can be grouped as a sub-deployment and targeted to a single JMSServer that is hosted by one of the WLS server instance, where the Module is currently targeted to, etc).
I believe you are creating/using a "system resource" type module via Admin console, the JMSModules wizard shall walk you through the targeting page, where you can see all the available target servers/clusters.
Here is an example of config.xml snippet for this kind of module targeting :
<jms-system-resource>
<name>SystemModule-0</name>
<target>Server-0,Server-1</target>
<sub-deployment>
<name>ConnectionFactory-0</name>
<target>Server-0,Server-1</target>
</sub-deployment>
<sub-deployment>
<name>Queues</name>
<target>JMSServer-0</target>
</sub-deployment>
<descriptor-file-name>jms/systemmodule-0-jms.xml</descriptor-file-name>
</jms-system-resource>
and the corresponding JMS module descriptor file snippet (can be found under DOMAIN_DIR/config/jms dir) as shown below:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/weblogic-jms" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:wls
="http://www.bea.com/ns/weblogic/90/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/
/www.bea.com/ns/weblogic/weblogic-jms http://www.bea.com/ns/weblogic/weblogic-jms/1.0/weblogic-jms.xsd">
<connection-factory name="ConnectionFactory-0">
<sub-deployment-name>ConnectionFactory-0</sub-deployment-name>
<jndi-name>ConnectionFactory-0</jndi-name>
<security-params>
<attach-jmsx-user-id>false</attach-jmsx-user-id>
</security-params>
</connection-factory>
<queue name="Queue-0">
<sub-deployment-name>Queues</sub-deployment-name>
<jndi-name>Queue-0</jndi-name>
</queue>
</weblogic-jms>
That being said, depending on, how many resources (factories, destinations etc) you are having and how you are going to group them, you may end of with too many sub-deployments within a single module, for which you need to carefully select targets/manage them.
Both approaches (one module descriptor with many sub-deployments and many module descriptors with fewer sub deployments) have positives and negatives, when its comes to manageability. The recommended best practice is to have the JMS resource configuration split into more than one module with fewer number of sub-deployments within each, to have finer control over the resource configuration/management.
Sounds like, you are trying to configure one queue on every managed server, that has duplicate(same) configuration properties. If that is the case, you can try using the UDD (Uniform Distributed Destination), that comes with automatic member (physical destination) management on all of its targets. That way, all you need is one UDD resource configuration/sub-deployment in the module and target the sub-deployment to the same targets as the module's targets (or accept the default targeting option, if available in the resource targeting page).
More information on UDDs can be found here:
http://edocs.bea.com/wls/docs100/jms/dds.html#wp1313025
Hope this helps.
Thanks
Kats
Maybe you are looking for
-
Cant delete something? Help!
Basically I tried installing an app, but something happened, I don't really know, and now, I can't delete it. If press and hold it, there wont appear any X's on the installing app, and I cant think of anything else that would allow me to delete it. T
-
Can apple tv play eyetv files?
Hi Does anyone one know if apple tv can play eyetv files? If not, inside an eyetv file package there is a .mpg file - can it open it up and play that file? Also, can the apple tv get video files from anywhere on the mac's hd or do we need to store th
-
JRMC remote monitoring for web logic not working
Hi, I am using Oracle 1031, and JRMC version 3.0.5. I have added following option to startWebLogic.cmd - JAVA_OPTIONS="-Djava.rmi.server.hostname=host -Xmanagement:ssl=false,authenticate=true,autodiscovery=true,port=7091 export JAVA_OPTIONS" I am abl
-
Slate 8 pro latest update crashed
HI all, I am using an HP 8 Pro 7600el (Italian version) that I had upgraded to KitKat by downloading the update.zip from HP Web site (version 1.01.01) and installing it from recovery image. Everything has gone fine for a few months up to yesterday w
-
Where do I find download for my Adobe software
I thought that I downloaded the adobe software but it is not showing that I did. How do I find software on this webpage to download?