Organization Model : Adding new  relationships

Hi friends,
<b> Organization Model : Adding new  relationships to the existing list while assigning agents to a position </b>
Using transaction PPOMW, after creating an organization unit we assign a position to it.
When we right click the Position and select assign from the context menu, a dialog box appears where we have to choose relationships.
Can we create and add new relationships to this list. say for e.g. Position: holder Site
Please help.
Jon

Jon,
This is definitely possible. I had a similar reqt where a new relationship Position: Holder Location was required.
Here's how to go about it.
1. We have to maintain the required entry in the table T77AR
This can be done through Transaction Code: SM30 or OOVK
Enter the table name T77AR and click Maintain button
2. Select Relationship 008: Holder from the table
Double Click on Relationship Characteristics from the frame on the Left Hand side. Here two entries are maintained.
The details of each of the above columns are given below.
A/B: Contains a code that represents a particular type of a relationship. there are two types, active(A) and passive(B) (reciprocal).
The two types exist since most relationships have two corresponding sides, or perspectives. For example, consider the relationship between a father and son. There is only one relationship, but there are two distinct perspectives to that relationship.                            
NOTE: Active and passive should not be assumed to mean superior and subordinate. Sometimes one side of a relationship does have a superior standing. However, it is also possible that both sides of a relationship have equal, and corresponding, standing. It is also possible that some relationships will be one-sided. This occurs when, for example, you create relationships with external objects.                            
Relationship: Contains a code that represents the relationship between two objects.
100% Check: You can specify in this field whether the 100% limit should be checked when percentages are entered for weighted relationships (infotype 1001).
The value entered in this field will determine the type of message that is issued if the 100% limit is exceeded when a relationship is created. 
You can choose between the following values:                     
'E' = error                                                      
'I' = information                                                
'W' = warning                                                    
' ' = no check is carried out
Check Work Schedule: You can use this field to control how the system is to treat relationships to persons in connection with the infotype "Work Schedule" (1011).                             
Check obsolete: This field controls the system reaction when relationships are entered or changed in connection with the infotype "Obsolete - 1014".
3. Now double click on the Allowed Relationships button from the frame on the left hand side.
Here we maintain a new entry ‘Site’.
Object: S
Object type text: Position
A/B: A
Rel: 008
Relationship Name: Holder
RelObjType: F (Site)
4. This entry now appears in the dialog box
<b> R&D is the name of the game </b>
Julius

