SAPфорум.RU https://sapboard.ru/forum/ |
|
помогите смапить ШК изменения в массив внутри ЕИ https://sapboard.ru/forum/viewtopic.php?f=70&t=94085 |
Страница 1 из 1 |
Автор: | doleynikov [ Ср, ноя 23 2016, 17:27 ] |
Заголовок сообщения: | помогите смапить ШК изменения в массив внутри ЕИ |
Требуется свернуть ARTMAS05 в новую структуру. Часть ее такая: Code: <ЕИ> <массив ШК> <ШК>ШК1</ШК> <ШК>ШК2</ШК> <ШК>ШК3</ШК> <ШК>ШК4</ШК> </массив ШК> <Наименование ЕИ>ST</Наименование ЕИ> <НаименованиеISO ЕИ>PCE</НаименованиеISO ЕИ> </ЕИ> в IDOC ЕИ и ШК разнесены. Раньше подобные мапинги делались старым XSLT. Но хочется сделать графический мапинг. Пусть с java функциями. Вот кусок IDOC в XML виде Code: <E1BPE1MARMRT SEGMENT="1"> <FUNCTION>005</FUNCTION> <MATERIAL>000000000001000002</MATERIAL> <ALT_UNIT>ST</ALT_UNIT> <ALT_UNIT_ISO>PCE</ALT_UNIT_ISO> <NUMERATOR>1</NUMERATOR> <DENOMINATR>1</DENOMINATR> <EAN_UPC>4605196000078</EAN_UPC> <EAN_CAT>HE</EAN_CAT> <LENGTH>4.000</LENGTH> <WIDTH>3.000</WIDTH> <HEIGHT>67.000</HEIGHT> <UNIT_DIM>CM</UNIT_DIM> <UNIT_DIM_ISO>CMT</UNIT_DIM_ISO> <VOLUME>0.039</VOLUME> <VOLUMEUNIT>M3</VOLUMEUNIT> <VOLUMEUNIT_ISO>MTQ</VOLUMEUNIT_ISO> <GROSS_WT>10.440</GROSS_WT> <UNIT_OF_WT>KG</UNIT_OF_WT> <UNIT_OF_WT_ISO>KGM</UNIT_OF_WT_ISO> <UNIT>ST</UNIT> <UNIT_ISO>PCE</UNIT_ISO> </E1BPE1MARMRT> <E1BPE1MEANRT SEGMENT="1"> <FUNCTION>005</FUNCTION> <MATERIAL>000000000001000002</MATERIAL> <UNIT>ST</UNIT> <UNIT_ISO>PCE</UNIT_ISO> <EAN_UPC>2000000243863</EAN_UPC> <EAN_CAT>IE</EAN_CAT> </E1BPE1MEANRT> <E1BPE1MEANRT SEGMENT="1"> <FUNCTION>005</FUNCTION> <MATERIAL>000000000001000002</MATERIAL> <UNIT>ST</UNIT> <UNIT_ISO>PCE</UNIT_ISO> <EAN_UPC>4605196000078</EAN_UPC> <EAN_CAT>HE</EAN_CAT> </E1BPE1MEANRT> <E1BPE1MEANRT SEGMENT="1"> <FUNCTION>005</FUNCTION> <MATERIAL>000000000001000002</MATERIAL> <UNIT>ST</UNIT> <UNIT_ISO>PCE</UNIT_ISO> <EAN_UPC>4607017940372</EAN_UPC> <EAN_CAT>HE</EAN_CAT> </E1BPE1MEANRT> и таких блоков может быть несколько. Сначала описания всех ЕИ, а потом для всех ЕИ спецификации с ШК и дополнительной инфой. |
Автор: | doleynikov [ Ср, ноя 23 2016, 17:57 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Вот, пробую с Жаба функцией: https://yadi.sk/i/puwaJQMazJwUX Code: public void chooseByExample(String[] a, String[] seg1, String[] seg2, ResultList result, Container container) throws StreamTransformationException{ int i; for ( i=0 ; i<seg1.length ; i++) { if(a[0]==seg1[i]) result.addValue(seg2[i]); } Но не создается новый элемент для каждого значение из возвращаемого массива. Или я их неправильно обрабатываю? |
Автор: | Chaser009 [ Чт, ноя 24 2016, 03:52 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Что-то картинка не отображается. Расскажи на примере айдока, что с чем срастить надо. По UNIT'ам EAN'ы в кучу собрать? Code: public void getEANS(String[] UOMs, String[] EANUOMs, String[] EANs, ResultList result, Container container) throws StreamTransformationException{ for (int i = 0; i < UOMs.length; i++) { for (int j = 0; j < EANUOMs.length; j++) if (UOMs[i].equals(EANUOMs[j])) result.addValue(EANs[j]); if (i < (UOMs.length - 1)) result.addValue(ResultList.CC); } } Режим выполнения - All values of Queue. На входе: UNIT из E1BPE1MARMRT (все в одном контексте), UNIT и EAN_UPS из E1BPE1MEANRT (тоже все в одном контексте). На выходе:EAN_UPS с разбивкой по контекстам для каждого UNIT. Если нет подходящих - пустой контекст. |
Автор: | doleynikov [ Чт, ноя 24 2016, 08:47 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
да, внутри SKU сделать массив EИ, внутри каждой ЕИ сделать массив ШК. Функция вроде выдает все значения в результирующем списке по переданной ЕИ, но, почему-то не создаются элементы ШК. Может я чего забыл? Вот в такой интерфейс нужно мапить. Сообщение storeGoods. Code: <?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://lom.pro/manager" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="DictionariesService" targetNamespace="http://lom.pro/manager"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://lom.pro/manager/entity" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://lom.pro/manager/entity"> <xsd:complexType name="WsGood"> <xsd:sequence> <xsd:element minOccurs="0" name="article" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="brand" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="code" nillable="true" type="xsd:long"/> <xsd:element minOccurs="0" name="country" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="discountDisabled" nillable="true" type="xsd:boolean"/> <xsd:element minOccurs="0" name="fullTitle" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="goodType" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="groupId" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="measures" nillable="true" type="tns:ArrayOfWsMeasure"/> <xsd:element minOccurs="0" name="ndsRate" nillable="true" type="xsd:int"/> <xsd:element minOccurs="0" name="purchaseGroup" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="purpose" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="stadardDesc" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="textForTicket" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="title" nillable="true" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ArrayOfWsMeasure"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="WsMeasure" nillable="true" type="tns:WsMeasure"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ArrayOfWsGood"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="WsGood" nillable="true" type="tns:WsGood"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ArrayOfWsBarcode"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="WsBarcode" nillable="true" type="tns:WsBarcode"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="WsMeasure"> <xsd:sequence> <xsd:element minOccurs="0" name="barcodes" nillable="true" type="tns:ArrayOfWsBarcode"/> <xsd:element minOccurs="0" name="denominator" nillable="true" type="xsd:int"/> <xsd:element minOccurs="0" name="goodLength" nillable="true" type="xsd:double"/> <xsd:element minOccurs="0" name="height" nillable="true" type="xsd:double"/> <xsd:element minOccurs="0" name="isPrimary" nillable="true" type="xsd:boolean"/> <xsd:element minOccurs="0" name="measureIso" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="numerator" nillable="true" type="xsd:int"/> <xsd:element minOccurs="0" name="title" nillable="true" type="xsd:string"/> <xsd:element minOccurs="0" name="volume" nillable="true" type="xsd:double"/> <xsd:element minOccurs="0" name="weight" nillable="true" type="xsd:double"/> <xsd:element minOccurs="0" name="width" nillable="true" type="xsd:double"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="WsBarcode"> <xsd:sequence> <xsd:element minOccurs="0" name="barcode" nillable="true" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://lom.pro/manager" xmlns:ns0="http://lom.pro/manager/entity" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://lom.pro/manager"> <xsd:import namespace="http://lom.pro/manager/entity"/> <xsd:element name="storeGoods" type="tns:storeGoods"/> <xsd:complexType name="storeGoods"> <xsd:sequence> <xsd:element minOccurs="0" name="arg0" type="ns0:ArrayOfWsGood"/> </xsd:sequence> </xsd:complexType> <xsd:element name="storeGoodsResponse" type="tns:storeGoodsResponse"/> <xsd:complexType name="storeGoodsResponse"> <xsd:sequence/> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="storeGoods"> <wsdl:part element="tns:storeGoods" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="storeGoodsResponse"> <wsdl:part element="tns:storeGoodsResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="DictionariesService"> <wsdl:operation name="storeGoods"> <wsdl:input message="tns:storeGoods" name="storeGoods"> </wsdl:input> <wsdl:output message="tns:storeGoodsResponse" name="storeGoodsResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="DictionariesServiceSoapBinding" type="tns:DictionariesService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="storeGoods"> <soap:operation soapAction="" style="document"/> <wsdl:input name="storeGoods"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="storeGoodsResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="DictionariesService"> <wsdl:port binding="tns:DictionariesServiceSoapBinding" name="DictionariesServiceImplPort"> <soap:address location="http://192.168.5.9:8080/services/DictionariesService"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
Автор: | Chaser009 [ Чт, ноя 24 2016, 09:45 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Это моя функция выдает? Или твоя? |
Автор: | Chaser009 [ Чт, ноя 24 2016, 09:53 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Сразу что видится: твои элементы WSBarcode должны для каждой ЕИ идти в одном контексте, по-моему. Поэтому, ты их зря разбиваешь. Разбиваются они для дочернего barcode. И фиксить там ничего не надо - просто мэппь выходной список прямо на WSBarcode. |
Автор: | doleynikov [ Чт, ноя 24 2016, 10:02 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Chaser009 написал: Это моя функция выдает? Или твоя? моя. В твоей делается примерно тоже самое, но для всех ЕИ сразу (как я понял), а у меня только для переданной в первом аргументе. |
Автор: | doleynikov [ Чт, ноя 24 2016, 10:27 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
так. Для первой ЕИ создается список ШК. но для последующих-нет. Я запутался, что мапить на WSMeasure для ЕИ. ВОт, что получается в результате мапинга: Code: <?xml version="1.0" encoding="UTF-8"?> <ns0:storeGoods xmlns:ns0="http://lom.pro/manager"> <arg0> <ns1:WsGood xmlns:ns1="http://lom.pro/manager/entity"> <ns1:article>АРТИКУЛ 888</ns1:article> <ns1:brand>-</ns1:brand> <ns1:code>000000000001000002</ns1:code> <ns1:country>AD</ns1:country> <ns1:discountDisabled>FALSE</ns1:discountDisabled> <ns1:fullTitle><![CDATA[Поднос многострадальный универсальный пластик 27х39см ]]></ns1:fullTitle> <ns1:goodType>HAWA</ns1:goodType> <ns1:groupId>33011301V</ns1:groupId> <ns1:measures> <ns1:WsMeasure> <ns1:barcodes> <ns1:WsBarcode> <ns1:barcode>2000000243863</ns1:barcode> </ns1:WsBarcode> <ns1:WsBarcode> <ns1:barcode>4605196000078</ns1:barcode> </ns1:WsBarcode> <ns1:WsBarcode> <ns1:barcode>4607017940372</ns1:barcode> </ns1:WsBarcode> </ns1:barcodes> <ns1:denominator>1</ns1:denominator> <ns1:goodLength>4.000</ns1:goodLength> <ns1:height>67.000</ns1:height> <ns1:isPrimary>1</ns1:isPrimary> <ns1:measureIso>PCE</ns1:measureIso> <ns1:numerator>1</ns1:numerator> <ns1:title>ST</ns1:title> <ns1:volume>0.039</ns1:volume> <ns1:weight>10.440</ns1:weight> <ns1:width>3.000</ns1:width> </ns1:WsMeasure> <ns1:WsMeasure> <ns1:denominator>1</ns1:denominator> <ns1:goodLength>7.000</ns1:goodLength> <ns1:height>9.000</ns1:height> <ns1:isPrimary>1</ns1:isPrimary> <ns1:measureIso>ZVN</ns1:measureIso> <ns1:numerator>10</ns1:numerator> <ns1:title>ZVN</ns1:title> <ns1:volume>50.000</ns1:volume> <ns1:weight>12.125</ns1:weight> <ns1:width>8.000</ns1:width> </ns1:WsMeasure> <ns1:WsMeasure> <ns1:denominator>1</ns1:denominator> <ns1:goodLength>4.000</ns1:goodLength> <ns1:height>6.000</ns1:height> <ns1:isPrimary>1</ns1:isPrimary> <ns1:measureIso>ZVS</ns1:measureIso> <ns1:numerator>5</ns1:numerator> <ns1:title>ZVS</ns1:title> <ns1:volume>0.039</ns1:volume> <ns1:weight>18.500</ns1:weight> <ns1:width>5.000</ns1:width> </ns1:WsMeasure> </ns1:measures> <ns1:ndsRate>18</ns1:ndsRate> <ns1:purchaseGroup>006</ns1:purchaseGroup> <ns1:purpose>-</ns1:purpose> <ns1:stadardDesc>--</ns1:stadardDesc> <ns1:textForTicket>-</ns1:textForTicket> <ns1:title>Поднос многострадальный пластик 27х39см</ns1:title> </ns1:WsGood> </arg0> </ns0:storeGoods> наверное нужно посмотреть в сторону именно твоей функции, которая выдаст все ЕИ, а не одну заданную. |
Автор: | doleynikov [ Чт, ноя 24 2016, 10:43 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
в результате, схематически, должна быть вот какая структура: Code: <ТОВАР>
<КОД></КОД> <массив ЕИ> <ЕИ> <массив ШК> <ШК>ШК1</ШК> <ШК>ШК2</ШК> <ШК>ШК3</ШК> <ШК>ШК4</ШК> </массив ШК> <Наименование ЕИ>ST</Наименование ЕИ> <НаименованиеISO ЕИ>PCE</НаименованиеISO ЕИ> </ЕИ> <ЕИ> <массив ШК> <ШК>ШК1</ШК> <ШК>ШК2</ШК> <ШК>ШК3</ШК> <ШК>ШК4</ШК> </массив ШК> <Наименование ЕИ>ZZ</Наименование ЕИ> <НаименованиеISO ЕИ>PZZ</НаименованиеISO ЕИ> </ЕИ> </массив ЕИ> <NDSrate></NDSrate> <НаименованиеТовара></НаименованиеТовара> </ТОВАР> |
Автор: | Chaser009 [ Чт, ноя 24 2016, 12:16 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
UNIT_ISO тоже должен быть одним списком, без смен контекста. Да, контексты - это вещь! Я где-то через полгода более-менее врубился, как с ними работать. |
Автор: | doleynikov [ Чт, ноя 24 2016, 12:48 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Но тогда в последующих секциях с ШК, они не появляются. Тогда, как в настроенной схеме появляется хотя бы намек, что они тут планируются (то есть появляется пустой barcodes и WsBarcode) |
Автор: | doleynikov [ Чт, ноя 24 2016, 14:55 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
ВОт, не совсем понял, как, но сделал! по крайней мере на примере работает. |
Автор: | Chaser009 [ Пт, ноя 25 2016, 02:04 ] |
Заголовок сообщения: | Re: помогите смапить ШК изменения в массив внутри ЕИ |
Ну здорово! Главное - получилось. Тяжело разбираться, не сидя за мэппингом самому |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |