Htmlb:tableView and group building
Hi,
in abap alv-lists, it is possible to build groups like you can see in the following example:
4711 12345 asdfaslöfkj
4711 68686 asdfljsadflj
4711 97777 salfjljfaksl
and now in abap-alv
4711 12345 asdfaslöfkj
68686 asdfljsadflj
97777 salfjljfaksl
Is this possible with htmlb:tableView or something like this?
Regards,
Jens
Yes you can make the first column to display data at the first appearance only as a Grouping. For this in the Iterator GET_Column_definition method set the FIXEDCOLUMN attribue of the column definition structure tableviewcontrol for which the grouping should apply(in your case first column).
Code goes like this...
data: ls_col_def type tableviewcontrol.
clear ls_col_def.
move: '<FieldName>' to ls_col_def-columnname,
'Icon' to ls_col_def-title,
'X' to ls_col_def-encode,
'X' to ls_col_def-FIXEDCOLUMN,
'1%' to ls_col_def-width.
append ls_col_def to p_column_definitions.
Similar Messages
-
Error when displaying amount field in HTMLB Tableview
Hi all,
I am displaying some 'X' table in HTMLB Tableview and it has one amount field.But reference(currency) field of that amount field is in other table . I know it gives the error.
Please tell me there is any other way to resolve this problem with out adding reference(currency)field in the same table?
Thanks and Regards ,
Harikrishna .Hi Hari,
But reference(currency) field of that amount field is in other table . I know it gives the error.
It will not give any error , you can use the currency key field of other table or structure .
Alternatively you can use predifined type DEC instaed of CURR .
Regards,
Anubhav -
Htmlb:tableView Recover the selected row
Hi.
How can I recover the selected row in a internal table, with the htmlb:tableView, in the onInputProcessing?
Thanks very much!
I'm using this sentence in the "layout":
<!-- Visualizamos Línea de selección + tabla interna -->
<htmlb:tableView id = "myTableView"
visibleRowCount = "<%= c_ver_registros %>"
width = "<%= c_ancho_tabla %>"
selectionMode = "SINGLESELECT"
table = "<%= T_TABLA %>" >
</htmlb:tableView>
nullhi Marcos,
While calling the Tableview in the layout get the selected row index in the attribute <b>selectedRowIndex = "<%= var_selectedindex %>"</b> { where var_selectedindex should be defined as a pageattribute} the tableview definition should be like this..
<htmlb:tableView id = "myTableView"
visibleRowCount = "<%= c_ver_registros %>"
width = "<%= c_ancho_tabla %>"
selectionMode = "SINGLESELECT"
<b>selectedRowIndex = "<%= var_selectedindex %>"</b>
table = "<%= T_TABLA %>" >
</htmlb:tableView>
And in the <b>inputprocessing</b> ,
Try this code..
IF htmlb_event IS NOT INITIAL AND htmlb_event->if_htmlb_data~event_name = 'tableView' AND
( htmlb_event->if_htmlb_data~event_type = 'cellClick' OR
htmlb_event->if_htmlb_data~event_type = 'rowSelection' OR
htmlb_event->if_htmlb_data~event_type = 'navigate' ) .
DATA tableview_event TYPE REF TO cl_htmlb_event_tableview.
tableview_event ?= htmlb_event.
IF lr_tableview_event->selectedrowindex IS NOT INITIAL .
var_selectedindex = tableview_event->selectedrowindex.
ENDIF.
ENDIF.
regards,
Bhanu. -
Grouping Key Rows In HTMLB Tableview BSP
Hello Experts,
I've a HTMLB Tableview in BSP Application. I need to group the key rows with same value into one.
Current Layout
KEY VALUE 1 VALUE 2
A X Y
A X Y
B X Y
B X Y
Required Layout
KEY VALUE 1 VALUE 2
A X Y
X Y
B X Y
X Y
It's somewhat similar to grouping the key rows in ALV. Not sure how to achieve this in BSP.
Please help....
Regards,
Satyajit
PS: Posted this thread in BSP Forum earlier and haven't got any response yet. So reposting it in ABAP General for a quick response.Hi Satyajit Mohapatra,
please refer to fixedColumns. Therefore check on your system:
BSP: SBSPEXT_TABLE
Page: TableViewFixedColumns.bsp
There you can find the solution.
Regards, Jonas -
Currency and Groups Dimensions in Legal Consolidation, BPC 7.5
Dear BPC Experts:
I am using BPC 7.5 NW SP03, and building Legal Consolidation now. According to the SAP Library,http://help.sap.com/saphelp_bpc75_nw/helpdata/en/bpc_nw_index.htm, it says in 7.5, the currency and groups dimension are required and should hold currency members and consolidation members seperately. I have couple of questions about this design.
1. Are GROUPS and CURRENCY dimensions both included in Legal Consolidation Application at the same time?
2. How to move data in currency diemnsion into corresponding members in GROUPS dimension?
For example: THe GROUPS member, CG1(its currency is USD). How to let data in currency USD move to CG1.
3. In Legal Consolidation data package, should I modify the prompt dimension from CURRENCY_DIM into GROUP_Dim?? cause 7.5 has CURRENCY dim in its package setting at default. However, the consolidation package is based on GROUP perspectives.
Does anyone give me any idea in it? I really appreciate your help.
Best Regards,
Fred ChengHi Collet,
Thanks for such a quick response. Based on your answer,
The group-type dimension is used for storing the group component of legal consolidation. The group-type dimension represents the relationship of entities for a given consolidation result. This group is consolidated in a single currency, so there is no need to have another dimension. As of Planning and Consolidation 7.5, you can continue to use the currency-type dimension for this purpose, or you can split it into a group-type dimension (type G) and use a pure currency-type dimension (type R) to allow reporting in multiple group currencies.
If at all I go by that will that be sufficient to have only Group Dimension and ignore RptCurrency field in BPC 7.5?
As of now I am having my Group Dimension looks like this.
Member ID EVDESCRIPTION GROUP_CURRENCY PARENT_GROUP ENTITY
G_CG1 XXXX USD E_CG1
G_CG2 XXX USD G_CG1 E_CG2
G_CG3 XXXX USD G_CG2 E_CG3
So now do I need to enter any RptCurrency Members under Group Member ID column to have RptCurrency ignored once for all. By the way our RptCurrency and Group Currency is USD only.
Please advise as right now we are not able to have Currency Conversion Functioning properly. I mean when I executed FXTRANSLGF, I am able to my DM status as Successful but saying 0 Submitted 0 Success 0 Fail
I am unable to crack this. I tired playing Groups and RptCurrency but same result. Successful but no records. We have maintained all Exchange Rates corrctly. -
Repairing permissions for “MacIntosh HD”
Determining correct file permissions.
Permissions differ on ./Library/Widgets, should be drwxr-xr-x , they are drwxrwxr-x
Owner and group corrected on ./Library/Widgets
Permissions corrected on ./Library/Widgets
Permissions differ on ./System/Library/User Template, should be drwx------ , they are drwxr-xr-x
Owner and group corrected on ./System/Library/User Template
Permissions corrected on ./System/Library/User Template
Group differs on ./usr/bin/fetchmail, should be 0, group is 6
Permissions differ on ./usr/bin/fetchmail, should be -rwxr-xr-x , they are -rwxr-sr-x
Owner and group corrected on ./usr/bin/fetchmail
Permissions corrected on ./usr/bin/fetchmail
Permissions differ on ./usr/lib/php/build/Makefile.global, should be -r--r--r-- , they are -r-xr-xr-x
Owner and group corrected on ./usr/lib/php/build/Makefile.global
Permissions corrected on ./usr/lib/php/build/Makefile.global
Permissions differ on ./usr/lib/php/build/acinclude.m4, should be -r--r--r-- , they are -r-xr-xr-x
Owner and group corrected on ./usr/lib/php/build/acinclude.m4
Permissions corrected on ./usr/lib/php/build/acinclude.m4
Permissions differ on ./usr/lib/php/build/mkdep.awk, should be -r--r--r-- , they are -r-xr-xr-x
Owner and group corrected on ./usr/lib/php/build/mkdep.awk
Permissions corrected on ./usr/lib/php/build/mkdep.awk
Permissions differ on ./usr/lib/php/build/phpize.m4, should be -r--r--r-- , they are -r-xr-xr-x
Owner and group corrected on ./usr/lib/php/build/phpize.m4
Permissions corrected on ./usr/lib/php/build/phpize.m4
Permissions differ on ./usr/lib/php/build/scan_makefile_in.awk, should be -r--r--r-- , they are -r-xr-xr-x
Owner and group corrected on ./usr/lib/php/build/scan_makefile_in.awk
Permissions corrected on ./usr/lib/php/build/scan_makefile_in.awk
Permissions differ on ./usr/lib/system/libmathCommon.A.dylib, should be -r-xr-xr-x , they are -rwxr-xr-x
Owner and group corrected on ./usr/lib/system/libmathCommon.A.dylib
Permissions corrected on ./usr/lib/system/libmathCommon.A.dylib
Permissions differ on ./usr/libexec/dumpemacs, should be -r-sr-xr-x , they are -r-xr-xr-x
Owner and group corrected on ./usr/libexec/dumpemacs
Permissions corrected on ./usr/libexec/dumpemacs
Permissions repair complete
The privileges have been verified or repaired on the selected volume
Then I sometimes get the brown screen that states,You must re-start your computer.
I have already zeroed out the hard drive and re-installed Panther and the upgrade Tiger disc.
I repair permissions using the Tiger disc upgrade.
Can anyone help me with this??> I repair permissions using the Tiger disc upgrade.
One thing to note... When running Repair Disk Permissions, it is best to run it while started up normally, from your normal startup disk, not from a Mac OS X installation disc. The only time you should run it while started up from an installation disc is if some problem is preventing you from starting up normally. OTOH, Repair Disk can only be used when starting up from a different disk (such as an installation disc).
So, I would start up normally, run Disk Utility, and use Repair Disk Permissions on your normal startup disk.
NOTE: Repair Disk Permissions often gives alerts messages that can be ignored. They are more "informational," not serious errors.
http://support.apple.com/kb/TS1448
You should still run it periodically. When you run it, what needs to be repaired has been repaired; consider the rest of it an FYI. I've never experience a problem, where a Repair Disk Permissions message actually caused a problem. But, if you ever get an error while running Repair Disk (or Verify Disk), that is usually a serious problem. -
Problem in creating group above AND group left in one report!
Hi all,
I need a report that is a combination of group above and group
left.
Suppose I have 3 table (Emp, Sales, Product):
Emp Table has 2 column
- Emp_PK
- Emp_Name
Sales Table has 4 column
-Sales_PK
-Sales_Date
-Emp_FK
-Produck_FK
-Quantity
Product Table has 3 column
-Product_PK
-Product_Name
-Product_Price
I want to make Employee Sales Report For The Month that will
look like this:
Emp Number___: Emp_PK
Emp Name_____: Emp_Name
Sales Date______Product_Name____Quantity \(2 sales
________________Product_Name____Quantity /the date)
Sales_Date______Product_Name____Quantity
As you can see this consist of group above (The Employee) and
group left (The Sales and Product).
I create this by using 2 queries and link them (the Emp_PK from
1st query and Emp_FK from 2nd query) on the report builder using
data link.
The first query is:
Select Emp_PK, Emp_Name from Emp
The second query is
Select Emp_FK, Sales_Date, Product_Name, Quantity
From Sales, Product
Where Product_PK=PRODUCT_FK
I then create the layout for second query and choose group left
for Sales_Date using wizard and I create additional layout to
for the employee.
The problem is that when I run this report, it will print ALL
the employee record first (including employee who has NOT sale
anything) and then on the last page it will print the record of
Last employee on the Emp table and ALL sales record (including
those that is done by other employee).
This report will run correctly if I choose an exact employee
(For example by adding Where Emp_PK=1111 in the first query) to
report all of the sales done by this person (employee with emp
number of 1111). However I need the report to run and print
ONLY those employee who has Sales Records!
I thought that by linking the 2 queries in Data Model, it will
have the same effect as linking using the WHERE clause in query.
If suppose I create a query like this:
SELECT Emp_PK, Emp_Name, Sales_Date, Product_Name, Quantity
FROM Emp, Sales, Product
WHERE Emp_PK=Emp_FK AND Product_PK=Product_FK
The report will run OK but I can only choose EITHER group above
or group left for this ONE query methods in report Wizard.
Sorry if it is a long question but I hope you can see what I am
trying to do.
Thanks in advance for any tip.hello,
of course you can create group left and group above blocks in a
single report.
you might want to use the INSERT REPORT BLOCK instead of the
report wizard, as the report wizard only allows you to use one
report layout per report, where the report block wizard (invoked
by INSERT REPORT BLOCK) allows you to choose on a per-block
basis.
of course you can create the blocks completely from scarth by
hand, if you want to.
regards,
the oracle reports team --pw -
HTMLB TableView: Edit first Line
Hi,
I have implemented an HTMLB TableView with the attribute selection mode 'singleselect'.
The users can mark one row to edit. This works so far.
But as the users have to maintain at least one row, the first row should initially be editable <b>without mark it</b> and raising an event.
Thanks in advanceset the selectedRowIndex = 0 or 1 to whatever number of the row you would like initially checked in your OnCreate or OnInitialization Event Handler with selectedRowIndex being defined in your Page Attributes and then assigned to the tableView.
-
Passing where and group by clause to cursor
I am working on a procedure that builds a where clause and needs a group by clause to return the correct results. I am trying to pass both the where and group by variables into the cursor.
The variables are getting populated correctly, but when the cursor gets created, the variables are not in the cursor.
Here is the code I'm working with. It is a part of a package, but makes no calls to other parts of the package.
PROCEDURE createFollowUpTask_Exposure( psUppgkedjetyp IN tis.tial.uppgkedjetyp%TYPE default NULL,
psAlarmtyp IN tis.tial.alarmtyp%TYPE default NULL,
psSubtyp IN tis.tial.subtyp%TYPE default NULL,
pnDays IN NUMBER default NULL,
psKampkod IN tis.tiin.kampkod%TYPE default NULL,
psKatnr IN tis.tiin.katnr%TYPE default NULL,
psUtgava IN tis.tiin.utgava%TYPE default NULL,
psKatslag IN tis.tikg.katslag%TYPE default NULL,
psProdsyst IN tis.tikg.prodsyst%TYPE default NULL,
psUppgtyp IN tis.tiin.uppgtyp%TYPE default NULL,
psProdkod IN tis.tiin.prodkod%TYPE default NULL,
psStatus IN tis.tiin.status%TYPE default NULL
) AS
cTIAL tis.tial%ROWTYPE;
vLopnr tis.tial.lopnr%TYPE;
vSqlWhere VARCHAR2(4000);
vGroupBy VARCHAR2(1000) := ' tiin.kampkod, tiin.abnr, tiko.fordsalj';
cSelectCursor SYS_REFCURSOR;
vSqlSelect VARCHAR2(4000);
psDays VARCHAR2(50);
cRec T_TIAL_REC;
nCount number := 0;
CURSOR cSqlSelect( SqlWhere IN VARCHAR2, GroupBy IN VARCHAR2) IS
SELECT tiin.kampkod, tiin.abnr, tiko.fordsalj, MAX(tici.regdat) ALARMDATE
FROM tis.tiin
JOIN tis.tiko ON tiin.kampkod = tiko.kampkod AND tiin.abnr = tiko.abnr
JOIN core.tici ON tiin.kampkod = tici.kampkod AND tiin.abnr = tici.abnr AND tici.inplnr = tiin.inplnr
WHERE 1=1 || SqlWhere
GROUP BY GroupBy;
BEGIN
-- If these parameters are null, raise error
IF psUppgkedjetyp IS NULL and psSubtyp IS NULL THEN
raise_application_error(-20001,
'Either Event Chain or Starting Event must be assigned');
END IF;
-- Populate TIAL values
IF psUppgkedjetyp IS NOT NULL THEN
cTIAL.Uppgkedjetyp := psUppgkedjetyp;
END IF;
IF psAlarmtyp IS NOT NULL THEN
cTIAL.Alarmtyp := psAlarmtyp;
END IF;
cTIAL.Handklass := 'T';
cTIAL.Blobid := 0;
IF pnDays IS NOT NULL THEN
psDays := '+ '||pnDays;
END IF;
IF psSubtyp IS NOT NULL THEN
cTIAL.Subtyp := psSubtyp;
END IF;
-- Create Where clause for cursor
vSqlWhere := '';
IF psKampkod IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tiin.kampkod = '''|| psKampkod||'''';
END IF;
IF psKatnr IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tiin.katnr = '''||psKatnr||'''';
END IF;
IF psUtgava IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tiin.utgava = '''||psUtgava||'''' ;
END IF;
IF psKatslag IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tikg.katslag = '''||psKatslag||'''';
END IF;
IF psProdsyst IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tikg.prodsyst = '''||psProdsyst||'''';
END IF;
IF psUppgtyp IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tiin.uppgtyp = '''||psUppgtyp||'''';
END IF;
IF psProdkod IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tiin.prodkod = '''||psProdkod||'''';
END IF;
IF psStatus IS NOT NULL THEN
vSqlWhere := vSqlWhere||' AND tiin.status = '''||psStatus||'''';
END IF;
-- Loop through all records meeting input parameters and set required TIAL values.
FOR i IN cSqlSelect(vSqlWhere, vGroupBy)
LOOP
--FETCH cSelectCursor INTO cRec;
cTIAL.Kampkod := '';
cTIAL.Abnr := '';
cTIAL.Sign := '';
cTIAL.Alarmdate := '';
cTIAL.Kampkod := i.Kampkod;
cTIAL.Abnr := i.Abnr;
cTIAL.Sign := i.fordsalj;
cTIAL.Alarmdate := i.alarmdate;
nCount := nCount + 1;
IF vLopnr = -1 THEN
raise_application_error(-20002,
'Error Creating task for: '||cTIAL.Kampkod||' '||cTIAL.Abnr||' Sales Rep: '||cTIAL.Alarmdate);
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('I created '||nCount||' records.');
END createFollowUpTask_Exposure;
Thanks in advance for any help.Hi,
Welcome to the forum!
Try this (not tested) as an example:
PROCEDURE createFollowUpTask_Exposure(psUppgkedjetyp IN tis.tial.uppgkedjetyp%TYPE DEFAULT NULL,
psAlarmtyp IN tis.tial.alarmtyp%TYPE DEFAULT NULL,
psSubtyp IN tis.tial.subtyp%TYPE DEFAULT NULL,
pnDays IN NUMBER DEFAULT NULL,
psKampkod IN tis.tiin.kampkod%TYPE DEFAULT NULL,
psKatnr IN tis.tiin.katnr%TYPE DEFAULT NULL,
psUtgava IN tis.tiin.utgava%TYPE DEFAULT NULL,
psKatslag IN tis.tikg.katslag%TYPE DEFAULT NULL,
psProdsyst IN tis.tikg.prodsyst%TYPE DEFAULT NULL,
psUppgtyp IN tis.tiin.uppgtyp%TYPE DEFAULT NULL,
psProdkod IN tis.tiin.prodkod%TYPE DEFAULT NULL,
psStatus IN tis.tiin.status%TYPE DEFAULT NULL) AS
cTIAL tis.tial%ROWTYPE;
vLopnr tis.tial.lopnr%TYPE;
vSqlWhere VARCHAR2(4000);
vGroupBy VARCHAR2(1000) := ' tiin.kampkod, tiin.abnr, tiko.fordsalj';
cSelectCursor SYS_REFCURSOR;
vSqlSelect VARCHAR2(4000);
psDays VARCHAR2(50);
cRec T_TIAL_REC;
nCount NUMBER := 0;
FUNCTION fnc_cSqlSelect(SqlWhere IN VARCHAR2,
GroupBy IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN 'SELECT tiin.kampkod,
tiin.abnr,
tiko.fordsalj,
MAX(tici.regdat) ALARMDATE
FROM tis.tiin
JOIN tis.tiko ON tiin.kampkod = tiko.kampkod
AND tiin.abnr = tiko.abnr
JOIN core.tici ON tiin.kampkod = tici.kampkod
AND tiin.abnr = tici.abnr
AND tici.inplnr = tiin.inplnr
WHERE 1 = 1 ' || SqlWhere || ' GROUP BY ' || GroupBy;
END fnc_cSqlSelect;
BEGIN
-- If these parameters are null, raise error
IF psUppgkedjetyp IS NULL AND psSubtyp IS NULL THEN
raise_application_error(-20001,
'Either Event Chain or Starting Event must be assigned');
END IF;
-- Populate TIAL values
IF psUppgkedjetyp IS NOT NULL THEN
cTIAL.Uppgkedjetyp := psUppgkedjetyp;
END IF;
IF psAlarmtyp IS NOT NULL THEN
cTIAL.Alarmtyp := psAlarmtyp;
END IF;
cTIAL.Handklass := 'T';
cTIAL.Blobid := 0;
IF pnDays IS NOT NULL THEN
psDays := '+ ' || pnDays;
END IF;
IF psSubtyp IS NOT NULL THEN
cTIAL.Subtyp := psSubtyp;
END IF;
-- Create Where clause for cursor
vSqlWhere := '';
IF psKampkod IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tiin.kampkod = ''' || psKampkod || '''';
END IF;
IF psKatnr IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tiin.katnr = ''' || psKatnr || '''';
END IF;
IF psUtgava IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tiin.utgava = ''' || psUtgava || '''';
END IF;
IF psKatslag IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tikg.katslag = ''' || psKatslag || '''';
END IF;
IF psProdsyst IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tikg.prodsyst = ''' || psProdsyst || '''';
END IF;
IF psUppgtyp IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tiin.uppgtyp = ''' || psUppgtyp || '''';
END IF;
IF psProdkod IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tiin.prodkod = ''' || psProdkod || '''';
END IF;
IF psStatus IS NOT NULL THEN
vSqlWhere := vSqlWhere || ' AND tiin.status = ''' || psStatus || '''';
END IF;ç
-- Loop through all records meeting input parameters and set required TIAL values.
OPEN cSelectCursor FOR fnc_cSqlSelect(vSqlWhere,
vGroupBy);
LOOP
FETCH cSelectCursor
INTO v; -- You must define a variable 'v' to hold the data of cursor
EXIT WHEN cSelectCursor%NOTFOUND;
--FETCH cSelectCursor INTO cRec;
cTIAL.Kampkod := '';
cTIAL.Abnr := '';
cTIAL.Sign := '';
cTIAL.Alarmdate := '';
cTIAL.Kampkod := i.Kampkod;
cTIAL.Abnr := i.Abnr;
cTIAL.Sign := i.fordsalj;
cTIAL.Alarmdate := i.alarmdate;
nCount := nCount + 1;
IF vLopnr = -1 THEN
raise_application_error(-20002,
'Error Creating task for: ' || cTIAL.Kampkod || ' ' ||
cTIAL.Abnr || ' Sales Rep: ' || cTIAL.Alarmdate);
END IF;
END LOOP;
CLOSE cSelectCursor;
DBMS_OUTPUT.PUT_LINE('I created ' || nCount || ' records.');
END createFollowUpTask_Exposure;
/Regards, -
How open URL in an htmlb TableView ?
Hi guys,
Here is my problem:
- I have in my BSP an HTMLB:TableView which display a table of Document Info Record.
- In this table of DIRs, there is a column which contains an URL in order to open an original.
ex of url :
https://daplmdv.sylvania.com:10443/sap/bc/bsp/sap/CVAW_VIEW_DOCFILE/ViewDocFile.htm?pa_document_key=ZPI000000000000000000185255000FR&pa_file_id=4B5DB6C66C9B0094E1008000C61CAA2D&filename=C:\Copie de SSO on PLP.pdf
- At the moment in htmlb:tableViewColumn, I use the property onCellClick which call a javascript function :
window.open( "<%= application->url%>", target='_blank' , 'toolbar=no, menubar=no, resizable=yes, scrollbars=yes');
- It works in IE6 but I tested it in IE7 and it doesn't work.
My question :
Is it possible to open directly the link through the tableView and without using javascript ?
I tried the property linkClickTarget but it doesn't work
Thanks for your helpHi Regis,
If you need a new window to load the document contents, then you should use the Javascripts. Because only a javascript could openup a new window in a BSP applicaiton.
But if you do not want to open up the document in a new window and want to load it by replacing the current page, then you could do it by navigating to another page which could render the document contents in this page.
Hope it helps!
Regards,
Maheswaran -
HTMLB TableView in customer CI/CD layout
Hello,
i want to create a BSP with htmlb tableview, so
i can simply use the given features (sorting, filter, ...) but the customer want to adapt hic CI/CD Colours Blue and Orange to the hole application.
Is there a chance to use a own stylesheet instead of design2002 or design2003 or is it prossible to create a own design.
I`ve searched this topic in forum, and gets only answers that mixing design and css is not good, and there is a way with EP6 - but we have no portal.
Thanks for any help.
Regards
MarcusHi Ulli and Marcus,
I'm currently designing my own style (not in Portal, I'm using 6.20), and yes, it might not be straightforward customizing the design.
But I started with following approach:
After implementing the basic layout of my page (like header pictures and so on) I added the functional parts (htmlb elements, ...) and tried to change them one by one ... that's how I did it:
- add a htmlb element to the layout
- access the page via browser to get the generated html code
- in this code just look for all the classes used for your htmlb elements
- edit the .css file that gets included in the html header accordingly
Important Points you have to be aware of:
*) There might be styles used for your elements which are not shown in every html code (because element might be displayed differently from page to page). You can either call every possible page combination in order to get all the used classed (not recommended, you could still miss something), or have a closer look at the class names - the classes that belong to a certain element are named in a way you can tell which class belongs where.
(like "urBdyStd" for the body-tag, "urbtn*" for buttons, ...)
From the postfix after the element name part you can guess the detailed function of the class - with a little patience and looking at many different classes used in the html code you can figure out what to change for your style.
*) Be careful which .css-file gets included when looking at the html code. There are css files for different browsers and versions, so if you want to make your application look the same way on all supported browsers (which you probably want), then don't forget to edit these files as well.
*) Changing a css file and testing the results on the WAS is very complicated, so I recommend you create sample html files (which contain one htmlb element each for example), edit the css file and also test it locally, so you don't get caugt in importing a new file version just for changing that one nasty little style attribute that is wrong
Ok, after writing all of this, I can see that it really is a bit of work ... but seeing how your application gets your personal touch is worth it (at least for me) ... and you don't have to change all of the styles, I found that some of the standard styles fit into my design quite good, so I didn't change them. (I copied the chrome design to start from)
Cheers,
Max
P.S.: Would such a topic be worth a weblog? -
Hi,
I have used the table view in my BSP application and use the concept of iterator class inherited from interface 'IF_HTMLB_TABLEVIEW_ITERATOR' to manipulate the column of each row
ABAP CODE:
<%data: LV_ITERATOR type ref to if_htmlb_tableview_iterator.
create object LV_ITERATOR type zcl_test
exporting ir_context_node = db_controller
data_tab = =<LT_TABLE1>
%>
BSP CODE:
<htmlb:tableView
fillUpEmptyRows = "true"
id = "ResultTable"
onNavigate = "navigate"
selectionMode = "SINGLESELECT"
table = "<%=<LT_TABLE1>%>"
visibleFirstRow = "1"
visibleRowCount = "8"
width = "100%"
filter = "server"
sort = "server"
iterator = "<%=LV_ITERATOR %>"
keyColumn = "template_id"
design = "alternating"
<%-- columnFilters="<%=filters%>"--%>
tabIndexCell = "FALSE"
selectedRowIndexTable = "<%=LT_SELECTEDROWINDEXTABLE%>"
>
and implemented class 'zcl_test' , for some reason something strange is happening , the BSP page will be something like
at the top there are buttons and below this is the TableView that display the content store in internal table 'LT_TABLE1'
now the table contain 10 records,the 1-8 records are displayed on page1 and next 2 records are displayed on page2.
So the issue is , if i naviagte to page2 and press any of the button on top of table view ,it redirect me to page1(display 1-8 records) and don;t stay back on 2'nd page.
Please let me know how i can achieve this of staying on the same pageHi All,
Sorry for the delay,explanation provided is amazing and may help other searching for the same issue but unfortunately selected row travel back to page index1
and i don;t understand why the selected record is the first record in the internal table of iterator class and that result in this record to appear on page index1
any how i have resolve this by pointing always to page index1.
Code that can be useful:
View:
<htmlb:tableView fillUpEmptyRows = "true"
id = "tvTempl"
onNavigate = "navigate"
selectionMode = "SINGLESELECT"
table = "xyz"
visibleFirstRow = "<%= lv_first_rowindex %>"
selectedRowIndex = "<%= lv_selected %>"
visibleRowCount = "8"
width = "100%"
filter = "server"
sort = "server"
iterator = "<%= lr_iterator %>"
keyColumn = "template_id"
design = "alternating"
tabIndexCell = "FALSE" />
code in do_handle_event or in do_request:
DATA: lv_row_index TYPE i,
lv_page_index TYPE i,
lv_mod TYPE i,
lr_html_table_view TYPE REF TO cl_htmlb_event_tableview.
lr_cl_descriptor = cl_abap_refdescr=>describe_by_object_ref( htmlb_event ).
IF lr_cl_descriptor->absolute_name CS 'CL_HTMLB_EVENT_TABLEVIEW'.
lr_html_table_view ?= htmlb_event. // parameter: importing in method HTMLB_EVENT Type Ref To CL_HTMLB_EVENT
CASE lr_html_table_view->navigationtype.
WHEN 'pageUp'.
MOVE mv_first_rowindex TO lv_row_index.
lv_row_index = lv_row_index - lr_html_table_view->visiblerowcount.
MOVE lv_row_index TO mv_first_rowindex.
WHEN'pageDown'.
MOVE mv_first_rowindex TO lv_row_index.
lv_row_index = lv_row_index + lr_html_table_view->visiblerowcount.
MOVE lv_row_index TO mv_first_rowindex.
WHEN'top'.
MOVE mv_first_rowindex TO lv_row_index.
lv_row_index = 1.
MOVE lv_row_index TO mv_first_rowindex.
WHEN 'bottom'.
MOVE mv_first_rowindex TO lv_row_index.
lv_mod = lr_html_table_view->rowcount MOD lr_html_table_view->visiblerowcount.
lv_row_index = lr_html_table_view->rowcount - lv_mod + 1 .
MOVE lv_row_index TO mv_first_rowindex.
WHEN 'Index'.
READ TABLE mt_last_formfields INTO ls_formfields WITH KEY name = 'notificationstv_pager_index'.
IF ls_formfields IS NOT INITIAL.
MOVE ls_formfields-value TO lv_page_index.
lv_row_index = 1.
IF lv_page_index > 1.
lv_page_index = lv_page_index - 1.
DO lv_page_index TIMES.
lv_row_index = lv_row_index + lr_html_table_view->visiblerowcount.
ENDDO.
ENDIF.
ENDIF.
MOVE lv_row_index TO mv_first_rowindex.
ENDCASE.
ENDIF. -
Hi,
<p>
I have configured an LDAP Authenticator for an external LDAP directory in the security realm of the samples portal. User Management is working, but when I try to access the Group Management for the LDAP Authenticator I get the following error:
</p>
<i>com.bea.p13n.usermgmt.hierarchy.TreeNotBuiltException: State: UNINITIALIZED. Tree is uninitialized. Add provider GAAD to list of providers to build. Tree is uninitialized. Add provider GAAD to list of providers to build.
</i>
<p>
It seems that this needs to be setup. How do I do this?
</p>
<p>
Some general notes on LDAP:
</p><p>
I think that in a production environment it is of great value to manage users and groups in a LDAP directory. For instance we have a company directory which contains all users. It seems that users from LDAP can not been added to groups which are in the DB. LDAP also has the advantage of supporting dynamic groups.
As in previous weblogic releases the LDAP authenticator is read only. It would be great if the write functionality could be added as well. Actually managing LDAP users and groups in one place would be a tremendous improvement for us.
</p><p>
Another thing on my wishlist are examples for delegated administration and visitor entitlements. For the sample portal these are empty. But I think it would be nice to have some out of the box examples that show what is possible and help developers and business analysts to understand the concepts and create their own roles.
</p><p>
It would be interesting to read what Bea and other developer think about this.
</p><p>
Kind regards,
<p>
Kai
</p>Marcus,
Yes, I am using 9.2 TP.
We are already using LDAP for user management with 8.1.
Now, I try to configure 9.2 as well. I am running 9.2 installations on different machines. When I click on Service Administration in the Admin Portal, I get the following error message for each installation:
java.lang.NullPointerException at com.bea.jsptools.serviceadmin.ads.ToolAdServiceBean.cloneFromAdServiceBean(ToolAdServiceBean.java:190) at com.bea.jsptools.serviceadmin.ServiceAdminTreeBuilder.buildAdContentProviderNodes(ServiceAdminTreeBuilder.java:769) at com.bea.jsptools.serviceadmin.ServiceAdminTreeBuilder.buildAdServiceBranch(ServiceAdminTreeBuilder.java:746) at com.bea.jsptools.serviceadmin.ServiceAdminTreeBuilder.createTreeElement(ServiceAdminTreeBuilder.java:184) at com.bea.jsptools.patterns.tree.TreeService$DefaultTreeServiceImpl.buildWholeTree(TreeService.java:234) at com.bea.jsptools.patterns.tree.TreeService$DefaultTreeServiceImpl.buildWholeTree(TreeService.java:235) at com.bea.jsptools.patterns.tree.TreeService$DefaultTreeServiceImpl.buildTree(TreeService.java:122) at util.tree.TreeController.constructTree(TreeController.java:142) at util.tree.TreeController.buildTree(TreeController.java:422) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:852) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:782) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:456) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:285) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:48) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:1984) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:90) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2055) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:535) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:821) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:625) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:156) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1178)
java.lang.NullPointerException
java.lang.NullPointerException
at com.bea.jsptools.serviceadmin.ads.ToolAdServiceBean.cloneFromAdServiceBean(ToolAdServiceBean.java:190)
at com.bea.jsptools.serviceadmin.ServiceAdminTreeBuilder.buildAdContentProviderNodes(ServiceAdminTreeBuilder.java:769)
at com.bea.jsptools.serviceadmin.ServiceAdminTreeBuilder.buildAdServiceBranch(ServiceAdminTreeBuilder.java:746)
at com.bea.jsptools.serviceadmin.ServiceAdminTreeBuilder.createTreeElement(ServiceAdminTreeBuilder.java:184)
at com.bea.jsptools.patterns.tree.TreeService$DefaultTreeServiceImpl.buildWholeTree(TreeService.java:234)
at com.bea.jsptools.patterns.tree.TreeService$DefaultTreeServiceImpl.buildWholeTree(TreeService.java:235)
at com.bea.jsptools.patterns.tree.TreeService$DefaultTreeServiceImpl.buildTree(TreeService.java:122)
at util.tree.TreeController.constructTree(TreeController.java:142)
at util.tree.TreeController.buildTree(TreeController.java:422)
at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:852)
at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:782)
at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:456)
at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:285)
at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336)
at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:48)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:1984)
at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:90)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2055)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:535)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:821)
at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:625)
at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:156)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1178) -
Pros And Cons of Subforms and Groups?
Does anyone know of any pros and cons related to how things are grouped, either via an object group or a subform? Are there any specific reasons to use groups and not subforms - subforms and not groups?
For those who care to know a little more, not just questions...
In designing my forms I have taken this approach:
Groups (created by selecting Layout > Group) - I use groups for grouping simple objects (Text, Lines, Rectangles, etc.) which build the "static" portion of the form.
Subforms (created by drawing, or "wrapping" objects together) - I use Subforms for field objects (Text Fields, Numeric Fields, Decimal Fields, Check Boxes, Radio Buttons, Date/Time Fields, etc.) which act as the "live" or "dynamic" portion of the form.
I like this way of organizing the objects. It seems to make "sense" at least to me, and it also helps in terms of aligning objects, and so on. However, of course, it is not necessary to segregate the objects this much. So what is the preferred or recommended method? All opinions or suggestions are welcome!Actually, there's a big difference between using groups and subforms to relate objects to each other although if you don't use any scripting and/or data binding, you probably wouldn't notice much difference.
Once you get into scripting and/or data binding, the use of groups and subforms makes a significant difference because groups (which are actually <area> XFA objects) are "invisible" when it comes to scripting and data binding.
This means that if, on a page, you had 4 text fields, each named TextField1/2/3/4, and TextField1/2 were grouped while TextField3/4 were wrapped in a subform (named "Subform") and you needed to access these text fields from the context of the page, you would do:
TextField1 OR TextField2
because they're grouped with an <area> tag which is transparent in the Object Model. If, on the other hand, you needed to access the 3rd and 4th text field, you would do:
Subform.TextField3 OR Subform.TextField4
because subforms are defined in the XFA Scripting Object Model.
The use of groups and subforms also affects data binding. That is, it affects the way XML data imported into your form is used to populate values of fields. For instance, if your data looked like this:
<data>
<TextField1>1</TextField1>
<TextField2>2</TextField2>
<TextField3>3</TextField3>
<TextField4>4</TextField4>
</data>
and your form had TextField1/2 grouped into a group named "Group", TextField3/4 wrapped into a subform named "Subform" and then another TextField3/4 which were siblings to the Subform and Group objects but placed
prior to the Subform object in the object hierarchy, importing the above data into the form would populate TextField1/2 in the Group object and TextField3/4 which are siblings to the Group and Subform objects -- not TextField3/4 which are wrapped in the Subform object.
Now let's say your data was as follows:
<data>
<TextField1>1</TextField1>
<TextField2>2</TextField2>
<Subform>
<TextField3>3</TextField3>
<TextField4>4</TextField4>
</Subform>
</data>
This would result in populating TextField1/2 in the Group and, as opposed to the first scenario, TextField3/4 which are wrapped in the Subform object.
This is a very simple example to prove a point. If you think about it a little, the implications -- especially concerning data binding -- are quite large. To help illustrate this further, I've attached a sample form with the hierarchy I described earlier as well as two data files: data1.xml is the first one I described in this post, while data2.xml is the second one. Try importing both into the form to see the differences in the results and then compare the object hierarchy in the Hierarchy palette with the nesting of the data nodes in the data files.
Finally, there's also the fact that subform instances can be created and deleted dynamically at runtime while groups cannot have instances. For dynamic forms, this is a big consideration.
Stefan
Adobe Systems -
What is the primary difference between Debug and Release build?
I'm coming from the world of VS, where there's a clear distinction between a Release and Debug builds. In Xcode I can't seem to see how two are different and how would I benefit from, say, a Debug build. Can someone explain this for me?
The differences between the Xcode debug and release builds are similar to the differences you'll find on any other system, though the Xcode interface might not present them as obviously. Basically, a debug build preserves all kinds of information that was developed during compilation but is no longer necessary at runtime. The presence or absence of this information (e.g. symbol tables and mappings which provide the original name of each source code variable and the source code line number corresponding to each instruction), becomes increasingly obvious as you use gdb and other debugging tools.
We normally would never want to release a debug version (in the iOS case, of course, it would never be accepted) because the binary is usually much larger and the performance will probably be compromised as well. For example, a typical debug build will have many perfomance optimizations turned off because these can make debugging more difficult. It's also common to enable "assert" statements in a debug version. These will bring the program down rather than giving the user any options or attempting recovery.
For more info specific to Xcode, see [Build Configurations|http://developer.apple.com/library/ios/documentation/DeveloperTo ols/Conceptual/XcodeBuildSystem/400-BuildConfigurations/build_configs.html#//appleref/doc/uid/TP40002692-SW7] in the +Xcode Build System Guide+. To get into lower level details, refer to the gcc docs, maybe starting with [3.9 Options for Debugging Your Program or GCC|http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html]. You might also want to take a look at your Target Build Options for the Debug configuration (Project->Set Active SDK->Use Base SDK and Project->Edit Active Target->Build). There's a one-to-one mapping between many of these settings and the gcc options.
\- Ray
p.s.: Didn't mean to repeat Xnav's points. As usual, I was still editing long after he posted! To clarify one difference: Selecting the Edit Active Target menu item gets you to the same place as double clicking on the icon for the active target in the Targets group of the Groups & Files tree. - R
Message was edited by: RayNewbie
Maybe you are looking for
-
found olf iphone 4 or 4s in the back of my parents closet. They told me I could now have it back and its been a year since the last time I saw it. It wont turn on unless it is plugged up to a wall plug in. But as soon as I turn it on it says activati
-
Big problem with JFormattedTextField.
When I use a JFormattedTextField to receive on input just letters when the JFormattedTextField loses focus it just clear the field! Why that? try { MaskFormatter mask = new MaskFormatter("????????????????????"); mask.setValidCharac
-
I need BW 7.0 doc where can i find can u help
what are the main differences between 3.5 and 7.0
-
Need help blackberry 9380 v7.1.0
need help.. i have blackberry 9380 v.7.0.0 and i want to update it to 7.1.0. The problem is when i check it on the software updates under device option it says "Your Blackberry is up to date". then i plug in to my computer and check updates under des
-
HI, I'm planning to use a cdf function in my essbase outline - '@JgetMonthNumberWorkDays(2009, 1, "aus")' Now my question is..can we pass other essbase functions within this cdf and make it work ? e.g. Will something like below work? '@JgetMonthNumbe