bug found sap tpm fa
testing
ISA*00* *00* *ZZ*001315704P *ZZ*002331536 *231107*1146*U*00401*000000001*0*P*:~
GS*FA*001315704P*002331536*20231107*114647*000000001*X*004010~
ST*997*0001~
AK1*943*13*004010~
AK2*69*69~
AK5*A~
AK9*A*1*1*1~
SE*6*0001~
GE*1*000000001~
IEA*1*000000001~
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
def Message processData(Message message) {
def fackMessage = message.getBody(java.lang.String) as String;
def headers = message.getHeaders();
def fackMessageType = headers.get("SAP_EDI_Message_Type");
def segmentArray;
def senderTradingPartnerId;
def receiverTradingPartnerId;
def interchangeNumber;
if ("997" == fackMessageType) {
def isaSegmentStr
def ak1SegementStr
def ak9SegementStr
def segmentDelimiter = escapeDelimiter(fackMessage.substring(105,106));
// print segmentDelimiter
def dataElementDelimiter = escapeDelimiter(fackMessage.substring(3,4));
// print dataElementDelimiter
segmentArray = fackMessage.split(segmentDelimiter);
// print segmentArray
for (int i = 0; i < segmentArray.length; i++) {
if (segmentArray[i].startsWith("ISA")) {
isaSegmentStr = segmentArray[i];
} else if (segmentArray[i].startsWith("AK1")) {
ak1SegementStr = segmentArray[i];
} else if (segmentArray[i].startsWith("AK9")) {
ak9SegementStr = segmentArray[i];
}
}
/*
println segmentArray[0];
if(segmentArray[0].startsWith("ISA"))
{
println segmentArray[0];
}
if(segmentArray[3].startsWith("AK1"))
{
println segmentArray[3];
}
println segmentArray[3];
println segmentArray[6];*/
if (segmentArray[0].isEmpty()) {
throw new IllegalStateException("Mandatory segement ISA not provided.");
} else {
def isaArray = isaSegmentStr.split('\\*');
senderTradingPartnerId = isaArray[8].trim();
receiverTradingPartnerId = isaArray[6].trim();
}
print segmentArray[3];
if (segmentArray[3].isEmpty()) {
throw new IllegalStateException("Mandatory segement AK1 not provided.");
} else {
def isaArray1 =segmentArray[3].split('\\*');
interchangeNumber = isaArray1[1].trim();
// interchangeNumber=[2].trim();
}
if (segmentArray[6].isEmpty()) {
throw new IllegalStateException("Mandatory segement AK9 not provided.");
} else {
def actionCode = segmentArray[6].split('\\*')[1].trim();
//X12 FACK ActionCode: “A” (Accepted), “R”(Rejected), or “P” (Partially Accepted – at least one transaction set was rejected).
if ("A" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Accepted");
} else if ("R" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Rejected");
} else if ("P" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Partially Accepted");
}
}
} else if ("CONTRL" == fackMessageType) {
def uciSegmentStr;
def segmentDelimiter;
def dataElementDelimiter;
def componentDelimiter;
Pattern pattern = Pattern.compile("\\s*|\t|\r|\n");
Matcher matcher = pattern.matcher(fackMessage);
if(matcher.find()){
fackMessage = matcher.replaceAll("");
}
segmentDelimiter = escapeDelimiter(fackMessage.substring(fackMessage.length()-1));
if(fackMessage.startsWith("UNA")){
def delimiterStr = fackMessage.substring(3,7);
dataElementDelimiter = escapeDelimiter(delimiterStr.substring(1,2));
componentDelimiter = escapeDelimiter(delimiterStr.substring(0,1));
}else{
dataElementDelimiter = escapeDelimiter(fackMessage.substring(3,4));
componentDelimiter = escapeDelimiter(fackMessage.substring(8,9));
}
segmentArray = fackMessage.split(segmentDelimiter);
for (int i = 0; i < segmentArray.length; i++) {
if (segmentArray[i].startsWith("UCI")) {
uciSegmentStr = segmentArray[i];
break;
}
}
if (uciSegmentStr == null) {
throw new IllegalStateException("Mandatory segement UCI not provided.");
} else {
def uciSegmentArray = uciSegmentStr.split(dataElementDelimiter);
interchangeNumber = uciSegmentArray[1].trim();
senderTradingPartnerId = uciSegmentArray[2].split(componentDelimiter)[0].trim();
receiverTradingPartnerId = uciSegmentArray[3].split(componentDelimiter)[0].trim();
def actionCode = uciSegmentArray[4].trim();
//UN/EDIFACT FACK ActionCode: “8” (Accepted), “4”(Rejected), or “7” (Partially Accepted – at least one transaction set was rejected).
if ("8" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Accepted");
} else if ("4" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Rejected");
} else if ("7" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Partially Accepted");
}
}
} else {
throw new IllegalArgumentException("Functional acknowledgement message type " + fackMessageType + " not supported.")
}
message.setProperty("SAP_BTA_Correlation_Sender_Trading_Partner_ID", senderTradingPartnerId);
message.setProperty("SAP_BTA_Correlation_Receiver_Trading_Partner_ID", receiverTradingPartnerId);
message.setProperty("SAP_BTA_Correlation_Reference_Number", interchangeNumber);
return message;
}
def escapeDelimiter(delimiter){
return delimiter.replace(delimiter,delimiter);
}
ISA*00* *00* *ZZ*001315704P *ZZ*002331536 *231107*1146*U*00401*000000001*0*P*:~
GS*FA*001315704P*002331536*20231107*114647*000000001*X*004010~
ST*997*0001~
AK1*943*13*004010~
AK2*69*69~
AK5*A~
AK9*A*1*1*1~
SE*6*0001~
GE*1*000000001~
IEA*1*000000001~
---------------
edifact
UNA:+.? '
UNB+UNOC:3+045168879P:01+002331536:01+230223:0830+000000080'
UCI+1+002331536:01+045168879P:01+8'
UNZ+1+000000080'
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
def Message processData(Message message) {
def fackMessage = message.getBody(java.lang.String) as String;
def headers = message.getHeaders();
def fackMessageType = headers.get("SAP_EDI_Message_Type");
def segmentArray;
def senderTradingPartnerId;
def receiverTradingPartnerId;
def interchangeNumber;
if ("997" == fackMessageType) {
def isaSegmentStr
def ak1SegementStr
def ak9SegementStr
def segmentDelimiter = escapeDelimiter(fackMessage.substring(105,106));
// print segmentDelimiter
def dataElementDelimiter = escapeDelimiter(fackMessage.substring(3,4));
// print dataElementDelimiter
segmentArray = fackMessage.split(segmentDelimiter);
// print segmentArray
for (int i = 0; i < segmentArray.length; i++) {
if (segmentArray[i].startsWith("ISA")) {
isaSegmentStr = segmentArray[i];
} else if (segmentArray[i].startsWith("AK1")) {
ak1SegementStr = segmentArray[i];
} else if (segmentArray[i].startsWith("AK9")) {
ak9SegementStr = segmentArray[i];
}
}
/*
println segmentArray[0];
if(segmentArray[0].startsWith("ISA"))
{
println segmentArray[0];
}
if(segmentArray[3].startsWith("AK1"))
{
println segmentArray[3];
}
println segmentArray[3];
println segmentArray[6];*/
if (segmentArray[0].isEmpty()) {
throw new IllegalStateException("Mandatory segement ISA not provided.");
} else {
def isaArray = isaSegmentStr.split('\\*');
senderTradingPartnerId = isaArray[8].trim();
receiverTradingPartnerId = isaArray[6].trim();
}
print segmentArray[3];
if (segmentArray[3].isEmpty()) {
throw new IllegalStateException("Mandatory segement AK1 not provided.");
} else {
def isaArray1 =segmentArray[3].split('\\*');
interchangeNumber = isaArray1[1].trim();
// interchangeNumber=[2].trim();
}
if (segmentArray[6].isEmpty()) {
throw new IllegalStateException("Mandatory segement AK9 not provided.");
} else {
def actionCode = segmentArray[6].split('\\*')[1].trim();
//X12 FACK ActionCode: “A” (Accepted), “R”(Rejected), or “P” (Partially Accepted – at least one transaction set was rejected).
if ("A" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Accepted");
} else if ("R" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Rejected");
} else if ("P" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Partially Accepted");
}
}
} else if ("CONTRL" == fackMessageType) {
def uciSegmentStr;
def segmentDelimiter;
def dataElementDelimiter;
def componentDelimiter;
Pattern pattern = Pattern.compile("\\s*|\t|\r|\n");
println pattern
Matcher matcher = pattern.matcher(fackMessage);
if(matcher.find()){
fackMessage = matcher.replaceAll("");
}
println fackMessage
segmentDelimiter = escapeDelimiter(fackMessage.substring(fackMessage.length()-1));
if(fackMessage.startsWith("UNA")){
def delimiterStr = fackMessage.substring(3,7);
println delimiterStr
dataElementDelimiter = '\\'+escapeDelimiter(delimiterStr.substring(1,2));
componentDelimiter = '\\'+escapeDelimiter(delimiterStr.substring(0,1));
println dataElementDelimiter
println componentDelimiter
}else{
dataElementDelimiter = escapeDelimiter(fackMessage.substring(3,4));
componentDelimiter = escapeDelimiter(fackMessage.substring(8,9));
}
segmentArray = fackMessage.split(segmentDelimiter);
for (int i = 0; i < segmentArray.length; i++) {
if (segmentArray[i].startsWith("UCI")) {
uciSegmentStr = segmentArray[i];
break;
}
}
if (uciSegmentStr == null) {
throw new IllegalStateException("Mandatory segement UCI not provided.");
} else {
def uciSegmentArray = uciSegmentStr.split(dataElementDelimiter);
interchangeNumber = uciSegmentArray[1].trim();
senderTradingPartnerId = uciSegmentArray[2].split(componentDelimiter)[0].trim();
receiverTradingPartnerId = uciSegmentArray[3].split(componentDelimiter)[0].trim();
def actionCode = uciSegmentArray[4].trim();
//UN/EDIFACT FACK ActionCode: “8” (Accepted), “4”(Rejected), or “7” (Partially Accepted – at least one transaction set was rejected).
if ("8" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Accepted");
} else if ("4" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Rejected");
} else if ("7" == actionCode) {
message.setProperty("SAP_BTA_ActionCode", "Partially Accepted");
}
}
} else {
throw new IllegalArgumentException("Functional acknowledgement message type " + fackMessageType + " not supported.")
}
message.setProperty("SAP_BTA_Correlation_Sender_Trading_Partner_ID", senderTradingPartnerId);
message.setProperty("SAP_BTA_Correlation_Receiver_Trading_Partner_ID", receiverTradingPartnerId);
message.setProperty("SAP_BTA_Correlation_Reference_Number", interchangeNumber);
return message;
}
def escapeDelimiter(delimiter){
return delimiter.replace(delimiter,delimiter);
}
UNA:+.? '
UNB+UNOC:3+045168879P:01+002331536:01+230223:0830+000000080'
UCI+1+002331536:01+045168879P:01+8'
UNZ+1+000000080'