Spaces getting trimmed in presentation layer
Hi,
I am observing that the trailing spaces for the values of a field in the Physical layer are getting trimmed when I am using that field from presentation layer in Prompt/Report. For example, if the value is *'abcd '* in Physical layer, it is becoming *'abcd'* in presentation layer. Is this default behavior of OBIEE and can I change this so that the values will be picked as it is from Physical layer ?
I am using OBIEE 10.1.3.4.1 and the datatype of the field in Physical layer as well as database (Teradata) is char(40).
I think I could not clarify my concern. Apologies for that. We do not have any formatting issue. We are using the field in a Prompt with operator as 'is equal to/is in'. So when the query gets formed, the where clause is coming as -
field _name = 'abcd'
whereas we want it to be
field_name = 'abcd '
Because in the database our value is 'abcd ',as the datatype is char.
We could find a resolution to use 'Contains any' operator instead. But there are hundreds of reports using this field in prompt. Also there is some reason the application do not want to change the datatype in databse to varchar. I needed to know if somehow we can retain the blank spaces in presentation layer.
Similar Messages
-
Spaces getting trimmed in file content conversion
Hi all,
I am converting a flat file to an XML file by XI. The problem which i am facing in file content conversion is that the spaces in flat file data are getting trimmed to one space in the XML in SXMB_MONI.
The data in flat file is like SOUTHSEA and HANTS is having nearly 8 spaces.
But the data in XML is:
<b><u>SOUTHSEA HANTS PO5 2LZ PO5 2LZ020327</u></b> i.e. in XML, there is only 1 space between SOUTHSEA and HANTS.
The following parameters i have used in file content conversion:
.keyFieldValue '*'
.fieldSeparator 'nl'
.fieldNames RECORD_DATA
.ignoreRecordsetName true
I am taking each record of the flat-file in a single record RECORD_DATA in XML.
<b>So can anyone tell me why the big spaces are getting trimmed to a single space eg. between SOUTHSEA and HANTS etc.</b>
Thanks in advance.
Rajeev GuptaHi,
try :
NameA.fieldContentFormatting = <b>nothing </b>
as the default is <b>trim </b>
refere:
http://help.sap.com/saphelp_nw04/helpdata/en/2c/181077dd7d6b4ea6a8029b20bf7e55/content.htm
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a> -
More than one Spaces are getting trimmed on BizTalk BAM portal
Hi All,
We are implementing BAM at our customer place , we observed ,if any field contains more than one space in input file then these spaces are getting trimmed in single space,however it is correctly sitting in the BAMPrimaryImport database
For example if input file ,which is processing through BizTalk, and if any field which value is "AB CDE" (field contain three space here ) then in portal it is appearing as
"AB CDE" (Only one space here) by default
I am not sure how theses values are displayed in portal and how to relove this default behiaver of BAM Portal, if somebody have faced this situation then i will appreciate your help please
Thanks
YashWell then I guess it's a Portal issue (yes you already knew that!) :-)
I know not everybody agrees with me, but the way I look upon it, the Portal should not be used as a product, but merely as a testing tool and inspiration as to what one can build on top of ones BAM activities. In other words, if you need to present your
BAM data to users, you should build your own; Pivot Tables, Reporting Services, ASP.NET Web sites etc. etc. on top of it.
Don't know if this is true, but I've heard that the BAM portal was a beta-product that shipped for the first time with BizTalk Server 2006 without being completed, and no code changes has taken place since.
Morten la Cour -
How to trim spaces from string in BMM layer?
Hi friends,
I need to trim spaces from the string. can you please give me syntax with example.
ThanksHi
I have tried the below option , but it did not work . PS_D_PERSON
PERSON_ID is char type in the data base oracle , and it is defined as varchar on the physical layer .
So the table is loaded with space , i am not able to remove the space using trim both
Thanks
Sridhar.N -
Getting extra NULL row in presentation layer when we use CASE in RPD
Hi,
We have created some time utility members in RPD like Previous month, Previous quarter.
Steps:
We have created a init block for capturing Previous month, Previous quarter and added variables with some default values assigned.
Now, we have created a logical column under time dimension in BMM as Previous month, Previous quarter. We are deriving them using following way.CASE
WHEN
MONTH_COL_NAME=VALUEOF(REPOSITORY_VAR_NAME)
THEN
MONTH_COL_NAME
END
We want these dimension values to qualify with measures.
The problem we are facing is it is showing one extra blank row in presentation layer when we bring Previous month or Previous quarter. This is because CASE conditions behaviour. How to avoid null in CASE condition in RPD?
Thanks,
AnileshYou need to handle the records which are not equals to REPOSITORY_VAR_NAME.
I guess those other rest of values .
Try this
CASE
WHEN
MONTH_COL_NAME=VALUEOF(REPOSITORY_VAR_NAME)
THEN
'Y'
ELSE 'N'
END
in criteria use Y as filter value
If helps pls mark
Edited by: Srini VEERAVALLI on Dec 20, 2012 7:49 AM -
Sending PDF file in presentation layer as a attachment to Email
Hi,
I have a PDF file in my Presentation layer, I want to send it as a attachment to Email. Is there any Function Module or sample code to it.
Regards,
Adithya M.Hi Maha,
Go through this hope u can understand. also check this link
http://abapcode.blogspot.com/2007/05/convert-spool-request-to-pdf-and-send.html.
Here is the code to send the Smartform to mail as PDF attachment.
*& Report ZTEST_NREDDY_PDF_MAIL
REPORT ZTEST_NREDDY_PDF_MAIL.
Internal Table declarations
DATA: I_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
I_TLINE TYPE TABLE OF TLINE WITH HEADER LINE,
I_RECEIVERS TYPE TABLE OF SOMLRECI1 WITH HEADER LINE,
I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
Objects to send mail.
I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
Work Area declarations
WA_OBJHEAD TYPE SOLI_TAB,
W_CTRLOP TYPE SSFCTRLOP,
W_COMPOP TYPE SSFCOMPOP,
W_RETURN TYPE SSFCRESCL,
WA_DOC_CHNG TYPE SODOCCHGI1,
W_DATA TYPE SODOCCHGI1,
WA_BUFFER TYPE STRING, "To convert from 132 to 255
Variables declarations
V_FORM_NAME TYPE RS38L_FNAM,
V_LEN_IN LIKE SOOD-OBJLEN,
V_LEN_OUT LIKE SOOD-OBJLEN,
V_LEN_OUTN TYPE I,
V_LINES_TXT TYPE I,
V_LINES_BIN TYPE I.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZTEST'
IMPORTING
FM_NAME = V_FORM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
W_CTRLOP-GETOTF = 'X'.
W_CTRLOP-NO_DIALOG = 'X'.
W_COMPOP-TDNOPREV = 'X'.
CALL FUNCTION V_FORM_NAME
EXPORTING
CONTROL_PARAMETERS = W_CTRLOP
OUTPUT_OPTIONS = W_COMPOP
USER_SETTINGS = 'X'
IMPORTING
JOB_OUTPUT_INFO = W_RETURN
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
I_OTF[] = W_RETURN-OTFDATA[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
MAX_LINEWIDTH = 132
IMPORTING
BIN_FILESIZE = V_LEN_IN
TABLES
OTF = I_OTF
LINES = I_TLINE
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
ENDIF.
LOOP AT I_TLINE.
TRANSLATE I_TLINE USING '~'.
CONCATENATE WA_BUFFER I_TLINE INTO WA_BUFFER.
ENDLOOP.
TRANSLATE WA_BUFFER USING '~'.
DO.
I_RECORD = WA_BUFFER.
APPEND I_RECORD.
SHIFT WA_BUFFER LEFT BY 255 PLACES.
IF WA_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Attachment
REFRESH: I_RECLIST,
I_OBJTXT,
I_OBJBIN,
I_OBJPACK.
CLEAR WA_OBJHEAD.
I_OBJBIN[] = I_RECORD[].
Create Message Body Title and Description
I_OBJTXT = 'test with pdf-Attachment!'.
APPEND I_OBJTXT.
DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
READ TABLE I_OBJTXT INDEX V_LINES_TXT.
WA_DOC_CHNG-OBJ_NAME = 'smartform'.
WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.
WA_DOC_CHNG-OBJ_DESCR = 'smartform'.
WA_DOC_CHNG-SENSITIVTY = 'F'.
WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
Main Text
CLEAR I_OBJPACK-TRANSF_BIN.
I_OBJPACK-HEAD_START = 1.
I_OBJPACK-HEAD_NUM = 0.
I_OBJPACK-BODY_START = 1.
I_OBJPACK-BODY_NUM = V_LINES_TXT.
I_OBJPACK-DOC_TYPE = 'RAW'.
APPEND I_OBJPACK.
Attachment (pdf-Attachment)
I_OBJPACK-TRANSF_BIN = 'X'.
I_OBJPACK-HEAD_START = 1.
I_OBJPACK-HEAD_NUM = 0.
I_OBJPACK-BODY_START = 1.
DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.
READ TABLE I_OBJBIN INDEX V_LINES_BIN.
I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .
I_OBJPACK-BODY_NUM = V_LINES_BIN.
I_OBJPACK-DOC_TYPE = 'PDF'.
I_OBJPACK-OBJ_NAME = 'smart'.
I_OBJPACK-OBJ_DESCR = 'test'.
APPEND I_OBJPACK.
CLEAR I_RECLIST.
I_RECLIST-RECEIVER = '[email protected]'.
I_RECLIST-REC_TYPE = 'U'.
APPEND I_RECLIST.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = WA_DOC_CHNG
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = WA_OBJHEAD
CONTENTS_BIN = I_OBJBIN
CONTENTS_TXT = I_OBJTXT
RECEIVERS = I_RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
WRITE:/ 'Error When Sending the File', SY-SUBRC.
ELSE.
WRITE:/ 'Mail sent'.
ENDIF.
If you want to send some text as Body of the Mail then follow this once
when u r callin the FM'SO_NEW_DOCUMENT_ATT_SEND_API1'.. points to remember
1.u have to pass the body of content in table CONTENTS_TXT(ia m using I_OBJBIN) (each line a record) then. suppose i have appended 11 records to the table CONTENTS_TXT .
2.PACKING_LIST(iam usign I_OBJPACK) table u ahve to append a redord as follows
I_OBJPACK-TRANSF_BIN = ' '.
I_OBJPACK-HEAD_START = 000000000000001.
I_OBJPACK-HEAD_NUM = 000000000000001.
I_OBJPACK-BODY_START = 000000000000002
I_OBJPACK-BODY_NUM = 000000000000010.
I_OBJPACK-DOC_TYPE = 'RAW'.
append I_OBJPACK-.
by the above code system treat the first line in table I_OBJBIN as header and the 2nd line to 10 lines tread as body.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = WA_DOC_CHNG
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = WA_OBJHEAD
CONTENTS_BIN = I_OBJBIN
CONTENTS_TXT = I_OBJTXT
RECEIVERS = I_RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
*& Report ZSPOOLTOPDF *
*& Converts spool request into PDF document and emails it to *
*& recipicant. *
*& Execution *
*& This program can be run in background or online and a spool request *
*& will still be created *
REPORT zspooltopdf.
PARAMETER: p_email1 LIKE somlreci1-receiver
DEFAULT [email protected],
p_sender LIKE somlreci1-receiver
DEFAULT [email protected],
p_delspl AS CHECKBOX,
p_online no-display.
*DATA DECLARATION
DATA: gd_recsize TYPE i.
Spool IDs
TYPES: BEGIN OF t_tbtcp.
INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
wa_tbtcp TYPE t_tbtcp.
Job Runtime Parameters
DATA: gd_eventid LIKE tbtcm-eventid,
gd_eventparm LIKE tbtcm-eventparm,
gd_external_program_active LIKE tbtcm-xpgactive,
gd_jobcount LIKE tbtcm-jobcount,
gd_jobname LIKE tbtcm-jobname,
gd_stepcount LIKE tbtcm-stepcount,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
DATA: w_recsize TYPE i,
w_spool_nr like sy-spono.
%_print LIKE pri_params.
DATA: gd_subject LIKE sodocchgi1-obj_descr,
it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
gd_sender_type LIKE soextreci1-adr_typ,
gd_attachment_desc TYPE so_obj_nam,
gd_attachment_name TYPE so_obj_des.
Spool to PDF conversions
DATA: gd_spool_nr LIKE tsp01-rqident,
gd_destination LIKE rlgrap-filename,
gd_bytecount LIKE tst01-dsize,
gd_buffer TYPE string.
Binary store for PDF
DATA: BEGIN OF it_pdf_output OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.
CONSTANTS: c_dev LIKE sy-sysid VALUE DEV,
c_no(1) TYPE c VALUE ,
c_device(4) TYPE c VALUE LOCL.
*START-OF-SELECTION.
START-OF-SELECTION.
Write statement to represent report output. Spool request is created
if write statement is executed in background. This could also be an
ALV grid which would be converted to PDF without any extra effort
WRITE Hello World.
new-page.
commit work.
new-page print off.
If p_online = X.
Processing performed when program calls itself when run online
gd_spool_nr = sy-spono.
EXPORT gd_spool_nr TO MEMORY ID SPOOLTOPDF.
EXIT.
endif.
IF sy-batch EQ X.
PERFORM get_job_details.
PERFORM obtain_spool_id.
ELSE.
gd_spool_nr = sy-spono.
If executed online, it submits a program to perform the write
statements
instructing it to create a spool request, this could be another
program
which just performs the write statements and then exports sy-spono
to memory. But in this example it calls itself passing X to parameter
p_online, which takes it down an alternative procesing path.
submit ZSPOOLTOPDF
with p_online = X
to sap-spool
spool parameters %_print
archive parameters %_print
without spool dynpro
and return.
ENDIF.
Get spool id from program called above
IMPORT gd_spool_nr FROM MEMORY ID SPOOLTOPDF.
PERFORM convert_spool_to_pdf.
PERFORM process_email.
if p_delspl EQ X.
PERFORM delete_spool.
endif.
IF sy-sysid = c_dev.
wait up to 5 seconds.
SUBMIT rsconn01 WITH mode = INT
WITH output = X
AND RETURN.
ENDIF.
FORM obtain_spool_id *
FORM obtain_spool_id.
CHECK NOT ( gd_jobname IS INITIAL ).
CHECK NOT ( gd_jobcount IS INITIAL ).
SELECT * FROM tbtcp
INTO TABLE it_tbtcp
WHERE jobname = gd_jobname
AND jobcount = gd_jobcount
AND stepcount = gd_stepcount
AND listident 0000000000′
ORDER BY jobname
jobcount
stepcount.
READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
IF sy-subrc = 0.
message s004(zdd) with gd_spool_nr.
gd_spool_nr = wa_tbtcp-listident.
MESSAGE s004(zdd) WITH gd_spool_nr.
ELSE.
MESSAGE s005(zdd).
ENDIF.
ENDFORM.
FORM get_job_details *
FORM get_job_details.
Get current job details
CALL FUNCTION GET_JOB_RUNTIME_INFO
IMPORTING
eventid = gd_eventid
eventparm = gd_eventparm
external_program_active = gd_external_program_active
jobcount = gd_jobcount
jobname = gd_jobname
stepcount = gd_stepcount
EXCEPTIONS
no_runtime_info = 1
OTHERS = 2.
ENDFORM.
FORM convert_spool_to_pdf *
FORM convert_spool_to_pdf.
CALL FUNCTION CONVERT_ABAPSPOOLJOB_2_PDF
EXPORTING
src_spoolid = gd_spool_nr
no_dialog = c_no
dst_device = c_device
IMPORTING
pdf_bytecount = gd_bytecount
TABLES
pdf = it_pdf_output
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
CHECK sy-subrc = 0.
Transfer the 132-long strings to 255-long strings
LOOP AT it_pdf_output.
TRANSLATE it_pdf_output USING ~.
CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
ENDLOOP.
TRANSLATE gd_buffer USING ~ .
DO.
it_mess_att = gd_buffer.
APPEND it_mess_att.
SHIFT gd_buffer LEFT BY 255 PLACES.
IF gd_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDFORM.
FORM process_email *
FORM process_email.
DESCRIBE TABLE it_mess_att LINES gd_recsize.
CHECK gd_recsize > 0.
PERFORM send_email USING p_email1.
perform send_email using p_email2.
ENDFORM.
FORM send_email *
> p_email *
FORM send_email USING p_email.
CHECK NOT ( p_email IS INITIAL ).
REFRESH it_mess_bod.
Default subject matter
gd_subject = Subject.
gd_attachment_desc = Attachname.
CONCATENATE attach_name INTO gd_attachment_name.
it_mess_bod = Message Body text, line 1′.
APPEND it_mess_bod.
it_mess_bod = Message Body text, line 2 .
APPEND it_mess_bod.
If no sender specified - default blank
IF p_sender EQ space.
gd_sender_type = space.
ELSE.
gd_sender_type = INT.
ENDIF.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_mess_bod
it_mess_att
using p_email
Example .xls documnet attachment
PDF
gd_attachment_name
gd_attachment_desc
p_sender
gd_sender_type
changing gd_error
gd_reciever.
ENDFORM.
FORM delete_spool *
FORM delete_spool.
DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
ld_spool_nr = gd_spool_nr.
CHECK p_delspl c_no.
CALL FUNCTION RSPO_R_RDELETE_SPOOLREQ
EXPORTING
spoolid = ld_spool_nr.
ENDFORM.
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables it_message
it_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = SAPRPT.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = F.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = SAPRPT.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = F.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = it_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = RAW.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = X.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = U.
t_receivers-com_type = INT.
t_receivers-notif_del = X.
t_receivers-notif_ndel = X.
APPEND t_receivers.
CALL FUNCTION SO_DOCUMENT_SEND_API1′
EXPORTING
document_data = w_doc_data
put_in_outbox = X
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = X
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
Reward points if helpful
Thanks
Naveen khan -
I am trying to use java file as Model layer and jsf as presentation layer
I am trying to use java file as Model layer and jsf as presentation layer and need some help
I successfully get the value of h:outputText from java file by doing simple binding operation but I am facing problems when I am trying to fill h:dataTable
I create java file
package oracle.model;
import java.sql.;*
import java.util.;*
*public class TableBean {*
Connection con ;
Statement ps;
ResultSet rs;
private List perInfoAll = new ArrayList();
*public List getperInfoAll() {*
perInfoAll.add(0,new perInfo("name","username","blablabla"));
return perInfoAll;
*public class perInfo {*
String uname;
String firstName;
String lastName;
*public perInfo(String firstName,String lastName,String uname) {*
this.uname = uname;
this.firstName = firstName;
this.lastName = lastName;
*public String getUname() {*
return uname;
*public String getFirstName() {*
return firstName;
*public String getLastName() {*
return lastName;
right click on the file and choose 'create data control'
then i wrote the jsf file:
*<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>*
*<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>*
*<f:view>*
*<h:dataTable id="dt1" value="#{bindings.perInfoAll}"*
var="item" bgcolor="#F1F1F1" border="10"
cellpadding="5" cellspacing="3" rows="4" width="50%"
dir="LTR" frame="hsides" rules="all"
*>*
*<f:facet name="header">*
*<h:outputText value="This is 'dataTable' demo" id="ot6"/>*
*</f:facet>*
*<h:column id="c2">*
*<f:facet name="header">*
*<h:outputText value="First Name" id="ot1"/>*
*</f:facet>*
*<h:outputText style="" value="#{item.firstName}"*
id="ot2"/>
*</h:column>*
*<h:column id="c4">*
*<f:facet name="header">*
*<h:outputText value="Last Name" id="ot9"/>*
*</f:facet>*
*<h:outputText value="#{item.lastName}" id="ot8"/>*
*</h:column>*
*<h:column id="c3">*
*<f:facet name="header">*
*<h:outputText value="Username" id="ot7"/>*
*</f:facet>*
*<h:outputText value="#{item.uname}" id="ot4"/>*
*</h:column>*
*<f:facet name="footer">*
*<h:outputText value="The End" id="ot3"/>*
*</f:facet>*
*</h:dataTable>*
*</center>*
*</af:document>*
*</f:view>*
but nothing is appear in my table
I know that there is something wrong in calling the binding object
I need help pls and where can i find some help to deal with another tag types
thanksi dragged the "perInfoAll" from my "Data Controls" and choosed adf table (even I know that new table with adf tags well be generated and i want table with jsf tags)
and this code is generated
*<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"*
*"http://www.w3.org/TR/html4/loose.dtd">*
*<%@ page contentType="text/html;charset=UTF-8"%>*
*<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>*
*<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>*
*<%@ taglib uri="http://xmlns.oracle.com/adf/faces/rich" prefix="af"%>*
*<f:view>*
*<af:document id="d1">*
*<af:messages id="m1"/>*
*<af:form id="f1">*
*<af:table value="#{bindings.perInfoAll1.collectionModel}" var="row"*
*rows="#{bindings.perInfoAll1.rangeSize}"*
*emptyText="#{bindings.perInfoAll1.viewable ? 'No data to display.' : 'Access Denied.'}"*
*fetchSize="#{bindings.perInfoAll1.rangeSize}"*
*rowBandingInterval="0"*
*selectionListener="#{bindings.perInfoAll1.collectionModel.makeCurrent}"*
*rowSelection="multiple" id="t1">*
*<af:column sortProperty="uname" sortable="false"*
*headerText="#{bindings.perInfoAll1.hints.uname.label}"*
*id="c1">*
*<af:inputText value="#{row.bindings.uname.inputValue}"*
*label="#{bindings.perInfoAll1.hints.uname.label}"*
*required="#{bindings.perInfoAll1.hints.uname.mandatory}"*
*columns="#{bindings.perInfoAll1.hints.uname.displayWidth}"*
*maximumLength="#{bindings.perInfoAll1.hints.uname.precision}"*
*shortDesc="#{bindings.perInfoAll1.hints.uname.tooltip}"*
*id="it3">*
*<f:validator binding="#{row.bindings.uname.validator}"/>*
*</af:inputText>*
*</af:column>*
*<af:column sortProperty="firstName" sortable="false"*
*headerText="#{bindings.perInfoAll1.hints.firstName.label}"*
*id="c2">*
*<af:inputText value="#{row.bindings.firstName.inputValue}"*
*label="#{bindings.perInfoAll1.hints.firstName.label}"*
*required="#{bindings.perInfoAll1.hints.firstName.mandatory}"*
*columns="#{bindings.perInfoAll1.hints.firstName.displayWidth}"*
*maximumLength="#{bindings.perInfoAll1.hints.firstName.precision}"*
*shortDesc="#{bindings.perInfoAll1.hints.firstName.tooltip}"*
*id="it2">*
*<f:validator binding="#{row.bindings.firstName.validator}"/>*
*</af:inputText>*
*</af:column>*
*<af:column sortProperty="lastName" sortable="false"*
*headerText="#{bindings.perInfoAll1.hints.lastName.label}"*
*id="c3">*
*<af:inputText value="#{row.bindings.lastName.inputValue}"*
*label="#{bindings.perInfoAll1.hints.lastName.label}"*
*required="#{bindings.perInfoAll1.hints.lastName.mandatory}"*
*columns="#{bindings.perInfoAll1.hints.lastName.displayWidth}"*
*maximumLength="#{bindings.perInfoAll1.hints.lastName.precision}"*
*shortDesc="#{bindings.perInfoAll1.hints.lastName.tooltip}"*
*id="it1">*
*<f:validator binding="#{row.bindings.lastName.validator}"/>*
*</af:inputText>*
*</af:column>*
*</af:table>*
*</af:form>*
*</af:document>*
*</f:view>*
but when run it i see the following errors
*Class oracle.adf.model.adapter.bean.BeanDataControl can not access a member of class nl.amis.hrm.EmpManager with modifiers "private"*
*Object EmpManager of type DataControl is not found.*
*java.lang.NullPointerException*
*Class oracle.adf.model.adapter.bean.BeanDataControl can not access a member of class nl.amis.hrm.EmpManager with modifiers "private"*
*Object EmpManager of type DataControl is not found.*
*java.lang.NullPointerException*
:( -
How can I import db column comments into the OBIEE presentation layer?
We have a very well designed data mart - it is a star schema and all the fact and dimension table columns have comments in them with their definition and use. There is virtually no change required in the physical or business layer. The only modifications done in the presentation layer was to hide the Pk/Fk columns.
Is there a way to import these column comments into the presentation layer so that the business user can see this comment in the tool tip while hovering over the presentation column in Answers?
Thanks for your help!Hi,
I assume the comments you mean are stored in user_tab_comments and user_col_comments.
When this is the case you should do the following:
Go to your subject area in your presentation layer. For now I assume the name of this subject area is "Subject Area".
Then right click on this subject area and check "Externalize Descriptions".
Then create an initialization block (session) using this query:
(select 'CD_Subject_Area_' || table_name, comments from user_tab_comments)
union all
(select 'CD_Subject_Area_' || table_name || '_' || column_name, comments from user_col_comments)
Use "Row-wise initialization" for this initialization block.
Two comments:
1) Like I said, I assume Subject Area is the name of your subject area in your presentation layer, so I guess you need to replace this with the name of your Subject Area.
But be sure that you replace each space ' ' with an underscore '_'.
2) Maybe you need to refine above querys by filtering on table_name for those table_names you are using.
Good luck.
Regards,
Stijn -
Issue adding a new column to OBIEE presentation layer
Hi,
I am pretty new to OBIEE so this may be a silly question. I am facing some problems trying to add a new column from a physical table the OBIEE presentation layer.
Below are the steps I followed:
Task: add a product category set to the presentation layer.
Steps:
1) First verified that the product category set is being populated in the W_PROD_CAT_DH table in the datawarehouse. this was done by running the following sql
SELECT W_PROD_CAT_DH.TOP_LVL_PRODCAT_NAME
FROM W_PROD_CAT_DH, W_INVENTORY_PRODUCT_D
WHERE W_PROD_CAT_DH.integration_id = W_INVENTORY_PRODUCT_D.INV_PROD_CAT1
This sql gave the right category value.
2) created a "Alias" of the table W_PROD_CAT_DH in the OBIEE Admin tool physical layer. (done by right clicking W_PROD_CAT_DH >>New Object>> Alias)
3) named the Alias of W_PROD_CAT_DH as "Dim_W_INV_MKT_CAT" and created a key of the alias named "integration id" on the column "integration_id"
4) opened the pre-existing alias of W_INVENTORY_PRODUCT_D the alias was called "Dim_W_INVENTORY_PRODUCT_D" and added a key called "MKT_CAT" on the column "INV_PROD_CAT1" in this alias (Dim_W_INVENTORY_PRODUCT_D of the table W_INVENTORY_PRODUCT_D)
5) in the alias of the "W_INVENTORY_PRODUCT_D" called "Dim_W_INVENTORY_PRODUCT_D" added a "Foreign Keys" the expression of the key is following: ("Oracle Data Warehouse"."Catalog"."dbo"."Dim_W_INV_MKT_CAT"."INTEGRATION_ID" = "Oracle Data Warehouse"."Catalog"."dbo"."Dim_W_INVENTORY_PRODUCT_D"."INV_PROD_CAT1")
Logical layer
6) Opened the existing logical folder called "Dim - Inventory Product" and clicked on "Sources" tab then double clicked the source "Dim_W_INVENTORY_PRODUCT_D" and added a new mapping under "Map to these tables" under "General" tab. The column that was added was the physical alias "Dim_W_INV_MKT_CAT"
7) added a new column mapping to the same logical table source (Dim_W_Inventory_PRODUCT_D) this new mapping was a column from the alias "Dim_W_INV_MKT_CAT" (column name "TOP_LVL_PRODCAT_NAME")
Presentation Layer
8) dragged the newly added column (TOP_LVL_PRODCAT_NAME) from the logical layer "Dim - Inventory Product" to the presentation layer "Product" folder.
ISSUE
after adding everything and checking global consistency and save and checking-in my work when i login from the front end presentation services. I see the newly added column is showing under the "Product" folder. on dragging the column by itself to the Ad-Hoc analysis I can see the different values of the category. On adding a second column from the same logical folder (Dim - Inventory Product in logical layer) i still see the right product name and corresponding category. BUT when I drag any other column from any other folder (such as "Day" from "Time" or any fact values) the result does not fetch any data (message: The specified criteria didn't result in any data.)
I am not sure if I am missing any step but I know I am mapping the new table alias to the inventory_product_d since i see right results on creating analysis of columns in those two folders. but no other folders give me any data.
I also know that the logical folder "Dim - Inventory Product" is joined with other tables as I can see results when i do not add the newly added catagory column but other folder and other columns of "Dim - Inventory Product"
I would really appreciate any insight to this very much. we are using OBIEE 11.1.1.6 with the Oracle 11.5.10 Adaptor (SDE_ORA11510_Adopter)
I will try to upload some screenshots if needed but presently not sure if its something really simple.Hi Prassu,
thanks for the responce. and Apologies for the delay in getting back to you.
1) 1.First of all set the logging level to 3 in the admin tool save it.
You can get the SQL query from here
settings(Answers right top)-->Administration-->manage sessions-->view log
When I try to do this I get the following message. and no log files.
Error
Log Could Not Be Retrieved
Odbc driver returned an error (SQLExecDirectW).
Error Details
Error Codes: OPR4ONWY:U9IM8TAC
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 27002] Near <3790667783>: Syntax error [nQSError: 26012] . (HY000) -
DTO, DAO - Displaying/Formatting Data in the Presentation Layer
I need display multiple fields from a DTO throughout the presentation layer. What is the best way to format display data without duplicating the logic throughout presentation layer?
Example
I have a Person DTO that has first name, last name, and suffix 'getters' and am constantly showing the data out as "first last, suffix"
Options
1 - Create a utility class that formats the name of the Person DTO.
public class DisplayUtil{
public static String DisplayName(PersonDTO person){
return person.getFirstName() + " " + person.getLastName() + ", " + person.getSuffix();
}2 - Add a getter into the DTO that gets the data
public class PersonDto{
//Other fields, getters, and setters
public String getName(){
return person.getFirstName() + " " + person.getLastName() + ", " + person.getSuffix();
}3 - Create a domain object (aka business object) using the "entity inherits from transfer object strategy".
public class Person extends PersonDto{
public String getName(){
return person.getFirstName() + " " + person.getLastName() + ", " + person.getSuffix();
}The easiest to implement now would be Option 2 above but it distorts what the DTO is supposed to be used for (which is transferring data).
What have you done in the past? What is an "acceptable" best practice? Are there other options that I haven't listed above that you use?So, from what you advise you would have the following
code in <b>all</b> of the JSP pages of the Struts
app?
<c:out value="${person.firstName} ${person.lastName}"
/>
<c:logic test="${not empty person.suffix}">
<c:out value=", ${person.suffix}" />
</c:logic>The problem that I see with this is that changes
would be incredibly difficult at a later date, since
every page contains the logic about displaying the
proper name format. (Say the client wanted to change
to always display the last name first instead of the
first name for all the pages. With this logic code
being on every "template", their could be hundreds of
pages to change. This is where I could see the
benefit of a utility class like Option 1.)This is what the include directive is for. The JSP tags in your example should not exist (physically ) in each JSP file. They should be stored in a single JSP fragment file.
The JSP fragment file is then "included" in each page via include directive. If you need to change anything for this at a later date, then you go to the single fragment file and make the change once.
<html>
<head><title>Including Shared Stuff in JSP Pages</title></head>
<body>
<%@include file="shared/text.jspf" %><br/>
<font size="10">What It Do</font><br/>
<jsp:include page="shared/text.jspf" />
</body>
</html>When each JSP file is converted to a Java servlet by the JSP Engine, it will grab the shared fragment and include it in the code for the servlet. -
Unable to drop BMM Dimension to Presentation Layer
The BMM Dimension is based on Location_D. At first level I have country (1attribute of location_d) and is made as a key for first level. At second level I have state (also as key & 2 attribute of location_d) The preferred drill down path at first level is pointed to second level.
When I try to drop dimension to Presentation layer, it doesnt allow. I do not get any errors during consistency check.
I am using OBIEE10g on a Windows XP system.
Is there anything that is wrong?
Regards,
Prem.If you are creating a Presentation catalog based on BMM then, mouse right click on Presentation layer and create manually and drag and drop from BMM.
If your case is adding column to existing Presentation catalog's Presentation table; See the related BMM to that Presentation catalog, you may use mouse right click and Related to.
If these are not helping send me rpd with details to my email I do it for you.
Mark if helps -
Rename presentation layer catalog
Hi,
I have renamed the presentation layer catalog in RPD. When I am seeing the dashboard all the reports are getting displayed but when I see the individual reports I am getting :"Either you do not have permission to use the subject area X within Answers, or the subject area does not exist" on the left side of the report.Can anyone tell me how can we rename the presentation layer catalog with individual reports not showing the above statement?
Thanks and Regards,
AmritOption 1 :
use the rename wizard ( tols-> utility-> rename wizard) to change the name of presentation catalog
option 2 :
go to answers of that report->go to advance tab
under
Enter the name of the Subject Area : write the new subject area -
How to get the text present in JTextArea
i am writing application for some system to be computerised and i am not getting how to get the text present in text area and set it into database...can anybody suggest me solution??
You must have named the TextArea like
JTextArea textArea;so, use the getText() method like
String strTextAreaContents = textArea.getText();You can then use JDBC to connect to the database that you want and save your contents that is now in strTextAreaContents.
-- Srikanth -
I have an ipad with 5.0.1 and trying to learn how to use it. When I click on the icon Calender, I get the calendar presentation but I do not know how to make an entry. Every tutorial I have looked at says that you click on a + sign in the lower right corner and then make your entry. I do not have a + sign on my screen. Can some one help me.
You can download a complete iPad 2 User Guide here: http://manuals.info.apple.com/en/ipad_user_guide.pdf
Also, Good Instructions http://www.tcgeeks.com/how-to-use-ipad-2/
Cheers, Tom -
Hiding columns in Presentation Layer, but still accessible in a report.
Hi BI Devs,
I have a question on how to hide certain columns in the presenation layer but still make them available in a dashboard/report.
We have 3 sections in our Presenatation Layer...section_a, section_b, section_c. We have two groups created, group_max and group_lite. Group_max will have access to all the sections in the presentation layer but group_lite will only have access to section_a and section_b
We have a report in a dashboard (lets call it full_dashboard) that contains columns from section_a, section_b and section_c. We want all users (group_max and group_lite) to have access to the report, run the report and return data.
Our requirement is that the group_lite will not have access to the section_c in "Answers".
When we set the permissions in the RPD for the different sections, the permissions work correctly in hiding the section_c from group_lite, but when they run the report full_dashboard, the report errors out for group_lite users.
Is there a way to grant access to the group_lite users so that they can run full_dashboard but still deny them access to the columns in Answers?Here is my thinking about duplicationg the section_c
1. If i duplicate section_c, it will still be visible to group_lite in the presenation layer.
2. If i duplicate section_c, i will have to change the dashboard (a very complex one too) to point to the duplicated section. How will I be able to hide the duplicated section?
I am just not sure how to hide section_c from the group_lite users and still have the reports in the dashboard access the columns, without having to change the report.
Edited by: empyre on Mar 16, 2011 8:21 AM
Maybe you are looking for
-
Apex Application With Oralce SSO (inbuilt) application integration
Hi, Installed oracle 11g, configured Application Express Release 3.0. I developed application in APEX. Now I want to authenticate my application with Oracle SSO login. Please help me on this. Thanks in advance. Thanks, Surya
-
Problem with repaint() in JPanel
Hi, This is the problem: I cyclically call the repaint()-method but there is no effect of it. When does it appear: The problem occurs by calling the repaint()-method of a JPanel -class. This is what i am doing: The repaint() is called from a differen
-
Absence Quota creation during Time evaluation - Orgnaisational Assg change
Hello Experts, I have one emplyee for whom the Transfer action has been run - his personal subarea has been changed from 1633 to 1654 obviously the ps grouping for time quota type changed form 35 to 40. so function QUOTA is creating different quota f
-
Does iMovie11 work on Snow Leopard 10.6.8?
I would like to buy Imovie, and I need to know if it will work with my current OS. On the app store in requirements it says 1.7.4 or later? Is that true??? I'm not looking to upgrade my OS as my iMac is too old, probably not eligible.
-
Here's the screen shot. If I ignore the preview, and set with the print area tool, I get what's in the print area tool. Something is amiss in the land of tiling settings, but I can't get to whatever setting is messing this up. thanks greg