Similar Messages

  • ALE Distribution Models: Adding new company scenario

    If a new company is added in production, what is the affect on the ALE distribution models? Like the steps which we need to take to implement this scenario.

    Hi,
    Change the data type to add the new fields.
    Save the changed data type.
    Click on the mapping and refresh the data type.
    You will see the new fields appearing automatically.
    Make the necessary mapping changes and activate the mapping.
    While transporting, add the data type and the mapping to the change list and generate the .tpz file for transport.
    Hope this will help.
    Regards,
    Indranil

  • Adding new fields to business partner relationship

    Hi all,
    We are trying to add new fields to business partneru2019s relationship using EEWB. We are adding 4 new fields when relationship type is "Is shareholder of", so we have created a new project at transaction EEWB and then a new extension and the wizard is started. At the wizard, we have define the 4 new fields with cardinality 1:1 and time dependent without gaps.
    Also we have done all the extension setup, so the new fields only appears when that relationship is created and we can fill the new fields.
    The problem that we have is that every time that you create a new relationship type "Is shareholder of", even if you fill the new fields or not, the system spend more than one hour to save the data, having also a "STACK_STATE_NO_ROLL_MEMORY" dump... It seems that the system goes inside a loop that never ends, but we haven't change any function, because the standard functionality is enough for us.
    Any help on how to proceed?
    Thanks in advance!!

    Please, anyone can help?
    Thanks!!

  • Missing in relationship between employee and organizational model

    HI experts !
    I have a problem when creating organizational model.
    When I have created organizational (BP 2), I assigned some employee to that organization. But When I display organization ( BP 2)  by T code BP, no relationship " has the employee" was created.
    Please help me.
    Thanks in advance.

    Hi,
    Your Org is in which BP Role?
    Because if your BP is in X Role then to view the Relationship you need to choose the X Role in the BP ROLE FIELD (which is by default BP General when you Display the org).
    Or to confirm your relationship setting you can validate the existance by checking your EMLPOYEE BP.
    Hope this is helpful.
    VS

  • Adding New Org Units to Existing Organization Structure

    Hi,
    There is a change in the Org Structure, i.e we are adding new Org Units(Personnel Sub areas) to the existing Structure and creating postions to the newly created Org Units using PP01. Now my question is what are all things need to be configured with respect to Payroll, for the newly created PSA.
    Rgds
    Ram

    Hi Ramakrishna,
    Please be more clearer. PSAs are not org units. PSA belong to enterprise structure, whereas Org Unit belong to Org Structure. When you create new positions under the Org Units tht have been assigned to a PSA, PA, Company Code, Cost Center and Controlling area combination, you would have to set the following.
    Group your PSA for,
    Primary Wage Types
    Premium
    Work Schedule
    Time Recording
    Absence Attendence Type.
    Assign Tax Area to a PSA(If it is US Payroll).
    Any more suggestions from experts?
    K

  • Business Partner in Organizational Model Missing

    Hi
    I have added an Org Unit in Development Server and the ID and BP number is generated.
    I have Transported from Dev to Quality server by using RHMOVE50 to move the org unit.
    The Org unit and ID are transported successfully but the BP number is missing.
    Note: Earlier for all other Org Units in Qulaity the BP Number exist.
    Please prove me solution and points will be rewared.
    Thanks and Regards
    Masthan

    Hi,
    Apart from the above steps given by others you can also follow these steps as they did work in my scenario, this generally take some hours for the system to generate the BP ids so its better to schedule these activities in the evening so that when the Ids would be visible the next day I dont know whether this is a standard but this did happen in my case as i had to create the org structure twice so i had this experience twice.
    Scenario when the buffering is not done and the Business partner id is not getting created in ppoma_crm
    Check Settings for Attribute Maintenance
    Check the consistency of the attribute assignments to the organizational units.
    1. Access the activity using the following navigation options:
    Transaction code SPRO
    SAP CRM IMG menu Customer Relationship Management &#61614; Master Data &#61614; Organizational Management &#61614; Organizational Model &#61614; Tools &#61664; Check Settings for Attribute Maintenance
    2. Execute the check.
    Organizational Data Settings Check
    See documentation of the IMG activity for details about this check
    1. Access the activity using the following navigation options:
    Transaction code SPRO
    SAP CRM IMG menu Customer Relationship Management &#61614; Master Data &#61614; Organizational Management &#61614; Organizational Model &#61614; Tools &#61614; Organizational Data Settings Check
    2. Execute the check.
    Setup Buffering for Sales Scenario
    Report HRBCI_ATTRIBUTES_BUFFER_UPDATE is used to buffer the attributes of organizational management objects. To enable buffering you have to maintain view T77OMATTR.
    Enable Buffering for Sales Scenario
    1. Access the activity using the following navigation option:
    Transaction code OOATTRCUST
    2. Select the structure node Scenarios.
    3. Check the checkbox in the column Buffering for the scenario SALE.
    4. Choose Save.
    Update Buffers for Sales Scenario
    1. Access the activity using the following navigation option:
    Transaction code SA38
    2. Call transaction SA38.
    3. Select the report HRBCI_ATTRIBUTES_BUFFER_UPDATE
    4. Select the checkboxes for Delete All Buffers and Restructure buffer on Date.
    5. Choose Execute (F8).
    In note 737315 further details regarding this topic are described. Note you can also schedule a job in transaction SM36 to run this report regularly.
    Hope this helps.
    Regards,
    Amit

  • User is not integrated in organizational model

    Hi!
    We are in SRM 5.0 Server 550. We have created our own roles based on the standard roles. Our employee role is almost identical to SAP_EC_BBP_EMPLOYEE. We have added some transactions.
    Users_gen worked fine for the users, their attributes are maintained in BBPOMA_BBP and the check tab shows green light. But when user logs on and tries to maintain its settings we receive the message "User is not integrated in organizational model"
    We also receive an error while trying to create a SC. I think this is related to the problem above.
    Have we missed a crucial transaction?
    I can see we are missing the authorization object PLOG.
    Sincerely
    Anders
    Edited by: Anders Öhrling on Nov 5, 2008 10:56 AM

    Hi!
    The problem stared when I was trying out the new role that this user has gotten. BBPSC02 didn¨t work. By a chance I looked at the settings and saw that "User is not integrated in organizational model" was stated at the top. One could also see that no attributes at all was maintained here. So it looks like there is a correlation between BBPSC02 dump and that the user is not integrated in the organizational model.
    Sincerely
    Anders

  • BP number in Organization model

    Hi experts
    When we will creating new organization structure along with Org Id BP # will be coming automatically
    I would like to know what are the settings need to be done for this.
    becoz now when i am creating in my production server now it is not displaying BP # for newly created Org model
    Many thanks
    Vinay

    Hi Vinay,
    Go to IMG> CRM>Master DataBusiness PartnerIntegration Business Partner-Organization Management--Set Up Integration with Organizational Management.
    Here you have to set up:
    HRALX HRAC X
    HRALX OBPON ON
    HRALX ONUMB 2
    HRALX OSUBG and here the no range for ur org.
    Apart from the above steps, follow the steps given below as they did work in my scenario, this generally take some hours for the system to generate the BP ids so its better to schedule these activities in the evening so that when the Ids would be visible the next day.
    Scenario when the buffering is not done and the Business partner id is not getting created in ppoma_crm
    Check Settings for Attribute Maintenance
    Check the consistency of the attribute assignments to the organizational units.
    1. Access the activity using the following navigation options:
    Transaction code SPRO
    SAP CRM IMG menu Customer Relationship Management &#61614; Master Data &#61614; Organizational Management &#61614; Organizational Model &#61614; Tools &#61664; Check Settings for Attribute Maintenance
    2. Execute the check.
    Organizational Data Settings Check
    See documentation of the IMG activity for details about this check
    1. Access the activity using the following navigation options:
    Transaction code SPRO
    SAP CRM IMG menu Customer Relationship Management &#61614; Master Data &#61614; Organizational Management &#61614; Organizational Model &#61614; Tools &#61614; Organizational Data Settings Check
    2. Execute the check.
    Setup Buffering for Sales Scenario
    Report HRBCI_ATTRIBUTES_BUFFER_UPDATE is used to buffer the attributes of organizational management objects. To enable buffering you have to maintain view T77OMATTR.
    Enable Buffering for Sales Scenario
    1. Access the activity using the following navigation option:
    Transaction code OOATTRCUST
    2. Select the structure node Scenarios.
    3. Check the checkbox in the column Buffering for the scenario SALE.
    4. Choose Save.
    Update Buffers for Sales Scenario
    1. Access the activity using the following navigation option:
    Transaction code SA38
    2. Call transaction SA38.
    3. Select the report HRBCI_ATTRIBUTES_BUFFER_UPDATE
    4. Select the checkboxes for Delete All Buffers and Restructure buffer on Date.
    5. Choose Execute (F8).
    In note 737315 further details regarding this topic are described. Note you can also schedule a job in transaction SM36 to run this report regularly.
    Hope this helps.
    Regards,
    A S

  • How to create new subsite while adding new item to the list by using javascript?

    hi,
    I hav a task ie, when I add item to the list then subsite will create with that list item title and description . So By using javascript, I have to create subsite while adding new item to the list.
    Help me to solve this.
    Thank you, 

    Is your item getting added through Javascript client object model ? If yes, you can write in the success delegate of your list creation method the logic to create the subsite.
    function CreateListItem()
    var clientContext = new SP.ClientContext.get_current();
    var oList = clientContext.get_web().get_lists().getByTitle('List Name');
    var itemCreateInfo = new SP.ListItemCreationInformation();
    this.oListItem = oList.addItem(itemCreateInfo);
    oListItem.set_item('Title', 'My New Item!');
    oListItem.set_item('Body', 'Hello World!');
    oListItem.update();
    clientContext.load(oListItem);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.CreateListItemOnSuccess), Function.createDelegate(this, this.onQueryFailed));
    function CreateListItemOnSuccess() {
    var subsiteTitle = oListItem.get_item('Title');
    //Logic to create a subsite
    function onQueryFailed(sender, args) {
    I have added a sample flow for the above scenario. Have a look at the following lnk for how you can craete a subsite using ecmascript.
    http://ravisoftltd.wordpress.com/2013/03/06/sharepoint-2010-create-site-with-ecma-script-with/
    Geetanjali Arora | My blogs |

  • TableSorter errors when adding new data

    so here is the deal:
    I am using the TableSorter.java helper class with DefaultTableModel
    from: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
    It works great when the data is static and I get it for the first time. however, occationally, when adding new data I get a NullPointerException error.
    in use:
    DefaultTableModel.addRow()
    DefaultTableModel.removeRow() and
    DefaultTableModel.insertRow() methods.
    Error:
    java.lang.ArrayIndexOutOfBoundsException: 5
         at com.shared.model.TableSorter.modelIndex(TableSorter.java:294)
         at com.shared.model.TableSorter.getValueAt(TableSorter.java:340)
         at javax.swing.JTable.getValueAt(Unknown Source)
         at javax.swing.JTable.prepareRenderer(Unknown Source)...
    code problem I:
        public Object getValueAt(int row, int column)
            return tableModel.getValueAt(modelIndex(row), column);
        }code problem II:
        public int modelIndex(int viewIndex)
                 return getViewToModel()[viewIndex].modelIndex;     
        }TableSroter class:
    package com.shared.model;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.util.List;
    import javax.swing.*;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.*;
    * TableSorter is a decorator for TableModels; adding sorting
    * functionality to a supplied TableModel. TableSorter does
    * not store or copy the data in its TableModel; instead it maintains
    * a map from the row indexes of the view to the row indexes of the
    * model. As requests are made of the sorter (like getValueAt(row, col))
    * they are passed to the underlying model after the row numbers
    * have been translated via the internal mapping array. This way,
    * the TableSorter appears to hold another copy of the table
    * with the rows in a different order.
    * <p/>
    * TableSorter registers itself as a listener to the underlying model,
    * just as the JTable itself would. Events recieved from the model
    * are examined, sometimes manipulated (typically widened), and then
    * passed on to the TableSorter's listeners (typically the JTable).
    * If a change to the model has invalidated the order of TableSorter's
    * rows, a note of this is made and the sorter will resort the
    * rows the next time a value is requested.
    * <p/>
    * When the tableHeader property is set, either by using the
    * setTableHeader() method or the two argument constructor, the
    * table header may be used as a complete UI for TableSorter.
    * The default renderer of the tableHeader is decorated with a renderer
    * that indicates the sorting status of each column. In addition,
    * a mouse listener is installed with the following behavior:
    * <ul>
    * <li>
    * Mouse-click: Clears the sorting status of all other columns
    * and advances the sorting status of that column through three
    * values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to
    * NOT_SORTED again).
    * <li>
    * SHIFT-mouse-click: Clears the sorting status of all other columns
    * and cycles the sorting status of the column through the same
    * three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
    * <li>
    * CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except
    * that the changes to the column do not cancel the statuses of columns
    * that are already sorting - giving a way to initiate a compound
    * sort.
    * </ul>
    * <p/>
    * This is a long overdue rewrite of a class of the same name that
    * first appeared in the swing table demos in 1997.
    * @author Philip Milne
    * @author Brendon McLean
    * @author Dan van Enckevort
    * @author Parwinder Sekhon
    * @version 2.0 02/27/04
    public class TableSorter extends AbstractTableModel
        protected TableModel tableModel;
        public static final int DESCENDING = -1;
        public static final int NOT_SORTED = 0;
        public static final int ASCENDING = 1;
        private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
        public static final Comparator COMPARABLE_COMAPRATOR = new Comparator()
            public int compare(Object o1, Object o2)
                return ((Comparable) o1).compareTo(o2);
        public static final Comparator LEXICAL_COMPARATOR = new Comparator()
            public int compare(Object o1, Object o2)
                return o1.toString().compareTo(o2.toString());
        private Row[] viewToModel;
        private int[] modelToView;
        private JTableHeader tableHeader;
        private MouseListener mouseListener;
        private TableModelListener tableModelListener;
        private Map columnComparators = new HashMap();
        private List sortingColumns = new ArrayList();
        public TableSorter()
            this.mouseListener = new MouseHandler();
            this.tableModelListener = new TableModelHandler();
        public TableSorter(TableModel tableModel)
            this();
            setTableModel(tableModel);
        public TableSorter(TableModel tableModel, JTableHeader tableHeader)
            this();
            setTableHeader(tableHeader);
            setTableModel(tableModel);
        private void clearSortingState()
            viewToModel = null;
            modelToView = null;
        public TableModel getTableModel()
            return tableModel;
        public void setTableModel(TableModel tableModel)
            if (this.tableModel != null)
                this.tableModel.removeTableModelListener(tableModelListener);
            this.tableModel = tableModel;
            if (this.tableModel != null)
                this.tableModel.addTableModelListener(tableModelListener);
            clearSortingState();
            fireTableStructureChanged();
        public JTableHeader getTableHeader()
            return tableHeader;
        public void setTableHeader(JTableHeader tableHeader)
            if (this.tableHeader != null)
                this.tableHeader.removeMouseListener(mouseListener);
                TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer();
                if (defaultRenderer instanceof SortableHeaderRenderer)
                    this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer);
            this.tableHeader = tableHeader;
            if (this.tableHeader != null)
                this.tableHeader.addMouseListener(mouseListener);
                this.tableHeader.setDefaultRenderer
                        new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer())
        public boolean isSorting()
            return sortingColumns.size() != 0;
        private Directive getDirective(int column)
            for (int i = 0; i < sortingColumns.size(); i++)
                Directive directive = (Directive)sortingColumns.get(i);
                if (directive.column == column)
                    return directive;
            return EMPTY_DIRECTIVE;
        public int getSortingStatus(int column)
            return getDirective(column).direction;
        private void sortingStatusChanged()
            clearSortingState();
            fireTableDataChanged();
            if (tableHeader != null)
                tableHeader.repaint();
        public void setSortingStatus(int column, int status)
            Directive directive = getDirective(column);
            if (directive != EMPTY_DIRECTIVE)
                sortingColumns.remove(directive);
            if (status != NOT_SORTED)
                sortingColumns.add(new Directive(column, status));
            sortingStatusChanged();
        protected Icon getHeaderRendererIcon(int column, int size)
            Directive directive = getDirective(column);
            if (directive == EMPTY_DIRECTIVE)
                return null;
            return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive));
        private void cancelSorting()
            sortingColumns.clear();
            sortingStatusChanged();
        public void setColumnComparator(Class type, Comparator comparator)
            if (comparator == null)
                columnComparators.remove(type);
            else
                columnComparators.put(type, comparator);
        protected Comparator getComparator(int column)
            Class columnType = tableModel.getColumnClass(column);
            Comparator comparator = (Comparator) columnComparators.get(columnType);
            if (comparator != null)
                return comparator;
            if (Comparable.class.isAssignableFrom(columnType))
                return COMPARABLE_COMAPRATOR;
            return LEXICAL_COMPARATOR;
        private Row[] getViewToModel()
            if (viewToModel == null)
                int tableModelRowCount = tableModel.getRowCount();
                viewToModel = new Row[tableModelRowCount];
                for (int row = 0; row < tableModelRowCount; row++)
                    viewToModel[row] = new Row(row);
                if (isSorting())
                    Arrays.sort(viewToModel);
            return viewToModel;
        public int modelIndex(int viewIndex)
                 return getViewToModel()[viewIndex].modelIndex;     
        private int[] getModelToView()
            if (modelToView == null)
                int n = getViewToModel().length;
                modelToView = new int[n];
                for (int i = 0; i < n; i++)
                    modelToView[modelIndex(i)] = i;
            return modelToView;
        // TableModel interface methods
        public int getRowCount()
            return (tableModel == null) ? 0 : tableModel.getRowCount();
        public int getColumnCount()
            return (tableModel == null) ? 0 : tableModel.getColumnCount();
        public String getColumnName(int column)
            return tableModel.getColumnName(column);
        public Class getColumnClass(int column)
            return tableModel.getColumnClass(column);
        public boolean isCellEditable(int row, int column)
            return tableModel.isCellEditable(modelIndex(row), column);
        public Object getValueAt(int row, int column)
            return tableModel.getValueAt(modelIndex(row), column);
        public void setValueAt(Object aValue, int row, int column)
            tableModel.setValueAt(aValue, modelIndex(row), column);
        // Helper classes
        private class Row implements Comparable
            private int modelIndex;
            public Row(int index)
                this.modelIndex = index;
            public int compareTo(Object o)
                int row1 = modelIndex;
                int row2 = ((Row) o).modelIndex;
                for (Iterator it = sortingColumns.iterator(); it.hasNext();)
                    Directive directive = (Directive) it.next();
                    int column = directive.column;
                    Object o1 = tableModel.getValueAt(row1, column);
                    Object o2 = tableModel.getValueAt(row2, column);
                    int comparison = 0;
                    // Define null less than everything, except null.
                    if (o1 == null && o2 == null)
                        comparison = 0;
                    } else if (o1 == null)
                        comparison = -1;
                    } else if (o2 == null)
                        comparison = 1;
                    } else {
                        comparison = getComparator(column).compare(o1, o2);
                    if (comparison != 0)
                        return directive.direction == DESCENDING ? -comparison : comparison;
                return 0;
        private class TableModelHandler implements TableModelListener
            public void tableChanged(TableModelEvent e)
                // If we're not sorting by anything, just pass the event along.            
                if (!isSorting())
                    clearSortingState();
                    fireTableChanged(e);
                    return;
                // If the table structure has changed, cancel the sorting; the            
                // sorting columns may have been either moved or deleted from            
                // the model.
                if (e.getFirstRow() == TableModelEvent.HEADER_ROW)
                    cancelSorting();
                    fireTableChanged(e);
                    return;
                // We can map a cell event through to the view without widening            
                // when the following conditions apply:
                // a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and,
                // b) all the changes are in one column (column != TableModelEvent.ALL_COLUMNS) and,
                // c) we are not sorting on that column (getSortingStatus(column) == NOT_SORTED) and,
                // d) a reverse lookup will not trigger a sort (modelToView != null)
                // Note: INSERT and DELETE events fail this test as they have column == ALL_COLUMNS.
                // The last check, for (modelToView != null) is to see if modelToView
                // is already allocated. If we don't do this check; sorting can become
                // a performance bottleneck for applications where cells 
                // change rapidly in different parts of the table. If cells
                // change alternately in the sorting column and then outside of            
                // it this class can end up re-sorting on alternate cell updates -
                // which can be a performance problem for large tables. The last
                // clause avoids this problem.
                int column = e.getColumn();
                if (e.getFirstRow() == e.getLastRow()
                        && column != TableModelEvent.ALL_COLUMNS
                        && getSortingStatus(column) == NOT_SORTED
                        && modelToView != null)
                    int viewIndex = getModelToView()[e.getFirstRow()];
                    fireTableChanged(new TableModelEvent(TableSorter.this,
                                                         viewIndex, viewIndex,
                                                         column, e.getType()));
                    return;
                // Something has happened to the data that may have invalidated the row order.
                clearSortingState();
                fireTableDataChanged();
                return;
        private class MouseHandler extends MouseAdapter
            public void mouseClicked(MouseEvent e)
                JTableHeader h = (JTableHeader) e.getSource();
                TableColumnModel columnModel = h.getColumnModel();
                int viewColumn = columnModel.getColumnIndexAtX(e.getX());
                int column = columnModel.getColumn(viewColumn).getModelIndex();
                if (column != -1)
                    int status = getSortingStatus(column);
                    if (!e.isControlDown())
                        cancelSorting();
                    // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or
                    // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed.
                    status = status + (e.isShiftDown() ? -1 : 1);
                    status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
                    setSortingStatus(column, status);
        private static class Arrow implements Icon
            private boolean descending;
            private int size;
            private int priority;
            public Arrow(boolean descending, int size, int priority)
                this.descending = descending;
                this.size = size;
                this.priority = priority;
            public void paintIcon(Component c, Graphics g, int x, int y)
                Color color = c == null ? Color.GRAY : c.getBackground();            
                // In a compound sort, make each succesive triangle 20%
                // smaller than the previous one.
                int dx = (int)(size/2*Math.pow(0.8, priority));
                int dy = descending ? dx : -dx;
                // Align icon (roughly) with font baseline.
                y = y + 5*size/6 + (descending ? -dy : 0);
                int shift = descending ? 1 : -1;
                g.translate(x, y);
                // Right diagonal.
                g.setColor(color.darker());
                g.drawLine(dx / 2, dy, 0, 0);
                g.drawLine(dx / 2, dy + shift, 0, shift);
                // Left diagonal.
                g.setColor(color.brighter());
                g.drawLine(dx / 2, dy, dx, 0);
                g.drawLine(dx / 2, dy + shift, dx, shift);
                // Horizontal line.
                if (descending) {
                    g.setColor(color.darker().darker());
                } else {
                    g.setColor(color.brighter().brighter());
                g.drawLine(dx, 0, 0, 0);
                g.setColor(color);
                g.translate(-x, -y);
            public int getIconWidth()
                return size;
            public int getIconHeight()
                return size;
        private class SortableHeaderRenderer implements TableCellRenderer
            private TableCellRenderer tableCellRenderer;
            public SortableHeaderRenderer(TableCellRenderer tableCellRenderer)
                this.tableCellRenderer = tableCellRenderer;
            public Component getTableCellRendererComponent(JTable table,
                                                           Object value,
                                                           boolean isSelected,
                                                           boolean hasFocus,
                                                           int row,
                                                           int column)
                Component c = tableCellRenderer.getTableCellRendererComponent(table,
                        value, isSelected, hasFocus, row, column);
                if (c instanceof JLabel) {
                    JLabel l = (JLabel) c;
                    l.setHorizontalTextPosition(JLabel.LEFT);
                    int modelColumn = table.convertColumnIndexToModel(column);
                    l.setIcon(getHeaderRendererIcon(modelColumn, l.getFont().getSize()));
                return c;
        private static class Directive
            private int column;
            private int direction;
            public Directive(int column, int direction)
                this.column = column;
                this.direction = direction;
    }any input will be appreciated.
    thanks
    Peter

    The code you posted doesn't help us at all. Its just a duplicate of the code from the tutorial. The custom code is what you have written. For example do you update the TableModel from the Event Thread? Do you update the SortModel or the DefaultTableModel? If you actually provide your test code and somebody has already downloaded the sort classes, then maybe they will test your code against the classes. But I doubt if people will download the sort classes and create a test program just to see if they can duplicate your results (at least I know I'm not about to).

  • Customer name is not updating in Organization model

    Hi All,
    One employee  is created with the name "test customer" in ECC and it is assigned to organization model in CRM. After that the the employee name is changed fom test customer to __customer test. Now same changes is updating in CRM but not updating in Organization model?
                                  can you plz tell me why the employee is not updating in Organization model?
    Edited by: prajesh24 on Jun 16, 2011 11:08 AM
    Edited by: prajesh24 on Jun 16, 2011 11:32 AM

    Hi
    The changes to the business partner data flows through the middleware in run time.
    But if you assigned the user with some initial name as XYZ. Then change the name of the business partner to X1Y1Z1, then you need to remove the earlier entry in the name of XYZ and assign the new entry X1Y1Z1 manually.
    As a standard, it will not update the name in the organisational data in CRM.
    Hope this will be helpful.
    Regards

  • Attributes value in Organizational Model

    HI,
    Iu2019ve created a new attribute for a org unit in scenario service. Itu2019s attribute REGIOGROUP based on values of this field of table ADRC.
    Now, I need to maintain attribute values for this attribute for each OU to get BP determination.
    The problem is that I need to have many different values in each OU for this attribute; for a several value entries, I need to automatically determine a OU for each BP.
    Is there any way to set this values from a pre-created  table or do I need to set this manually (all values in tx PPOSA_CRM for eah OU) ?
    EX: OU 1 values 100101, 100102, 100103u2026 100999
          OU 2 values 010110, 010111, 010112, u2026010199     
    Best Regards,
    Teresa Lopea

    check this link for [attributes values in organizational model|http://sapcrmlearn.blogspot.com/2009/02/organization-model.html]

  • Organizational Model - WebUI business role assignment

    We have created the organizational model in our system where we have the levels that are tied to a specific business role.   We have been manually assigning all of our users to these organizational model levels in order to have the business role assignment.   I am curious if there is a program or easier way to do this than to have to create the assignment to the employee record manually in the org model.
    Any help would be greatly appreciated. 
    Thanks,
    Darcie

    Hi Robert,
    maintaining the user profile directly may be easier with only a few employees but for large companies this method will end up being more maintenance intensive.
    for Org you only have to maintain it on the Org unit or position and all employees underneath will inherit the role; whether it's 2 individuals or 2000. and if the person is moved into a different position laterally or through promotion there would be no maintenance required as the information would replicate from HR (if you use/have the system) and the person would inherit the new position and role automatically.
    for User parameter if you only have 2 individuals it is easier but 2000 is too much to maintain. there is some automation but would require you to create them and run them yourself.
    pfcg at most companies do not fall under general master data maintenance and would require involvement from the security group and they often do not want to generate empty or unnecessary security/authorization profiles - the maintenance workload is shifted to them also in this case.
    regards.

  • Multiple Sold-to-Parties in Organizational Model

    Dear All,
    I've made an Organizational Model with multiple Sold-to-Parties. With that the same amount of Distribution Channels and Divisions have to be maintained, which i have done.
    The problem now is that i can't seem to maintain the relation of those Distribution Channels and Divisions with the Business Partner in the Sales area Data of the Sold-to-Party in transaction BP. I can only choose between the original Sales Organization, Distribution Channel, and Division.
    The only thing that has changed is that it isn't called Distribution Channel 01 / Division 01 anymore, but the name i gave it. That is the strange part too, since that's done in the same transaction where i've added the other Distribution Channels and Divisions too.
    Hopefully anyone can tell me how the Distribution Channels and Divisions i've added will show up in the Sales Area Data in order to link them to the Sold-to-Party.
    Thanks in advance,
    R.Kunst

    Hi Gun. and Jay.
    Thanks for both of your reactions, you're both thinking in the same direction as I am, and where I think we should look for the solution to this problem...
    Gun: You've understood me right and yes, I've already tried exactly what you've told me, but that doesn't work somehow.
    What I mean by the line you didn't understand is this:,I've made changes to the Distribution Channel and Division that were already provided by SAP, and those changes show up in the Sales Area Data. The Divisions and Distribution Channel I've added don't show up though. So i know I've changed the settings in the correct Transaction, but they still don't show up.
    Jay: I've also tried what you're telling me, because I think that should be the right way too, but that didn't work and I don't know why...
    Hopefully we can find an answer to this together since I've already heard from more people who have encountered the same problem.
    Best Regards,
    Reinier Kunst
    NewColutions B.V.

  • Change organizational model

    Hello,
    at the beginning of CRM in our company we created an organizational model. There we have a hierarchy with sales organisation --> sales buro --> sales group.
    Now we have a new office in another country. For the new office we have to create a new sales organisation, four new sales buro and four new sales group.
    I find the posibility to create these in SPRO --> SAP Reference IMG --> CRM --> Master Data --> Organizational Management --> Organizational Model --> Change Organizational Model.
    If I create a new instance here it gets the next available ID.
    In the PCUI fields these instances are sorted of the ID. Is there any possibility to achieve that the new sales organisation appears between the existing sales organisations?
    Thanks for your help!
    Regards
    Philipp

    Hi,
    whatever the orgn you have created  select that and under that create this orgn.
    I hope this works
    Regards,
    Madhuri

Maybe you are looking for