COMPLEX PO -  NO FUNCTIONALITY TO REDUCE TO VALUE OF RETAINAGE HELD

Hi,
R12 Purchasing provides Retainage functionality. Retainage represents funds withheld from payment to ensure that the contractor finishes work as agreed. The buying organization releases these funds only after verifying that the contractor has fulfilled all contractual obligations. Retainage is also called "retention" or "contractual withholds".
The only way to reduce the Retainage amount held is to create a retainage release invoice which then pays the Supplier.
No functionality is provided to reduce the value of the retainage down to reflect the buying companies use of the funds to penalise the contractor if they have not fulfilled all contractual obligations.
This is an incomplete solution. the purpose of retainage is to provide the buying company funds to recompense failure of the selling company. But how do we record use of those funds?
If there is no mechanism to reduce the value of the retainage held then the value is always available to be paid to the contractor
Thanks
Umesh
Edited by: Umesh Chandra Moharana on Jun 25, 2009 4:05 PM
Edited by: Umesh Chandra Moharana on Jul 2, 2009 9:40 AM

Umesh
If you want to partially pay (out of retained amount), create AP invoice manually (which is the way to get rid of retained amount) for that amount and pass GL entries in GL for the remaining.
If decide not to pay at all, you can either manually pass entries in GL or enter AP invoice manually and cancel the invoice and pass entries manually to get rid of retained account value.
Also something can be done in the SLA to create these entires automatically (with custom AAD)
Thanks
Nagamohan

Similar Messages

  • Use Planning Function to calculate new value

    Hi All,
    I have what seems to be a simple problem, but no success in resolving.
    I have 3 planning keyfigures:
    -Units
    -Price
    -Value
    The price field is populated from another planning sheet.
    The unit field is entered by the user.
    The value should be calculated by planning function when button pushed.
    I have tried just basic "Value=Units*Price", but always comes back zero.
    I have also tried more complex "{Value, CharA, CharB, CharC} = {Units, CharA, CharB...." for each characteristic.  Still zero.
    It must be multipling by zero, but not sure how to avoid.
    If I put "Value=Price", it works. If I put "Value=Units", it works. If I put "Value=Units+Price", it works.
    Please help.
    Terrence

A: Use Planning Function to calculate new value

Here is the details.
In the infoprovider the data is like this:
Country/    Product/     Unit Sales/     Price/      Value
DE/             Shirt/            50/                 0/             0
DE/             Shirt/              0/             100.00/        0
The query is display:
Country/    Product/     Unit Sales/     Price/      Value
DE/             Shirt/            50/              100.00/         0
I have tried the following 2 formulas:
Formula 1:
= {Unit Sales} *
Formula 2:
FOREACH Country, Product.
{Value, Country, Product} = {Unit Sales, Country, Product} * {Price, Country, Product}
ENDFOR.
Both return zero for values.
Thanks,
Terrence

