Space removed from character data type when move to internal table issue...
Hi Friends,
I converted material code and other details into internal table which have corresponding data types.But in internal table,I can see material code as left justified ,but after that space was removed.For example if material code is 'ABC' then rest of the space(material char(18)) are removed.But I need remaining spaces.I tried to concatenate material code with spaces (caoncatenate matnr ` ` int etc .. )at right side and moved to another internal table.Its working.But the problem is material codes have different values like one material 'ABC' and another like '123893-h' etc.So I need to calculate the space(out of char 18) dynamiclly and need to put space based on material code value.
<< Moderator message - Everyone's problem is important >>
.Thank you all..
Regards,
Kumaran..
Edited by: Rob Burbank on Oct 26, 2010 11:18 AM
Hi Ramkumaran,
You have not told the purpose of having these spaces.
is it for transfering to a file?
If that is the case, use a table with fixed lenght lines instead of many fields.
i.e. try something like this
DATA : i_tab type standard table of BUSDATA,
wa_tab type BUSDATA.
wa_tab+0(10) = material number.
wa_tab+10(10) = material code.
wa_tab+20(4) = company code...
append wa_tab to i_tab.
Thanks
Vimal
Similar Messages
-
Revision: 3571
Author: [email protected]
Date: 2008-10-10 11:07:09 -0700 (Fri, 10 Oct 2008)
Log Message:
Update SWFLoader ASDoc comment to remove &emdash and data type declaration. ASDoc adds that automatically.
Doc the new types in IndexChangedEvent.as
Checkin Test Passed: Yes
QA: No
Bug:
Doc: No
Modified Paths:
flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/events/IndexChangedEvent.aslunke you shoude change svn update http://svn.foo-projects.org/svn/xfce/modules/trunk to svn up $startdir/src/trunk
hers a PKGBULID for thunar
pkgname=thunar
pkgver=0.0.2.r17470
pkgdesc="Thunar is a file manager designed for Xfce. It is currently under development."
url="http://thunar.xfce.org/wiki/"
depends=('exo-svn')
makedepends=('subversion')
source=()
md5sums=()
build() {
if [ ! -d $startdir/src/thunar ]; then
echo "Fetching sources..."
svn checkout http://svn.foo-projects.org/svn/xfce/thunar/trunk/ /thunar
else
echo "Updating sources..."
svn up $startdir/src/thunar/
fi
cd $startdir/src/thunar
./autogen.sh --prefix=/opt/xfce4-svn
make || return 1
make DESTDIR=$startdir/pkg install
find $startdir/pkg -name '*.la' -exec rm {} ;
you will need exo from svn as well
pkgname=exo-svn
pkgver=r17470
pkgdesc="Extensions to Xfce by os-cillation"
url="http://libexo.os-cillation.com/"
conflicts=(exo)
provides=(exo)
depends=('xfce4-svn')
makedepends=('subversion')
source=()
md5sums=()
build() {
if [ ! -d $startdir/src/trunk ]; then
echo "Fetching sources..."
svn checkout http://svn.foo-projects.org/svn/xfce/libexo/trunk/
else
echo "Updating sources..."
svn up $startdir/src/trunk
fi
cd $startdir/src/trunk
./autogen.sh --prefix=/opt/xfce4-svn
make || return 1
make DESTDIR=$startdir/pkg install
find $startdir/pkg -name '*.la' -exec rm {} ;
"Operation libtool-slay" compliant -
How to get the values from struct data type using java code..?
Hi ,
I am newer to java.
we are using oracle database.
How to get the data from struct data type using java code.
Thanks in Advance.
Regards,
kumarHi Rajeev,
To retrieve a FilterContainer you will need to traverse the report structure:
ReportStructure boReportStructure = boDocumentInstance.getStructure();
ReportContainer boReportContainer = (ReportContainer) boReportStructure.getReportElement(0);
FilterContainer boFilterContainer = null;
if (boReportContainer.hasFilter()) {
boFilterContainer = boReportContainer.getFilter();
} else {
boFilterContainer = boReportContainer.createFilter(LogicalOperator.AND);
Calling boDocumentInstance.getStructure() will retrieve the entire structure for the document.
Calling boReportStructure.getReportElement(0) will retrieve the structure for the first report of the document.
Hope this helps.
Regards,
Dan -
Retrieve data from LONG data types
Hi,
I am trying to retrieve data from LONG data types with following query.
select * from all_views where upper(text) like '%TABLE_NAME%';
In above query text column has long datatype. This query works for varchar, but it returns an error for long.
How can I modify the query so that it returns data from text column.
Thanks in advance,
AdityaYou can't use any expressions against LONG. One solution is to use PL/SQL:
BEGIN
FOR v_rec IN (SELECT * FROM ALL_VIEWS) LOOP
IF UPPER(v_rec.text) LIKE '%TABLE_NAME%'
THEN
DBMS_OUTPUT.PUT_LINE(v_rec.text);
END IF;
END LOOP;
END;
/SY. -
How can i remove from list of usernames, when i l...
I have some iuser names. How can i remove from list of usernames, when i log in,, my other user names, so nobody will see my other user name?
please visit the link below to learn how to delete usernames in the login or sign-in window;
How to Delete Usernames in the Sign-in Window
IF YOU FOUND OUR POST USEFUL THEN PLEASE GIVE "KUDOS". IF IT HELPED TO FIX YOUR ISSUE PLEASE MARK IT AS A "SOLUTION" TO HELP OTHERS. THANKS!
ALTERNATIVE SKYPE DOWNLOAD LINKS | HOW TO RECORD SKYPE VIDEO CALLS | HOW TO HANDLE SUSPICIOS CALLS AND MESSAGES
SEE MORE TIPS, TRICKS, TUTORIALS AND UPDATES in
| skypefordummies.blogspot.com | -
Problem converting data in XML file to internal table data
Hi all,
I have a requirement. I need to convert an XML file to internal table data and based on that data do Goods Receipt in SAP.
With the help of this blog /people/r.eijpe/blog/2005/11/10/xml-dom-processing-in-abap-part-i--convert-an-abap-table-into-xml-file-using-sap-dom-approach
I am able to convert the XML file to data in SAP. But this blog will display the output on screen as ELELEMNT = nodename VALUE= value of that node.
But I donu2019t want in that way, I want to store all the data in XML file in an internal table so that I can make use of those values and do Goods Recipt in SAP.
Can some one suggest how should I read the data in an internal table.
Here is my code..what changes should I make?
*& Report z_xit_xml_check
REPORT z_xit_xml_check.
TYPE-POOLS: ixml.
TYPES: BEGIN OF t_xml_line,
data(256) TYPE x,
END OF t_xml_line.
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_parser TYPE REF TO if_ixml_parser,
l_istream TYPE REF TO if_ixml_istream,
l_document TYPE REF TO if_ixml_document,
l_node TYPE REF TO if_ixml_node,
l_xmldata TYPE string.
DATA: l_elem TYPE REF TO if_ixml_element,
l_root_node TYPE REF TO if_ixml_node,
l_next_node TYPE REF TO if_ixml_node,
l_name TYPE string,
l_iterator TYPE REF TO if_ixml_node_iterator.
DATA: l_xml_table TYPE TABLE OF t_xml_line,
l_xml_line TYPE t_xml_line,
l_xml_table_size TYPE i.
DATA: l_filename TYPE string.
PARAMETERS: pa_file TYPE char1024 DEFAULT 'c:\temp\orders_dtd.xml'.
Validation of XML file: Only DTD included in xml document is supported
PARAMETERS: pa_val TYPE char1 AS CHECKBOX.
START-OF-SELECTION.
Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.
wrap the table containing the file into a stream
l_istream = l_streamfactory->create_istream_itable( table = l_xml_table
size = l_xml_table_size ).
Creating a document
l_document = l_ixml->create_document( ).
Create a Parser
l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
istream = l_istream
document = l_document ).
Validate a document
IF pa_val EQ 'X'.
l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
ENDIF.
Parse the stream
IF l_parser->parse( ) NE 0.
IF l_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 = l_parser->num_errors( ).
WRITE: count, ' parse errors have occured:'.
index = 0.
WHILE index < count.
parseerror = l_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.
Process the document
IF l_parser->is_dom_generating( ) EQ 'X'.
PERFORM process_dom USING l_document.
ENDIF.
*& Form get_xml_table
FORM get_xml_table CHANGING l_xml_table_size TYPE i
l_xml_table TYPE STANDARD TABLE.
Local variable declaration
DATA: l_len TYPE i,
l_len2 TYPE i,
l_tab TYPE tsfixml,
l_content TYPE string,
l_str1 TYPE string,
c_conv TYPE REF TO cl_abap_conv_in_ce,
l_itab TYPE TABLE OF string.
l_filename = pa_file.
upload a file from the client's workstation
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = l_filename
filetype = 'BIN'
IMPORTING
filelength = l_xml_table_size
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Writing the XML document to the screen
CLEAR l_str1.
LOOP AT l_xml_table INTO l_xml_line.
c_conv = cl_abap_conv_in_ce=>create( input = l_xml_line-data replacement = space ).
c_conv->read( IMPORTING data = l_content len = l_len ).
CONCATENATE l_str1 l_content INTO l_str1.
ENDLOOP.
l_str1 = l_str1+0(l_xml_table_size).
SPLIT l_str1 AT cl_abap_char_utilities=>cr_lf INTO TABLE l_itab.
WRITE: /.
WRITE: /' XML File'.
WRITE: /.
LOOP AT l_itab INTO l_str1.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab IN
l_str1 WITH space.
WRITE: / l_str1.
ENDLOOP.
WRITE: /.
ENDFORM. "get_xml_table
*& Form process_dom
FORM process_dom USING document TYPE REF TO if_ixml_document.
DATA: node TYPE REF TO if_ixml_node,
iterator TYPE REF TO if_ixml_node_iterator,
nodemap TYPE REF TO if_ixml_named_node_map,
attr TYPE REF TO if_ixml_node,
name TYPE string,
prefix TYPE string,
value TYPE string,
indent TYPE i,
count TYPE i,
index TYPE i.
node ?= document.
CHECK NOT node IS INITIAL.
ULINE.
WRITE: /.
WRITE: /' DOM-TREE'.
WRITE: /.
IF node IS INITIAL. EXIT. ENDIF.
create a node iterator
iterator = node->create_iterator( ).
get current node
node = iterator->get_next( ).
loop over all nodes
WHILE NOT node IS INITIAL.
indent = node->get_height( ) * 2.
indent = indent + 20.
CASE node->get_type( ).
WHEN if_ixml_node=>co_node_element.
element node
name = node->get_name( ).
nodemap = node->get_attributes( ).
WRITE: / 'ELEMENT :'.
WRITE: AT indent name COLOR COL_POSITIVE INVERSE.
IF NOT nodemap IS INITIAL.
attributes
count = nodemap->get_length( ).
DO count TIMES.
index = sy-index - 1.
attr = nodemap->get_item( index ).
name = attr->get_name( ).
prefix = attr->get_namespace_prefix( ).
value = attr->get_value( ).
WRITE: / 'ATTRIBUTE:'.
WRITE: AT indent name COLOR COL_HEADING INVERSE, '=',
value COLOR COL_TOTAL INVERSE.
ENDDO.
ENDIF.
WHEN if_ixml_node=>co_node_text OR
if_ixml_node=>co_node_cdata_section.
text node
value = node->get_value( ).
WRITE: / 'VALUE :'.
WRITE: AT indent value COLOR COL_GROUP INVERSE.
ENDCASE.
advance to next node
node = iterator->get_next( ).
ENDWHILE.
ENDFORM. "process_dom
Any help would be highly apperciated.
regards,
Jessica SamPavel Vera,
With your example i tries doing the following .....
I tried to convert the data of XML file to internal table data. I am collecting the data in internal table to do goos recipt with that data.
Please find my XML file, ABAP pgm and XSLT pgm . I donu2019t know what I am missing I am not getting any output. I donu2019t know what is wrong please help me with this
Below is my XML file, My code and XSLT Program. In the below XML file I need to collect Vendor Number, Order Number, and Date tags which occur only once for one XML file.
I also need to collect the following tags from <Shipmentdetail>
<Shipmentdetail> has following child nodes and I need to collect them
TrackingNumber
Freight
Weight
ShipmentDate
ShipmentMethod
Need to collect to collect the following tags from <ProductInformation>
<ProductInformation> has following child nodes and I need to collect them
LineNumber
SKUNumber
OrderedQuantity
ShippedQuantity
UOM
The <Shipmentdetail> and <ProductInformation> are child nodes of <OrderShipment>
The <Shipmentdetail> occurs only ones but the <ProductInformation> can occur once or many times and will be dynamic and differs depening on the input file.
My XML file is as follows
<?xml version="1.0" encoding="iso-8859-1" ?>
- <ShipmentHeader>
<AccountID />
- <OrderShipment>
<VendorNumber>1000</VendorNumber>
<OrderNumber>P00009238</OrderNumber>
<OrderType>Stock</OrderType>
<Company />
<Division />
<Department />
<Date>20061120</Date>
<CartonCount>2</CartonCount>
<ShipAllProducts>No</ShipAllProducts>
- <ShipmentDetail>
<TrackingNumber>1ZR3W891PG47477811</TrackingNumber>
<Freight>000000010000</Freight>
<ShipmentDate>20061120</ShipmentDate>
<ShipmentMethod>UPS1PS</ShipmentMethod>
</ShipmentDetail>
- <ProductInformation>
<LineNumber>000000001</LineNumber>
<SKUNumber>110FR</SKUNumber>
<AdvSKUNumber>003 4518</AdvSKUNumber>
<SKUID />
<OrderedQuantity>00000001000000</OrderedQuantity>
<ShippedQuantity>00000001000000</ShippedQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</ProductInformation>
- <ProductInformation>
<LineNumber>000000002</LineNumber>
<SKUNumber>938EN</SKUNumber>
<AdvSKUNumber>001 7294</AdvSKUNumber>
<SKUID />
<OrderedQuantity>00000000450000</OrderedQuantity>
<ShippedQuantity>00000000450000</ShippedQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</ProductInformation>
- <CaseInformation>
<LineNumber>000000001</LineNumber>
<SKUNumber>110FR</SKUNumber>
<AdvSKUNumber>003 4518</AdvSKUNumber>
<SKUID />
<SSCCNumber>00000001668000002487</SSCCNumber>
<CaseQuantity>00000001000000</CaseQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</CaseInformation>
<CaseInformation>
<LineNumber>000000001</LineNumber>
<SKUNumber>110FR</SKUNumber>
<AdvSKUNumber>003 4518</AdvSKUNumber>
<SKUID />
<SSCCNumber>00000001668000002487</SSCCNumber>
<CaseQuantity>00000001000000</CaseQuantity>
<UOM>EA</UOM>
<Factor>1</Factor>
</CaseInformation>
- </OrderShipment>
</ShipmentHeader>
My Program
TYPE-POOLS abap.
CONSTANTS gs_file TYPE string VALUE 'C:\temp\test.xml'.
* This is the structure for the data from the XML file
TYPES: BEGIN OF ts_shipment,
VendorNumber(10) TYPE n,
OrderNumber(20) TYPE n,
OrderType(8) TYPE c,
Date(8) TYPE c,
END OF ts_shipment.
TYPES: BEGIN OF ts_shipmentdetail,
TrackingNumber(30) TYPE n,
Freight(12) TYPE n,
Weight(14) TYPE n,
ShipmentDate(8) TYPE c,
ShipmentMethod(8) TYPE c,
END OF ts_shipmentdetail.
TYPES: BEGIN OF ts_productinformation,
LineNumber(9) TYPE n,
SKUNumber(20) TYPE c,
OrderedQuantity(14) TYPE n,
ShippedQuantity(14) TYPE n,
UOM(4) TYPE c,
END OF ts_productinformation.
* Table for the XML content
DATA: gt_itab TYPE STANDARD TABLE OF char2048.
* Table and work ares for the data from the XML file
DATA: gt_shipment TYPE STANDARD TABLE OF ts_shipment,
gs_shipment TYPE ts_shipment.
DATA: gt_shipmentdetail TYPE STANDARD TABLE OF ts_shipmentdetail,
gs_shipmentdetail TYPE ts_shipmentdetail.
DATA: gt_productinformation TYPE STANDARD TABLE OF ts_productinformation,
gs_productinformation TYPE ts_productinformation.
* Result table that contains references
* of the internal tables to be filled
DATA: gt_result_xml TYPE abap_trans_resbind_tab,
gs_result_xml TYPE abap_trans_resbind.
* For error handling
DATA: gs_rif_ex TYPE REF TO cx_root,
gs_var_text TYPE string.
* Get the XML file from your client
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = gs_file
CHANGING
data_tab = gt_itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "ISHIPMENT".
GET REFERENCE OF gt_shipment INTO gs_result_xml-value.
gs_result_xml-name = 'ISHIPMENT'.
APPEND gs_result_xml TO gt_result_xml.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "ISHIPDET".
GET REFERENCE OF gt_shipmentdetail INTO gs_result_xml-value.
gs_result_xml-name = 'ISHIPDET'.
APPEND gs_result_xml TO gt_result_xml.
* Fill the result table with a reference to the data table.
* Within the XSLT stylesheet, the data table can be accessed with
* "IPRODDET".
GET REFERENCE OF gt_productinformation INTO gs_result_xml-value.
gs_result_xml-name = 'IPRODDET'.
APPEND gs_result_xml TO gt_result_xml.
* Perform the XSLT stylesheet
TRY.
CALL TRANSFORMATION z_xml_to_abap3
SOURCE XML gt_itab
RESULT (gt_result_xml).
CATCH cx_root INTO gs_rif_ex.
gs_var_text = gs_rif_ex->get_text( ).
MESSAGE gs_var_text TYPE 'E'.
ENDTRY.
* Writing the data from file for gt_shipment
*Collecting the Shipping Data from the XML file to internal table gt_shipment
*and writing the data to the screen
LOOP AT gt_shipment INTO gs_shipment.
WRITE: / 'VendorNumber:', gs_shipment-VendorNumber.
WRITE: / 'OrderNumber :', gs_shipment-OrderNumber.
WRITE: / 'OrderType :', gs_shipment-OrderType.
WRITE: / 'Date :', gs_shipment-Date.
WRITE : /.
ENDLOOP. "gt_shipment.
LOOP AT gt_shipmentdetail INTO gs_shipmentdetail.
WRITE: / 'TrackingNumber:', gs_shipmentdetail-TrackingNumber.
WRITE: / 'Freight :', gs_shipmentdetail-Freight.
WRITE: / 'Weight :', gs_shipmentdetail-Weight.
WRITE: / 'ShipmentDate :', gs_shipmentdetail-ShipmentDate.
* WRITE: / 'ShipmentMethod :' gs_shipmentdetail-ShipmentMethod
WRITE : /.
ENDLOOP. "gt_shipmentdetail.
LOOP AT gt_productinformation INTO gs_productinformation.
WRITE: / 'LineNumber:', gs_productinformation-LineNumber.
WRITE: / 'SKUNumber :', gs_productinformation-SKUNumber.
WRITE: / 'OrderedQuantity :', gs_productinformation-OrderedQuantity.
WRITE: / 'ShippedQuantity :', gs_productinformation-ShippedQuantity.
WRITE: / 'UOM :', gs_productinformation-UOM.
WRITE : /.
ENDLOOP. "gt_productinformation.
XSLT Program
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<ISHIPMENT>
<xsl:apply-templates select="//OrderShipment"/>
</ISHIPMENT>
</asx:values>
</asx:abap>
</xsl:template>
<xsl:template match="OrderShipment">
<item>
<VENDORNUMBER>
<xsl:value-of select="VendorNumber"/>
</VENDORNUMBER>
<ORDERNUMBER>
<xsl:value-of select="OrderNumber"/>
</ORDERNUMBER>
<ORDERTYPE>
<xsl:value-of select="OrderType"/>
</ORDERTYPE>
<DATE>
<xsl:value-of select="Date"/>
</DATE>
</item>
</xsl:template>
<xsl:template match="/">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<ISHIPDET>
<xsl:apply-templates select="//OrderShipment/ShipmentDetail"/>
</ISHIPDET>
</asx:values>
</asx:abap>
</xsl:template>
<xsl:template match="ShipmentDetail">
<item>
<TRACKINGNUMBER>
<xsl:value-of select="TrackingNumber"/>
</TRACKINGNUMBER>
<FREIGHT>
<xsl:value-of select="Freight"/>
</FREIGHT>
<SHIPMENTDATE>
<xsl:value-of select="ShipmentDate"/>
</SHIPMENTDATE>
<SHIPMENTMETHOD>
<xsl:value-of select="ShipmentMethod"/>
</SHIPMENTMETHOD>
</item>
</xsl:template>
</xsl:transform> .
Any help is highly appreciated. If anyone encountered this situation before please let me know where i am going wrong in my XSLT transformation.
Any Help will be highly apppreciated. Thanks in advance
Regards,
Jessica Sam -
Error "Error in ABAP statement when processing an internal table. table."
Hello,
I am facing the error when tried for GR from SRM portal for my shopping cart and for others created shopping cart. The error is
"Error in ABAP statement when processing an internal table. table."
I have the central receipient role. Couold any body assist me?
Thanks,
PijushHi Harish,
Execute the query in RSRT and check whether you have any short dump is in ST22. This would give a clear idea at what might have gone wrong.
Another thing is to check whether the code for the variable is fine in the user exit.
Hope this helps.
Bye
Dinesh -
Store the vital info from the absence quota record in an internal table
Hi experts,
I want to detrmine if the Absence records (PA2001 rec) deduction from date (PA2001-BEGDA) and absence to date (PA2001-ENDDA) are permissible for the validity period of the Absence Quota record (the PA2006 rec). If the quotas deduction from date, PA2006-DESTA, is greater than the PA2001-BEGDA, we then need to identify this absence quota record for change and change the deduction from date, PA2006-DESTA, to be the same as PA2001-BEGDA. Store the vital info from the absence quota record in an internal table and record the new date that the deduction from date that needs to be changed to. The changes will be made via a BDC session.
Please help me out...
Thanks,
VickyThis looks possible if we code it in 'dynamic action' table, but the BDC may not read it during run time.
Do you still have this issue?
Thanks
Narasimha -
How to check if all values from a dataset has come to an internal table
How to check if all values from a dataset has come to an internal table ?
Hi,
After OPEN DATASET statement check if sy-subrc = 0 if its success then proceed with split statement and save the dataset values into a internal table and while debugging the internal table you will find that whether all values get into internal table.
Checking sy-subrc after OPEN DATASET statement is must to fill up the values in the internal table.
For e.g.
OPEN DATASET p_inpfile FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc NE 0.
WRITE :/ 'No such input file' .
EXIT.
ELSE.
READ DATASET p_inpfile INTO loc_string.
IF sy-subrc NE 0.
EXIT.
ELSE.
CLEAR loc2.
*Spliting fields in the file-
REPLACE ALL OCCURRENCES OF '#' IN wa_string WITH ' '.
SPLIT wa_string AT const INTO loc2-pernr
loc2-werks
loc2-persk
loc2-vdsk1.
Hope you get some idea.
Thanks,
Sakthi C -
Upload file of type Spreadsheet.ods to internal table
Hi Experts,
can any body give me function module to upload file of type Spreadsheet.ods into internal table
Thanks in Advance
NarendraHi Renu,
it is not supporting this function modules.
we r using open office and its just like excel sheet.
even function module ALSM_EXCEL_TO_INTERNAL_TABLE
not supporting.
Narendra -
Convert from String data type to Character data type
Hi...,
I'm a beginner. I try to make a program. But I don't know how to convert from string to data type. I try to make a calculator with GUI window. And when somebody put "+" to one of the window, I just want to convert it to Character instead of String.
Sorry of my bad english..
Please help me....
ThanksString s = "a+b";
char theplus = s.charAt(1); -
Problems with Custom Data Types when converting from TS 1.0 to 3.0.
I am currently involved in the process of converting a test environment from TestStand 1.0, LabVIEW 5.1, and Windows NT to TestStand 3.0, LabVIEW 7.0, and Windows XP. We use a custom Operator Interface developed in LV. Based on the entered Model and Serial number, the appropriate Test Sequence is called. We also use a custom Process Model. The steps in the Test Sequence are either LV code modules or DLLs created in C++. We have LV SubVIs and C++ API functions that allow the developers of the test steps to add data to various Custom Data Types. For example, a developer may set up a test to add a note (Step.Result.Notes[x].String) when the test fails. Step.Result.Notes is a container for an array of strings. The attempt to set a note first attempts to use SetDimensions to redimension the array, then SetValString to set the value. These notes are added to the report. On the old system, everything worked fine. A note could be added to any result. On the new system, if a note is added to say the 5th result, but results 1-4 do not have a note, the test sequence ends and the Operator Interface returns to waiting for data entry (as if no test ever happened). No report is generated. The LabVIEW libraries have been modified to solve this problem by calling SetDimensions to incrementally increase the array size by one, and populating the unused TestStand array elements with an empty array of LabVIEW strings using the SetValString call . In other words, based on the previous example, if the user wants to set a note for the 5th result, the notes for results 1-4 must first be sent an empty array of strings. The report will only display the note for Result 5 (as desired). In addition to this being cumbersome, attempting to implement the same workaround in the C++ API has been unsuccessful because even though the note arrays for unwanted notes (1-4) is initialized with nothing, it is still displayed as a note (empty) on the report. If anybody knows what is wrong and what the solution is, it will be appreciated.
Aaron,
Thanks for your reply. I will attempt to clarify. I am working with a single step. The step calls a DLL. The DLL performs many 'checks' on the UUT (e.g. Model Number Check, Serial Number Check, Calibration Constants Check, etc.). Under the Type Palette - MyTypes.ini, we have a Step Type called TEST_DLL with a container in it called Results. In the Results container are a number of things, but I will only list the important ones:
Notes (Array of Type 'Notes'; Type 'Notes' is a Custom Data Type (container, Type Definition)containing an array of strings called 'String')
-Notes are generally set when on of the checks fails, otherwise no Note is set for the check.
Val (Array of Type 'Val'; Type 'Val' is Custom Data Type (container, Type Definition) containing a Boolean called 'Boolean')
-Val indicates whether the check passed of failed
Pseudocode example:
//Model Number Check
check# = 0;
resultBOOL = ModelNumberCheck();
SetDimensions("Step.Result.Val", 0, "[0]", check#);
SetValBoolean("Step.Result.Val[check#].Boolean", 0, resultBOOL);
if(resultBOOL == FAIL)
Note# = 0;
SetDimensions("Step.Result.Notes", 0, "[0]", check#);
SetDimensions(Step.Result.Notes[check#].String, 0, "[0]", Note#);
SetValString("Step.Result.Notes[check#].String[Note#]", 0, "Model Number Check failed");
Note# = 1;
SetDimensions(Step.Result.Notes[check#].String, 0, "[0]", Note#);
SetValString("Step.Result.Notes[check#].String[Note#]", 0, "Model Number = 1234");
//Serial Number Check
check# = 1;
resultBOOL = SerialNumberCheck();
SetDimensions("Step.Result.Val", 0, "[0]", check#);
SetValBoolean("Step.Result.Val[check#].Boolean", 0, resultBOOL);
if(resultBOOL == FAIL)
Note# = 0;
SetDimensions("Step.Result.Notes", 0, "[0]", check#);
SetDimensions(Step.Result.Notes[check#].String, 0, "[0]", Note#);
SetValString("Step.Result.Notes[check#].String[Note#]", 0, "Serial Number does not match expected");
More Checks
As you can see above, the "Step.Result.Val" array is redimensioned for every check. The "Step.Result.Notes" array is only redimensioned when a note needs to be added for a failing check. If the entire step executes and no check adds a note, the sequence is fine. If every check fails and therefore every check adds a note, the sequence is fine. However, if there are any gaps (e.g. check 0 adds a note, check 1 does not add a note, and check 2 tries to add a note), the sequence will stop. If I add blank notes for every check that would otherwise not have a note, the sequence completes, but the report shows the blank note.
Also, the exact code that is causing these problems runs fine on our old systems (TestStand 1.0). I hope that I clarified the problem and thanks again for the help. -
What's the data type when defining a KF to show an integer with a sign?
We want show some days difference which should be an integer with either a positive or negative sign. I used to design a KF with type of Number with "DEC - Counter or amount field with comma and sign" as the Data Type, but find it shows 25.000 if the day difference is 25 days. We want to show it as 25 other than 25.000. Then what type would we pick when defining the KF? Use Integer as the type? But we also want it to show the sign symbol.
The type field is dimmed as long as the InfoObj. is activated that I have to remove this field. I've delete all the data loaded in ODS, PSA and etc., and I have successfully remove this KF from InfoSource, but when I try to remove it from the ODS, always get the msg "Can't move/delete locked InfoObjects" even if the InfoObject is not locked (I've tried SM12 to delete all locked entries and also tried relog on, but not helpful). If someone gives any idea, I would be very appreciated on how to remove this KF from ODS and also let me what type should I use when creating a new KF which only shows integer with a sign!
Thankshey Siggi,
Now after I right click the ODS and select "Delete Data", the KF eventually gets removed from the ODS without any error, then I continue to delete this InfoObj.
However, when I run the InfoPackage to load data to the ODS, get a msg (see below in between two dashed lines):
Syntax error in GP_ERR_RSDRO_UPDATE, row 1,210 (-> long text)
Message no. RG102
Diagnosis
The data object "I_S_OLDDATA" does not have a component called "/BIC/Z_field".
Where Z_field is the InfoObject we deleted. With this error, that's even worse since that stops any data coming in! How to get rid of this error that we can continue to load data?
Thanks -
Wrong data type when writing XML file
We are trying to write an XML file from ODI but we get the following error:
ODI-1217: Fallo de la sesión CMT_PAQ_CREA_XML (15001) con código de retorno 8000.
ODI-1226: Fallo en el paso WRITE_XML_SCHEMA después de 1 intento(s).
ODI-1232: Fallo en la ejecución del procedimiento WRITE_XML_SCHEMA.
ODI-1228: Fallo en la tarea WRITE_XML_SCHEMA (Procedimiento) en el destino XML conexión CMTInCaMo.
Caused By: java.sql.SQLException: Could not save the file D:\ODI\oracledi\XMLFiles\Cuentas11g.xml because a class java.sql.SQLException occurred and said: java.sql.SQLException: java.sql.SQLException: Wrong data type: type: <b>NUMERIC (2) expected: INTEGER value: 301000000232</b>
at com.sunopsis.jdbc.driver.xml.SnpsXmlFile.writeToFile(SnpsXmlFile.java:740)
at com.sunopsis.jdbc.driver.xml.SnpsXmlConnection.internalExecute(SnpsXmlConnection.java:713)
at com.sunopsis.jdbc.driver.xml.SnpsXmlPreparedStatement.executeUpdate(SnpsXmlPreparedStatement.java:111)
at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java:665)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.executeUpdate(SnpSessTaskSql.java:3218)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execStdOrders(SnpSessTaskSql.java:1785)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java:2805)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2515)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:537)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:449)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1954)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:322)
at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:224)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:246)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:237)
at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:794)
at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:114)
at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:83)
at java.lang.Thread.run(Thread.java:619)
The datastores have valid records but when we try to write them in the XML file it didn't work.
¿Can somebody help us?Thanks, let me give you an update:
The datatype of the element is defined as follows:
<xs:element name="AcctNo" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="60"></xs:maxLength>
</xs:restriction>
</xs:simpleType>
</xs:element>
The ODI reverse ingeneering has created the column as VARCHAR(255). I think this ok, because XML driver doesn't takes in account the xsd element defined length.
We have checked the XSD and is valid.
In the other hand, I must say that we have created an interface that is loading data into the corresponding datastore without any problem but we couldn't generate an XML file from it.
Any other advice? -
Incorrect data type when writing to FPGA Read/Write Control
I have run in to a problem this morning that is causing me substantial headache. I am programming a CompactRIO chassis running in FPGA mode (not using the scan engine) with LabVIEW 2012. I am using the FPGA Read/Write Control function to pass data from the RT Host to the FPGA Target. The data the RT host is sending comes from a Windows host machine (acting as the UI) and is received by the RT Host through a network published variable.
The network published shared variable (shared between the RT and Windows system) is a Type Def cluster containing several elements, one of which is a Type Def cluster of fixed point numerics. The RT system reads this shared variable and breaks out the individual elements to pass along to various controls on the FPGA code's front panel. The FPGA's front panel contains a type def cluster (the same type def cluster, actually) of fixed point numerics.
The problem comes in the RT code. After I read the shared variable I unbundle the cluster by name, exposing the sub-cluster of fixed point numerics. I then drop an FPGA Read/Write Control on the RT block diagram and wire up the FPGA reference. I left click on the FPGA Read/Write Control and select the cluster of fixed point numerics. I wire these together and get a coercion dot. Being a coercion dot hater, I hover over it the dot and see that the wire data type is correct (type def cluster of fixed point numerics), but the terminal data type is listed as a cluster containing a Boolean, code integer and source string, also known as an error cluster. I delete the wire and check the terminal data type on the Read/Write Control, which is now correctly listed as a type def cluster of fixed point numerics. Rewiring it causes the terminal to revert back to the error cluster. I delete the wire again and right click on the terminal to add a control. Sure enough, a type def cluster of fixed point numerics appears. Right clicking and adding an indicator to the unbundle attached to the network shared variable produces the proper result. So, until they are attached to each other, everything works fine. When I wire these two nodes together, one spontaneously changes to a error cluster.
Any thoughts would be appreciated.My apologies I never got back to responding on this. I regret that now because I got it to work but never posted how. I ran in to the exact same problem today and returned to this post to read the fix. It wasn't there, so I had to go through it all over again.
The manifestation of the problem this time was that I was now reading from the Read/Write FPGA front panel control and writing to a network published shared variable. Both of these (the published shared variable and the front panel control) were based on a strict type defined cluster, just like in the original post. In this instance, it was a completely different cluster in a completely different project, so it was not a one-off thing.
In addition to getting the coercion dot (one instance becoming an error cluster, recall), LabVIEW would completely explode this time around. If I saved the VI after changing type definition (I was adding to the cluster) I would get the following error:
Compile error. Report this problem to N.I. Tech Support. Copy cvt,csrc=0xFF
LabVIEW would then crash hard and shutdown without completing the save. FYI, I'm running LabVIEW 12.0f3 32-bit.
If I would then reopen the RT code, the same crash would occur immediately, ad nauseam. The only way to get the RT code to open was to change the type defined cluster back to the way it was (prior to adding the new element).
I didn't realize it last time around (what originally prompted this post), but I believe I was adding to a type def cluster when this occurred the first time.
So, how did I fix it this time around? By this point I tried many, many different things, so it is possible that something else fixed it. However, I believe that all I had to do was to build the FPGA code that the RT code was referencing. I didn't even have to deploy it or run it... I just had to build it. My guess is that the problem was the FPGA Reference vi (needed to communicate with the FPGA) is configured (in my case) to reference a bit file. When the development FPGA Main.vi ceases to match the bit file, I think that bad things happen. LabVIEW seems to get confused because the FPGA Main.vi development code is up and shows the new changes (and hence has the updated type def), but when you ask the RT code to do something substantial (Open, Save, etc), it refers to the old bit file that has not yet been updated. That is probably why the error getting thrown was a compile error.
I'm going to have to do an additional round of changes, so I will test this theory. Hopefully I will remember to update this post with either a confirmation or a retraction.
Maybe you are looking for
-
OK, This individual sparc 10 doesn't have a cdrom drive, so I'm going to network via either 100base-T or 1000base-T (fiber). I can hook it up to a console via Linux or Solaris (depending on this download server, which seems down). Now, I don't know H
-
A Background job in one of the step delays due to awaiting for Gateway
Hi, We have the month-end jobs executing in our Production systems every last week of month It was observed that, one BGD job took 30-45 mins delay to finish. - In one of the steps, there is Parallel processing with 56 DIA work processes across 4 App
-
Dear SAP consultants, I have a prepayment to vendor Please tell me Transaction to input this document. How to map it to invoice when I payment it
-
ページ表示中.何度もリドローする.
2DCADデータをPDFにして.もらったんですが7.2MBほど有り.ページ表示中ウインドに触る度に何度もリドローして内容を確認できないほどです. 説明用にサムネール程度の写真データも貼り付けられています. 何か設定などで.リドローを出来ないようにしたいんですが.手段はあるんでしょうか. PDF最適化を試みましたが.実行できるまで時間とリドローの繰り返しで遅々と進みません. 宜しくお願いします. Acrobat 9 Pro MacPro3Ghz OS X 10.5.6 9GB MEM 1.5TB
-
IWeb '09 Widgets Not Responding?
So I just recently upgraded to iLife '09 and every thing's working great except for the widgets in iWeb. I was trying to use the HTML snippet, and instead of the little box that pops up to put the actual code in, I had an empty box on the screen that