Thursday, 15 November 2012

Android Calendar Sample

This can be used for creating calendar in android 2.2 versions.


CalendarView.java


public class CalendarView extends Activity {

public Calendar month, itemmonth;// calendar instances.

public CalendarAdapter adapter;// adapter instance
public Handler handler;// for grabbing some event values for showing the dot
// marker.
public ArrayList<String> items; // container to store calendar items which
// needs showing the event marker

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calendar);

month = Calendar.getInstance();
itemmonth = (Calendar) month.clone();

items = new ArrayList<String>();
adapter = new CalendarAdapter(this, month);

GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(adapter);

handler = new Handler();
handler.post(calendarUpdater);

TextView title = (TextView) findViewById(R.id.title);
title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));

RelativeLayout previous = (RelativeLayout) findViewById(R.id.previous);

previous.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
setPreviousMonth();
refreshCalendar();
}
});

RelativeLayout next = (RelativeLayout) findViewById(R.id.next);
next.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
setNextMonth();
refreshCalendar();

}
});

gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {

((CalendarAdapter) parent.getAdapter()).setSelected(v);
String selectedGridDate = CalendarAdapter.dayString
.get(position);
String[] separatedTime = selectedGridDate.split("-");
String gridvalueString = separatedTime[2].replaceFirst("^0*",
"");// taking last part of date. ie; 2 from 2012-12-02.
int gridvalue = Integer.parseInt(gridvalueString);
// navigate to next or previous month on clicking offdays.
if ((gridvalue > 10) && (position < 8)) {
setPreviousMonth();
refreshCalendar();
} else if ((gridvalue < 7) && (position > 28)) {
setNextMonth();
refreshCalendar();
}
((CalendarAdapter) parent.getAdapter()).setSelected(v);

showToast(selectedGridDate);

}
});
}

protected void setNextMonth() {
if (month.get(Calendar.MONTH) == month.getActualMaximum(Calendar.MONTH)) {
month.set((month.get(Calendar.YEAR) + 1),
month.getActualMinimum(Calendar.MONTH), 1);
} else {
month.set(Calendar.MONTH, month.get(Calendar.MONTH) + 1);
}

}

protected void setPreviousMonth() {
if (month.get(Calendar.MONTH) == month.getActualMinimum(Calendar.MONTH)) {
month.set((month.get(Calendar.YEAR) - 1),
month.getActualMaximum(Calendar.MONTH), 1);
} else {
month.set(Calendar.MONTH, month.get(Calendar.MONTH) - 1);
}

}

protected void showToast(String string) {
Toast.makeText(this, string, Toast.LENGTH_SHORT).show();

}

public void refreshCalendar() {
TextView title = (TextView) findViewById(R.id.title);

adapter.refreshDays();
adapter.notifyDataSetChanged();
handler.post(calendarUpdater); // generate some calendar items

title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));
}

public Runnable calendarUpdater = new Runnable() {

@Override
public void run() {
items.clear();

// Print dates of the current week
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String itemvalue;
for (int i = 0; i < 7; i++) {
itemvalue = df.format(itemmonth.getTime());
itemmonth.add(Calendar.DATE, 1);
items.add("2012-09-12");
items.add("2012-10-07");
items.add("2012-10-15");
items.add("2012-10-20");
items.add("2012-11-30");
items.add("2012-11-28");
}

adapter.setItems(items);
adapter.notifyDataSetChanged();
}
};
}


CalendarAdapter.java




