× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



But Okey,

give me the SQL for

echo('<?xml version="1.0" encoding="UTF-8"?>');

xmlNode('Invoice'
:'xsi:schemaLocation="'+ 'urn:oasis:names:specification:ubl:schema:'
+'xsd:Invoice-2 UBL-Invoice-2.0.xsd' +'" ' + nl() + x'0505'
+'xmlns:xsi="'+ 'http://www.w3.org/2001/XMLSchema-instance' +'" '
+ nl() + x'0505'
+'xmlns="'+ 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'
+'" ' + nl() + x'0505'
+'xmlns:cac="'+ 'urn:oasis:names:specification:ubl:schema:xsd:'
+ 'CommonAggregateComponents-2' + '" ' + nl + x'0505'
+'xmlns:cbc="'+ 'urn:oasis:names:specification:ubl:schema:xsd:'
+'CommonBasicComponents-2' +'" ' + nl() + x'0505'
+'xmlns:ccts="'+ 'urn:oasis:names:specification:ubl:schema:xsd:'
+'CoreComponentParameters-2' + '" ' + nl() + x'0505'
+'xmlns:sdt="'+ 'urn:oasis:names:specification:ubl:schema:xsd:'
+'SpecializedDatatypes-2' +'" ' + nl() + x'0505'
+'xmlns:udt="'+ 'urn:un:unece:uncefact:data:specification:'
+'UnqualifiedDataTypesSchemaModule:2' +'" '
);

or

echo('');
xmlNode('cac:InvoiceLine');

linno += 1;
linmom = %dech(sfbeld * shmoms / 100:11:2);

xmlNode('cbc:ID':'':%char(linno));
if sfleva > 0;
xmlNode('cbc:InvoicedQuantity'
:'unitCode="'+ 'EA' +'" '
:%trim(%editc(sfleva:'P'))
);
else;
xmlNode('cbc:InvoicedQuantity'
:'unitCode="'+ 'EA' +'" '
:'1'
);
endif;
xmlNode('cbc:LineExtensionAmount'
:'currencyID="'+ 'DKK' +'" '
:%trim(%editc(sfbeld:'P'))
);
xmlNode('cac:TaxTotal');
xmlNode('cbc:TaxAmount'
:'currencyID="'+ 'DKK' +'" '
:%trim(%editc(linmom:'P'))
);
xmlNode('cac:TaxSubtotal');
xmlNode('cbc:TaxableAmount'
:'currencyID="'+ 'DKK' +'" '
:%trim(%editc(sfbeld:'P'))
);
xmlNode('cbc:TaxAmount'
:'currencyID="'+ 'DKK' +'" '
:%trim(%editc(linmom:'P'))
);
xmlNode('cac:TaxCategory');
xmlNode('cbc:ID'
:'schemeAgencyID="'+ '320' +'" '
+'schemeID="'+ 'urn:oioubl:id:taxcategoryid-1.1' +'" '
:'StandardRated'
);
xmlNode('cbc:Percent':'':%char(xxmoms));
xmlNode('cac:TaxScheme');
xmlNode('cbc:ID'
:'schemeAgencyID="'+ '320' +'" '
+'schemeID="'+ 'urn:oioubl:id:taxschemeid-1.1' +'" '
:'63'
);
xmlNode('cbc:Name':'':'Moms');
xmlEndNode('cac:TaxScheme');
xmlEndNode('cac:TaxCategory');
xmlEndNode('cac:TaxSubtotal');
xmlEndNode('cac:TaxTotal');



xmlNode('cac:Item');
if sftxt <> *blanks;
xmlNode('cbc:Description':'':sftxt);
xmlNode('cbc:Name':'':sftxt);
else;
xmlNode('cbc:Description':'':'.');
xmlNode('cbc:Name':'':'.');
endif;
xmlNode('cac:SellersItemIdentification');
if sfvarn <> *blanks;
xmlNode('cbc:ID'
:'schemeID="'+ 'n/a' +'" '
:sfvarn
);
else;
xmlNode('cbc:ID'
:'schemeID="'+ 'n/a' +'" '
:'text'
);
endif;
xmlEndNode('cac:SellersItemIdentification');
xmlEndNode('cac:Item');
xmlNode('cac:Price');
if sfleva > 0;
xmlNode('cbc:PriceAmount'
:'currencyID="'+ 'DKK' +'" '
:%trim(%editc(sffakp:'P'))
);
else;
xmlNode('cbc:PriceAmount'
:'currencyID="'+ 'DKK' +'" '
:'0.00'
);
endif;
xmlNode('cbc:BaseQuantity'
:'unitCode="'+ 'EA' +'" '
:'1'
);
xmlNode('cbc:OrderableUnitFactorRate':'':'1');
xmlEndNode('cac:Price');

