Sorry for the long post! FYI, I've also posted this to SK's HTTP email list, but I thought I'd try here too.
Hello!
Here's the method's output parm XML that my program should be receiving:
<s:Envelope xmlns:s="
http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<UnitDetailsListResMessage xmlns="
http://tmwsystems.com/AMS">
<Result xmlns:i="
http://www.w3.org/2001/XMLSchema-instance">
<Error>
<Code>0</Code>
<InnerErrorMessage/>
<Message/>
<Severity>None</Severity>
</Error>
<ItemCount>1</ItemCount>
<UnitList>
<UnitDetails>
<ActivCode i:nil="true"/>
<ActiveCode>Y</ActiveCode>
<Activity>LINE HAUL</Activity>
<AssetNum/>
<Capacity/>
<Color/>
<CompanyId>TMT</CompanyId>
<CompanyName i:nil="true"/>
<CompanyUnit>Y</CompanyUnit>
<CostCTCode>001</CostCTCode>
<CostCenter>001</CostCenter>
<CreatedBy>IMPORT</CreatedBy>
<CreatedDate>2019-10-08T08:58:00-07:00</CreatedDate>
<CustId>0</CustId>
<CustomerName/>
<CustomerPhone/>
<CustomerStopService/>
<DedUnitNumber/>
<DepPeriod>0</DepPeriod>
<Department>WASHINGTON</Department>
<DeprBase>0001-01-01T00:00:00</DeprBase>
<DeptCode>WASHINGTON</DeptCode>
<Descrip>LINE TRACTOR</Descrip>
<Description>LINE TRACTOR</Description>
<Division>DYNAMICS</Division>
<DivisionCD>DYNAMICS</DivisionCD>
<Domicile>001</Domicile>
<DwTimeStamp>0x00000000001EC8BB</DwTimeStamp>
<EmpDrvId>-2147483648</EmpDrvId>
<Engine/>
<FleetId>282</FleetId>
<FluidType i:nil="true"/>
<FluidTypePrimary>false</FluidTypePrimary>
<FluidTypeUOM i:nil="true"/>
<GroupsId>N</GroupsId>
<InService>2017-12-18T00:00:00-08:00</InService>
<IsSlidingPM>false</IsSlidingPM>
<IsTire>N</IsTire>
<LastDone>2019-11-27T00:00:00-08:00</LastDone>
<LastInterval>0</LastInterval>
<License>YAIS624</License>
<LoanerStatus/>
<LoanerUnit>N</LoanerUnit>
<MFGPartId/>
<Make>FRGHT</Make>
<MeterDef1>0</MeterDef1>
<MeterDef2>0</MeterDef2>
<MeterDef3>0</MeterDef3>
<MeterDefID>0</MeterDefID>
<MeterDefPrimary>false</MeterDefPrimary>
<Model>PE116DC</Model>
<ModelYear>2018</ModelYear>
<ModifiedBy>1293</ModifiedBy>
<ModifiedDate>2019-12-13T15:10:00-08:00</ModifiedDate>
<MonDepr>0</MonDepr>
<NameCustomer/>
<ObjId>12437</ObjId>
<ObjImageId>-2147483648</ObjImageId>
<ObjType>900</ObjType>
<OutofService>0</OutofService>
<ParentMeter>N</ParentMeter>
<ParkFacility/>
<ParkFacilityName/>
<ParksLot/>
<PartId>-2147483648</PartId>
<PhyLocation>IN-SHOP</PhyLocation>
<PhyShopLocation>005</PhyShopLocation>
<Pressure/>
<PriceTBLID>-2147483648</PriceTBLID>
<PurchFrom/>
<PurchPrice>0</PurchPrice>
<PurchUOM>US$</PurchUOM>
<RepairLimit>-1.7976931348623157E+308</RepairLimit>
<RowNum>1</RowNum>
<SalvageValue>-1.7976931348623157E+308</SalvageValue>
<SerialNo>3AKBHSDV6JSJZ4632</SerialNo>
<State>OR</State>
<Status>ACTIVE</Status>
<Terminated>0001-01-01T00:00:00</Terminated>
<TireConfigCode/>
<Title/>
<TmtCodeID>-2147483648</TmtCodeID>
<TotalDepr>0</TotalDepr>
<Type i:nil="true"/>
<UnitID>632</UnitID>
<UnitManager/>
<UnitNumber>2900C</UnitNumber>
<UnitPrefix/>
<UnitType>TRACTOR</UnitType>
<UnitUserFld1/>
<UnitUserFld2/>
<UnitUserFld3/>
<UnitUserFld4/>
<UnitUserFld5/>
<UnitUserFld6/>
<UnitUserFld7>P</UnitUserFld7>
<UnitUserFld8/>
<UnitWeight>-1.7976931348623157E+308</UnitWeight>
<ValidateUnitMtr i:nil="true"/>
<Vendor>800343</Vendor>
<VendorName>PINNACLE FLEET SOLUTIONS</VendorName>
<WARRLife1>0</WARRLife1>
<WARRLife2>0</WARRLife2>
<WARRLife3>0</WARRLife3>
<WarInService>2017-12-15T00:00:00-08:00</WarInService>
<WheelBase/>
<Year>2018</Year>
<YearDepr>0</YearDepr>
</UnitDetails>
</UnitList>
</Result>
</UnitDetailsListResMessage>
</s:Body>
</s:Envelope>
Here's the way I have the data structures set up in my RPGLE:
// Unit result variables
dcl-ds Result qualified inz;
Error likeDS(Error_T);
ItemCount int(10);
UnitList likeDS(UnitList_T);
end-ds;
dcl-ds Error_T Template;
Code int(10);
InnerErrorMessage varchar(500);
Message varchar(500);
Severity varchar(500);
end-ds;
dcl-ds UnitList_T Template qualified;
UnitDetails likeDS(UnitDetails_T);
end-ds;
dcl-ds UnitDetails_T Template;
ActivCode varchar(100);
ActiveCode char(1);
Activity varchar(100);
AssetNum varchar(100);
Capacity varchar(100);
Color varchar(100);
CompanyId varchar(100);
CompanyName varchar(100);
CompanyUnit varchar(100);
CostCTCode int(10);
CostCenter int(10);
CreatedBy varchar(100);
CreatedDate timestamp;
CustId int(10);
CustomerName varchar(100);
CustomerPhone varchar(100);
CustomerStopService varchar(100);
DedUnitNumber varchar(100);
DepPeriod int(10);
Department varchar(100);
DeprBase timestamp;
DeptCode varchar(100);
Descrip varchar(100);
Description varchar(100);
Division varchar(100);
DivisionCD varchar(100);
Domicile int(10);
DwTimeStamp timestamp;
EmpDrvId int(10);
Engine varchar(100);
FleetId int(10);
FluidType ind;
FluidTypePrimary varchar(100);
FluidTypeUOM ind;
GroupsId varchar(100);
InService timestamp;
IsSlidingPM ind;
IsTire varchar(100);
LastDone timestamp;
LastInterval int(10);
License varchar(100);
LoanerStatus varchar(100);
LoanerUnit varchar(100);
MFGPartId varchar(100);
Make varchar(100);
MeterDef1 int(10);
MeterDef2 int(10);
MeterDef3 int(10);
MeterDefID int(10);
MeterDefPrimary varchar(100);
Model varchar(100);
ModelYear varchar(100);
ModifiedBy varchar(100);
ModifiedDate timestamp;
MonDepr int(10);
NameCustomer varchar(100);
ObjId int(10);
ObjImageId int(10);
ObjType int(10);
OutofService int(10);
ParentMeter varchar(100);
ParkFacility varchar(100);
ParkFacilityName varchar(100);
ParksLot varchar(100);
PartId int(10);
PhyLocation varchar(100);
PhyShopLocation varchar(100);
Pressure varchar(100);
PriceTBLID int(10);
PurchFrom varchar(100);
PurchPrice int(10);
PurchUOM varchar(100);
RepairLimit int(10);
RowNum int(10);
SalvageValue int(10);
SerialNo varchar(100);
State varchar(100);
Status varchar(100);
Terminated timestamp;
TireConfigCode varchar(100);
Title varchar(100);
TmtCodeID int(10);
TotalDepr int(10);
Type varchar(100);
UnitID int(10);
UnitManager varchar(100);
UnitNumber varchar(100);
UnitPrefix varchar(100);
UnitType varchar(100);
UnitUserFld1 varchar(100);
UnitUserFld2 varchar(100);
UnitUserFld3 varchar(100);
UnitUserFld4 varchar(100);
UnitUserFld5 varchar(100);
UnitUserFld6 varchar(100);
UnitUserFld7 varchar(100);
UnitUserFld8 varchar(100);
UnitWeight int(10);
ValidateUnitMtr varchar(100);
Vendor int(10);
VendorName varchar(100);
WARRLife1 int(10);
WARRLife2 int(10);
WARRLife3 int(10);
WarInService timestamp;
WheelBase varchar(100);
Year int(10);
YearDepr int(10);
end-ds;
After setting my SOAP action parm I call:
http_setOption('SoapAction':soapAction);
And then run this code:
soapResponse =
http_string('POST': soapEndPointURL: soapRequest:
'text/xml');
soapResonse is getting populated with valid data - up to a point. In other words, the http_String call seems to be giving me the data that I'm expecting. However, keep reading.
options = 'case=any allowextra=yes allowmissing=yes ' +
'path=UnitDetailsListResMessage';
XML-INTO Result %XML(soapResponse: options);
So I am having two problems and #1 might be causing #2, but I don't know enough about this to know:
1. My soapResponse field (dcl-s soapResponse varchar(100000);) is only being populated to a size/length of 1024. When I put the program into debug, and display the field with F11, it only shows me 1024 chars. Any idea why? We're on V7R3 (but our PTFs are not up to date).
2. The XML-INTO op code returns error message RNQ0353 - XML document does not match RPG variable. Based on the program code above, this might simply be the result of the bad length being returned to soapResponse, but it could also be something I've screwed up in defining my DSs.
Any comments would be greatly appreciated.
Thanks - and Happy New Year!
Jeff Bianchi
Jeff.Bianchi@xxxxxxxx<mailto:Jeff.Bianchi@xxxxxxxx>| P 253.804.1034
Oak Harbor Freight Lines, Inc.
"Bringing Peace of Mind Since 1916."
As an Amazon Associate we earn from qualifying purchases.