Indention in Hirerchical Data Grouing
I have created one report with Hierarchical grouping ..In Hierarchical Grouping option. i set a indent of 1 cm.. Now In detail section there are two field. but i want to indent only first field and not to second. I just want to display second field on report's right side.. Just like this
Level1 Title
1 ABC
2 DEF
3 HIJ
4 JKM
5 JKL
How to Do this???
Edited by: try abc on Oct 3, 2008 12:50 PM
Edited by: try abc on Oct 3, 2008 12:52 PM
>
Charliy Nash wrote:
> You can create 2 Detail sections and do a conditional print suppression on them.
>
> One section will only print for the the first item in the group:
> = Previous(Groupfield})
>
> The other section prints for subsequent items:
> <> Previous()
I create two Detail Section D1 and D2, then put the Group Filed (Level) on First D1 section and Other Field(Title ) On Second D2 section.
Add the above condition , but it does not display anything in second detail section
Similar Messages
-
Hi Experts,
I have a XML file on my desk top.
How to upload data from XML file into ITAB?
Regardscheck this code
this mat be useful to u
REPORT Z_NTVI_XML_TO_ABAP .
Load iXML Lib.
type-pools: ixml.
class cl_ixml definition load.
data: G_IXML type ref to if_ixml.
data: STREAMFACTORY type ref to if_ixml_stream_factory.
data: ISTREAM type ref to if_ixml_istream.
data: DOCUMENT type ref to if_ixml_document.
data: PARSER type ref to if_ixml_parser.
data: LV_FILE_URL type rlgrap-filename.
You should provide the parameter for file name
LV_FILE_URL = 'C:input_xml.xml'.
types: begin of XML_LINE,
DATA(256) type x,
end of XML_LINE.
types: begin of TY_HEADER,
CUST_NAME(20) type c,
CARD_NO(20) type c,
TAX_AMOUNT(10) type c,
TOTAL_AMOUNT(10) type c,
end of TY_HEADER.
types: begin of TY_ITEM,
ITEM_NO(4) type n,
ITEM_ID(20) type c,
ITEM_TITLE(50) type c,
ITEM_QTY(10) type c,
ITEM_UPRICE(10) type c,
end of TY_ITEM.
data: GV_HEADER type TY_HEADER.
data: GT_ITEM type standard table of TY_ITEM with header line.
data: XML_TABLE type table of XML_LINE,
XML_TABLE_SIZE type i.
The next step is creating the main factory for the iXML library:
G_IXML = cl_ixml=>create( ).
Now Create Stream Factory
STREAMFACTORY = G_IXML->create_stream_factory( ).
upload a file from the client's workstation
call function 'WS_UPLOAD'
exporting
filename = LV_FILE_URL
filetype = 'BIN'
importing
filelength = XML_TABLE_SIZE
tables
data_tab = XML_TABLE
exceptions
others = 11.
wrap the table containing the file into a stream
ISTREAM = STREAMFACTORY->create_istream_itable( table = XML_TABLE
size = XML_TABLE_SIZE )
Get the file data as Stream
*istream = streamfactory->create_istream_uri( public_id = lv_file_url
system_id = lv_file_url ).
Create XML Document instance
DOCUMENT = G_IXML->create_document( ).
Create parser Object
PARSER = G_IXML->create_parser( stream_factory = STREAMFACTORY
ISTREAM = istream
DOCUMENT = document ).
Parse an XML document into a DOM tree
*parser->parse( ).
Parsing Error Processing
if PARSER->parse( ) ne 0.
if PARSER->num_errors( ) ne 0.
data: PARSEERROR type ref to if_ixml_parse_error,
STR type STRING,
I type i,
COUNT type I,
INDEX type i.
COUNT = PARSER->num_errors( ).
write: COUNT, ' parse errors have occured:'.
INDEX = 0.
while INDEX < COUNT.
PARSEERROR = PARSER->get_error( INDEX = index ).
I = PARSEERROR->get_line( ).
write: 'line: ', i.
I = PARSEERROR->get_column( ).
write: 'column: ', i.
STR = PARSEERROR->get_reason( ).
write: STR.
INDEX = index + 1.
endwhile.
endif.
endif.
Close the stream since it �s not needed anymore
call method ISTREAM->close( ).
clear ISTREAM.
Now try to make it look good
data : lv_size type sytabix,
lv_ret_code type sysubrc.
data: lo_xml_document type ref to cl_xml_document.
field-symbols: <fs_xml_data> type any table.
lo_xml_document = document.
call method lo_xml_document->get_as_table
importing
table = <fs_xml_data>
size = lv_size
retcode = lv_ret_code
*data: items type ref to if_ixml_node_collection.
*items = document->get_elements_by_tag_name( name = 'Item' ).
*data: iterator type ref to if_ixml_node_iterator,
node type ref to if_ixml_node.
*iterator = document->create_iterator( ).
*node = iterator->get_next( ).
*while not node is initial.
do something with the node
node = iterator->get_next( ).
*endwhile.
DATA : GV_NODE type ref to if_ixml_node.
DATA : GV_NODETEXT type STRING.
data: GV_FIRST_TIME.
GV_FIRST_TIME = 'X'.
GV_NODE = DOCUMENT.
GT_ITEM-item_no = 1.
perform GET_DATA tables GT_ITEM
using GV_NODE
changing GV_HEADER.
Last item is still not added.
append GT_ITEM.
write : GV_HEADER-cust_name,
GV_HEADER-card_no,
GV_HEADER-tax_amount,
GV_HEADER-total_amount.
loop at GT_ITEM.
write /:.
write : GT_ITEM-item_no,
GT_ITEM-item_id,
GT_ITEM-item_title,
GT_ITEM-item_qty,
GT_ITEM-item_uprice.
endloop.
FORM Get_data *
form get_data tables YT_ITEM structure GT_ITEM
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type TY_HEADER.
data: INDENT type i.
data: PTEXT type ref to if_ixml_text.
data: STRING type string.
data: TEMP_STRING(100).
case X_NODE->get_type( ).
when if_ixml_node=>co_node_element.
STRING = X_NODE->get_name( ).
GV_NODETEXT = STRING.
when if_ixml_node=>co_node_text.
PTEXT ?= X_NODE->query_interface( IXML_IID_TEXT ).
if PTEXT->ws_only( ) is initial.
STRING = X_NODE->get_value( ).
case GV_NODETEXT.
when 'Customer'.
clear GV_HEADER.
when 'Name'.
move STRING to GV_HEADER-cust_name.
when 'Cardnum'.
move STRING to GV_HEADER-card_no.
when 'Tax'.
move STRING to GV_HEADER-tax_amount.
when 'Total'.
move STRING to GV_HEADER-total_amount.
Iteam details
when 'ID'.
move STRING to GT_ITEM-item_id.
when 'Title'.
move STRING to TEMP_STRING.
move TEMP_STRING to GT_ITEM-item_title.
when 'Quantity'.
move STRING to GT_ITEM-item_qty.
when 'UnitPrice'.
move STRING to GT_ITEM-item_uprice.
endcase.
endif.
endcase.
if GV_NODETEXT = 'Customer'.
clear GV_HEADER.
elseif GV_NODETEXT = 'Item'.
if GV_FIRST_TIME ne 'X'.
append GT_ITEM.
clear : gt_item.
GT_ITEM-item_no = gt_item-item_no + 1.
endif.
GV_FIRST_TIME = ' '.
endif.
Get the next child
X_NODE = x_node->get_first_child( ).
Recurse
while not X_NODE is initial.
perform GET_DATA tables GT_ITEM
using X_NODE
changing GV_HEADER.
X_NODE = x_node->get_next( ).
endwhile.
endform.
*sample xml file
<Name>Satya Mandiga</Name>
<Cardnum>234 234 234 234</Cardnum>
</Customer>
<ID>209</ID>
<Title>Duke: A Biography of the SAP Java Guru</Title>
<Quantity>1</Quantity>
<UnitPrice>Rs10.75</UnitPrice>
</Item>
<ID>208</ID>
<Title>100% Pure: Making Cross Platform Deployment a Reality</Title>
<Quantity>1</Quantity>
<UnitPrice>Rs10.75</UnitPrice>
</Item>
<ID>204</ID>
<Title>Making the Transition from C++ to the Java(tm)
*Language</Title>
<Quantity>1</Quantity>
<UnitPrice>Rs10.75</UnitPrice>
</Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>Rs10.75</UnitPrice>
</Item>
<ID>210</ID>
<Title>I Think Not: Dukes Likeness to the Federation Insignia</Title>
<Quantity>1</Quantity>
<UnitPrice>Rs10.75</UnitPrice>
</Item>
</Manifest>
<Subtotal>Rs53.75</Subtotal>
<Tax>Rs4.43</Tax>
<Total>Rs58.18</Total>
</Receipt>
</Order>
reward the points -
Hi guys,
How to upload a XML file into sap?
is there any function module?
can anybody give me an example program for converting or uploading XML data into sap.
regards,
vinoth.Hi all,
The XML code and XML file given is running fine for me, but when i am using it, my XML file and code, the tables GV_header and GT_item are filling in the perform but outside perform it's empty. Please find the code and XML file , PLease give the answer its urgent, points will be given for sure.
My function module code is:-
FUNCTION Z_MMI_XML_EXTRACT_COPY.
""Local interface:
*" IMPORTING
*" REFERENCE(DOCTYPE) LIKE DRAW-DOKAR
*" REFERENCE(DOCNUM) LIKE DRAW-DOKNR
*" REFERENCE(DOCVER) LIKE DRAW-DOKVR
*" REFERENCE(DOCPART) LIKE DRAW-DOKTL
*" TABLES
*" T_HEADER STRUCTURE ZFI_HEADER
*" T_ITEMS STRUCTURE ZFI_ITEMS
Load iXML Lib.
type-pools: ixml.
class cl_ixml definition load.
data: G_IXML type ref to if_ixml.
data: STREAMFACTORY type ref to if_ixml_stream_factory.
data: ISTREAM type ref to if_ixml_istream.
data: DOCUMENT type ref to if_ixml_document.
data: PARSER type ref to if_ixml_parser.
You should provide the parameter for file name
*LV_FILE_URL = 'C:input_xml.xml'.
types: begin of XML_LINE,
DATA(256) type x,
end of XML_LINE.
***types: begin of TY_HEADER,
CUST_NAME(20) type c,
CARD_NO(20) type c,
TAX_AMOUNT(10) type c,
TOTAL_AMOUNT(10) type c,
end of TY_HEADER.
***types: begin of TY_ITEM,
ITEM_NO(4) type n,
ITEM_ID(20) type c,
ITEM_TITLE(50) type c,
ITEM_QTY(10) type c,
ITEM_UPRICE(10) type c,
end of TY_ITEM.
*data: GV_HEADER type TY_HEADER.
*data: GV_HEADER like zfi_header occurs 0 with header line.
data : GV_HEADER LIKE ZFI_HEADER.
*data: GT_ITEM type standard table of TY_ITEM with header line.
*data: GT_ITEM type standard table of zfi_items with header line.
data: GT_ITEM type standard table of zfi_items with header line.
data: XML_TABLE type table of XML_LINE,
XML_TABLE_SIZE type i.
data: LV_FILE_URL type rlgrap-filename.
DATA : BEGIN OF itab OCCURS 0,
a(100) TYPE c,
END OF itab.
DATA: xml_out TYPE string .
DATA : BEGIN OF upl OCCURS 0,
f(255) TYPE c,
END OF upl.
DATA: xmlupl TYPE string .
DATA : BEGIN OF wa_draw OCCURS 0,
dokar LIKE draw-dokar,
doknr LIKE draw-doknr,
dokvr LIKE draw-dokvr,
doktl LIKE draw-doktl,
END OF wa_draw.
DATA : g_documenttype LIKE bapi_doc_aux-doctype,
g_documentnumber LIKE bapi_doc_aux-docnumber,
g_documentpart LIKE bapi_doc_aux-docpart,
g_documentversion LIKE bapi_doc_aux-docversion.
*" Itab required in IMPORTING parameter of BAPI
DATA : t_documentfile LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE.
DATA : t_documentstructure LIKE bapi_doc_structure OCCURS 0 WITH HEADER
LINE,
itab required in TABLES parameters of BAPI
t_documentfiles LIKE bapi_doc_files2 OCCURS 0 WITH HEADER LINE,
t_components LIKE bapi_doc_comp OCCURS 0 WITH HEADER LINE,
t_return LIKE bapiret2.
DATA : l_docfile TYPE string.
***FILL THE TYPE OF ATTACHMENT in IMPORTING itab**
t_documentfile-wsapplication = 'XML'.
APPEND t_documentfile.
wa_draw-dokar = DOCTYPE.
wa_draw-doknr = DOCNUM.
wa_draw-doktl = DOCPART.
wa_draw-dokvr = DOCVER.
CALL FUNCTION 'BAPI_DOCUMENT_CHECKOUTVIEW2'
EXPORTING
documenttype = wa_draw-dokar
documentnumber = wa_draw-doknr
documentpart = wa_draw-doktl
documentversion = wa_draw-dokvr
documentfile = t_documentfile "IMPORTING itab of BAPI
getstructure = '1'
getcomponents = 'X'
ORIGINALPATH = ' '
HOSTNAME = ' '
getheader = 'X'
DOCBOMCHANGENUMBER =
DOCBOMVALIDFROM =
DOCBOMREVISIONLEVEL =
IMPORTING
return = t_return
TABLES
documentstructure = t_documentstructure
documentfiles = t_documentfiles "TABLES itab of BAPI
components = t_components
LOOP AT t_documentfiles .
ENDLOOP.
l_docfile = t_documentfiles-docfile.
The next step is creating the main factory for the iXML library:
G_IXML = cl_ixml=>create( ).
Now Create Stream Factory
STREAMFACTORY = G_IXML->create_stream_factory( ).
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
*filename = 'C:DMS_SPA.XML'
filename = l_docfile
filetype = 'BIN'
IMPORTING
FILELENGTH = XML_TABLE_SIZE
TABLES
data_tab = XML_TABLE.
ISTREAM = STREAMFACTORY->create_istream_itable( table = XML_TABLE
size = XML_TABLE_SIZE )
Create XML Document instance
DOCUMENT = G_IXML->create_document( ).
Create parser Object
PARSER = G_IXML->create_parser( stream_factory = STREAMFACTORY
ISTREAM = istream
DOCUMENT = document ).
Parse an XML document into a DOM tree
*parser->parse( ).
Parsing Error Processing
if PARSER->parse( ) ne 0.
if PARSER->num_errors( ) ne 0.
data: PARSEERROR type ref to if_ixml_parse_error,
STR type STRING,
I type i,
COUNT type I,
INDEX type i.
COUNT = PARSER->num_errors( ).
write: COUNT, ' parse errors have occured:'.
INDEX = 0.
while INDEX < COUNT.
PARSEERROR = PARSER->get_error( INDEX = index ).
I = PARSEERROR->get_line( ).
write: 'line: ', i.
I = PARSEERROR->get_column( ).
write: 'column: ', i.
STR = PARSEERROR->get_reason( ).
write: STR.
INDEX = index + 1.
endwhile.
endif.
endif.
Close the stream since it �s not needed anymore
call method ISTREAM->close( ).
clear ISTREAM.
DATA : GV_NODE type ref to if_ixml_node.
DATA : GV_NODETEXT type STRING.
data: GV_FIRST_TIME.
GV_FIRST_TIME = 'X'.
GV_NODE = DOCUMENT.
*GT_ITEM-item_no = 1.
GT_ITEM-itemno_acc = 1.
perform GET_DATA tables GT_ITEM
using GV_NODE
changing GV_HEADER.
Last item is still not added.
append GT_ITEM.
APPEND GV_HEADER.
*T_HEADER[] = gv_header[].
t_items[] = gt_item[].
**write : GV_HEADER-cust_name,
GV_HEADER-card_no,
GV_HEADER-tax_amount,
GV_HEADER-total_amount.
**loop at GT_ITEM.
write /:.
write : GT_ITEM-item_no,
GT_ITEM-item_id,
GT_ITEM-item_title,
GT_ITEM-item_qty,
GT_ITEM-item_uprice.
**endloop.
ENDFUNCTION.
FORM Get_data *
***form get_data tables YT_ITEM structure gt_ITEM
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type TY_HEADER.
form get_data1 tables YT_ITEM structure zfi_items
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type zfi_header.
***form get_data tables YT_ITEM structure GT_ITEM
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type TY_HEADER.
data: INDENT type i.
data: PTEXT type ref to if_ixml_text.
data: STRING type string.
data: TEMP_STRING(100).
case X_NODE->get_type( ).
when if_ixml_node=>co_node_element.
STRING = X_NODE->get_name( ).
GV_NODETEXT = STRING.
when if_ixml_node=>co_node_text.
PTEXT ?= X_NODE->query_interface( IXML_IID_TEXT ).
if PTEXT->ws_only( ) is initial.
STRING = X_NODE->get_value( ).
case GV_NODETEXT.
when 'Customer'.
when 'HEADER'.
clear GV_HEADER.
when 'Name'.
when 'INVOICE_IND'.
move STRING to GV_HEADER-cust_name.
move STRING to GV_HEADER-INVOICE_IND.
when 'CompanyCode'.
move STRING to GV_HEADER-CompanyCode.
when 'OBJ_TYPE'.
move STRING to GV_HEADER-OBJ_TYPE.
when 'username'.
move STRING to GV_HEADER-username.
when 'PO_reference'.
move STRING to GV_HEADER-PO_reference.
when 'Invoice_Date'.
move STRING to GV_HEADER-Invoice_Date.
when 'Posting_Date'.
move STRING to GV_HEADER-Posting_Date.
when 'Amount'.
move STRING to GV_HEADER-Amount.
when 'Currency'.
move STRING to GV_HEADER-Currency.
*APPEND GV_HEADER.
Iteam details
when 'invoice_doc_item'.
move STRING to GT_ITEM-ITEMNO_ACC.
when 'currency'.
move STRING to TEMP_STRING.
move TEMP_STRING to GT_ITEM-CURRENCY.
when 'Quantity'.
move STRING to GT_ITEM-Quantity.
when 'UoM'.
move STRING to GT_ITEM-UoM.
endcase.
endif.
endcase.
if GV_NODETEXT = 'Header'.
clear GV_HEADER.
elseif GV_NODETEXT = 'Item'.
if GV_FIRST_TIME ne 'X'.
append GT_ITEM.
clear : gt_item.
GT_ITEM-ITEMNO_ACC = gt_item-itemno_acc + 1.
endif.
GV_FIRST_TIME = ' '.
endif.
Get the next child
X_NODE = x_node->get_first_child( ).
Recurse
while not X_NODE is initial.
perform GET_DATA tables GT_ITEM
using X_NODE
changing GV_HEADER.
X_NODE = x_node->get_next( ).
endwhile.
endform.
the XML file is:-
Thanx in advance -
Error while opening the XML file
Hi all,
i'am trying to download data from internal table to XML file with root node and its
corresponding child nodes.i have written the program in this way.
tables: mara.
include bcciixml_decl.
include bcciixml_impl.
parameters: p_matnr like mara-matnr.
start-of-selection.
data: piXML type ref to if_ixml,
pDocument type ref to if_ixml_document,
pStreamFactory type ref to if_ixml_stream_factory,
pIStream type ref to if_ixml_istream,
pParser type ref to if_ixml_parser,
pNode type ref to if_ixml_node,
pText type ref to if_ixml_text,
string type string,
count type i,
index type i,
totalSize type i,
dsn(40) type C,
xstr type xstring.
types: begin of it_mara,
matnr like mara-matnr,
ernam like mara-ernam,
aenam like mara-aenam,
vpsta like mara-vpsta,
end of it_mara.
data: itab_mara type table of it_mara.
select matnr ernam aenam vpsta from mara into table itab_mara where
matnr = p_matnr.
types: begin of xml_line,
data(256) type X,
end of xml_line.
data: xml_table type table of xml_line.
parameters: filename like rlgrap-filename.
pixml = cl_ixml=>create( ).
*-- create the initial document
pDocument = pixml->create_document( ).
pStreamFactory = pixml->create_stream_factory( ).
*-- create an input stream for the table
*pIStream = pStreamFactory->create_istream_itable( table = xml_table
size = totalSize ).
pParser = piXML->create_parser( stream_factory = pStreamFactory
istream = pIStream
document = pDocument ).
data: pOStream type ref to if_ixml_ostream.
pOStream = pStreamFactory->create_ostream_itable( table = xml_table ).
call method pDocument->render( ostream = pOStream ).
*-- how many bytes were written to the table?
totalSize = pOStream->get_num_written_raw( ).
*-- write the XML document back to the frontend
concatenate filename '.out' into filename.
condense filename no-gaps.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = totalSize
FILENAME = filename
FILETYPE = 'BIN'
TABLES
DATA_TAB = itab_mara
EXCEPTIONS
OTHERS = 11
IF SY-SUBRC <> 0.
ENDIF.
*-- print the whole DOM tree as a list...
pNode = pDocument.
perform print_node using pNode.
FORM print_node *
form print_node using value(pNode) type ref to if_ixml_node.
data: indent type i.
data: pText type ref to if_ixml_text.
data: string type string.
indent = pNode->get_height( ) * 2.
case pnode->get_type( ).
when if_ixml_node=>co_node_element.
string = pNode->get_name( ).
write: at /indent '<', string, '> '.
when if_ixml_node=>co_node_text.
pText ?= pNode->query_interface( ixml_iid_text ).
if pText->ws_only( ) is initial.
string = pNode->get_value( ).
write: at /indent string.
endif.
endcase.
pNode = pNode->get_first_child( ).
while not pNode is initial.
perform print_node using pNode.
pNode = pNode->get_next( ).
endwhile.
endform.
but when open the XML file which i created on the desktop it shows the following error.
The XML page cannot be displayed
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
XML document must have a top level element. Error processing resource 'file:///C:/Documents and Settings/anilda/Desktop/sim...
how to rectify this error.
Regards,
satish.You are going to need to provide more details about this shell script file you are executing and the environment it is in. Beyond being on a Windows box, you have provided none of those details.
If the SQL statement will execute cleanly in SQLDeveloper but not your script, then the issue lies in the script. How do you know the error is that SQL statement? Can your script even "select * from dual;" successfully?
Also, SQLDeveloper (which I don't use) may contain its own libraries for accessing the DB. You probably should consider upgrading to a SQL*Plus client that is at least the same version or later as your database.
Note:
As I recall, xmlgen in 9.2 is now a synonym for dbms_xmlgen. You should change the package name accordingly [url http://docs.oracle.com/cd/B10501_01/appdev.920/a96612/d_xmlge2.htm#1010709]dbms_xmlgen.getXML -
hello all,
my requirement is to read an XML file into a structure of type string, for that i have written an XSLT transformations but when am trying to pass the XML file to the parser am getting run time error saying
XSLT_BAD_SOURCE_CONTEXT
CX_XSLT_RUNTIME_ERROR
below is the code for calling XSLT program
TYPES: BEGIN OF ty_xml_line,
data(256) TYPE x,
END OF ty_xml_line.
DATA: gt_in type table of ty_xml_line,
gt_out type string.
DATA: xslt_error TYPE REF TO cx_xslt_exception,
xslt_message TYPE string .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'T:\Documents and Settings\sgolla\Desktop\xmlorder1.xml'
TABLES
data_tab = gt_in.
TRY .
CALL TRANSFORMATION zord1
SOURCE XML gt_in
RESULT xml_output = gt_out .
CATCH cx_xslt_exception INTO xslt_error.
xslt_message = xslt_error->get_text( ).
ENDTRY.
please help me how to solve it......
thx in advance
Sippy.REPORT ZSRK_022 .
Read XML file from presentation server*
Load iXML Lib.
TYPE-POOLS: IXML.
CLASS CL_IXML DEFINITION LOAD.
DATA: G_IXML TYPE REF TO IF_IXML.
DATA: STREAMFACTORY TYPE REF TO IF_IXML_STREAM_FACTORY.
DATA: ISTREAM TYPE REF TO IF_IXML_ISTREAM.
DATA: DOCUMENT TYPE REF TO IF_IXML_DOCUMENT.
DATA: PARSER TYPE REF TO IF_IXML_PARSER.
DATA: LV_FILE_URL TYPE RLGRAP-FILENAME.
You should provide the parameter for file name
LV_FILE_URL = 'C:input_xml.xml'.
TYPES: BEGIN OF XML_LINE,
DATA(256) TYPE X,
END OF XML_LINE.
TYPES: BEGIN OF TY_HEADER,
CUST_NAME(20) TYPE C,
CARD_NO(20) TYPE C,
TAX_AMOUNT(10) TYPE C,
TOTAL_AMOUNT(10) TYPE C,
END OF TY_HEADER.
TYPES: BEGIN OF TY_ITEM,
ITEM_NO(4) TYPE N,
ITEM_ID(20) TYPE C,
ITEM_TITLE(50) TYPE C,
ITEM_QTY(10) TYPE C,
ITEM_UPRICE(10) TYPE C,
END OF TY_ITEM.
DATA: GV_HEADER TYPE TY_HEADER.
DATA: GT_ITEM TYPE STANDARD TABLE OF TY_ITEM WITH HEADER LINE.
DATA: XML_TABLE TYPE TABLE OF XML_LINE,
XML_TABLE_SIZE TYPE I.
The next step is creating the main factory for the iXML library:
G_IXML = CL_IXML=>CREATE( ).
Now Create Stream Factory
STREAMFACTORY = G_IXML->CREATE_STREAM_FACTORY( ).
upload a file from the client's workstation
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = LV_FILE_URL
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = XML_TABLE_SIZE
TABLES
DATA_TAB = XML_TABLE
EXCEPTIONS
OTHERS = 11.
wrap the table containing the file into a stream
ISTREAM = STREAMFACTORY->CREATE_ISTREAM_ITABLE( TABLE = XML_TABLE
SIZE = XML_TABLE_SIZE ).
Create XML Document instance
DOCUMENT = G_IXML->CREATE_DOCUMENT( ).
Create parser Object
PARSER = G_IXML->CREATE_PARSER( STREAM_FACTORY = STREAMFACTORY
ISTREAM = ISTREAM
DOCUMENT = DOCUMENT ).
Parse an XML document into a DOM tree
*parser->parse( ).
Parsing Error Processing
IF PARSER->PARSE( ) NE 0.
IF PARSER->NUM_ERRORS( ) NE 0.
DATA: PARSEERROR TYPE REF TO IF_IXML_PARSE_ERROR,
STR TYPE STRING,
I TYPE I,
COUNT TYPE I,
INDEX TYPE I.
COUNT = PARSER->NUM_ERRORS( ).
WRITE: COUNT, ' parse errors have occured:'.
INDEX = 0.
WHILE INDEX < COUNT.
PARSEERROR = PARSER->GET_ERROR( INDEX = INDEX ).
I = PARSEERROR->GET_LINE( ).
WRITE: 'line: ', I.
I = PARSEERROR->GET_COLUMN( ).
WRITE: 'column: ', I.
STR = PARSEERROR->GET_REASON( ).
WRITE: STR.
INDEX = INDEX + 1.
ENDWHILE.
ENDIF.
ENDIF.
Close the stream since it �s not needed anymore
CALL METHOD ISTREAM->CLOSE( ).
CLEAR ISTREAM.
DATA : GV_NODE TYPE REF TO IF_IXML_NODE.
DATA : GV_NODETEXT TYPE STRING.
DATA: GV_FIRST_TIME.
GV_FIRST_TIME = 'X'.
GV_NODE = DOCUMENT.
GT_ITEM-ITEM_NO = 1.
PERFORM GET_DATA TABLES GT_ITEM
USING GV_NODE
CHANGING GV_HEADER.
Last item is still not added.
APPEND GT_ITEM.
WRITE : GV_HEADER-CUST_NAME,
GV_HEADER-CARD_NO,
GV_HEADER-TAX_AMOUNT,
GV_HEADER-TOTAL_AMOUNT.
LOOP AT GT_ITEM.
WRITE /:.
WRITE : GT_ITEM-ITEM_NO,
GT_ITEM-ITEM_ID,
GT_ITEM-ITEM_TITLE,
GT_ITEM-ITEM_QTY,
GT_ITEM-ITEM_UPRICE.
ENDLOOP.
FORM Get_data *
FORM GET_DATA TABLES YT_ITEM STRUCTURE GT_ITEM
USING VALUE(X_NODE) TYPE REF TO IF_IXML_NODE
CHANGING Y_HEADER TYPE TY_HEADER.
DATA: INDENT TYPE I.
DATA: PTEXT TYPE REF TO IF_IXML_TEXT.
DATA: STRING TYPE STRING.
DATA: TEMP_STRING(100).
CASE X_NODE->GET_TYPE( ).
WHEN IF_IXML_NODE=>CO_NODE_ELEMENT.
STRING = X_NODE->GET_NAME( ).
GV_NODETEXT = STRING.
WHEN IF_IXML_NODE=>CO_NODE_TEXT.
PTEXT ?= X_NODE->QUERY_INTERFACE( IXML_IID_TEXT ).
IF PTEXT->WS_ONLY( ) IS INITIAL.
STRING = X_NODE->GET_VALUE( ).
CASE GV_NODETEXT.
WHEN 'Customer'.
CLEAR GV_HEADER.
WHEN 'Name'.
MOVE STRING TO GV_HEADER-CUST_NAME.
WHEN 'Cardnum'.
MOVE STRING TO GV_HEADER-CARD_NO.
WHEN 'Tax'.
MOVE STRING TO GV_HEADER-TAX_AMOUNT.
WHEN 'Total'.
MOVE STRING TO GV_HEADER-TOTAL_AMOUNT.
Iteam details
WHEN 'ID'.
MOVE STRING TO GT_ITEM-ITEM_ID.
WHEN 'Title'.
MOVE STRING TO TEMP_STRING.
MOVE TEMP_STRING TO GT_ITEM-ITEM_TITLE.
WHEN 'Quantity'.
MOVE STRING TO GT_ITEM-ITEM_QTY.
WHEN 'UnitPrice'.
MOVE STRING TO GT_ITEM-ITEM_UPRICE.
ENDCASE.
ENDIF.
ENDCASE.
IF GV_NODETEXT = 'Customer'.
CLEAR GV_HEADER.
ELSEIF GV_NODETEXT = 'Item'.
IF GV_FIRST_TIME NE 'X'.
APPEND GT_ITEM.
clear : gt_item.
GT_ITEM-ITEM_NO = GT_ITEM-ITEM_NO + 1.
ENDIF.
GV_FIRST_TIME = ' '.
ENDIF.
Get the next child
X_NODE = X_NODE->GET_FIRST_CHILD( ).
Recurse
WHILE NOT X_NODE IS INITIAL.
PERFORM GET_DATA TABLES GT_ITEM
USING X_NODE
CHANGING GV_HEADER.
X_NODE = X_NODE->GET_NEXT( ).
ENDWHILE.
ENDFORM. "get_data -
Convert XML to SAP internal table
Hi gurus,
My program is suppose to get current exchange rate file from website and upload it in SAP.
by using FM 'HTTP_GET', im getting the data in XML format.My problem is..i have tried to use transformation but failed to
map it against XML data element..and i have tried to use CALL FUNCTION 'SCMS_TEXT_TO_XSTRING' and then CALL FUNCTION 'SMUM_XML_PARSE' but it returns initial value with error ''line 0 col 12-unexpected symbol: '>'' .
Below is an excerpt of my XML file:
..<xml version>
..<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
.. xmlns:o="urn:schemas-microsoft-com:office:office"
.. xmlns:x="urn:schemas- microsoft-com:office:excel"
.. xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
.. <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>10875</WindowHeight>........ <WindowWidth>13260</WindowWidth><WindowTopX>480</WindowTopX><WindowTopY>30</Wind
.. <Style ss:ID="Default" ss:Name="Normal">
.. <Alignment ss:Vertical="Bottom"/>
.. <Borders/>
.. <Font/>
.. <Interior/>
.. <NumberFormat/>
.. <Protection/>
.. </Style>
.. <Style ss:ID="BoldColumn">
.. <Font ss:FontName="Microsoft Sans Serif" x:Family="Swiss" ss:Bold="1"/>
.. <Worksheet ss:Name="Page1"><Table ss:StyleID="s21" > <Column ss:Width="130"/> <Column ss:Width="85"/> <Column .. ss:Width="85"/> <Column ss:Width="85"/> <Column ss:Widt
.. Cell><Cell ss:MergeAcross="1" ss:StyleID="BoldColumn"><Data ss:Type="String">Average Buying Rates</Data></Cell><Cell .. ss:MergeDown="1" ss:StyleID="BoldColumn"><Data ss:Type="Stri
.. ss:Type="Number">47.3732</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">47.5374</Data></Cell><Cell .. ss:StyleID="Decimal"><Data ss:Type="Number">48.2323</Data></Ce
.. " ><Data ss:Type="String">HONG KONG</Data></Cell><Cell ss:StyleID="StringLiteralCenter" ><Data .. .. ss:Type="String">HKD</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Numb
.. ss:Type="Number">22.8131</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">23.2595</Data></Cell>.. .. </Row><Row><Cell ss:StyleID="StringLiteral" ><Data ss:Type="String"
.. ss:StyleID="StringLiteralCenter" ><Data ss:Type="String">IDR</Data></Cell><Cell ss:StyleID="Decimal"><Data .. ss:Type="Number">3.0395</Data></Cell><Cell ss:StyleID="Decimal"><Data
.. ecimal"><Data ss:Type="Number">30.6424</Data></Cell></Row><Row><Cell ss:StyleID="StringLiteral" ><Data .. ss:Type="String">AUSTRALIA</Data></Cell><Cell ss:StyleID="StringLiteralCe
.. ell ss:StyleID="Decimal"><Data ss:Type="Number">0.3392</Data></Cell><Cell ss:StyleID="Decimal"><Data .. ss:Type="Number">0.3409</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Typ
.. StringLiteral" ><Data ss:Type="String">DENMARK</Data></Cell><Cell ss:StyleID="StringLiteralCenter" ><Data .. ss:Type="String">DKK</Data></Cell><Cell ss:StyleID="Decimal"><Data ss
.. ata ss:Type="Number">4.4550</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.6073</Data></Cell>.. </Row><Row></Row><Row></Row><Row><Cell ss:MergeAcross="4" ss:Style
.. s of 23 November 2010</Data></Cell></Row><Row></Row><Row><Cell ss:MergeAcross="4" .. ss:StyleID="BoldColumn_Left" ><Data ss:Type="String">2. Foreign Exchange Rates (THOMSON REUTE
.. ><Data ss:Type="String">ZAR</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.2735</Data></Cell>.. <Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.3125</Data></
.. ="Decimal"><Data ss:Type="Number">106.5459</Data></Cell><Cell ss:StyleID="Decimal"><Data .. ss:Type="Number">107.5164</Data></Cell></Row><Row><Cell ss:StyleID="StringLiteral" ><Da
.. a></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">4.6916</Data></Cell></Row><Row><Cell .. ss:StyleID="StringLiteral" ><Data ss:Type="String">BANGLADESH</Data></Cell><Cell
.. r">0.0074</Data></Cell></Row><Row><Cell ss:StyleID="StringLiteral" ><Data ss:Type="String">KENYA</Data></Cell><Cell .. ss:StyleID="StringLiteralCenter" ><Data ss:Type="String">KE
.. ><Cell ss:StyleID="StringLiteral" ><Data ss:Type="String">VIET NAM</Data></Cell><Cell ss:StyleID="StringLiteralCenter" >.. <Data ss:Type="String">VND</Data></Cell><Cell ss:StyleI
.. A</Data></Cell><Cell ss:StyleID="StringLiteralCenter" ><Data ss:Type="String">LKR</Data></Cell><Cell .. .. ss:StyleID="Decimal"><Data ss:Type="Number">0.2686</Data></Cell><Cell ss:St
.. String">OMR</Data></Cell><Cell ss:StyleID="Decimal"><Data ss:Type="Number">77.7094</Data></Cell><Cell
Please help me to translate my XML file into SAP format...i need it fixed urgently..
Edited by: Guest101 on Dec 28, 2010 12:11 PMIt has 2 part one is source code and another is the XML file
create an XML file with the data provided in the last 2.
then place it in a path mention the path in the below source.
1. Complete code for converting XML to internal table in SAP.
*& Report ZTST_PGM02
REPORT ZTST_PGM02.
Load iXML Lib.
type-pools: ixml.
class cl_ixml definition load.
data: G_IXML type ref to if_ixml.
data: STREAMFACTORY type ref to if_ixml_stream_factory.
data: ISTREAM type ref to if_ixml_istream.
data: DOCUMENT type ref to if_ixml_document.
data: PARSER type ref to if_ixml_parser.
data: LV_FILE_URL type rlgrap-filename.
You should provide the parameter for file name
LV_FILE_URL = 'D:\navps\input_xml.xml'.
types: begin of XML_LINE,
DATA(256) type x,
end of XML_LINE.
types: begin of TY_HEADER,
CUST_NAME(20) type c,
CARD_NO(20) type c,
TAX_AMOUNT(10) type c,
TOTAL_AMOUNT(10) type c,
end of TY_HEADER.
types: begin of TY_ITEM,
ITEM_NO(4) type n,
ITEM_ID(20) type c,
ITEM_TITLE(50) type c,
ITEM_QTY(10) type c,
ITEM_UPRICE(10) type c,
end of TY_ITEM.
data: GV_HEADER type TY_HEADER.
data: GT_ITEM type standard table of TY_ITEM with header line.
data: XML_TABLE type table of XML_LINE,
XML_TABLE_SIZE type i.
The next step is creating the main factory for the iXML library:
G_IXML = cl_ixml=>create( ).
Now Create Stream Factory
STREAMFACTORY = G_IXML->create_stream_factory( ).
upload a file from the client's workstation
call function 'WS_UPLOAD'
exporting
filename = LV_FILE_URL
filetype = 'BIN'
importing
filelength = XML_TABLE_SIZE
tables
data_tab = XML_TABLE
exceptions
others = 11.
wrap the table containing the file into a stream
ISTREAM = STREAMFACTORY->create_istream_itable( table = XML_TABLE
size = XML_TABLE_SIZE )
Get the file data as Stream
*istream = streamfactory->create_istream_uri( public_id = lv_file_url
system_id = lv_file_url ).
Create XML Document instance
DOCUMENT = G_IXML->create_document( ).
Create parser Object
PARSER = G_IXML->create_parser( stream_factory = STREAMFACTORY
ISTREAM = istream
DOCUMENT = document ).
Parse an XML document into a DOM tree
*parser->parse( ).
Parsing Error Processing
if PARSER->parse( ) ne 0.
if PARSER->num_errors( ) ne 0.
data: PARSEERROR type ref to if_ixml_parse_error,
STR type STRING,
I type i,
COUNT type I,
INDEX type i.
COUNT = PARSER->num_errors( ).
write: COUNT, ' parse errors have occured:'.
INDEX = 0.
while INDEX < COUNT.
PARSEERROR = PARSER->get_error( INDEX = index ).
I = PARSEERROR->get_line( ).
write: 'line: ', i.
I = PARSEERROR->get_column( ).
write: 'column: ', i.
STR = PARSEERROR->get_reason( ).
write: STR.
INDEX = index + 1.
endwhile.
endif.
endif.
Close the stream since it #s not needed anymore
call method ISTREAM->close( ).
clear ISTREAM.
Now try to make it look good
data : lv_size type sytabix,
lv_ret_code type sysubrc.
data: lo_xml_document type ref to cl_xml_document.
field-symbols: <fs_xml_data> type any table.
lo_xml_document = document.
call method lo_xml_document->get_as_table
importing
table = <fs_xml_data>
size = lv_size
retcode = lv_ret_code
*data: items type ref to if_ixml_node_collection.
*items = document->get_elements_by_tag_name( name = 'Item' ).
*data: iterator type ref to if_ixml_node_iterator,
node type ref to if_ixml_node.
*iterator = document->create_iterator( ).
*node = iterator->get_next( ).
*while not node is initial.
do something with the node
node = iterator->get_next( ).
*endwhile.
DATA : GV_NODE type ref to if_ixml_node.
DATA : GV_NODETEXT type STRING.
data: GV_FIRST_TIME.
GV_FIRST_TIME = 'X'.
GV_NODE = DOCUMENT.
GT_ITEM-item_no = 1.
perform GET_DATA tables GT_ITEM
using GV_NODE
changing GV_HEADER.
Last item is still not added.
append GT_ITEM.
write : GV_HEADER-cust_name,
GV_HEADER-card_no,
GV_HEADER-tax_amount,
GV_HEADER-total_amount.
loop at GT_ITEM.
write /:.
write : GT_ITEM-item_no,
GT_ITEM-item_id,
GT_ITEM-item_title,
GT_ITEM-item_qty,
GT_ITEM-item_uprice.
endloop.
FORM Get_data *
form get_data tables YT_ITEM structure GT_ITEM
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type TY_HEADER.
data: INDENT type i.
data: PTEXT type ref to if_ixml_text.
data: STRING type string.
data: TEMP_STRING(100).
case X_NODE->get_type( ).
when if_ixml_node=>co_node_element.
STRING = X_NODE->get_name( ).
GV_NODETEXT = STRING.
when if_ixml_node=>co_node_text.
PTEXT ?= X_NODE->query_interface( IXML_IID_TEXT ).
if PTEXT->ws_only( ) is initial.
STRING = X_NODE->get_value( ).
case GV_NODETEXT.
when 'Customer'.
clear GV_HEADER.
when 'Name'.
move STRING to GV_HEADER-cust_name.
when 'Cardnum'.
move STRING to GV_HEADER-card_no.
when 'Tax'.
move STRING to GV_HEADER-tax_amount.
when 'Total'.
move STRING to GV_HEADER-total_amount.
Iteam details
when 'ID'.
move STRING to GT_ITEM-item_id.
when 'Title'.
move STRING to TEMP_STRING.
move TEMP_STRING to GT_ITEM-item_title.
when 'Quantity'.
move STRING to GT_ITEM-item_qty.
when 'UnitPrice'.
move STRING to GT_ITEM-item_uprice.
endcase.
endif.
endcase.
if GV_NODETEXT = 'Customer'.
clear GV_HEADER.
elseif GV_NODETEXT = 'Item'.
if GV_FIRST_TIME ne 'X'.
append GT_ITEM.
clear : gt_item.
GT_ITEM-item_no = gt_item-item_no + 1.
endif.
GV_FIRST_TIME = ' '.
endif.
Get the next child
X_NODE = x_node->get_first_child( ).
Recurse
while not X_NODE is initial.
perform GET_DATA tables GT_ITEM
using X_NODE
changing GV_HEADER.
X_NODE = x_node->get_next( ).
endwhile.
endform.
Create an XML file with the following DATA given below and place it in the path mentioned above source code.
2. XML File DATA. You create an XML File in this format to test the same.
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
- <Order>
- <Customer>
<Name>Bill Buckram</Name>
<Cardnum>234 234 234 234</Cardnum>
</Customer>
- <Manifest>
- <Item>
<ID>209</ID>
<Title>Duke: A Biography of the Java Evangelist</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>208</ID>
<Title>100% Pure: Making Cross Platform Deployment a Reality</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>204</ID>
<Title>Making the Transition from C++ to the Java(tm) Language</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>202</ID>
<Title>Web Servers for Fun and Profit</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
- <Item>
<ID>210</ID>
<Title>I Think Not: Dukes Likeness to the Federation Insignia</Title>
<Quantity>1</Quantity>
<UnitPrice>$10.75</UnitPrice>
</Item>
</Manifest>
- <Receipt>
<Subtotal>$53.75</Subtotal>
<Tax>$4.43</Tax>
<Total>$58.18</Total>
</Receipt>
</Order> -
AdvancedDataGrid scrolling up issue
Hi,
I have a AdvancedDataGrid that display a hierarchy source, there is one issue that when scrolling up from bottom, the item are repeating,
such as : pciture 1 (currect display the hierarchy), pciture 2 (items are repeated after scrolling up), picture 3 (the expected display)
picture 1
picture 2
picture 3
Here is the definition for the AdvancedDataGrid:
<mx:AdvancedDataGrid id="layer_datagrid" headerHeight="0"
editable="true" selectable="true" verticalGridLines="false"
iconFunction="{null}" folderClosedIcon="{null}" folderOpenIcon="{null}" >
<mx:dataProvider>
<mx:HierarchicalData source="{this.layerList}"/>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn id="empty_Col" editable="false" draggable="false" width="50"/>
<mx:AdvancedDataGridColumn id="layersName_col" dataField="name" editable="false" itemRenderer="com.woodwing.digitalmagazine.views.renderers.LayerNameRenderer" draggable="false"/>
<mx:AdvancedDataGridColumn id="layersCheckBox_col" dataField="selected" editable = "false" itemRenderer="com.woodwing.digitalmagazine.views.renderers.LayerRenderer" width="18" headerText="" resizable="false" draggable="false"/>
</mx:columns>
Definition for the LayerNameRenderer
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="60" >
<mx:Script>
<![CDATA[
import com.LayerItemVO;
]]>
</mx:Script>
<mx:HBox>
<mx:HBox id="indent" width="{LayerItemVO(data).indent}"/>
<mx:HBox>
<mx:HBox id="color" backgroundColor="{LayerItemVO(data).layerColor}" width="9" height="14"/>
<mx:Label id="layerNameInUse" height="18" enabled="{LayerItemVO(data).enabled}" text="{LayerItemVO(data).name}"/>
</mx:HBox>
</mx:HBox>
</mx:Canvas>
Please provide any hint to solve this issue.
p.s. I need to define an empty column (id=empty_col), otherwise the enabled on layerRenderer dose not work.
Thanks.Sree_D,
I defined the hierarchy source for renderer as Bindable object, such as
this.LayerList is ArrayCollection of LayerItemVO
[Bindable]
public class LayerItemVO {
public var children:ArrayCollection;
public var name:String = "";
public var layerColor:uint = 0x0;
public var enabled:Boolean = true;
public function LayerItemVO () {
this.children = new ArrayCollection();
You also see the definition of LayerNameRenderer in previous post.
Do you see any problem on the code snippet?
I have tried to follow what Adobe taught about how to define the AdvancedDataGrid, and still not know why the renderer didn't get updated when scrolling up/down. The AdvancedDataGrid did display the hierarchy data correctly.
Can you let me know how to verify the data are getting set in renderers when scrolled up/down? Is there any event followed the scrolling?
Maybe I can write out some log on this event.
Also you mentioned that the first column should be group item renderer, can you give me example how to define a group item renderer?
Thanks. -
Best Practice - HLevel for Alternate Hierarchy
Good morning,
Our Account dimension contains both a standard and alternate hierarchy. We currently use the HLevel property to drive a variety of formatting (hierarchy indentations, outline for "data bottom", bold for "parent", etc.). The formulas we've developed for the standard hierarchy work well, but they don't always work with the alternate hierarchy. I'm considering the creation of a new "Alt_HLevel" property that would contain the associated numerical hierarchy levels for the alternate. This would provide a level of simplicity in reporting as it would allow us to use consistent formulas. Downside is the added maintenance. Before proceeding, I'd like to know if anyone has a better solution. Thanks!Hi Kim,
As far as my understanding says, HLEVEL will work with the 1st hierarchy of your dimension. So, if you want, you can definitely go ahead by adding another property for the second hierarchy. But yes, as you have already figured out, the cost would be at the maintenance. If you are having regular additions to your dimension, it might be difficult to maintain this property. If the addition of members is not frequent, then I dont see any challenge.
Alternatively, you can try using H2 when you are calling the HLEVEL property. I have never checked this, so not sure whether it will work or not. But worth trying.
Hope this helps. -
Save tree structure to text file and load textfile to another tree control
I'm able to save the structure and data to a text file, thanks to the "save tree structure to textfile" info found on this msg board, but can't seem to load the complete tree structure data from the text file into another tree. I've only been able to load parent data but can't get the hierarchy of the tree with the indents and child data to work.
ThanksThanks Tanya,
However, I'm still stumped on how to copy (from text file) to other columns in the tree (from one tree to another). I can only get the first column to load.
I've attached my working VI and a textfile that I use to load into the "User list" tree.
Rick
Attachments:
Text File to Tree V2.2.vi 58 KB
test file save16.txt 1 KB -
Hi all!
I have just used JList for the first time and have run into problem. I would like to print a name and then have some spaces and in the end print another string representing a date. The problem is that depending on which characters the name contains the indenting of the date string isn't always the same. Example:
Andreas 25FEB
iiiiiii 24FEB
There are equal amout of characters but they have different "size". Anyone have a tip of how to solve this? I have tried to add '\t' between the strings but then it prints a box in between the strings in the list. Do I have to use JTable?
Thanks in advance!
regards,
AndreasYeah, your right. Unfortunatelly then it isn't possible to use the icons I want to use. Somebody knows of how to modify the example to get it to work using icons as well? What I want to show in the list is:
* A small icon
* A short text
* A tab
* Another short text
Example:
ICON MyName'\t'Date
// Andreas -
Hello all,
I have generated an XML output through Smartforms. Now I need to load this file into DMS . Please let me know how I can achieve this.
Thanks,
Kalyancheck this code and use it...
REPORT Z_RMTIWARI_XML_TO_ABAP_46C .
Load iXML Lib.
type-pools: ixml.
class cl_ixml definition load.
data: G_IXML type ref to if_ixml.
data: STREAMFACTORY type ref to if_ixml_stream_factory.
data: ISTREAM type ref to if_ixml_istream.
data: DOCUMENT type ref to if_ixml_document.
data: PARSER type ref to if_ixml_parser.
data: LV_FILE_URL type rlgrap-filename.
You should provide the parameter for file name
LV_FILE_URL = 'C:input_xml.xml'.
types: begin of XML_LINE,
DATA(256) type x,
end of XML_LINE.
types: begin of TY_HEADER,
CUST_NAME(20) type c,
CARD_NO(20) type c,
TAX_AMOUNT(10) type c,
TOTAL_AMOUNT(10) type c,
end of TY_HEADER.
types: begin of TY_ITEM,
ITEM_NO(4) type n,
ITEM_ID(20) type c,
ITEM_TITLE(50) type c,
ITEM_QTY(10) type c,
ITEM_UPRICE(10) type c,
end of TY_ITEM.
data: GV_HEADER type TY_HEADER.
data: GT_ITEM type standard table of TY_ITEM with header line.
data: XML_TABLE type table of XML_LINE,
XML_TABLE_SIZE type i.
The next step is creating the main factory for the iXML library:
G_IXML = cl_ixml=>create( ).
Now Create Stream Factory
STREAMFACTORY = G_IXML->create_stream_factory( ).
upload a file from the client's workstation
call function 'WS_UPLOAD'
exporting
filename = LV_FILE_URL
filetype = 'BIN'
importing
filelength = XML_TABLE_SIZE
tables
data_tab = XML_TABLE
exceptions
others = 11.
wrap the table containing the file into a stream
ISTREAM = STREAMFACTORY->create_istream_itable( table = XML_TABLE
size = XML_TABLE_SIZE )
Get the file data as Stream
*istream = streamfactory->create_istream_uri( public_id = lv_file_url
system_id = lv_file_url ).
Create XML Document instance
DOCUMENT = G_IXML->create_document( ).
Create parser Object
PARSER = G_IXML->create_parser( stream_factory = STREAMFACTORY
ISTREAM = istream
DOCUMENT = document ).
Parse an XML document into a DOM tree
*parser->parse( ).
Parsing Error Processing
if PARSER->parse( ) ne 0.
if PARSER->num_errors( ) ne 0.
data: PARSEERROR type ref to if_ixml_parse_error,
STR type STRING,
I type i,
COUNT type I,
INDEX type i.
COUNT = PARSER->num_errors( ).
write: COUNT, ' parse errors have occured:'.
INDEX = 0.
while INDEX < COUNT.
PARSEERROR = PARSER->get_error( INDEX = index ).
I = PARSEERROR->get_line( ).
write: 'line: ', i.
I = PARSEERROR->get_column( ).
write: 'column: ', i.
STR = PARSEERROR->get_reason( ).
write: STR.
INDEX = index + 1.
endwhile.
endif.
endif.
Close the stream since it �s not needed anymore
call method ISTREAM->close( ).
clear ISTREAM.
Now try to make it look good
data : lv_size type sytabix,
lv_ret_code type sysubrc.
data: lo_xml_document type ref to cl_xml_document.
field-symbols: <fs_xml_data> type any table.
lo_xml_document = document.
call method lo_xml_document->get_as_table
importing
table = <fs_xml_data>
size = lv_size
retcode = lv_ret_code
*data: items type ref to if_ixml_node_collection.
*items = document->get_elements_by_tag_name( name = 'Item' ).
*data: iterator type ref to if_ixml_node_iterator,
node type ref to if_ixml_node.
*iterator = document->create_iterator( ).
*node = iterator->get_next( ).
*while not node is initial.
do something with the node
node = iterator->get_next( ).
*endwhile.
DATA : GV_NODE type ref to if_ixml_node.
DATA : GV_NODETEXT type STRING.
data: GV_FIRST_TIME.
GV_FIRST_TIME = 'X'.
GV_NODE = DOCUMENT.
GT_ITEM-item_no = 1.
perform GET_DATA tables GT_ITEM
using GV_NODE
changing GV_HEADER.
Last item is still not added.
append GT_ITEM.
write : GV_HEADER-cust_name,
GV_HEADER-card_no,
GV_HEADER-tax_amount,
GV_HEADER-total_amount.
loop at GT_ITEM.
write /:.
write : GT_ITEM-item_no,
GT_ITEM-item_id,
GT_ITEM-item_title,
GT_ITEM-item_qty,
GT_ITEM-item_uprice.
endloop.
FORM Get_data *
form get_data tables YT_ITEM structure GT_ITEM
using value(x_node) type ref to if_ixml_node
changing Y_HEADER type TY_HEADER.
data: INDENT type i.
data: PTEXT type ref to if_ixml_text.
data: STRING type string.
data: TEMP_STRING(100).
case X_NODE->get_type( ).
when if_ixml_node=>co_node_element.
STRING = X_NODE->get_name( ).
GV_NODETEXT = STRING.
when if_ixml_node=>co_node_text.
PTEXT ?= X_NODE->query_interface( IXML_IID_TEXT ).
if PTEXT->ws_only( ) is initial.
STRING = X_NODE->get_value( ).
case GV_NODETEXT.
when 'Customer'.
clear GV_HEADER.
when 'Name'.
move STRING to GV_HEADER-cust_name.
when 'Cardnum'.
move STRING to GV_HEADER-card_no.
when 'Tax'.
move STRING to GV_HEADER-tax_amount.
when 'Total'.
move STRING to GV_HEADER-total_amount.
Iteam details
when 'ID'.
move STRING to GT_ITEM-item_id.
when 'Title'.
move STRING to TEMP_STRING.
move TEMP_STRING to GT_ITEM-item_title.
when 'Quantity'.
move STRING to GT_ITEM-item_qty.
when 'UnitPrice'.
move STRING to GT_ITEM-item_uprice.
endcase.
endif.
endcase.
if GV_NODETEXT = 'Customer'.
clear GV_HEADER.
elseif GV_NODETEXT = 'Item'.
if GV_FIRST_TIME ne 'X'.
append GT_ITEM.
clear : gt_item.
GT_ITEM-item_no = gt_item-item_no + 1.
endif.
GV_FIRST_TIME = ' '.
endif.
Get the next child
X_NODE = x_node->get_first_child( ).
Recurse
while not X_NODE is initial.
perform GET_DATA tables GT_ITEM
using X_NODE
changing GV_HEADER.
X_NODE = x_node->get_next( ).
endwhile.
endform. -
Variable indent based on xml data using xsl-fo start-indent
I am trying to make a report of a peoplesoft tree which includes xml data to indicate the level of the tree.
I have a template which sort-of works but has some strange behavior. First I set a variable to the value of the treelevel, and multiply by ten to set the value for the indent that I want. I then apply that value for the indent to the start-indent attribute
<?xdoxslt:set_variable($_XDOCTX, 'x', (fld_TREE_LEVEL_NUM)*10)?>
<xsl:attribute name="start-indent" xdofo:ctx="table-cell"><?xdoxslt:get_variable($_XDOCTX, 'x')?></xsl:attribute>
These tags are put in a table row which repeats within a for-each group along with the data to get indented.
The problem is that the indenting seems to work but not consistently and some rows which clearly have different indent levels are printing as if they are at the same level.
Any ideas would be appreciated.Hi! Use xsl:variable:
<xsl:variable name="var"><?fld_TREE_LEVEL_NUM*10?></xsl:variable>
<xsl:attribute name="start-indent" xdofo:ctx="table-cell"><xsl:value-of select="$var" /></xsl:attribute> -
Smartview indentation no longer working with upgrade
We are currently running HFM and Smartview with Office 2010. We have updated Smartview from version 11.1.2.1.x Build 271 to 11.1.2.2.310 Build 247. The Zoom In function is no longer working properly.
In the prior version:
1. Zoom In = Next Level
2. Member name Display = Member name and Description
3. Indention = Subitems
4. Ancestor Position = Top
The new version has the same settings however since updating to the new version the indentation no longer happens.
Is anyone else experiencing this issue? Is there a workaround?Hi,
Below is the copy paste of the content from Oracle doc.
Applies to:
Hyperion Planning - Version 11.1.2.1.600 and later
Information in this document applies to any platform.
Symptoms
Unable to use smartview column suppression features with an Essbase connection.
- Start up excel and then go to the smartview menu -> Options -> Data Options -> Suppress Columns section is active
- Establish an Essbase Shared Connection
- Go into adhoc mode or just double click on a database to bring up the metadata.
- Now go to smartview menu -> Options -> Data Options -> Suppress Columns section is grayed out.
The above feature works fine with a Planning connection.
Is this an Essbase connection limitation?
Cause
Installed the Smartview 11.1.2.1.103 (Build 100)
Solution
The following was mentioned in the 11.1.2.2.310 version of the Smart View User's Guide. The description for Suppress Columns was updated as follows:
To streamline the grid, you can suppress columns that contain types of data that you do not need to view.
Notes:
-- In suppressed columns, cell references to Excel formulas are not updated.
-- The Suppress Columns options are not available when connected to an Essbase data source.
So from the above, it is not a supported feature when using an Essbase connection. -
Unable to install SQL Server Express 2008 R2 - Errors "Failed to retrieve data for this request"
As domain admin I am attempting to install "SQL Server 2008 R2 with SP2" but it keeps failing with "Failed to retrieve data for this request".
The installation never actually starts, it errors before then.
It displays the same error even if I run the System Configuration Checker.
The summary.txt for the install displays the following text:
Overall summary:
Final result: Failed: see details below
Exit code (Decimal): -1554760125
Exit facility code: 852
Exit error code: 15939
Exit message: Failed to retrieve data for this request.
Start time: 2014-08-15 16:49:52
End time: 2014-08-15 16:50:06
Requested action: RunRules
Machine Properties:
Machine name: servername
Machine processor count: 8
OS version: Windows Server 2008 R2
OS service pack: Service Pack 1
OS region: United States
OS language: English (United States)
OS architecture: x64
Process architecture: 64 Bit
OS clustered: Yes
Product features discovered:
Product Instance Instance ID
Feature Language
Edition Version Clustered
Package properties:
Description: SQL Server Database Services 2008 R2
ProductName: SQL Server 2008 R2
Type: RTM
Version: 10
SPLevel: 1
Installation location: c:\84122ef5b6d9cdcd3b2ac48cec\x64\setup\
Installation edition: EXPRESS
User Input Settings:
ACTION: RunRules
CONFIGURATIONFILE:
ENU: True
FARMACCOUNT: <empty>
FARMADMINPORT: 0
FARMPASSWORD: *****
FEATURES:
HELP: False
INDICATEPROGRESS: False
INSTANCENAME: <empty>
PASSPHRASE: *****
QUIET: False
QUIETSIMPLE: False
RULES: GLOBALRULES,SqlUnsupportedProductBlocker,PerfMonCounterNotCorruptedCheck,Bids2008InstalledCheck,BlockInstallSxS,AclPermissionsFacet,FacetDomainControllerCheck,SSMS_IsInternetConnected,FacetWOW64PlatformCheck,FacetPowerShellCheck
UIMODE: AutoAdvance
X86: False
Configuration file: C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20140815_164944\ConfigurationFile.ini
Detailed results:
Rules with failures:
Global rules:
There are no scenario-specific rules.
Rules report file: The rule result report file is not available.
Exception summary:
The following is an exception stack listing the exceptions in outermost to innermost order
Inner exceptions are being indented
Exception type: Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException
Message:
Failed to retrieve data for this request.
Data:
HelpLink.ProdName = Microsoft SQL Server
HelpLink.BaseHelpUrl = http://go.microsoft.com/fwlink
HelpLink.LinkId = 20476
DisableWatson = true
Stack:
at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.ProcessDTbl(DataTable dt, Int32 level)
at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.CollectSqlDiscoveryData(String machineName)
at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.LoadData(IEnumerable`1 machineNames, String discoveryDocRootPath, String clusterDiscoveryDocRootPath)
at Microsoft.SqlServer.Configuration.SetupExtension.RunDiscoveryAction.ExecuteAction(String actionId)
at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream)
at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(TextWriter statusStream, ISequencedAction actionToRun)
Inner exception type: Microsoft.SqlServer.Configuration.Sco.SqlRegistryException
Message:
The network path was not found.
Data:
WatsonData = [email protected]rror
Stack:
at Microsoft.SqlServer.Configuration.Sco.SqlRegistry.CreateBaseKey(ServiceContainer ctx, String machineName, IntPtr hKey, String keyName, RegistryAccess access, RegistryView
view)
at Microsoft.SqlServer.Configuration.Sco.SqlRegistry.GetLocalMachine(ServiceContainer ctx, String machineName, RegistryAccess access, RegistryView view)
at Microsoft.SqlServer.Discovery.DiscoveryEnumObject.GetSql2kMsiInstanceListInHive(String machineName, RegistryView regView)
at Microsoft.SqlServer.Discovery.DiscoveryEnumObject.LoadSql2kInstanceList(String machineName)
at Microsoft.SqlServer.Discovery.Product.GetData(EnumResult erParent)
at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData()
at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)Inner exception type: Microsoft.SqlServer.Configuration.Sco.SqlRegistryException
Message:
The network path was not found.
Data:
WatsonData = [email protected]rror
Above message says that your registry is not consistent and some of the parameters are missing from registry.Or
Account installing SQL server does not have permission to access this. I think case can be here that account with which you logged into your system to install SQL Server might not have certain privileges. Can you take help
of domain admin account add it as a local administrator in this machine always right click on setup file and select run as administrator. Before this make sure you remove all SQL Server components from add remove program
I strongly recommend you to have a good look at below thread
http://support.microsoft.com/kb/2000257/en-us
Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it.
My TechNet Wiki Articles -
I converted WinHelp to HTMLHelp in RH8. I lost all of the indentation of my index. Is there an automated way to fix?
>
6) i now want to drop the tablespace but it still says
alter tablespace tablespace_name offline
ERROR at line 1:
ORA-01191: file 15 is already offline - cannot do a normal offline
ORA-01110: data file 15: '*_INDEX.DBF'
Although the tablespace is already offilne and i only have one datafile.
After deleating the tablespace i will create another tablespace by same name and run an import on that for indexes.
Later i can rebuild indexes.
>
As your tablespace is having only one datafile, that also the datafile is offline already , so you are getting the error.If the datafile would have be online you wouldn't have got the error.
Secondly, as you wrote that you want to delete the tablespace, create new one and run the import, so do
1. drop tablespace tablespace_name including contents and datafiles; -- this will drop the index tablespace
2. create tablespace tablespace_name_same datafile 'loaction/datafile/name' size xxxM extent management local
segment space management auto;
3. Import the data
HTH
Anand
Maybe you are looking for
-
Is it Ok to put many classes in one file ?
Hi all, This is another beginner question. I was wondering, is it good practice to put many classes in one single file? Sometimes I notice there are many classes inside one big file and sometimes each class is in its own separate file. Is there an ad
-
I'm running iTunes 10.5 beta 7 but this issue has been happening since I was running 9. One day I clicked on a link for an app I saw on techcrunch and it pulled up in iTunes as being in the UK store. I clicked ok and my iTunes hasn't worked since.
-
Hard drive crashed. Can I use my ipod to transfer music back to my computer
I have a 160gb ipod. My hard drive just crashed. I am trying to retrieve the data but if I am unsuccessful, is there any way that I can transfer music back from my ipod to the computer? Please help!!
-
External catalog link not working in SRM 7
Hi all, We are on SRM 7.1. ECS. We are using external catalogs in shopping cart application.However one of the vendors catalog links is not wokrin when we select items from catalog...when the items are added from catalog,the items dont get added to S
-
Maximum number of recipients per message
Hi, i am trying to send a mail with about 500 recipients from Outlook connected with Outlook Anywhere to the Exchange 2013 Server. For each user i get an error saying mail could not be send - Error: [0x80004005-00000000-00000000]. If i send mails onl