xmlEndNode();

exsr InvoiceLineA;

enddo;
On Tue, May 22, 2012 at 8:04 PM, Henrik Rützou <hr@xxxxxxxxxxxx> wrote:

Birgitta,

have you ever worked with the 99% of IBM I programmers that dosn't even
know
what a SQLRPGLE program is ?

My code is simple and procedual - but try to produce the same

On Tue, May 22, 2012 at 7:19 PM, Birgitta Hauser <Hauser@xxxxxxxxxxxxxxx>wrote:

Hendrik,

did you ever use embedded SQL to write directly into the IFS?
Did you had a look at the XML Publishing Functions?
I assume not!
You think your example is shocking me? You didn't!

You do not need to create a XML document with a single SQL statement (as
I did it in the example), you can loop through your tables (or views) build
the (nested) elements and attributes including Namespaces concatenate them
together etc. ... just in the same way you did in your example.

Mit freundlichen Grüßen / Best regards

Birgitta Hauser

"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training
them and keeping them!"


-----Ursprüngliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
Im Auftrag von Henrik Rützou
Gesendet: Tuesday, 22. May 2012 17:59
An: RPG programming on the IBM i / System i
Betreff: Re: composing an xml document Using RPG

Birgitta,

SQL may be efficient to create a simple, no a very simple XML document,
but if you are in the business of transferring business documents you
either has to code a lot of business logic and create a lot of inhouse
files before and that is double double work.

To give you an example of how complex the code can be I include a sample
program creating a danish public invoice


On Tue, May 22, 2012 at 5:08 PM, Birgitta Hauser <Hauser@xxxxxxxxxxxxxxx
wrote:

If you are already on Release 7.1 you can use the SQL XML Publishing
Functions in composition with embedded SQL to write directly into the
IFS:
Example:

D MyXMLDoc S SQLTYPE(XML_CLOB_File)
D

//**********************************************************************
C/Exec SQL Set Option Commit=*None, DatFmt=*ISO, TimFmt=*ISO,
C+ Naming=*SYS, CloSQLCsr=*EndActGrp
C/End-Exec
/FREE
Clear MyXMLDoc;
MyXMLDoc_Name = '/home/Hauser/MyXMLDoc.xml';
MyXMLDoc_NL = %Len(%Trim(MyXMLDoc_Name));
MyXMLDoc_FO = SQFOVR; //Replace if exists

Exec SQL
Select XmlDocument
(xmlgroup(EmployeeNo as "PersNo",
Trim(Trim (FirstName) concat ' ' concat
Trim(Name)) as "PersName",
Address as "Street",
ZipCode as "ZipCode",
City as "City"
Order By City Desc, Name
Option Row "Employee"
Root "Staff"))
into :MyXMLDoc
From LobStaff;


*InLR = *On;
/END-FREE

Mit freundlichen Grüßen / Best regards

Birgitta Hauser

"Shoot for the moon, even if you miss, you'll land among the stars."
(Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training
them and keeping them!"


-----Ursprüngliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]
Im
Auftrag von Amanda Paul
Gesendet: Tuesday, 22. May 2012 15:39
An: rpg400-l@xxxxxxxxxxxx
Betreff:


What are the different ways of composing an xml document Using RPG,
any examples ?

--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/rpg400-l.


--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a
moment to review the archives at http://archive.midrange.com/rpg400-l.




--
Regards,
Henrik Rützou

http://powerEXT.com <http://powerext.com/>

--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing
list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




--
Regards,
Henrik Rützou

http://powerEXT.com <http://powerext.com/>






As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.