Here is the details.
In the infoprovider the data is like this:
Country/    Product/     Unit Sales/     Price/      Value
DE/             Shirt/            50/                 0/             0
DE/             Shirt/              0/             100.00/        0
The query is display:
Country/    Product/     Unit Sales/     Price/      Value
DE/             Shirt/            50/              100.00/         0
I have tried the following 2 formulas:
Formula 1:
= {Unit Sales} *
Formula 2:
FOREACH Country, Product.
{Value, Country, Product} = {Unit Sales, Country, Product} * {Price, Country, Product}
ENDFOR.
Both return zero for values.
Thanks,
Terrence

  • Derelease of Purchase order in case of reducing the value

    Hi Friends,
    When ever we increase the value in Purchase Order it will derelease.
    But we want to derelease the Purchase Orders if we reduce the value
    also. Can we do this with any user exit or BADI.
    We also want to have if any changes happen in perticular field, it shoudl DERELEASE PO, how to do this ?
    Regards,
    Sai Krishna

    Hi,
    We can do using the following logic / BADI / user exit:
    User exit
    During the individual release for purchase requisitions, the user exit is called in function module ME_REL_STRATEGIE_EBAN, in the overall release, it is called in function module ME_REL_GENERAL_STRATEGY_EBAN.
    (Enhancement M06B0002, EXIT_SAPLEBND_001, ZXM06U13)
    During the release for purchase orders the user exit in function module ME_REL_STRATEGIE_EKKO is called, in releases > 3.1X in program MM06EF0S_STRATEGIE_CEKKO (Enhancement M06E0004, EXIT_SAPLEBND_002, ZXM06U22).
    The data is available in the user exit in structure I_CEBAN or I_CEKKO. The transfer from this structure to the calling program runs using structure E_CEBAN or E_CEKKO. In the user exit, I_CEBAN must be copied to E_CEBAN or I_CEKKO must be copied to E_CEKKO anywhere in the user exit, for example E_CEBAN = I_CEBAN.
    Regards

  • Calling function from list of values section?

    can i call a function from list of values(LOV) section as well? I know we can sql query but udf is supported?

    See this recent thread: Display as Text (LOV) or join
    Scott

  • Function which returns multiple values that can then be used in an SQL Sele

    I'd like to create a function which returns multiple values that can then be used in an SQL Select statement's IN( ) clause
    Currently, the select statement is like (well, this is a very simplified version):
    select application, clientid
    from tbl_apps, tbl_status
    where tbl_apps.statusid = tbl_status.statusid
    and tbl_status.approved > 0;
    I'd like to pull the checking of the tbl_status into a PL/SQL function so my select would look something like :
    select application, clientid
    from tbl_apps
    where tbl_apps.statusid in (myfunction);
    So my function would be running this sql:
    select statusid from tbl_status where approved > 0;
    ... will return values 1, 5, 15, 32 (and more)
    ... but I haven't been able to figure out how to return the results so they can be used in SQL.
    Thanks for any help you can give me!!
    Trisha Gorr

    Perhaps take a look at pipelined functions:
    Single column example:
    SQL> CREATE OR REPLACE TYPE split_tbl IS TABLE OF VARCHAR2(32767);
      2  /
    Type created.
    SQL> CREATE OR REPLACE FUNCTION split (p_list VARCHAR2, p_delim VARCHAR2:=' ') RETURN SPLIT_TBL PIPELINED IS
      2      l_idx    PLS_INTEGER;
      3      l_list   VARCHAR2(32767) := p_list;
      4      l_value  VARCHAR2(32767);
      5    BEGIN
      6      LOOP
      7        l_idx := INSTR(l_list, p_delim);
      8        IF l_idx > 0 THEN
      9          PIPE ROW(SUBSTR(l_list, 1, l_idx-1));
    10          l_list := SUBSTR(l_list, l_idx+LENGTH(p_delim));
    11        ELSE
    12          PIPE ROW(l_list);
    13          EXIT;
    14        END IF;
    15      END LOOP;
    16      RETURN;
    17    END SPLIT;
    18  /
    Function created.
    SQL> SELECT column_value
      2  FROM TABLE(split('FRED,JIM,BOB,TED,MARK',','));
    COLUMN_VALUE
    FRED
    JIM
    BOB
    TED
    MARK
    SQL> create table mytable (val VARCHAR2(20));
    Table created.
    SQL> insert into mytable
      2  select column_value
      3  from TABLE(split('FRED,JIM,BOB,TED,MARK',','));
    5 rows created.
    SQL> select * from mytable;
    VAL
    FRED
    JIM
    BOB
    TED
    MARK
    SQL>Multiple column example:
    SQL> CREATE OR REPLACE TYPE myrec AS OBJECT
      2  ( col1   VARCHAR2(10),
      3    col2   VARCHAR2(10)
      4  )
      5  /
    Type created.
    SQL>
    SQL> CREATE OR REPLACE TYPE myrectable AS TABLE OF myrec
      2  /
    Type created.
    SQL>
    SQL> CREATE OR REPLACE FUNCTION pipedata(p_str IN VARCHAR2) RETURN myrectable PIPELINED IS
      2    v_str VARCHAR2(4000) := REPLACE(REPLACE(p_str, '('),')');
      3    v_obj myrec := myrec(NULL,NULL);
      4  BEGIN
      5    LOOP
      6      EXIT WHEN v_str IS NULL;
      7      v_obj.col1 := SUBSTR(v_str,1,INSTR(v_str,',')-1);
      8      v_str := SUBSTR(v_str,INSTR(v_str,',')+1);
      9      IF INSTR(v_str,',')>0 THEN
    10        v_obj.col2 := SUBSTR(v_str,1,INSTR(v_str,',')-1);
    11        v_str := SUBSTR(v_str,INSTR(v_str,',')+1);
    12      ELSE
    13        v_obj.col2 := v_str;
    14        v_str := NULL;
    15      END IF;
    16      PIPE ROW (v_obj);
    17    END LOOP;
    18    RETURN;
    19  END;
    20  /
    Function created.
    SQL>
    SQL> create table mytab (col1 varchar2(10), col2 varchar2(10));
    Table created.
    SQL>
    SQL> insert into mytab (col1, col2) select col1, col2 from table(pipedata('(1,2),(2,3),(4,5)'));
    3 rows created.
    SQL>
    SQL> select * from mytab;
    COL1       COL2
    1          2
    2          3
    4          5

  • Analytic function to retrieve a value one year ago

    Hello,
    I'm trying to find an analytic function to get a value on another row by looking on a date with Oracle 11gR2.
    I have a table with a date_id (truncated date), a flag and a measure. For each date, I have at least one row (sometimes 2), so it is gapless.
    I would like to find analytic functions to show for each date :
    sum of the measure for that date
    sum of the measure one week ago
    sum of the measure one year ago
    As it is gapless I managed to do it the week doing a group by date in a subquery and using a LAG with offset set to 7 on top of it (see below).
    However I'm struggling on how to do that for the data one year ago as we might have leap years. I cannot simply set the offset to 365.
    Is it possible to do it with a RANGE BETWEEN window clause? I can't manage to have it working with dates.
    Week :LAG with offset 7
    SQL Fiddle
    or
    create table daily_counts
      date_id date,
      internal_flag number,
      measure1 number
    insert into daily_counts values ('01-Jan-2013', 0, 8014);
    insert into daily_counts values ('01-Jan-2013', 1, 2);
    insert into daily_counts values ('02-Jan-2013', 0, 1300);
    insert into daily_counts values ('02-Jan-2013', 1, 37);
    insert into daily_counts values ('03-Jan-2013', 0, 19);
    insert into daily_counts values ('03-Jan-2013', 1, 14);
    insert into daily_counts values ('04-Jan-2013', 0, 3);
    insert into daily_counts values ('05-Jan-2013', 0, 0);
    insert into daily_counts values ('05-Jan-2013', 1, 1);
    insert into daily_counts values ('06-Jan-2013', 0, 0);
    insert into daily_counts values ('07-Jan-2013', 1, 3);
    insert into daily_counts values ('08-Jan-2013', 0, 33);
    insert into daily_counts values ('08-Jan-2013', 1, 9);
    commit;
    select
        date_id,
        total1,
        LAG(total1, 7) OVER(ORDER BY date_id) total_one_week_ago
      from
          select
            date_id,
            SUM(measure1) total1
          from daily_counts
          group by date_id
    order by 1;
    Year : no idea?
    I can't give a gapless example, would be too long but if there is a solution with the date directly :
    SQL Fiddle
    or add this to the schema above :
    insert into daily_counts values ('07-Jan-2012', 0, 11);
    insert into daily_counts values ('07-Jan-2012', 1, 1);
    insert into daily_counts values ('08-Jan-2012', 1, 4);
    Thank you for your help.
    Floyd

    Hi,
    Sorry, I;m not sure I understand the problem.
    If you are certain that there is at least 1 row for every day, then you can be sure that the GROUP BY will produce exactly 1 row per day, and you can use LAG (total1, 365) just like you already use LAG (total1, 7).
    Are you concerned about leap years?  That is, when the day is March 1, 2016, do you want the total_one_year_ago column to reflect March 1, 2015, which was 366 days earlier?  If that case, use
    date_id - ADD_MONTHS (date_id, -12)
    instead of  365.
    LAG only works with an exact number, but you can use RANGE BETWEEN with other analytic functions, such as MIN or SUM:
    SELECT DISTINCT
              date_id
    ,         SUM (measure1) OVER (PARTITION BY date_id)    AS total1
    ,         SUM (measure1) OVER ( ORDER BY      date_id
                                    RANGE BETWEEN 7 PRECEDING
                                          AND     7 PRECEDING
                                  )                       AS total1_one_week_ago
    ,         SUM (measure1) OVER ( ORDER BY      date_id
                                    RANGE BETWEEN 365 PRECEDING
                                          AND     365 PRECEDING
                                  )                       AS total1_one_year_ago
    FROM      daily_counts
    ORDER BY  date_id
    Again, use date arithmetic instead of the hard-coded 365, if that's an issue.
    As Hoek said, it really helps to post the exact results you want from the given sample data.  You're miles ahead of the people who don't even post the sample data, though.
    You're right not to post hundreds of INSERT statements to get a year's data.  Here's one way to generate sample data for lots of rows at the same time:
    -- Put a 0 into the table for every day in 2012
    INSERT INTO daily_counts (date_id, measure1)
    SELECT  DATE '2011-12-31' + LEVEL
    ,       0
    FROM    dual
    CONNECT BY LEVEL <= 366

  • Using Javascript function to change the value of a request variable

    Have a javascript function that activates onchange within a form variable. Would like the javascript function to change the value of a request variable.
    The javascript function is able to obtain the current value of the request variable ( which is 0 ) however I am unsuccessful in changing the value to 1.
    I have been trying to use the following:
         var vchange = 'request.changes_made = 1 ;' ;
         eval(vchange);
    Any ideas?

    If the user makes a change to the content of the form, and then attempts to leave the form, a javascript alert pops up giving the user the option of cancelling the submit, returning to the form and saving it.
    If there have been no changes, then the user is free to migrate to another page.
    This process is to protect users from losing valuable information but not to annoy them with "R U Sure" messages.
    Knowing the status of the form content is important to the functionality of the application.
    G

  • How to create a procedure function with a return value of ref cursor?

    Can anybody provide a sample about how to create a procedure function with a return value of REF CURSOR?
    I heard if I can create a function to return a ref cursor, I can use VB to read its recordset.
    Thanks a lot.

    http://osi.oracle.com/~tkyte/ResultSets/index.html

  • Function module for retrieving values of the Characteristics?

    Hi,
    is there a function module for retrieving values of the Characteristics?
    will reward,
    regards,
    M.

    Hello,
    Check this.
        L_OBJECT = G_T_STPO-IDNRK.
    *--- Merkmale incl. Bewertung zum Objekt/Klassenart lesen ----------*
        CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
             EXPORTING
                  CLASSTEXT          = 'X'
                  CLASSTYPE          = '300'
                  FEATURES           = 'X'
                  LANGUAGE           = SY-LANGU
                  OBJECT             = L_OBJECT
                  INITIAL_CHARACT    = ' ' "keine unbewertete M.
                  OBJECTTABLE        = 'MARA'
                  KEY_DATE           = SY-DATUM
    *            NO_VALUE_DESCRIPT  =
                  CHANGE_SERVICE_CLF = 'X'
                  INHERITED_CHAR     = 'X'
             TABLES
                  T_CLASS            =  H_CLASS
                  T_OBJECTDATA       =  H_CLOBJDAT
             EXCEPTIONS
                  NO_CLASSIFICATION  = 1
                  NO_CLASSTYPES      = 2
                  INVALID_CLASS_TYPE = 3
                  OTHERS             = 4.
    Regards,
    Vasanth

  • Function Modules for indirect values

    What are the  function modules for indirect values?

    Hi,
    The SAP function module for indirect valuation of wages is RP_FILL_WAGE_TYPE_TABLE_EXT.
    Also, if indirect valuation is being used, the annual salary field ANSAL also may not be populated. Again, there are some SAP function modules to help us out:
    RP_ANSAL_FROM_PERNR - Use this one if all you have is PERNR
    RP_ANSAL_FROM_INFOTYPE - Good if you have already data for infotypes 0001 & 0008
    RP_ANSAL_FROM_WAGETYPES - It requires a list of wage types used in 8 .
    by
    Prasad gvk.

  • Line Charts - X-axis Labels as function of X-axis value

    Hi,
    1) Is there a way to put X-Axis labels in line chart as function of X-axis values ?
    For instance, X-axis values are in minutes and I need to show those as Hours.
    I'm having Hours as separate column as well, but when its selected as X-axis value column, the line graph is disturbed.
    2) Also, how to specify the length/range of X-axis ?
    For instance, in dataset if I've x-axis values from 0 to 5 hours but still want to show on graph the X-axis till 8 hours.
    Thanks for your help in advance.
    Regards,
    Sumit

    Hi Sumit,
    I have tried following things with proper datetime format may be help you.
    1> in your applet code you can add below param
    <PARAM NAME="XAxisDateFormat" VALUE="H">
    it will display your levels in hours for more details please refer Date and Time Format under query template in MII help.
    2>In your Query template under date range you can select duration and duration unit.
    for 8 hour span you can select Duration = 8 and in duration unit = H
    I have tested it for a tag query, may be i did not understand your issue properly but hope it helps you!!!
    Regards,
    Manoj Bilthare

  • Reducing assets value

    Hello our business wants to reduce the tax value of an asset.
    I created two transaction types by copying 200/250 and restricted them to the tax area only. Is this the right way? the asset has two transactions as a result of settlements from Asset Under construction in the current year. When I try to post a retirement to reduce the value of the asset I am getting an error message
    The asset has a lot of value this year( I just
    Check amount entered (Amount is too high)
    Message no. AA317
    Diagnosis
    The retirement amount entered is higher than the sum of the transactions changing the acquisition value in area .  Taking into account the entered asset value date and the posting period, the maximum retirement amount is 1.00.
    Procedure
    Check the asset value date, the posting period, and the retirement amount.
    If there are also acquisitions from previous years on the asset, then you have to post the retirement of the acquisitions from previous years separately, using a different transaction type

    Hi,
    From your inputs, its been understood two TTY's created with standard transactions types 200/250.
    200 - Retirement without revenue, 250 - Retirement of current year acquisition w/o revenue.
    Therefore we would like you to use TTY 250 for the retiring the APC cost of current year acquistion and also you must remember that the retirement cost cannot be greater than the APC costs.
    Please let me know if you stil have any issues.
    Regards
    Govindarajan

  • Function not returning right value

    I have this following function, based on the return value from this function, I am inserting a row into the GROUP_MAP table.
    This function is returning a value greater than zero even though constrains would not let it select any rows.
    It looks as if it is not applying the "AND STRING_CODE = String_Code" constraint to the result set. If there are two records matching the groupOID I passed it is returning two as the count(*). I checked by executing the query directly and I got 0 as the result. I sounds so strange. Is there any thing I am doing wrong ?
    Thanks in Advance,
    -Bhasker
    FUNCTION FIND_CODE_GROUP (groupOID IN NUMBER, String_Code IN VARCHAR2)
                   RETURN NUMBER
              AS
                        RETURN_VAL NUMBER(10);
                   BEGIN
                        RETURN_VAL := 0;
                        SELECT
                             COUNT(*)
                        INTO
                             RETURN_VAL
                        FROM
                             GROUP_MAP
                        WHERE
                             STRING_GROUP = groupOID AND STRING_CODE = String_Code;
                        DBMS_OUTPUT.PUT_LINE('RETURN_VAL:'|| RETURN_VAL || ' String code : ' || STRING_CODE);
                        RETURN(RETURN_VAL);
                        EXCEPTION
                             WHEN OTHERS THEN
                                  RETURN(0);
                   END FIND_CODE_GROUP;

    FUNCTION FIND_CODE_GROUP (groupOID IN NUMBER, String_Code IN VARCHAR2)
                   RETURN NUMBER
              AS
                        RETURN_VAL NUMBER(10);
                   BEGIN
                        RETURN_VAL := 0;
                        SELECT
                             COUNT(*)
                        INTO
                             RETURN_VAL
                        FROM
                             GROUP_MAP
                        WHERE
                             STRING_GROUP = groupOID AND STRING_CODE = String_Code;The second parameter to your function has the same name as the column name "STRING_CODE" in your table. You should change
    the name of your second parameter to something other than "STRING_CODE".

  • XMLTABLE function not returning any values if xml has attribute "xmlns"

    Hi,
    XMLTABLE function not returning any values if xml has attribute "xmlns". Is there way to get the values if xml has attribute as "xmlns".
    create table xmltest (id number(2), xml xmltype);
    insert into xmltest values(1,
    '<?xml version="1.0"?>
    <emps>
    <emp empno="1" deptno="10" ename="John" salary="21000"/>
    <emp empno="2" deptno="10" ename="Jack" salary="310000"/>
    <emp empno="3" deptno="20" ename="Jill" salary="100001"/>
    </emps>');
    insert into xmltest values(2,
    '<?xml version="1.0"?>
    <emps xmlns="http://emp.com">
    <emp empno="1" deptno="10" ename="John" salary="21000"/>
    <emp empno="2" deptno="10" ename="Jack" salary="310000"/>
    <emp empno="3" deptno="20" ename="Jill" salary="100001"/>
    </emps>');
    commit;
    SELECT a.*
    FROM xmltest,
    XMLTABLE (
    'for $i in /emps/emp
    return $i'
    PASSING xml
    COLUMNS empno NUMBER (2) PATH '@empno',
    deptno NUMBER (3) PATH '@deptno',
    ename VARCHAR2 (10) PATH '@ename',
    salary NUMBER (10) PATH '@salary') a
    WHERE id = 1;
    The above query returning results but below query is not returning any results because of xmlns attribute.
    SELECT a.*
    FROM xmltest,
    XMLTABLE (
    'for $i in /emps/emp
    return $i'
    PASSING xml
    COLUMNS empno NUMBER (2) PATH '@empno',
    deptno NUMBER (3) PATH '@deptno',
    ename VARCHAR2 (10) PATH '@ename',
    salary NUMBER (10) PATH '@salary') a
    WHERE id = 1;
    how to get rid out of this problem.
    Thanks,
    -Mani

    Added below one in xmltable, its working now.
    XmlNamespaces(DEFAULT 'http://emp.com')

  • Function to compare particular value with LOV Additional Description column

    Hi,
    Is there an existing function that compares a value with the "Additional Description" of a particular LOV ?
    Can the comparison be done by "Adminstration - Personalization"?

    Sorry & thanks sathish,
    Now i got the result.
    SQL> select DECISIONED_STAGE_ID,DECISIONED_STAGE_USER_ID from naap10_application where APP_DECISION_DATE BETWEEN TO_DATE ('31.01.2007 00:00:00', 'DD.MM.YYYY HH24:MI:SS') AND TO_DATE ('31.01.2007 23:59:59', 'DD.MM.YYYY HH24:MI:SS')
    2 and application_id=2007010028552;
    DECISIONED_STAGE_ID DECISIONED_STAG
    2006060113 SYSTEM
    ================================
    But one doubt,
    When i created the column with the date datatype how it gets the time value,
    And in one environment db i got the result but in another environment i dont get,
    Shall i want to change any session status of date?

  • Maybe you are looking for

    • SAP Memory, Set and Get parameter

      Hi All,      I am running two programs in background from program1 Eq: Program1 --> Calls 2 programs                           Program1_01.(First Program)                           Program2_01(Second Program). Programs1 schedules Program1_01 and Prog

    • I cant download apps ... im stuck ??

      i try to download apps and i cant ... it asked me for a number which is only 10 numbers long ? and says select state .. Can any1 help me ?

    • Problem while connecting the Weblogic Domain to MySql5.

      Hi, I would like to send you the entire stacktrace.. JAVA Memory arguments: -Xms256m -Xmx768m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=192m WLS Start Mode=Development CLASSPATH=;C:\WEBLOG~1\patch_wlw1030\profiles\default\sys_manife

    • ITunes 6.0 not compatible with fifth generation Nano

      Just bought a new Nano but can't upload tracks onto it as iTunes version 6.0 isn't new enough for it. I wasn't given CD with the iPod and don't have internet access on my home PC to download the latest version onto. Any thoughts?   Windows XP  

    • General exception in deploy transformation for object "ZWAD_PPQM_Q009.

      hi experts I am getting this error when i am tring to access  report General exception in deploy transformation for object "ZWAD_PPQM_Q009. thanks