public class CalendarAdapter extends BaseAdapter {
private Context mContext;

private java.util.Calendar month;
public GregorianCalendar pmonth; // calendar instance for previous month
/**
* calendar instance for previous month for getting complete view
*/
public GregorianCalendar pmonthmaxset;
private GregorianCalendar selectedDate;
int firstDay;
int maxWeeknumber;
int maxP;
int calMaxP;
int lastWeekDay;
int leftDays;
int mnthlength;
String itemvalue, curentDateString;
DateFormat df;

private ArrayList<String> items;
public static List<String> dayString;
private View previousView;

public CalendarAdapter(Context c, GregorianCalendar monthCalendar) {
CalendarAdapter.dayString = new ArrayList<String>();
month = monthCalendar;
selectedDate = (GregorianCalendar) monthCalendar.clone();
mContext = c;
month.set(GregorianCalendar.DAY_OF_MONTH, 1);
this.items = new ArrayList<String>();
df = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
curentDateString = df.format(selectedDate.getTime());
refreshDays();
}

public void setItems(ArrayList<String> items) {
for (int i = 0; i != items.size(); i++) {
if (items.get(i).length() == 1) {
items.set(i, "0" + items.get(i));
}
}
this.items = items;
}

public int getCount() {
return dayString.size();
}

public Object getItem(int position) {
return dayString.get(position);
}

public long getItemId(int position) {
return 0;
}

// create a new view for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
TextView dayView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
LayoutInflater vi = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.calendar_item, null);

}
dayView = (TextView) v.findViewById(R.id.date);
// separates daystring into parts.
String[] separatedTime = dayString.get(position).split("-");
// taking last part of date. ie; 2 from 2012-12-02
String gridvalue = separatedTime[2].replaceFirst("^0*", "");
// checking whether the day is in current month or not.
if ((Integer.parseInt(gridvalue) > 1) && (position < firstDay)) {
// setting offdays to white color.
dayView.setTextColor(Color.WHITE);
dayView.setClickable(false);
dayView.setFocusable(false);
} else if ((Integer.parseInt(gridvalue) < 7) && (position > 28)) {
dayView.setTextColor(Color.WHITE);
dayView.setClickable(false);
dayView.setFocusable(false);
} else {
// setting curent month's days in blue color.
dayView.setTextColor(Color.BLUE);
}

if (dayString.get(position).equals(curentDateString)) {
setSelected(v);
previousView = v;
} else {
v.setBackgroundResource(R.drawable.list_item_background);
}
dayView.setText(gridvalue);

// create date string for comparison
String date = dayString.get(position);

if (date.length() == 1) {
date = "0" + date;
}
String monthStr = "" + (month.get(GregorianCalendar.MONTH) + 1);
if (monthStr.length() == 1) {
monthStr = "0" + monthStr;
}

// show icon if date is not empty and it exists in the items array
ImageView iw = (ImageView) v.findViewById(R.id.date_icon);
if (date.length() > 0 && items != null && items.contains(date)) {
iw.setVisibility(View.VISIBLE);
} else {
iw.setVisibility(View.INVISIBLE);
}
return v;
}

public View setSelected(View view) {
if (previousView != null) {
previousView.setBackgroundResource(R.drawable.list_item_background);
}
previousView = view;
view.setBackgroundResource(R.drawable.calendar_cel_selectl);
return view;
}

public void refreshDays() {
// clear items
items.clear();
dayString.clear();
pmonth = (GregorianCalendar) month.clone();
// month start day. ie; sun, mon, etc
firstDay = month.get(GregorianCalendar.DAY_OF_WEEK);
// finding number of weeks in current month.
maxWeeknumber = month.getActualMaximum(GregorianCalendar.WEEK_OF_MONTH);
// allocating maximum row number for the gridview.
mnthlength = maxWeeknumber * 7;
maxP = getMaxP(); // previous month maximum day 31,30....
calMaxP = maxP - (firstDay - 1);// calendar offday starting 24,25 ...
/**
* Calendar instance for getting a complete gridview including the three
* month's (previous,current,next) dates.
*/
pmonthmaxset = (GregorianCalendar) pmonth.clone();
/**
* setting the start date as previous month's required date.
*/
pmonthmaxset.set(GregorianCalendar.DAY_OF_MONTH, calMaxP + 1);

/**
* filling calendar gridview.
*/
for (int n = 0; n < mnthlength; n++) {

itemvalue = df.format(pmonthmaxset.getTime());
pmonthmaxset.add(GregorianCalendar.DATE, 1);
dayString.add(itemvalue);

}
}

private int getMaxP() {
int maxP;
if (month.get(GregorianCalendar.MONTH) == month
.getActualMinimum(GregorianCalendar.MONTH)) {
pmonth.set((month.get(GregorianCalendar.YEAR) - 1),
month.getActualMaximum(GregorianCalendar.MONTH), 1);
} else {
pmonth.set(GregorianCalendar.MONTH,
month.get(GregorianCalendar.MONTH) - 1);
}
maxP = pmonth.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);

return maxP;
}

}


calendar.xml




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/calendar_top" >

        <RelativeLayout
            android:id="@+id/previous"
            android:layout_width="40dip"
            android:layout_height="30dip"
            android:layout_alignParentLeft="true" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:background="@drawable/arrow_left" />
        </RelativeLayout>

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="5dip"
            android:textColor="#000000"
            android:textSize="18dip"
            android:textStyle="bold" />

        <RelativeLayout
            android:id="@+id/next"
            android:layout_width="40dip"
            android:layout_height="30dip"
            android:layout_alignParentRight="true" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:background="@drawable/arrow_right" />
        </RelativeLayout>
    </RelativeLayout>

    <GridView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:listSelector="@android:color/transparent"
        android:numColumns="7"
        android:stretchMode="columnWidth" />

