IBM Sterling地图编辑器:在204 EDI中是否有方法对OID进行排序?



IBM Sterling地图编辑器:在204 EDI中是否有方法对OID进行排序我需要一些帮助/想法关于如何做这件事

这是输入文件

ISA*...
GS*...
...
S5*2*CU*34140*L~
G62*68*20220531~
AT8*G*L*34140*4437~
PLD*27~
N1*ST*COSTCO STORE AAAA*93*0000000761~
N3*1013 HOMER STREET ~
N4*CITY*CA*90210~
OID*SO1241*135020070**PC*1*L*0~
L5**Certificate Of Sale~
AT8*G*L*0*1~
OID*SO1241*135020070**PC*24*L*0~
L5**AIRBAG~
AT8*G*L*0*24~
OID*SO1157*135020014**PC*1*L*0~
L5**Certificate Of Sale~
AT8*G*L*0*1~
OID*SO1241*135020070**PC*1080*L*30720~
L5**APPLES 2 lb~
AT8*G*L*30720*3840~
OID*SO1157*135020014**PC*1070*L*3420~
L5**ORANGES 12 oz~
AT8*G*L*3420*570~
OID*SO1241*135020070**PC*1*L*0~
L5**GPS TRACKER~
AT8*G*L*0*1~
L3*...
SE*...
GE*...
IEA*...

这是我想要得到的输出文件,EDI到POSITIONAL

HDR1: PO 135020070
ITEM: Certificate Of Sale,QTY 1
ITEM: AIRBAG,QTY 24
ITEM: APPLES 2 lb,QTY 1080
ITEM: GPS TRACKER,QTY 1
HDR1: PO 135020014
ITEM: Certificate Of Sale,QTY 1
ITEM: ORANGES 12 oz,QTY 1070

当前这是我的MAP正在做的

HDR1: PO 135020070
ITEM: Certificate Of Sale,QTY 1
ITEM: AIRBAG,QTY 24
HDR1: PO 135020014
ITEM: Certificate Of Sale,QTY 1
HDR1: PO 135020070
ITEM: APPLES 2 lb,QTY 1080
HDR1: PO 135020014
ITEM: ORANGES 12 oz,QTY 1070
HDR1: PO 135020070
ITEM: GPS TRACKER,QTY 1

这是我当前的代码(扩展OID规则),生成上面的映射

if sPONum = "" | (sPONum != "" & sPONum != #0324) then 
begin

//CREATE PO HEADER     
sPONum = #0324;
iCU = iCU + 1;
$POGroup[iCU].#TEMP_DUNS = sDUNS;
$POGroup[iCU].#PONumber = #0324;

//CREATE ITEM LINE    
//RESET ITEM LINE FOR EACH PO 
iItem = 0;
iItem = iItem + 1;
iOID = iOID + 1;
$TEMP_ITEM[iCU][iItem].#TEMP_Qty = #0380:4;
$TEMP_ITEM[iCU][iItem].#TEMP_Description = $0320_L5[iS5][iOID][1].#0079:2;
end
else 
begin
iItem = iItem + 1;
iOID = iOID + 1;
$TEMP_ITEM[iCU][iItem].#TEMP_Qty = #0380:4;
$TEMP_ITEM[iCU][iItem].#TEMP_Description = $0320_L5[iS5][iOID][1].#0079:2;
end

任何提示和指针的地图编辑器的主人在那里非常感谢你的帮助

欢呼

我想出来的面条式代码。我相信有更有效的方法。任何人都可以提出更优雅的建议。

它不是最好的,但它对我的目的有效。由于
iOID = iOID + 1;  
iFOUND = 0;
iCount = 0;
While iCount < iOID DO
begin  
iCount = iCount + 1;
//PO HDR FOUND
if $POGroup[iCount].#PONumber = #0324 & iFOUND = 0 then 
begin
iFOUND = iCount;
end    
end

if iFOUND = 0 then 
begin
//CREATE PO HEADER
iNewPO  = iNewPO  + 1;
$POGroup[iNewPO].#PONumber = #0324;
$POGroup[iNewPO].#TEMP_DUNS = sDUNS;
$POGroup[iNewPO].#TEMP_PODt = sPODt;
$POGroup[iNewPO].#STATUS_CODE = sStatusCode;
$POGroup[iNewPO].#SCAC = sSCAC;
$POGroup[iNewPO].#SID = sSID;
$POGroup[iNewPO].#SONum = #0127:7;
strdate($0300_S5[iS5].#0373:2,"%Y%m%d", $POGroup[iNewPO].#DeliveryDt);
$TEMP_MESSAGE[iNewPO][1].#MSG = sShipType;

//CREATE FIRST ITEM LINE    
//RESET FLAT FILE ITEM LINE FOR EACH PO 
iItem = 1;
$TEMP_ITEM[iNewPO][iItem].#TEMP_Qty = #0380:4;
$TEMP_ITEM[iNewPO][iItem].#TEMP_Description = $0320_L5[iS5][iOID][1].#0079:2;

end
else 
begin 
//FIND MAX ITEM LINE FOR FOUND PO INDEX
iItmMax = 0;
iCount = 0;
While iCount < iOID DO
begin  
iCount = iCount + 1;
//Loop to each item and find the max
if $TEMP_ITEM[iFOUND][iCount].#TEMP_Qty != "" then iItmMax = iCount;
end

//SET THE MAX ITEM PLUS ONE
iItem = iItmMax + 1;  

//CREATE ITEM LINE
$TEMP_ITEM[iFOUND][iItem].#TEMP_Qty = #0380:4;
$TEMP_ITEM[iFOUND][iItem].#TEMP_Description = $0320_L5[iS5][iOID][1].#0079:2;


end

最新更新