B1 Xml Firing 一个极速解决B1iSN daily issue的工具

这是怎样的一个工具?这是一个极速解决你99.99% B1iSN daily issues的工具,会极大的提高你的工作效率。说实话,如果不考虑业务上的限制,这个工具,理论上可以操作任何B1数据。

我们知道在B1iSN的日常问题处理中,作为一个系统集成平台,B1iSN基本上就是将数据从源系统集成到目标系统中。在B1iSN中,通过XML来描述源系统与目标系统的数据转换,下面是一个B1iSN的XML消息实例。

<?xml version="1.0" encoding="UTF-8"?>
<Msg xmlns="urn:com.sap.b1i.vplatform:entity" MessageId="17120819550810008938AC100F3C7020" BeginTimeStamp="20171208195508" recording="true" logmsg="0000" SubMessageId="1_1" status="success" callMsgLog="true" finalonly="false" BackMessageId="1_2" DelMessageId="1" b1msg="" b1status="success" msglogexcl="false" handover2CentralSrv="" MessageLog="true" msglogdbop="insert">
	<Header>...</Header>
	<Body>
		<Payload Role="T" Type="Queue" add="....JVSOCQ2B1"/>
		<Payload Role="S">
			<INQ xmlns="">
				<SysTypeProperties/>
				<OrderResponse xmlns="urn://....com/GovernanseAndSupport/Common/EuroferXML/OrderResponse" schemaVersion="1.2">
					<OrderResponseHeader>
						<OrderResponseNumber>...</OrderResponseNumber>
						<OrderResponseDate>20171208</OrderResponseDate>
						<OrderResponseStatusCode>29</OrderResponseStatusCode>
						<DocumentReference>
							<DocumentReferenceNumber>...</DocumentReferenceNumber>
							<DocumentReferenceQualifierCode>CO</DocumentReferenceQualifierCode>
						</DocumentReference>
						...
					</OrderResponseHeader>
					<OrderResponseLine>
						<OrderResponseLineNumber>10</OrderResponseLineNumber>
						<OrderResponseLineStatusCode>23</OrderResponseLineStatusCode>
						<DocumentReference>
							<DocumentReferenceNumber>...</DocumentReferenceNumber>
							<DocumentReferenceLineNumber>0</DocumentReferenceLineNumber>
							<DocumentReferenceQualifierCode>CO</DocumentReferenceQualifierCode>
						</DocumentReference>
						<ProductSpecification>
							<ItemIdentification>
								<CustomerArticleNumber>ITM07103</CustomerArticleNumber>
								<SupplierArticleNumber>3796</SupplierArticleNumber>
							</ItemIdentification>
							<AdditionalItemIdentification>
								<ItemReferenceTypeCode>Other</ItemReferenceTypeCode>
								<ItemReferenceNumber>B045</ItemReferenceNumber>
							</AdditionalItemIdentification>
						</ProductSpecification>
						<ScheduleLine>
							<Quantity>
								<QuantityValue unitCode="PCS">5</QuantityValue>
							</Quantity>
							<ConfirmedDeliveryDate>
								<Date>20180226</Date>
							</ConfirmedDeliveryDate>
						</ScheduleLine>
						<ScheduleLine>
							<Quantity>
								<QuantityValue unitCode="KG">18215</QuantityValue>
							</Quantity>
							<ConfirmedDeliveryDate>
								<Date>20180226</Date>
							</ConfirmedDeliveryDate>
						</ScheduleLine>
						<TransportModeCode>6</TransportModeCode>
						<PackageData>
							<PackageTypeCode>SZ</PackageTypeCode>
							<PackageDimension>
								<DimensionUnitCode>MMT</DimensionUnitCode>
								<DimensionValue>5800</DimensionValue>
								<DimensionTypeCode>LN</DimensionTypeCode>
							</PackageDimension>
							<PackageDimension>
								<DimensionUnitCode>MMT</DimensionUnitCode>
								<DimensionValue>2000</DimensionValue>
								<DimensionTypeCode>WD</DimensionTypeCode>
							</PackageDimension>
							<PackageDimension>
								<DimensionUnitCode>MMT</DimensionUnitCode>
								<DimensionValue>40.00</DimensionValue>
								<DimensionTypeCode>HT</DimensionTypeCode>
							</PackageDimension>
						</PackageData>
						<Price>
							<PriceAmount>...</PriceAmount>
						</Price>
						<TotalOrderResponseLineQuantity unitCode="PCS">5</TotalOrderResponseLineQuantity>
						<OrderResponseLineNote>3796</OrderResponseLineNote>
					</OrderResponseLine>
				</OrderResponse>
			</INQ>
		</Payload>
		...
		<Payload Role="R" id="atom0" pltype="xml">
			<b1im_multimsg xmlns="">
				<b1im_msg>
					<BOM>
						<BO>
							<AdmInfo>
								<Object>22</Object>
								<Version>2</Version>
							</AdmInfo>
							<QueryParams>
								<DocEntry>6906</DocEntry>
							</QueryParams>
							<Documents>
								<row>
									<CardCode>...</CardCode>
									<NumAtCard>...</NumAtCard>
									<DocDueDate>20171208</DocDueDate>
									<Confirmed>tYES</Confirmed>
									<Comments>...</Comments>
									<U_..._HMA_ORDREDI>A</U_..._HMA_ORDREDI>
									<U_..._HMA_TR2>...Vendor</U_..._HMA_TR2>
									<U_..._HMA_STORLOC/>
								</row>
							</Documents>
							<Document_Lines>
								<row>
									<LineNum>0</LineNum>
									<ItemCode>ITM07103</ItemCode>
									<Quantity>18215</Quantity>
									<WarehouseCode>01</WarehouseCode>
									<ShipDate>20180226</ShipDate>
									<UnitPrice>...</UnitPrice>
									<FreeText>3796</FreeText>
									<ExLineNo>10</ExLineNo>
									<U_..._LMA_NPCS>5</U_..._LMA_NPCS>
									<U_..._LMA_POREF>...</U_..._LMA_POREF>
									<U_..._LMA_POLINE>10</U_..._LMA_POLINE>
									<U_..._LMA_PNTCDOVR>B045</U_..._LMA_PNTCDOVR>
								</row>
							</Document_Lines>
						</BO>
					</BOM>
				</b1im_msg>
			</b1im_multimsg>
		</Payload>
	</Body>
