Generate more than one file

In Objet Form 13382 a procedure generate one file with some financial Data.

XMLPort 13301 creates that file.

I Pretend create a new XMLPort, that generates all financial doc’s by vendor nº. But for each vendor Nº I pretend generate one file in my system.

Run a XML Port that for each vendor Nº, creates a diferent file . txt?

How can I do That?

.

Following link might help you…

http://msdn.microsoft.com/en-us/library/hh166529(v=nav.70).aspx

Hi loop running the xml port through code. on your button

if vendorrec.findset then begin

repeat

XMLPORT.EXPORT(xmlportnumber,path,vendorrec);

until vendor.next=o;

end;

Hello Anil

I Inserted this code in CU 412 on Open File

IF Vendor.FINDSET THEN BEGIN
REPEAT

VendXmlFile.CREATE(‘C:\SAFT\Vendor.xml’);
VendXmlFile.CREATEOUTSTREAM(XmlStream);
XMLPORT.EXPORT(50004, XmlStream);
VendXmlFile.CLOSE;
XMLPORT.EXPORT(50004,‘C:\Vend.xml’,Vendor);
//MESSAGE(‘Passou aqui1’);

UNTIL Vendor.NEXT=0;
END;

But I a geting a error message when I Comppile my CU Objet

XML Port 0 Does not Exists.

Hi Luana,

Not quite sure what you’re trying to do here. Don’t mess with CU 412 for this. Create a new codeunit for this call.

And try this instead:


IF Vendor.FINDSET THEN
REPEAT
FileName := 'VEND'+Vendor."No."; // To have a file per vendor
VendXmlFile.CREATE('Filename);
VendXmlFile.CREATEOUTSTREAM(MyXmlStream);
MyXMLPORT.SETDESTINATION(MyXMLStream);
MyXMLPORT.EXPORT;
VendXmlFile.CLOSE;
UNTIL Vendor.NEXT=0;

Hy Erik

The question is.

I use the Form object 13382. This forms calls Code Unit 412. This form generate one only file with all customer data.

I Pretend change Object 13382 and probably CU 412, to generate more than one file with the same customer data , but for Vendor Table.

But I need to generate one xml file by Vendor Nº.

Can you help me with this?

I am trying several days with no Sucsess :frowning:

Thanks

Hy Erik

Any Idear?

Thanks

I can try and take a session if that is ok for you… the code that i or erick posted should work… did u try that…?

Anil.

I Tryed. But I don’t now if I done corretly your sugestion:

I put Erick code on OnPush() Button of Form object 13382. I Comment all standard code.

Like this:

- OnPush()

IF ISSERVICETIER THEN
FileName := RBMgt.EnvironFileName(’’,‘xml’);

//IF FileName = ‘’ THEN
// ERROR(Text1110001);

IF Vendor.FINDSET THEN
REPEAT
FileName := ‘C:\VEND’+ Vendor.“No.”; // To have a file per vendor
VendXmlFile.CREATE(FileName);
VendXmlFile.CREATEOUTSTREAM(MyXMLStream);
MyXMLPORT.SETDESTINATION(MyXMLStream);
MyXMLPORT.EXPORT;
VendXmlFile.CLOSE;
UNTIL Vendor.NEXT=0;

{TempFileName := FileName + ‘.tmp’;

IF LastDate < StartingDate THEN
ERROR(Text13301,StartingDate);
{
OutputFile.TEXTMODE(TRUE);
OutputFile.WRITEMODE(TRUE);
IF NOT ISSERVICETIER THEN OutputFile.QUERYREPLACE(TRUE);
OutputFile.CREATE(TempFileName);
OutputFile.CREATEOUTSTREAM(OutputStream);

//NAVPTL001.001,sn
IF ShortVersion THEN BEGIN
ShortSAFTPT.SetData(LastDate,StartingDate);
ShortSAFTPT.SETDESTINATION(OutputStream);
ShortSAFTPT.EXPORT;
END ELSE BEGIN
//NAVPTL001.001,en

SAFTPT.SetData(LastDate,StartingDate);
SAFTPT.SETDESTINATION(OutputStream);
SAFTPT.EXPORT;

END;//NAVPTL001.001,n

OutputFile.CLOSE; }

IF ISSERVICETIER THEN BEGIN
ToFile := Text1110005;
SAFTPT.ModifyNameSpace(TempFileName);
DOWNLOAD(TempFileName,Text000,’’,Text001,ToFile);
MESSAGE(Text1110000,ToFile);
END ELSE
MESSAGE(Text1110000,FileName);
CurrForm.CLOSE;
CheckANDModifyFile(TempFileName,FileName);

I Have now one file by vendor number. Bir the xmf has a bad stucture.

I will try a litle more, sooner i make a contact.~

Thanks

Hy

At this moment I have one file for each vendor, but when I execute my Form I get one error message:

I Must give OK to continue.

How can I avoid this message
Error_1.jpg

Hy

At this moment I have one file for each vendor, but when I execute my Form I get one error message:

I Must give OK to continue.

How can I avoid this message

Hi,

Just close your xml file after u create the file for each record.

just use…

xmlfile.close;

this should help you.

Anil

I have done it, as you can see im my code above

IF Vendor.FINDSET THEN
REPEAT
FileName := ‘C:\VEND’+ Vendor.“No.”; // To have a file per vendor
VendXmlFile.CREATE(FileName);
VendXmlFile.CREATEOUTSTREAM(MyXMLStream);
MyXMLPORT.SETDESTINATION(MyXMLStream);
MyXMLPORT.EXPORT;
VendXmlFile.CLOSE;
UNTIL Vendor.NEXT=0;

I have my Form Buton MenuItem

Like this the message for close file apears.

the xmlfile.Close is correctly inserted?

- OnPush()
IF ISSERVICETIER THEN
FileName := RBMgt.EnvironFileName(’’,‘xml’);

//IF FileName = ‘’ THEN
// ERROR(Text1110001);

IF Vendor.FINDSET THEN
REPEAT
FileName := ‘C:\VEND’+ Vendor.“No.”; // To have a file per vendor
VendXmlFile.CREATE(FileName);
VendXmlFile.CREATEOUTSTREAM(MyXMLStream);
MyXMLPORT.SETDESTINATION(MyXMLStream);
MyXMLPORT.EXPORT;
VendXmlFile.CLOSE;
TempFileName := FileName + ‘.tmp’;

IF LastDate < StartingDate THEN
ERROR(Text13301,StartingDate);

OutputFile.TEXTMODE(TRUE);
OutputFile.WRITEMODE(TRUE);
IF NOT ISSERVICETIER THEN OutputFile.QUERYREPLACE(TRUE);
OutputFile.CREATE(TempFileName);
OutputFile.CREATEOUTSTREAM(OutputStream);

//NAVPTL001.001,sn
IF ShortVersion THEN BEGIN
ShortSAFTPT.SetData(LastDate,StartingDate);
ShortSAFTPT.SETDESTINATION(OutputStream);
ShortSAFTPT.EXPORT;
END ELSE BEGIN
//NAVPTL001.001,en

SAFTPT.SetData(LastDate,StartingDate);
SAFTPT.SETDESTINATION(OutputStream);
SAFTPT.EXPORT;

END;//NAVPTL001.001,n

OutputFile.CLOSE;

IF ISSERVICETIER THEN BEGIN
ToFile := Text1110005;
SAFTPT.ModifyNameSpace(TempFileName);
DOWNLOAD(TempFileName,Text000,’’,Text001,ToFile);
// MESSAGE(Text1110000,ToFile);
END ELSE
// MESSAGE(Text1110000,FileName);
CurrForm.CLOSE;
CheckANDModifyFile(TempFileName,FileName);

UNTIL Vendor.NEXT=0;

Anil

Any idear?

Thanks

Anil

Where do I have to put VendXmlFile.CLOSE?

ITryed this and the same error message appear

IF ISSERVICETIER THEN
FileName := RBMgt.EnvironFileName(’’,‘xml’);

//IF FileName = ‘’ THEN
// ERROR(Text1110001);

IF Vendor.FINDSET THEN
REPEAT
FileName := ‘C:\VEND’+ Vendor.“No.”; // To have a file per vendor
VendXmlFile.CREATE(FileName);
VendXmlFile.CREATEOUTSTREAM(MyXMLStream);
MyXMLPORT.SETDESTINATION(MyXMLStream);
MyXMLPORT.EXPORT;
VendXmlFile.CLOSE;
TempFileName := FileName + ‘.tmp’;

IF LastDate < StartingDate THEN
ERROR(Text13301,StartingDate);

OutputFile.TEXTMODE(TRUE);
OutputFile.WRITEMODE(TRUE);
IF NOT ISSERVICETIER THEN OutputFile.QUERYREPLACE(TRUE);
OutputFile.CREATE(TempFileName);
OutputFile.CREATEOUTSTREAM(OutputStream);

//NAVPTL001.001,sn
IF ShortVersion THEN BEGIN
ShortSAFTPT.SetData(LastDate,StartingDate);
ShortSAFTPT.SETDESTINATION(OutputStream);
ShortSAFTPT.EXPORT;
END ELSE BEGIN
//NAVPTL001.001,en

SAFTPT.SetData(LastDate,StartingDate);
SAFTPT.SETDESTINATION(OutputStream);
SAFTPT.EXPORT;

END;//NAVPTL001.001,n

OutputFile.CLOSE;
// VendXmlFile.CLOSE;

IF ISSERVICETIER THEN BEGIN
ToFile := Text1110005;
SAFTPT.ModifyNameSpace(TempFileName);
DOWNLOAD(TempFileName,Text000,’’,Text001,ToFile);
// MESSAGE(Text1110000,ToFile);
END ELSE
// MESSAGE(Text1110000,FileName);
CurrForm.CLOSE;
CheckANDModifyFile(TempFileName,FileName);

//VendXmlFile.CLOSE;
UNTIL Vendor.NEXT=0;