</LinearLayout>


calendar_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/calendar_cell"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="2dip" >

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#0000D7"
        android:textSize="14dip"
        android:textStyle="bold" >
    </TextView>

    <ImageView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/date_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/dot"
        android:visibility="gone" />

</LinearLayout>




source code





82 comments:

  1. Thanks dude.....calendar is working

    ReplyDelete
    Replies
    1. Kindly tell me first xml is use in main activity xml?

      Delete
  2. Hi,
    it's not update the number of years

    ReplyDelete
    Replies
    1. agree.if you move back to previous year.it still state the current year.how to solve this?
      thanks

      Delete
    2. Please find the update.Now it is showing the correct year.

      Delete
  3. Hi,

    There is an error showing some months.
    The march has 31 days but it appears 30 day.
    The september appears a lot of october days.
    Please fix them.

    ReplyDelete
  4. How do you retrieve events and add them into this calendar?

    ReplyDelete
    Replies
    1. He is adding events on dates in CalenderView.java...

      for (int i = 0; i < 7; i++) {
      itemvalue = df.format(itemmonth.getTime());
      itemmonth.add(GregorianCalendar.DATE, 1);
      items.add("2012-09-12");
      items.add("2012-10-07");
      items.add("2012-10-15");
      items.add("2012-10-20");
      items.add("2012-11-30");
      items.add("2012-11-28");
      }

      Delete
    2. But how do you add actual text to that. So you can say on a certain date "do this task"

      Delete
    3. u can use any string there instead of those dates.

      Delete
  5. thanks a lot dude,
    but how to make display the information of the specific event, when hit 2012-11-28 it will show title and description of that event.

    thx

    ReplyDelete
    Replies
    1. u can put an alert dialog.

      Delete
    2. ok that's a good idea ... thx a lot

      Delete
  6. Hey nice code!
    can u help me with something...
    i am displaying a calendar where the user has to select a date..when the date is selected a popup will appear with two buttons PRESENT and ABSENT. if the user clicks on present button the dialog box should close and the selected date should turn into green color and same for absent button it should turn into red color...
    how do i do this???
    can u please help???

    ReplyDelete
  7. Hi,
    This calendar starting Sunday.
    What should we do to begin Monday.
    Thanks.

    ReplyDelete
  8. Hi,
    This calendar starting Sunday.
    What should we do to begin Monday.
    Thanks.

    ^
    |
    |
    I have the same problem, please help :(

    ReplyDelete
    Replies
    1. // checking whether the day is in current month or not.
      if ((Integer.parseInt(gridvalue) > 1) && (position < firstDay - 1)) {


      // month start day. ie; sun, mon, etc
      firstDay = month.get(GregorianCalendar.DAY_OF_WEEK);
      if (firstDay == 1) { firstDay = 8; }

      calMaxP = maxP - (firstDay - 2); // calendar offday starting 24,25 ...


      That's it :)

      Delete
    2. This comment has been removed by the author.

      Delete
  9. hi this example is very good and its working fine.But i want to place dot in specific date that contains some events.in this app its not showing can u help me pls.
    Thanks for providing nice example

    ReplyDelete
    Replies
    1. it's actually there in this code.just look at the event dates he did attach to the items list and do modification according to your requirement by changing the present year,month and date.that its then go to your calendar month which you have added to list items it will display dot icon on it.this image also attached in this code.see getView() and calendarView items code.

      Delete
    2. it's actually there in this code.just look at the event dates he did attach to the items list and do modification according to your requirement by changing the present year,month and date.that its then go to your calendar month which you have added to list items it will display dot icon on it.this image also attached in this code.see getView() and calendarView items code.

      Delete
  10. Is there any way when i tap on the event date, i will be link to another event page of my ?

    ReplyDelete
  11. I would like to know about the license terms.. Can you please help me out Mr.Rajeesh

    ReplyDelete
  12. I "fix" the problem for the extra week who show the second week of the next month. Add the follow line in CalendarAdapter.java after the line "maxWeeknumber = month.getActualMaximum(GregorianCalendar.WEEK_OF_MONTH);" :

    if(maxWeeknumber >= 6) maxWeeknumber = 5;

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
  13. Hello,
    this is very good example thanks.

    I wanted to ask if there is a way to add things like this :

    for (int i = 0; i < 7; i++) {
    itemvalue = df.format(itemmonth.getTime());
    itemmonth.add(Calendar.DATE, 1);
    items.add("2012-09-12");
    items.add("2012-10-07");
    items.add("2012-10-15");
    items.add("2012-10-20");
    items.add("2012-11-30");
    items.add("2012-11-28");
    }


    but add them in loop
    example: for (int i = 0; i < 7; i++) items.add(itemsDates[i]);
    I try to do it but it crashes.
    I want to auto put the events dates.

    Please help me
    thanks

    ReplyDelete
  14. tanx yar.... now i want to syn facebook friends b'day list into this calendar. how its possible. please help me

    ReplyDelete
  15. Hi Rajeesh,

    Its great. Can u update the code. When i select one day in previous or next month on the calendar then it display the next month calender. It doesn't highlighted the selected day.
    Thanks

    ReplyDelete
  16. Hi Rajeesh,

    Thanks for your code,Calendar is working great.I have implemented the swipe gesture for left and right swipe,Its working fine with right swipe previous month left swipe next month,but in onSingleTapConfirmed event Action_down the position will returns 0 in all the cell in the gridview.Could u please help me to get the clicked position in the gridview .int j = gridview.pointToPosition((int)event.getX(), (int)event.getY());

    ReplyDelete
    Replies
    1. Hey! Can you please tell me how tou implement swipe?

      Delete
  17. Hi Rajeesh,

    How to display current week in the gridview.Please help me to solve the problem.

    Thanks & Regards,
    Venkatesan.R

    ReplyDelete
  18. Hi, can you help me adding multiple dots on single date and multiple dots with different color. and how can i design for the calender with daily basis. like the calender in the latest version of android 4.3,4.4,4.4.2

    Thanks in advance

    ReplyDelete
  19. hi
    can you please help me to implement some of my idea or give some tips to achieve it . have in put some data with date and save it into my data base and some it in the calendar it is possible??
    please help .
    if you can help me please send me some of your thoughts @ this email = jeremiahescamillan@gmail.com
    thanks in advance :)

    ReplyDelete
  20. how to add an event to the calender

    ReplyDelete
  21. Thanks, Its helps me a lot and saved my time also.

    ReplyDelete
  22. hi this example is very good and its working fine.But i want to place dot in specific date that contains some events. and it will store events details and date in MYsqlDB that date indicate in this app its not showing can u help me pls.
    Thanks for providing nice example

    ReplyDelete
  23. It is really Great job.
    My question to you Can it is possible???
    suppose I am creating one Database table and then Add some events in that table and when I open calendar in my mobile device so that events is automatically bind in calendar view.. have u sample code then please share

    ReplyDelete
  24. Thanks...
    What about vikram Samvat Calendar

    ReplyDelete
  25. Can we connect this calendar with google caledar using google calendar api. If yes then how.. reply me ganeshkatikar1990@gmail.com

    ReplyDelete
  26. hello sir,this example is very good and its working fine it used it on my shift create project but there is a problem when i create more then one shift then it only show latest shift only please suggest me how to show more than one shift
    thanks in advance

    ReplyDelete
    Replies
    1. how i can open or use the source file "folder .. which program should i use !! plz reply

      Delete
  27. how i can open or use the source file "folder .. which program should i use !! plz reply

    ReplyDelete
  28. This comment has been removed by the author.

    ReplyDelete
  29. How to show weekdays(Sunday,Monday,..) above date. I have implemented but the weekdays are not displaying i dont know y and wer am going wrong. Pls reply asap.

    ReplyDelete
  30. Hello,
    If it is not a big problem for you, can you please help me with an export of the complete Android Project (as a zip file), so that I can import it and learn the code.
    Thanks a lot in advance for your help.

    ReplyDelete
  31. how to set Validate using from date todate two calendar using android?????

    ReplyDelete
  32. hai nice tutorial thanks,

    how to set Validate in previous dates

    ReplyDelete
  33. how to display events back ground resource on full of event date.i have tried it but the bgcolor dispalying in all months same positions if i set bgcolor to text view.and I tried with image icon which is in it to dispaly event reminder view but that view is displaying to discribed measurements only.but i want to display the bgcolor full of that displaying bgcolor and should not display other month which is not attached as event.how can i do that?

    ReplyDelete

  34. Good afternoon, I'm Wanting CREATING A Lunar Calendar , fast Can you help me ?

    ReplyDelete
  35. How can i get sunday with red color?

    ReplyDelete
  36. How can i add the events through OnClick command? Thanks

    ReplyDelete
  37. This comment has been removed by the author.

    ReplyDelete
  38. This comment has been removed by the author.

    ReplyDelete
  39. It's interesting that many of the bloggers your tips helped to clarify a few things for me as well as giving... very specific nice content.Best Android Training in Velachery | android development course fees in chennai

    ReplyDelete
  40. This information is impressive; I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic.Android Training institute in chennai with placement | Best Android Training in velachery

    ReplyDelete
  41. Pleaze Upload Source code.

    ReplyDelete
    Replies
    1. please, the link to download the source code is dead

      Delete
    2. This comment has been removed by the author.

      Delete
    3. I'm really sorry.
      I was not using this dropbox account for a long time.
      Dropbox policies were changed and I could aware about it only now. The link is updated and you can download it now.

      Thank you.

      Delete
  42. I'm read this knowledge, It's my original word of this blog sections. We share very great knowledgeful learning post here.
    .Net Training in Chennai | Android Training in Chennai with placement | Selenium Training in Chennai | Hadoop Training Institute in Chennai

    ReplyDelete
  43. Great and fantastic one. thanks for sharing your valuable information.
    Android Training in chennai

    ReplyDelete
  44. Technology is in a growing way, if you want to shine your career just try to learn a latest technology skill which is having great scope in future.
    Regards,
    Android Training in Chennai|Android Course in Chennai|iOS Training Institutes in Chennai|iOS Training

    ReplyDelete
  45. Hey....I have integrated your calendar module in my app but the week days(sun, mon, tue...) are not displaying. How to display names of week days?
    Can any one suggest me?

    ReplyDelete
  46. Hey You just Super.....tried it very long but not get out of it....your code really working...Salesforce ..great blog....just in love with this blog.....

    ReplyDelete
  47. I believe there are many more pleasurable opportunities ahead for individuals that looked at your site.

    Best Java Training Institute Chennai

    ReplyDelete
  48. I simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.
    google-cloud-platform-training-in-chennai

    ReplyDelete
  49. Your very own commitment to getting the message throughout came to be rather powerful and have consistently enabled employees just like me to arrive at their desired goals.
    Java Training Institute Bangalore

    ReplyDelete
  50. i want to display click month date when ever i come next or previous month

    ReplyDelete
  51. i want to display click month date selcted when ever i come next or previous month

    ReplyDelete
  52. I wish to show thanks to you just for bailing me out of this particular trouble.As a result of checking through the net and meeting techniques that were not productive, I thought my life was done.
    Best Java Training Institute Chennai

    ReplyDelete
  53. I believe there are many more pleasurable opportunities ahead for individuals that looked at your site.

    https://bit.ly/2qI7TOC

    ReplyDelete
  54. Your new valuable key points imply much a person like me and extremely more to my office workers. With thanks; from every one of us.
    amazon-web-services-training-institute-in-chennai

    ReplyDelete
  55. Needed to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.


    Best Hadoop Training in chennai

    ReplyDelete
  56. I simply wanted to thank you so much again. I am not sure the things that I might have gone through without the type of hints revealed by you regarding that situation.
    Best Python training Institute in chennai

    ReplyDelete
  57. Sap Training Institute in Noida

    CIIT Noida provides Best SAP Training in Noida based on current industry standards that helps attendees to secure placements in their dream jobs at MNCs. CIIT Provides Best ERP SAP Training in Noida. CIIT is one of the most credible ERP SAP training institutes in Noida offering hands on practical knowledge and full job assistance with basic as well as advanced level ERP SAP training courses. At CIIT ERP SAP training in noida is conducted by subject specialist corporate professionals with 7+ years of experience in managing real-time ERP SAP projects. CIIT implements a blend of aERPemic learning and practical sessions to give the student optimum exposure that aids in the transformation of naïve students into thorough professionals that are easily recruited within the industry.

    At CIIT’s well-equipped ERP SAP training center in Noida aspirants learn the skills for ERP SAP Basis, ERP SAP ABAP, ERP SAP APO, ERP SAP Business Intelligence (BI), ERP SAP FICO, ERP SAP HANA, ERP SAP Production Planning, ERP SAP Supply Chain Management, ERP SAP Supplier Relationship Management, ERP SAP Training on real time projects along with ERP SAP placement training. ERP SAP Training in Noida has been designed as per latest industry trends and keeping in mind the advanced ERP SAP course content and syllabus based on the professional requirement of the student; helping them to get placement in Multinational companies and achieve their career goals.

    ERP SAP training course involves "Learning by Doing" using state-of-the-art infrastructure for performing hands-on exercises and real-world simulations. This extensive hands-on experience in ERP SAP training ensures that you absorb the knowledge and skills that you will need to apply at work after your placement in an MNC

    ReplyDelete
  58. Thank you for sharing such great information very useful to us.
    Android Training in Noida

    ReplyDelete