</Msg>

在这个Message中,Role=’S’ Part 代表的就是接收自源系统的数据,Role=’R’ Part 代表的则是目标系统接收的数据。从源系统发出后,到达B1iSN平台,平台通过各种有效的操作后,最终变成目标系统可以接收的’R’ Part.

而我们的Daily issues处理,绝大多数都是’R’ Part的数据不正确造成的,但是B1iSN平台没有能力让我们直接修改’R’ Part数据,如果要想通过B1iSN平台得到正确的’R’ Part数据,必须要从’S’ Part 开始修改数据,以及后面的每一个Payload处理操作都有可能需要修改条件,才能有可能最终得到所需要的’R’ Part数据。这还不如让用户手工在B1中操作来得快。

那么有没有一种办法,如果能够直接将’R’ Part数据修改正确,然后提交到B1中呢?答案是有的。原理其实很简单,先来看看如果是B1iSN的话,它是怎么去处理一个B1请求的,当B1iSN接收到’R’ Part数据的时候,它通过Tomact JVM Runtime来调用B1 API,进而去增加一条新B1数据,或者修改某条已经存在的B1数据。即是说,B1iSN最终是通过B1 API去操作。所以很自然的想到,我们是否可以自己通过B1 API去操纵’R’ Part,这样就可以将修改后正确的’R’ Part通过B1 API提交到B1中。答案当然是肯定的,既然B1iSN可以通过B1 API实现,我们自己当然也可以通过编程来实现。

于是便有了下面这样一个工具,在这个工具的帮助下,能够处理大部分的B1iSN Daily issues,并且更加准确和高效。目前该工具已经正常使用4个月有余,功能已经较为稳定,该工具目前具有以下功能:

  1. 切换不同的工作环境:生产环境和测试环境
  2. 添加B1数据
  3. 修改B1数据

下面做一个演示:

  1. 软件登陆,会根据环境的不同,出现不同的Companies供选择,输入B1用户名和密码进行连接。
  2. 将’R’ Part保存为一个文本文件,在下面的界面中选择这个文本文件。
  3. 通过Preview按钮,可以预览这个文本文件,方便在提交之前再进行一次人工检查。
  4. 点击Submit按钮,如果一切顺利,会提供操作成功提示,如果失败,会提供异常信息。

  5. 下面我们在B1中对刚刚添加的这条数据进行检查,确保和预期一致。
  6. 以上是添加一条数据,现在我们通过该工具来修改这条刚刚添加的数据。
  7. 千万不要忘记将Operation Type更改为Update,否则将是产生一条新数据,而不是修改了。
  8. 我们再次来B1中检查数据是否已经被正确更新。


Supported B1 version is B1 9.0 PL 08.

One Reply to “B1 Xml Firing 一个极速解决B1iSN daily issue的工具”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.