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'







Popular posts from this blog

pss book : శ్రీకృష్ణుడు దేవుడా, భగవంతుడా completed , second review needed. 26th April 2024

pss book: గురు ప్రార్థనామంజరి . completed 21st july 2024

pss book: కధల జ్ఞానము read review pending. 25th june 2024