Serial.print() not fully printing println() function is being used to send AT commands to GSM module.
sim800l.println(&quot;AT+CLTS=1&quot;);
  delay(3000);
  sim800l.println(&quot;AT+COPS=2&quot;);
  delay(3000);
  sim800l.println(&quot;AT+COPS=0,0&quot;);
  delay(3000);

But problem is the output -
AT+CLTS=1

OK
AT+COP

The command AT+COP did not print fully? Why?
Minimal Reproducable Example -
#include &lt;SoftwareSerial.h&gt;    //Library required for serial communication
char MYDATA[18];
SoftwareSerial sim800l(3, 2); // RX,TX for Arduino and for the module it's TXD RXD, they should be inverted
void setup() {
  Serial.begin(9600); //Start the serial interface on 9600
  sim800l.begin(9600);
  delay(100);
  // AT command to set sim800l to SMS mode
  sim800l.println(&quot;AT+CMGF=1&quot;); 
  //Serialcom();
  delay(100);
  // Set module to send SMS data to serial out upon receipt 
  sim800l.println(&quot;AT+CNMI=2,2,0,0,0&quot;);
  delay(100);
  sim800l.println(&quot;AT+CLTS=1&quot;);
  delay(3000);
  sim800l.println(&quot;AT+COPS=2&quot;);
  delay(3000);
  sim800l.println(&quot;AT+COPS=0,0&quot;);
  delay(3000);
   sim800l.println(&quot;AT+CCLK?&quot;);
  Serial.find(&quot;+CCLK: \&quot;&quot;);
  Serial.readBytesUntil('\+', MYDATA, 17);

}

void loop() {
 Serial.print(MYDATA);
}
You're overflowing the serial receive buffer. There's only a limited amount of space (64 bytes normally, maybe less in SoftwareSerial) for receiving data before you must read it or lose data. Since you are just blindly throwing commands at the SIM800 and not doing anything with its responses until right at the end all that incoming data fills the receive buffer to overflowing.
Your methodology is flawed (not your fault, the examples on the internet are all rubbish and teach you the wrong way of doing things). What you should be doing is issuing a command then receiving the response back and parsing it to see if the command was successful or not, and retrieve any information that the response may include that you would want to know.