Names separated by "|" in a single line to individual names
I have a string where the names are separated by "|"
e.g.,
"china|india|france|japan|italy|germany|.|.|."
I need to process each of the names in a FOR LOOP in PL/SQL....
How to achieve it ? Is it feasible ?
You could also,
SQL> set serveroutput on
SQL> declare
2 names_list varchar2(2000) := 'china|india|france|japan|italy|germany';
3 names_array dbms_utility.uncl_array;
4 names_length binary_integer;
5 begin
6
7 dbms_utility.comma_to_table(replace(names_list,'|',','), names_length, names_array);
8
9 for i in 1 .. names_length
10 loop
11 dbms_output.put_line(names_array(i));
12 end loop;
13 end;
14 /
china
india
france
japan
italy
germany
[pre]
Regards
Peter Gjelstrup
Similar Messages
-
<p>I have four groupings, Domain, Area, Priority (3rd level of grrouoping) and then Problem ID. Priority group could have values such as '1', '2', '3', '4' and '5' with corresponding "average" age formula on these group level. values.</p><p>Example: 1 Avg Age= 30</p><p> 2 Avg Age= 45</p><p> 3 Avg Age= 69</p><p>Reguirement: Display group name values and their corresponding average formula on a single line/row.</p><p>Sample Solution: Priority 1 = 30, Priority 2 = 45, Priority 3 = 69 </p><p> ***solution above should be displayed/concatenated on one line.</p><p>Your help is greatly appreciated, thank you in advance.</p>
So right now - your report looks like this
GroupHeader 1
GroupHeader 2
Priority 1 = 50 (actual display of Group 3)
Priority 2 = 75 (actual display of Group 3)
Priority 3 = 45 (actual display of Group 3)
Priority 4 = 9 (actual display of Group 3)
Priority 5 = 8 (actual display of Group 3)
And you want to change that so that it displays horizontally.
If there will only ever be 5 priorities, I think I would cheat the system a bit. Create a formula that runs at the group 3 level and dumps the values into 5 separate variables (formula below).
Then create 5 separate display formulas and put them in Group Footer 2 (if you already have a GF2 - then create a second one and move it above your current GF2). Suppress the G3 section and you should be close to what you are after (unless you also have detail sections, then we'll need to revisit).
This could also be accomplished with a multi-column subreport at the G2 or G3 level if you need more flexibility.
formula *******
numbervar priority1;
numbervar priority2;
numbervar priority3;
numbervar priority4;
numbervar priority5;
if {DB.Priority} = 1 then priority1:= {@avgGroupPriorityAvgAge}
else if {DB.Priority} = 2 then priority2:= {@avgGroupPriorityAvgAge}
else if {DB.Priority} = 3 then priority3:= {@avgGroupPriorityAvgAge}
else if {DB.Priority} = 4 then priority4:= {@avgGroupPriorityAvgAge}
else if {DB.Priority} = 5 then priority5:= {@avgGroupPriorityAvgAge} -
HELLO...
I hope you experts out there can help me. Consider the following (2) Tables in MSSQL:
1. TENDERED --> Primary Key = DATE / DOC_NO / PAYMENT_SEQ_NO
DATE
DOC_NO
PMNT_SEQ_NO
PAYCODE_TYPE
AMOUNT
2. TENDERED_CR_CARD -->Primary Key = DATE / DOC_NO / PAYMENT_SEQ_NO
DATE
DOC_NO
PMNT_SEQ_NO
CR_CARD_NO_MASKED
CR_CARD_NAME
CR_CARD_EXP_DATE
These two tables are certainly related, based on their Primary Key values.
Now, consider the following data in those two tables:
DATE
DOC_NO PMNT_SEQ_NO
PAYCODE_TYPE
AMOUNT
03/10/2014 100001
1
CASH
100.00
03/10/2014 100001
2
CASH
-9.75
03/10/2014 100002
1
CASH
50.00
03/10/2014 100002
2
VISA
100.00
03/10/2014 100002
3
VISA
250.00
03/10/2014 100003
1
MC
125.00
03/10/2014 100003
2
AMEX
75.00
DATE
DOC_NO PMNT_SEQ_NO CR_CARD_MASKED
NAME
CR_CARD_EXP
03/10/2014 100002 2 4225******801289
MARY JONES 2016/08/31
03/10/2014 100002 3 4121******637442
JOHN DOE 2015/04/30
03/10/2014 100003 1 5428******971134
MIKE BAKER 2018/09/30
03/10/2014 100003 2 3732*****344756
LINDA LIU 2017/07/31
OK...so what we NEED...is a Combined, SINGLE RECORD Audit Report type query.
The resulting query should show, based on the Data from above, the SINGLE LINE represented in the Attached Spreadsheet.
NOTE...what's important to point out here..is that ONLY the 'CASH' Tender gets "summed"...EACH INDIVIDUAL Credit Card record MUST have its own Field...as represented in the corresponding Columns of the Spreadsheet (i.e. PMT_TYP_1, AMT_1, PMT_TYP_2,
AMT_2, and so forth).
PLEASE HELP! Any suggestions/advice would be most appreciated!
Thank You!...MarkI would not do this in SQL if I could possibly avoid it. Instead do it in the front end.
If you must do it in SQL, this is a dynamic pivot on multiple columns. Naomi Nosonovsky has a blog at
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/dynamic-pivot-on-multiple-columns/ on how to do that. Look especially at her second example using the claims table. Of course, you must do some manipulation even before you do the multi-column
pivot, since you must first combine all the cash entries.
So one way to do it would be to build a temp table with all the entries you have except the cash entries combined into one payment sequence number. To do that you may need specifications that are not clear to me from what you have given us. For
example, if PMT SEQ 1 is VISA, PMT SEQ 2 is CASH, PMT SEQ 3 is VISA, PMT SEQ 4 is CASH, and PMT SEQ 5 is VISA, you want to combine the two cash payments. So they become PMT SEQ 2? If so, what happens to PMT SEQ 4 - is it left N/A or does
PMT SEQ 5 become PMT SEQ 4?
But once you have this temp table with the cash payments combined in the algorithm you need, then you can use Naomi's method to do the multi-column pivot. Note that Naomi uses the code
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_Name = 'Claims'
to get the column names from the permanent table Claims. To get the column names from a temp table use code like the following. To find the column names in a temp table named #MyTempTable, do
From tempdb.sys.columns
Where object_id = OBJECT_ID('#MyTempTable')
But as I say, if feasible, I would do this in the front end, not in SQL. T-SQL is a very good language for storing and retrieving data, not so good at formatting it.
Tom -
Displaying items in a single line in ALV grid using ALV_TOP_OF_PAGE.
Hello Guys,
I am having a problem in displaying items in a single line in the ALV Grid using event ALV_TOP_OF_PAGE.
My requirement is to group items on a single line i.e. in the example below, Vendor code and posting date are on the same line. The next line the prints Vendor Name and Document no.
Vendor Code: 123123 Posting Date : 01.01.2011
Vendor Name: ABCD Document No: 152246598.
Here is my code in subroutine 'ALV_TOP_OF_PAGE',
wa_list_comments-typ = 'S'.
wa_list_comments-key = ''.
wa_list_comments-info = 'Vendor Code'.
APPEND wa_list_comments TO it_list_comments.
wa_list_comments-typ = 'S'.
wa_list_comments-key = ''.
wa_list_comments-info = 'Posting Date'.
APPEND wa_list_comments TO it_list_comments.
The above code prints in the following format i.e one below the other,
Vendor Code: 123123
Posting Date : 01.01.2011.
I also tried using HTML_TOP_OF_PAGE, but it didn't work.
Can anybody please help me out with this.
Regards,
Danish.Hi Danish,
Your problem is with the alignment and you need some fix positions .
The solution i feel is u can use as below :
In CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
use
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'.
Now on calling routine call use cl_dd_document class :
FORM html_top_of_page USING document TYPE REF TO cl_dd_document .
data : doctable TYPE REF TO cl_dd_table_element,
col1_t1 TYPE REF TO cl_dd_area,
col2_t1 TYPE REF TO cl_dd_area,
col1_t2 TYPE REF TO cl_dd_area,
col2_t2 TYPE REF TO cl_dd_area.
add quick table with five columns
CALL METHOD lw_document->add_table
EXPORTING
no_of_columns = 2
border = '0'
cell_background_transparent = ' '
width = '100%'
IMPORTING
table = doctable.
Filling columns in row
CALL METHOD doctable->add_column
EXPORTING
width = '40%'
IMPORTING
column = col1_t1.
Filling columns in row
CALL METHOD doctable->add_column
EXPORTING
width = '60%'
IMPORTING
column = col2_t1.* Filling columns in row
Call method doctable->new_row.
CALL METHOD doctable->add_column
EXPORTING
width = '40%'
IMPORTING
column = col1_t2.
Filling columns in row
CALL METHOD doctable->add_column
EXPORTING
width = '60%'
IMPORTING
column = col2_t2.
*Now adding the texts
lw_text1 = 'your first text'
CALL METHOD col1_t1->add_text
EXPORTING
text = lw_text.
*Similarly add text for other columns
*Adujust % in width to adjust the column as required
Endform.
Hope this will solve your problem . -
How do I delete a single line in a WAD input layout?
Hello to all,
I've created a standard delete function and I don't know how to "data bind" it to a single line of my web layout in order to only delete the selected line.
Can anyone please help and explain how to do it?
Thanks in advance for your help.
Best regards,
FrancescoHi Francesco,
have never done this before using a delete function but for similar planning requirements. Just give it a try with this procedure:
At WAD you can set the behavior for each analysis item individually. If you set the "row selection" (analysis item, properties, web items parameters) for the rows to "single" or "multiple" the user can select rows (probably this is nothing new to you).
Just imagine you have the variable "product" in the row of your query. In this case just create a variable for this characteristic. In doing so you can use the variable within your delete function or within the planning filter belonging to this function for the characteristic "product". The last step is to "link" the characteritic value(s) of the selected rows to the planning function/filter. If you implement the planning fuction or the planning sequence in WAD you can do a data binding for the variable(s) as follows:
Variable: (name of your variable)
Variable type: Selection_binding_type
Binding type: item_characteristic
Web Item: (technical name of your selectable analysis item)
characteristic: (name of your characteristic)
Please keep us updated if it works, for questions just let us know.
Brgds,
Marcel -
Query - Get data from the same table and field two times on a single line
I have prepared a query showing the bill of material. At each line each component will be a new line and I want to have the description of the material at the top (the master material composed of the component ones) and also the description of the component materials on the same line. This means that I should be able to use MAKT table 2 times on a single line of the query. I have used the query tool with SQ01 and SQ02 tcodes. How can I get the the description of the material at the top and also the description of the component material on a single line?
Thanks in advance for the answers.Yasar,
Any time you wish to use a table twice in an SQ01 query, you have to create an alias.
SQ02 > select the infoset, 'change' > go to Join definitions.
Select 'Alias' button. Create. Select your table name (such as MAKT) and define an alias, such as 'COMP_MAKT' for component descriptions.
Now you can insert the Alias table into your infoset just like it was a regular table, and use standard join method to join COMP_MAKT to your component material number.
Best regards,
DB49 -
Download created XML File in batch mode // Parse XML file into single lines
Hello!
I upload a CSV file and based on that CSV file I create an XML "object". First I uploaded and downloaded it via gui frontendclass, but as it has to be run in a batch in the night I need to upload and download the data via OPEN DATASET.
The import and transformation of the CSV file works fine, also the transfer into an itab with the same structure as a CSV line is ok. I also create the XML file, which could be downloaded easily with gui-download but it is not permittet.
Import of data: I scan the folder and get the filenames into a itab, I loop over that itab and read the single files like this:
OPEN DATASET ls_convert_batch FOR INPUT IN TEXT MODE ENCODING DEFAULT.
CLEAR tab.
IF sy-subrc = 0.
DO.
READ DATASET ls_convert_batch INTO line.
IF sy-subrc <> 0.
EXIT.
ELSE.
CLEAR tmptab.
SPLIT line AT ';' INTO tmptab-product
tmptab-contract
tmptab-extagent.
APPEND tmptab TO tab.
ENDIF.
ENDDO.
ENDIF.
The XML file has a strucutre like
<file>
- <file formant_no="1.1" format_date="02.10.2003">
<status>V</status>
<number>001001025</numbner>
<name>Schmeisser,Christof</name>
- <details>
- <detail>
<contract>00000003494</contract>
<name>Schmeisser, Christof</name>
<invoice_no>000000003840</invoice_no>
<due_date>20100601</due_date>
<amount>140,00</amount>
</detail>
- <detail>
<contract>00000003495</contract>
<name>Schmeisser, Christof</name>
<invoice_no>000000003841</invoice_no>
<due_date>20100601</due_date>
<amount>130,00</amount>
</detail>
- </details>
<elements>2</elements>
<amount_overall>270</amount_overall>
</file>
At the moment I download it like this:
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = filename
filetype = 'BIN'
* CONFIRM_OVERWRITE = '0'
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 24.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSEIF sy-subrc = 0.
lv_create_counter = lv_create_counter + 1.
ENDIF.
But I need to download it via OPEN TRANSFER CLOSE Dataset as it has to run in batch mode.
Anyone has an idea? I am really desperate here. One idea would be to parse the single lines into a string and then create the XML file line by line as text and save it with ending XML, should work. But I don't know how!
Thank you very much in advance,
kind regards from Tallinn, Estonia,
Christof!
Edited by: Christof Schmeisser on Nov 25, 2010 7:51 PM
I edited the heading, would be too general and missleading!Tipos Pools
TYPE-POOLS: ixml.
CLASS cl_ixml DEFINITION LOAD.
TYPES: BEGIN OF xml_node_type,
node TYPE char50,
vlnode TYPE string,
END OF xml_node_type,
BEGIN OF xml_line_type,
data(256) TYPE x,
END OF xml_line_type.
Tabelas Internas
DATA: ti_xml_node TYPE TABLE OF xml_node_type.
Variáveis TYPE REF
*Type REF para utilizar no XML
DATA: ixml_type TYPE REF TO if_ixml,
streamfactory_type TYPE REF TO if_ixml_stream_factory,
ostream_type TYPE REF TO if_ixml_ostream,
istream_type TYPE REF TO if_ixml_istream,
parser_type TYPE REF TO if_ixml_parser,
renderer_type TYPE REF TO if_ixml_renderer,
document_type TYPE REF TO if_ixml_document,
encoding_type TYPE REF TO if_ixml_encoding,
node_type TYPE REF TO if_ixml_node,
element_dtrans_type TYPE REF TO if_ixml_element,
element_xml_in_type TYPE REF TO if_ixml_element,
element_roteiros_type TYPE REF TO if_ixml_element,
element_roteiro_type TYPE REF TO if_ixml_element,
element_vias_type TYPE REF TO if_ixml_element,
element_via_type TYPE REF TO if_ixml_element,
element_dummy_type TYPE REF TO if_ixml_element,
gw_xml_node TYPE TABLE OF xml_node_type,
gw_xml_node_ret TYPE TABLE OF xml_node_type,
gw_xml_node_err TYPE TABLE OF xml_node_type,
gw_xml_node_xml TYPE TABLE OF xml_node_type,
gw_xml_table TYPE TABLE OF xml_line_type,
gw_xml_table2 TYPE TABLE OF xml_line_type,
gs_xml_node TYPE xml_node_type, "WA para leitura do xml
gs_xml_node_ret TYPE xml_node_type, "WA para leitura do xml retorno
gs_xml_node_err TYPE xml_node_type, "WA para leitura do xml erro
gs_xml_node_xml TYPE xml_node_type, "WA para leitura do xml info sucesso
gs_xml_table2 TYPE xml_line_type. "WA para importar xml
Variáveis do Programa
DATA: l_value TYPE string,
l_rc TYPE i,
l_xml_size TYPE i,
cod_cartaorepom TYPE char20 VALUE '123456789',
v_caminho_exp TYPE string VALUE 'C:TEMP',
v_salvaarquivo TYPE string,
v_nomearquivo TYPE string,
w_nodetext TYPE string,
v_roteiros TYPE string,
v_roteiro TYPE string,
v_roteiro_codigo TYPE string,
v_percurso_codigo TYPE string,
v_percurso_descricao TYPE string,
v_cidade_origem TYPE string,
v_estado_origem TYPE string,
v_cidade_destino TYPE string,
v_estado_destino TYPE string,
v_transporte_tipo TYPE string,
v_cartao_taxa TYPE string,
v_cobra_taxa TYPE string.
Constants
CONSTANTS: cc_39 TYPE string VALUE '39', " Numero 39.
cc_dt_trans TYPE string VALUE 'data_transfer'," document_type(name)
cc_metodo_cod TYPE string VALUE 'metodo_codigo'," document_type(name)
cc_xml_in TYPE string VALUE 'xml_in'," document_type(name)
cc_ct_tx_ativ TYPE string VALUE 'cartao_taxa_ativacao'," document_type(name)
cc_cartao TYPE string VALUE 'cartao', " Parâmetro Perform.
cc_xml TYPE string VALUE '.XML'," extenção
cc_bin TYPE char10 VALUE 'BIN'." filetype
START-OF-SELECTION.
PERFORM yf_inicia_criacao_xml USING cc_39.
element_roteiro_type = document_type->create_simple_element(
name = cc_ct_tx_ativ
parent = element_xml_in_type ).
PERFORM yf_dummy_roteiro USING cod_cartaorepom cc_cartao.
PERFORM yf_finaliza_xml.
PERFORM yf_exporta_xml USING v_caminho_exp.
PERFORM yf_convert_xml_to_itab TABLES gw_xml_node_ret
USING v_salvaarquivo.
END-OF-SELECTION.
*& Form yf_inicia_criacao_xml
text
-->VALUE(P_0783) text
FORM yf_inicia_criacao_xml USING value(p_0783).
DATA: s_encoding_type TYPE string VALUE 'ISO-8859-1'.
Cria o ixml factory
ixml_type = cl_ixml=>create( ).
*Cria o objeto com modelo
document_type = ixml_type->create_document( ).
*Cria o cabeçalho encoding="iso-8859-1"
encoding_type = ixml_type->create_encoding( byte_order = 0
character_set = s_encoding_type ).
*Cria o root "DATA_TRANSFER"
element_dtrans_type = document_type->create_simple_element(
name = cc_dt_trans
parent = document_type ).
*Cria o node "METODO_CODIGO" e preenche com um valor passado no L_VALUE
l_value = p_0783.
CONDENSE l_value.
element_dummy_type = document_type->create_simple_element(
name = cc_metodo_cod
value = l_value
parent = element_dtrans_type ).
*Cria o node "XML_IN"
element_xml_in_type = document_type->create_simple_element(
name = cc_xml_in
parent = element_dtrans_type ).
ENDFORM. " yf_inicia_criacao_xml
*& Form yf_dummy_roteiro
text
-->VALUE(P_0996) text
-->VALUE(P_0997) text
FORM yf_dummy_roteiro USING value(p_0996)
value(p_0997).
l_value = p_0996.
CONDENSE l_value.
element_dummy_type = document_type->create_simple_element(
name = p_0997
value = l_value
parent = element_roteiro_type ).
ENDFORM. " yf_dummy_roteiro
*& Form yf_finaliza_xml
text
FORM yf_finaliza_xml.
*Cria o stream factory
streamfactory_type = ixml_type->create_stream_factory( ).
*Conecta a internal table de XML com o stream factory
ostream_type = streamfactory_type->create_ostream_itable( table = gw_xml_table ).
CALL METHOD ostream_type->set_encoding
EXPORTING
encoding = encoding_type.
*Rendering the document
renderer_type = ixml_type->create_renderer( ostream = ostream_type
document = document_type ).
l_rc = renderer_type->render( ).
*Salva o documento XML
l_xml_size = ostream_type->get_num_written_raw( ).
ENDFORM. " yf_finaliza_xml
*& Form yf_exporta_xml
text
-->VALUE(P_0783) text
FORM yf_exporta_xml USING value(p_0783).
CONCATENATE cod_cartaorepom
sy-datum
sy-uzeit
cc_xml
INTO v_nomearquivo.
CONCATENATE p_0783
v_nomearquivo
INTO v_salvaarquivo.
TRANSLATE v_nomearquivo TO UPPER CASE.
*Exporta o XML
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = v_salvaarquivo
filetype = cc_bin
CHANGING
data_tab = gw_xml_table
EXCEPTIONS
OTHERS = 24.
IF sy-subrc = 0.
PERFORM yf_sapgui_progress_indicator USING cc_msg_xml_ok.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " yf_exporta_xml
*& Form yf_convert_xml_to_itab
text
-->P_GW_XML_NODE_RET text
-->P_FILENAME text
FORM yf_convert_xml_to_itab TABLES p_gw_xml_node_ret LIKE gw_xml_node
USING p_filename.
DATA l_count.
ixml_type = cl_ixml=>create( ).
Now Create Stream Factory
streamfactory_type = ixml_type->create_stream_factory( ).
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_filename
filetype = cc_bin
IMPORTING
filelength = l_xml_size
CHANGING
data_tab = gw_xml_table2
EXCEPTIONS
OTHERS = 19.
IF sy-subrc = 0.
istream_type = streamfactory_type->create_istream_itable( table = gw_xml_table2
size = l_xml_size ).
document_type = ixml_type->create_document( ).
parser_type = ixml_type->create_parser( stream_factory = streamfactory_type
istream = istream_type
document = document_type ).
IF parser_type->parse( ) NE 0.
IF parser_type->num_errors( ) NE 0.
l_count = parser_type->num_errors( ).
ENDIF.
ENDIF.
CALL METHOD istream_type->close( ).
CLEAR istream_type.
node_type = document_type.
PERFORM yf_get_data USING node_type.
p_gw_xml_node_ret[] = gw_xml_node[].
CLEAR gw_xml_node[].
ENDIF.
ENDFORM. " yf_convert_xml_to_itab
*& Form yf_get_data
text
-->VALUE(X_NODE) text
FORM yf_get_data USING value(x_node) TYPE REF TO if_ixml_node.
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( ).
w_nodetext = string.
CLEAR string.
string = x_node->get_value( ).
IF NOT w_nodetext IS INITIAL OR
NOT string IS INITIAL.
gs_xml_node-node = w_nodetext.
gs_xml_node-vlnode = string.
IF NOT gs_xml_node-vlnode IS INITIAL.
APPEND gs_xml_node TO gw_xml_node.
CLEAR gs_xml_node.
ENDIF.
ENDIF.
ENDCASE.
Get the next child
x_node = x_node->get_first_child( ).
Recurse
WHILE NOT x_node IS INITIAL.
PERFORM yf_get_data USING x_node.
x_node = x_node->get_next( ).
ENDWHILE.
ENDFORM. "yf_get_data -
Best way to handle single line Customer and Address Data
Hi, We have customer data in a single line means name, address everything is in a single line. I am now suppose to cleanse this data using Data Quality. Now my question is how to parse this data. Normally I have dealt with multiple line or address data which I can map to input fields of the Address cleanse transforms. In this case, Shall I just map that single field to "Address_line" of the Address cleanse transform? It should be able to parse or shall I parse all the fields using some function in Query transform and then feed into Address Cleanse transform?
Thanks,Hi, We have customer data in a single line means name, address everything is in a single line. I am now suppose to cleanse this data using Data Quality. Now my question is how to parse this data. Normally I have dealt with multiple line or address data which I can map to input fields of the Address cleanse transforms. In this case, Shall I just map that single field to "Address_line" of the Address cleanse transform? It should be able to parse or shall I parse all the fields using some function in Query transform and then feed into Address Cleanse transform?
Thanks, -
Hi, folks.
I have a table of employees and a table of certifications. An employee may have 0-15 certifications (and dates completed).
I'm trying to generate a single line report like this:
NAME - CPR DATE - FIRST AID DATE - Etc
I've made an evaluation formula:
If {Cert_Table.Type} = "CPR" then {Cert_Table.Date}
This works brilliantly...as long as CPR is the first record that matches the employee ID. If it is the second, it leaves the field erroneously blank.
I know the ideal way to show this would be a list, but the boss wants a single-line representation of the key certification dates.
How do I get crystal to report back the CPR date regardless of which order it appears?
Thanks in advance!Hi,
There are a couple of ways you can do this. Following your train of thought, you can build the string like:
Create a Group on Employee.
In the Group Header create a formula like:
WhilePrintingRecords;
StringVar Certifications := "";
In the Detail section create a formula like:
WhilePrintingRecords;
StringVar Certifications;
Certifications := Certifications += {Cert_Table.Date} & " - ";
In this formula, if your Date field is an actual date type then you will need to use the ToString function to convert it to a string or you will get an error.
In the Group Footer create a final formula like:
WhilePrintingRecords;
StringVar Certifications;
The first two formulas you can format to Suppress so you don't see them.
Good luck,
Brian -
Column Validation on Single Line of Text
I have a sharepoint input form in SP2013, which contains text field with below properties
1. Type: Single line of Text
2. Under Column validation
=AND(ISNUMBER([Column name]+0),ISERROR(FIND(".",[Column name],1)))
On form submit, the above condition evaluates and throws an error if field value is non numeric field.(This is expected and working fine)
I also want to add another condition that should not allow preceding zero
example: it should throw error on 0122343(any number starting with zero)You should achieve that with the following formula :
=AND(AND(ISNUMBER([Column name]+0);ISERROR(FIND(".",[Column name],1)));LEFT([Column name],1) <> "0")
If the first character of your column is 0 it fails validation
Regards -
How to print long raw text data in report output in single line?
Hi All,
I have a requirement where I need to print raw comma separated text data in the report output which end user will open in excel and can sort as required. I can not directly generate excel output.
Now there is huge set of data and each row from the report query should be get printed on single line, It should not get printed on the next line.
I tried to extending the report with 240 characters but still there are some text data which is getting printed on the next line.
Please share your view if someone has any solution on this issue.
Thanks in Advance.
ArunMake the report even wider. By default a report layout can be 10 pages wide. If you need more, change the "Max. Horizontal Body Pages" property, and extend your layout too.
IMHO, I wouldn't even use Reports to create a csv file. Utl_file or an sqlplus script that spools to a file are better options I think. -
Reg. displaying the comparison BOM fields in a single line in CS14
Dear Experts,
My requirement is that whenever CS14 is executed for Primary BOM with Secondary BOM comparison, when the Differentiated/Summarized Comparison button is selected, the comparison BOM Fields should appear in a single line. Currently SAP standard displays in two lines. in first line, primary BOM and next line, Secondary BOM. This functionality must be changed. I found Customer Exit PCSD0004 to achieve this. But how to do? Can anyone share your experience?
Thanks
Ramesh ManoharanHi mroshaw76 ,
That should be eazzzzyy :)
<?for-each-group:/Parent;Product?>
<?Parent?> --- this will display the car
Colors of the <?Product?> : <?for-each@inlines:current-group()?><?value?><?end for-each?>
<?end for-each?>Note the element name are case-sensitive. -
html:errors don't show in a single line
I use Struts <html:errors>
<html:text property="test" /><html:errors name="test"/>
when errors is not empty,it will show error information.But what puzzled with me is that I find the show of <html:errors property="test"/> occupy three lines,not a single line.
My application.properties file:
errors.footer=
errors.header=
errors.test.required=This is a test
I want to show "This is a test" in only one single line,but in fact it shows three lines,like follows:
null
This is a test
null
If I modify the content of application.properties file:
errors.test.required=This is a test
It still show three lines,like follows:
blank line
This is a test
blank line
I want to show it in a single line without header and footer,anybody knows how to do it?Hi,
in Struts <html:errors/> will show errors in a listed manner.
so in ur properties file u have to specify ur errors within<li></li> tag and u have to add the additional valuee for header and footer.
Try this
errors.header=<UL>
errors.footer=</UL>
errors.test.required=<li>This is a test</li>You can decorate this using html tags in Porperty file.
p(`)(`)ja. -
Output the element in a single line
Hi all,
I encontered a problem when using castor xml tool to gengerate an xml file.
The parser that I an using is org.exolab.castor.parser=org.apache.xerces.parsers.SAXParser.
And I set org.exolab.castor.indent=true in the castor.properties
I got the following ouput:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE subscribers PUBLIC "...
"subscriber.dtd">
<subscribers provider="..."/>
<user name="..."
pass="..."/>
</subscribers>
What I expect is that the user element should be in a single line like following:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE subscribers PUBLIC "..." "subscriber.dtd">
<subscribers provider="..."/>
<user name="..." pass="..."/>
</subscribers>
What should I do to achieve this goal?
I found there is a property which might be useful, but I don't know exactely how to use it:
org.exolab.castor.features=
thanks in advanceHello,
I've found a solution:
We can use our own Serializer to control the output format:
In the castor.properities,
by default org.exolab.castor.serializer=org.apache.xml.serialize.XMLSerializer
I deprived this class and overrided all the constructors and the setOutputFormat method:
public void setOutputFormat(OutputFormat arg0) {
arg0.setIndenting(true);
arg0.setLineWidth(0);
super.setOutputFormat(arg0);
and it works fine
Thanks anyway
Message was edited by:
laseine -
hi I am having problem in formatting XML file which I generated with xmlelement() when I execute it gives me putput in a single line
is there any way that I got my output as a XML file HAS......That is expected behavior. PRETTY print(ing) is only needed for humans. XML Parsers don't need the XML to be pretty printed. If you open the XML file in a browser like Windows Explorer or Firefox, the browser will pretty print the output for you.
In all, the "single line" output is done because of PERFORMANCE reasons (lack of unneeded end of line and CTRL line breaks etc)
SELECT xmlelement("Employee Name", dummy) as "XML RESULT"
FROM DUAL;
<Employee Name>X</Employee Name>
SELECT xmlelement("Employee Name", xmlelement("SurName", dummy)
, xmlelement("LastName", dummy)
) as "XML RESULT"
FROM DUAL;
<Employee Name><SurName>X</SurName><LastName>X</LastName></Employee Name>
XMLSERIALIZE can pretty print the output if needed via INDENTation
SELECT XMLSERIALIZE(CONTENT xmlelement("Employee Name", xmlelement("SurName", dummy), xmlelement("LastName", dummy)) as CLOB indent SIZE=1 )
FROM DUAL;
<Employee Name>
<SurName>X</SurName>
<LastName>X</LastName>
</Employee Name>
Maybe you are looking for
-
Viewing photos from PC.
i have over 10000 photos on my pc. i want to use the slideshow feature to randomly display my photos on my apple tv. it seems to only rotate through about 100 or so. how can i get apple tv to display ALL my photos. this is the main reason i bought an
-
Fake Adobe 24/7 help tech's
Hi: This is a warning. I posted an issue here on Friday and was contacted on Saturday via e:mail. The claimed to be with Adobe24/7 help requested to connect on Skype messaging. The icon on the Skype was Adobe helps. This tech and one that pho
-
Parallel flow for folder in KM- portal DMS
Hi Experts, Is parallel approval flow is possible for a folder in KM
-
Oracle hands for 12 min during "alter database open"
Dear all, After a disk failure/replacement in a SAN disk array that we are using for storage, we had to restore our Oracle database. After the restore the database does not start properly: It takes around 12 min to move from the state "Mount" to the
-
Im working on Popups the dialog box, im not aware on , how to generate the POPUP instead of navigating from one window to another. i must use the thing within the same component, i need a detailed explaining in this and if you give me the step by ste