Function to update table FMIOI
hi
i need to update field USERDIM in table FMIOI while using transaction FMJ2 Does anyone know about BAPI/USER-EXIT that i can use in order to update this fiels.
I DONT WANT TO USE DIRECT UPDATE !
thanks,
AMI
There are a number of notes related to this.
Rob
Similar Messages
-
Update partner function in KNVP table using FM sd_customer-maintain_all
Hi All,
I have to update Partner Function PARVW in KNVP table using FM sd_customer_maintain_all.
I had already created a BDC program for updating which is running successfully.
But my requirement is to create a BAPI using FM customermaintain_all.
Ex: Tcode VD02
KUNNR PARVW KUNN2
Old data 123 Z1 70006666
123 Z2 70007777
Req. output 123 Z1 70006666
123 Z1 70007777
PARVW Z2 should not exist after updation.
When updating, I am getting the error message to my inbox as
Error Info... F2 802: System error in table KNVP
The above error is triggered while committing work after execution of SD_CUSTOMER_MAINTAIN_ALL.
The options I tried while looping at internal table containing kunnr, parvw & kunn2
CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
EXPORTING
I_KNA1 = w_kna1
I_KNB1 =
I_KNVV = w_knvv
I_BAPIADDR1 =
I_BAPIADDR2 =
I_MAINTAIN_ADDRESS_BY_KNA1 = ' '
I_KNB1_REFERENCE = ' '
I_FORCE_EXTERNAL_NUMBER_RANGE = ' '
I_NO_BANK_MASTER_UPDATE = ' '
I_CUSTOMER_IS_CONSUMER = ' '
I_RAISE_NO_BTE = ' '
PI_POSTFLAG = 'X'
PI_CAM_CHANGED = ' '
PI_ADD_ON_DATA =
I_FROM_CUSTOMERMASTER = ' '
IMPORTING
E_KUNNR =
O_KNA1 =
E_SD_CUST_1321_DONE =
TABLES
T_XKNAS =
T_XKNBK =
T_XKNB5 =
T_XKNEX =
T_XKNVA =
T_XKNVD =
T_XKNVI =
T_XKNVK =
T_XKNVL =
T_XKNVP = I_XKNVP
T_XKNZA =
T_YKNAS =
T_YKNBK =
T_YKNB5 =
T_YKNEX =
T_YKNVA =
T_YKNVD =
T_YKNVI =
T_YKNVK =
T_YKNVL =
T_YKNVP = i_yknvp ***
T_YKNZA =
T_UPD_TXT =
EXCEPTIONS
CLIENT_ERROR = 1
KNA1_INCOMPLETE = 2
KNB1_INCOMPLETE = 3
KNB5_INCOMPLETE = 4
KNVV_INCOMPLETE = 5
KUNNR_NOT_UNIQUE = 6
SALES_AREA_NOT_UNIQUE = 7
SALES_AREA_NOT_VALID = 8
INSERT_UPDATE_CONFLICT = 9
NUMBER_ASSIGNMENT_ERROR = 10
NUMBER_NOT_IN_RANGE = 11
NUMBER_RANGE_NOT_EXTERN = 12
NUMBER_RANGE_NOT_INTERN = 13
ACCOUNT_GROUP_NOT_VALID = 14
PARNR_INVALID = 15
BANK_ADDRESS_INVALID = 16
TAX_DATA_NOT_VALID = 17
NO_AUTHORITY = 18
COMPANY_CODE_NOT_UNIQUE = 19
DUNNING_DATA_NOT_VALID = 20
KNB1_REFERENCE_INVALID = 21
CAM_ERROR = 22
OTHERS = 23.
IF sy-subrc eq 0.
Commit work and wait.
Endif.
All above tables have a field called KZ which has options
U-update
D-delete
I-insert
E- (I dont know)
Ex: T_XKNVP structure = KNVP Structure + Field KZ.
Documentation for this FM is not Available in English or German
1. I tried sending Z2 KZ as D first & Z1 with KZ as I with business partner of Z2 (KUNN2)
as single update.
Ex: T_XKNP table
KUNNR PARVW KUNN2 KZ
123 Z2 70007777 D
123 Z1 70007777 I
2. I tried it as a separate delete record and insert record i.e calling the FM twice .
3. I tried passing table T_YKNVP with old partner data + TXKNVP table new partner data
Ex: T_YKNP table
KUNNR PARVW KUNN2 KZ
123 Z2 70007777 U or space (I tried both one after another)
4. All combinations for field KZ are tried.
Please help me to overcome this problem.
I ) I need which parameters are to be passed to FM for updating partner function in KNVP table .
II) Do I need to pass structure I_KNA1 or I_KNVV to FM ? (Blank or with values corresponding to
partner function ).
III) Any sample code which can guide me.
Even a small hint or clue from you will certainly help me.
Thanks in Advance.
AJAXi have the same problem. I need to update the partner function PARVW thru a program that i created. I tried to use this FM but it didn't work. Anyone knows another FM that i can use to update the KNVP table?
-
Checking the contents of update function module log table
Dear experts,
I created several CALL FUNCTION ... IN UPDATE TASK lines and is curious about the contents of the update function module log table. How can I see its contents?
Thanks in advance.
Regards,
HarisHi Hari,
Use transaction SM13. This gives all the details
To view the details in SM13 switch on Update debugging before you call your update function module.
In debugger Settings --> Display / change Debugger settings --> Use the check box "Update Debugging" --> Press save button
So after COMMIT WORK statement, debugging will start with the update function module
During this time check the entries in SM13
Once the update is complete the entries will be removed from SM13 (Unless there is a failure)
I am not sure if there is option to view records in SM13 for which update is complete (No authorization to change settings in SM13). So i cannot check this
Regards
Rajvansh
Edited by: Rajvansh Ravi on Jul 24, 2011 3:52 PM -
Function module for Production order update (Table AFKO)
Hello All,
I know similar subject has been posted but please read the following.
SAP 4.6c doesn't provide BAPI for production order update.
We did develop an ABAP program that update production order and schedule it in a job.
We are looking of avoiding direct update in table AFKO which our program do right now.
We looked (with SE37) at either BAPI or FM to pass parameters to a functioin that would perform that update and ensure data integrity.
CO_ZV_ORDER_POST seems interesting but is also using a lot of parameters and we have diffiulties to test it and understand it our dev team being fairly new.
Can somebody tell us how to use this function or tell us another FM that could be used. (ie passing internal table content (New fields values) and a key value (AUFNR)) to update table AFKO and related objects/tables
Regards
Marchi,
TABLE IS AFKO
rgds
anver
if hlped mark points -
Updating table in RFC enabled function module
Hi Experts,
I have written a RFC enabled FM in ECC which will accept a table through TABLES parameter in which two columns will be filled and will update the rest two columns. I am using modify statement to update table from work area. When I am calling this FM from APO system, I am not receiving the updated table back. I am passing table with two columns filled in each row and I am getting back as it was passed. Please let me know how to get modified table from RFC enabled FM.
Thanks in advance!Hi Nabheet, Code block is given below and calling is explained in other replys I made. I am not updating any database tables.
TYPES: BEGIN OF lty_marc,
matnr TYPE matnr,
werks TYPE werks,
mmsta TYPE dismm,
END OF lty_marc.
TYPES: BEGIN OF lty_marm,
matnr TYPE matnr,
umrez TYPE umrez,
END OF lty_marm.
DATA: lt_marc TYPE STANDARD TABLE OF lty_marc,
lt_marm TYPE STANDARD TABLE OF lty_marm,
lx_marc TYPE lty_marc,
lx_marm TYPE lty_marm,
lx_materials TYPE zmpts_snp_mat.
FIELD-SYMBOLS: <st_materials> LIKE LINE OF ct_materials.
BREAK NAGMAN02.
IF ct_materials IS NOT INITIAL.
SELECT matnr
werks
mmsta
INTO TABLE lt_marc
FROM marc
FOR ALL ENTRIES IN ct_materials
WHERE matnr = ct_materials-matnr
AND werks = ct_materials-werks.
SELECT matnr
umrez
INTO TABLE lt_marm
FROM marm
FOR ALL ENTRIES IN ct_materials
WHERE matnr = ct_materials-matnr.
LOOP AT ct_materials ASSIGNING <st_materials>.
READ TABLE lt_marc
INTO lx_marc
WITH KEY matnr = <st_materials>-matnr"lx_materials-matnr
werks = <st_materials>-werks."lx_materials-werks.
<st_materials>-mmsta = lx_marc-mmsta.
READ TABLE lt_marm
INTO lx_marm
WITH KEY matnr = <st_materials>-matnr."lx_materials-matnr.
<st_materials>-umrez = lx_marm-umrez.
ENDLOOP.
ENDIF. -
Bapi : BAPI_ALM_ORDER_MAINTAIN not updating table AFVU-USR08
Hi,
I have a requirement to update table AFVU-USR08.I am actualy dealing with tcode IW32/IW33 where in we need to update operation-->enhancement tab.I am using BAPI : BAPI_ALM_ORDER_MAINTAIN to do this.I am testing the BAPI directly( Not called in any program ),I can see a message like so and so order saved under notification,But there is no entry in table AFVU-USR08.
If any one have come across this prob. and got the sol. Pl. share it with me.
Your solution will be more helpful.
Thanks,
Bharani.Hi Ferry,
1. I have also tried ur given code before BAPI_TRANSACTION_COMMIT.
l_fname = 'SOBKZ'.
l_fvalue = 'U'.
CALL FUNCTION 'CO_BH_MOD_SINGLE_FIELDS'
EXPORTING
aufnr_imp = wa_meth-objectkey(12)
field1 = l_fname
value1 = l_fvalue.
but this program is giving dump for only this particular Value saying that This is PROTECTED field.
Can anyone help me out on How to Update Special Stock Indicator on Components Tab of Maintenance Order (IW32).
If anyone has faced such type of problem & solved it then please let me also.
2. Which BADI to use for Updating Special Stock Indicator when we press enter on Components tab in Transaction IW32 ?..
Thanks in advance,
Hope to get the solution soon from all SAP gurus.
and help will be appriciated .
Gaurav. -
Help with UPDATE table and database RELATIONSHIPS
HI there, I have been trying to create an update table for
weeks now and keep getting error messages.
The database has a table named:
"books" in the table cells are "idbook" and "book".
"suppliers" in the table cells are "idsupplier" and
"supplierName".
"category" in the table cells are "idcategory" and
categoryName"
They all have a relationships with this table:
"results" in the cells are "idbook", "idsupplier" and
"idcategory".
This "results" table brings all of the above tables together.
When I try to do an update, i am doing one to the results
table. Is this correct?
The updates have problems because when drawing the text to
the update table to view it comes in text form.
When trying to update, it wont becuase all of the cells in
the results table are numeric. This is because of the
relationships.
Can anyone suggest where i may be going wrong.
Ask anything you need to.
TAMM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editRedirectUrl)
End If
End If
End If
%>
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Session("MM_UserName") <> "") Then
Recordset1__MMColParam = Session("MM_UserName")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_connSeek_STRING
Recordset1.Source = "SELECT * FROM Query1 WHERE UserName = '"
+ Replace(Recordset1__MMColParam, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
Dim rsUpdate
Dim rsUpdate_numRows
Set rsUpdate = Server.CreateObject("ADODB.Recordset")
rsUpdate.ActiveConnection = MM_connSeek_STRING
rsUpdate.Source = "SELECT * FROM tblSpecies"
rsUpdate.CursorType = 0
rsUpdate.CursorLocation = 2
rsUpdate.LockType = 1
rsUpdate.Open()
rsUpdate_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index
Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>
<html>
<head>
<link href="css%20files/paragraph.css" rel="stylesheet"
type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new
Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0;
i<a.length; i++)
if (a
.indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a;}}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0"
marginwidth="0" marginheight="0"
onLoad="MM_preloadImages('images/Publicationb.gif','images/Factsheetsb.gif')">
<table width="100%" height="100%" border="1"
cellpadding="0" cellspacing="0" bordercolor="#5D5D5D">
<tr>
<td colspan="2">
<div align="right"></div>
<div align="left"></div>
</td>
</tr>
<tr>
<td colspan="2"><table width="100%" height="100%"
border="0" cellpadding="0" cellspacing="0"
bordercolor="#5D5D5D">
<tr>
<td valign="top"><form
ACTION="<%=MM_editAction%>" METHOD="POST" name="form1">
<table width="90%" border="0" align="center"
cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><div
align="center"></div> <table border="1" align="center"
cellpadding="2" cellspacing="0" bordercolor="#FFFFFF">
<tr bgcolor="ECECD7">
<td colspan="2"><div align="center">
<p><strong><font size="3">Update Key Word
& Category</font></strong></p>
</div>
</td>
</tr>
<tr>
<td><div align="center">
<p><font size="1">Enter Up to 10 Species /
Product
Name</font></p>
</div>
</td>
<td><div align="center">
<p><font size="1">Select a
Category</font></p>
</div>
</td>
</tr>
<tr>
<td colspan="2" bordercolor="#D0D09D">
<%
While ((Repeat1__numRows <> 0) AND (NOT
Recordset1.EOF))
%>
<table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr><td width="50%"><div align="center">
<input name="f1" type="text" id="f13"
value="<%=(Recordset1.Fields.Item("TimberSpecies").Value)%>"
size="33">
</div></td>
<td width="45%"><div
align="center"></div></td></tr></table>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Recordset1.MoveNext()
Wend %>
<div align="center"> </div> <div
align="center">
</div></td></tr><tr>td
colspan="2"> </td></tr><tr><td
colspan="2"><div align="right"><p><font
size="1">To Finalise Your Changes Please Press the Update
Button
<input name="update2" type="submit" id="update"
value="Update">
<input type="hidden" name="MM_update" value="form1">
<input type="hidden" name="MM_recordId" value="<%=
rsUpdate.Fields.Item("TimberSpecies").Value %>"> -
Call function in update task empty variables error
Hello,
I'm experiencing a weird error while using the addition "In update task".
My Scenario is the following:
Use the bapi_goodsmvt_create -> if there are no errors, fill some values and call my function and then commit everything.
The problem is, when the function runs in update task, all import parameters are empty!
Also, this only happens in the following code structure
CALL METHOD run_migo( IMPORTING bapireturn = t_bapireturn).
IF t_bapireturn IS INITIAL.
CALL METHOD save_custom_tables. "this runs my function 'IN UPDATE TASK'
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
if I commit inside the method SAVE_CUSTOM_TABLES, the data is passed normally to the function, if I commit like the code above, everything is empty.Here's the code:
METHOD save_partial.
DATA: t_wegritm LIKE gt_wegritm,
t_tegrp_parc TYPE TABLE OF ztegrp_parc,
w_tegrp_parc TYPE ztegrp_parc,
w_tegrk_parc TYPE ztegrk_parc.
FIELD-SYMBOLS <w_wegritm> LIKE LINE OF t_wegritm.
t_wegritm = gt_wegritm.
DELETE t_wegritm WHERE mengee IS INITIAL.
CHECK NOT t_wegritm IS INITIAL.
*-->save xml iten
LOOP AT t_wegritm ASSIGNING <w_wegritm>.
MOVE-CORRESPONDING <w_wegritm> TO w_tegrp_parc.
w_tegrp_parc-id = gw_tegrk-id.
w_tegrp_parc-gr_docto = <w_wegritm>-gr_docto.
w_tegrp_parc-gr_mjahr = <w_wegritm>-gr_mjahr.
w_tegrp_parc-gr_zeile = <w_wegritm>-gr_zeile.
APPEND w_tegrp_parc TO t_tegrp_parc.
ENDLOOP.
MOVE-CORRESPONDING gw_tegrk TO w_tegrk_parc.
CALL FUNCTION 'Z_SAVE_PARTIAL'
IN UPDATE TASK
EXPORTING
iw_tegrk_parc = w_tegrk_parc
TABLES
it_tegrp_parc = t_tegrp_parc.
ENDMETHOD.
I tried to re-create this scenario with a local class, but the code that I originally sent worked(the commit work outside of the routine). -
Different exchange rate in tables FMIOI and FMIFIIT for same purchase order
Hello,
I'm working in ECC 6 system with Former budget. My company code is in EUR currency.
I create a purchase order in 100 GBP and the exchange rate entered in the purchase order is 0,83 GBP for 1 EUR (100 GBP = 120,48 EUR).
When I create an invoice linked to the purchase order, the exchange rate is 0,85 GBP for 1 EUR (100 GBP = 117,65 EUR).
in the table FMIFIIT, the amount for the invoice is 117,65 EUR.
and in the table FMIOI, the amount for the reduction of the PO is 120,48 EUR.
Why is the reduction of the purchase order taking the exchange rate from the PO? and not from the exchange rate of the invoice?
Normally, the reduction of the PO should have the same amount as the invoice.
Could someone help me about this?
How can I do to correct the amount in EUR for the PO?
Thanks for your help.
Regards,
ChiachenHi,
Normally, the reduction of the PO should have the same amount as the invoice.
This is incorrect, please consult note 418914.
So, the situation you describe is normal behaviour, under assumption that your unit of measure is updated on value-based level.
Regards,
Eli -
API/package/procedure/function for updating physical attributes in Org/Mast
I need some kind of procedure or function for updating the weight, volume, and dimensions in the organization and master items forms. We have almost 350,000 items and I want to update them in batch. Is there an API of some kind for this? I would do a simple update but I want to make sure there's no additional logic necessary (other tables that are updated during the process of updating those fields, etc).
Thanks!here is for API's you need to check...
You can use Decimal & UOM Quantity API
These APIs are used to handle item decimal quantities:
Convert from one UOM to another
Validate quantities at input time
Validate quantities at display/output time
Quantity Comparison
Get UOM information
For your convenience, I am giving you the API as below:
/*===========================================================================+
| Copyright (c) 1999 Oracle Corporation |
| Redwood Shores, California, USA |
| All rights reserved. |
+===========================================================================*/
/*-----------------------------------------------------------------------+
|This package contains procedures relevent to item decimal quantity |
|processing. This package contains routines to: |
|(1)validate item quantities based on UOM and decimal precision rules |
|(2)validate whether the UOM controls and decimal precision rules |
| themselves are correct based on functionality planned. For reviewing|
| UOM and decimal quantity functional design details, please visit the|
| following URL: |
| "http//apps-us.oracle.com/inv/development/designs_120/ |
| decimal_precision/decimal_precision.html" |
|But here are a few basics to give background context: |
| |
| "Item Quantity" -- The item's quantity is described by the item |
| identifier, the unit of measure (e.g. grams, kilos, etc), and a |
| number value to indicate the amount in that unit of measure. |
| |
| "Unit of Measure" -- Units of measure belong to unit of measure |
| classes(e.g. weight, volume, length, etc). Each unit of measure class|
| has actual units of measure that belong to that class (e.g. the |
| weight class may have units of measures like, "grams", "kilos", etc).|
| |
| "UOM Conversion" --Users can set up conversion rates between UOMs in |
| them same UOM class, by defining conversions to the base UOM. These |
| are standard conversions. Item-level intra-class conversions may also|
| be defined. When doing intra-class conversions, item-level |
| intra-class conversions are used first if defined, and then standard |
| conversions are used. |
| Users can define inter-class conversions. Inter-class Conversions may|
| also be defined at the lot/sublot levels. For inter-class conversions|
| sublot, lot, and then item inter-class conversions will be used in |
| in order. If lot-lvel conversion is not defined, then item-level |
| conversion is used. A strict hierarchy is imposed. |
| |
| "TU" -- Trasactable Unit.A UOM may have a TU. This implies |
| that when transacting in this UOM, any item's quantities will be |
| forced to be integer multiples of this TU quantity. The TU may also |
| be declared at the item level. The TU quantity at the item level may |
| be different from the UOM level TU, and if defined, item level TU |
| takes precedance. |
| |
| "Decimal Precision"--Users have a choice of setting decimal precision|
| at the base UOM for each UOM class. All other UOMs in that class get |
| get their decimal precisions derived from the base UOM decimal |
| precision, the converison rate, and TUs, if they are |
| being used. |
| |
| |
| "Conversion Rate Tolerance" -- This is a tolerance that may be set |
| when conversion rate cannot be not strictly fixed. Example: |
| 1 Chicken = 2 pounds (plus or minus 0.7 pounds). This 0.7 pounds is |
| the conversion rate tolerance. Conversion rate tolerance is only |
| definable at inter-class UOM conversions, at item or lot/sublot level|
| |
| History |
| 04/08/99 Mansoor Jafri Created Package Spec |
| 04/26/99 Mansoor Jafri Updated with TU at 3 levels as |
| opposed to MTU at 2 and atomic at|
| UOM class level. |
| 04/29/99 Mansoor Jafri Updated document with lot/sublot |
| conversions. Also, removed |
| "atomic" as a separate control, |
| since this can |
| implemented as a TU at base UOM |
| level with an integer quantity. |
| 05/03/99 Mansoor Jafri Updated the package with sublot |
| level control. Also, changed name|
| of DTU to TU, so that it fits |
| better in the "process" market. |
| Also, conformed to BOI API stds. |
+-----------------------------------------------------------------------*/
SET VERIFY OFF
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
CREATE OR REPLACE PACKAGE inv_decimals_pub AS
/* $Header: INVDECPS.pls 118.3 99/05/03 18:12:27 mjafri noship $ */
/*--------------------------------------------------------------------------+
|Procedure validate_compare_quantities(..)
|Returns the quantity converted from the first UOM in the second UOM.
|If quantities in 2 UOMs are already available, then this procedure will
|compare and validate these quantities based on conversion rates
|and UOM and decimal qty controls. This procedure may be used to validate
|scenarios where quatities are entered in dual UOMs. We want to make sure
|quantities are valid based on conversion, TUs, and conversion
|rate tolerances.
|
|Procedure validate_and_compare(
|p_api_version_number IN NUMBER, -- version # of API
|p_init_msg_list IN VARCHAR2, -- whether to initialize list
|p_inventory_item_id IN NUMBER, -- inventory_item_id
|p_organization_id IN NUMBER, -- organization_id
|p_lot_control_code IN NUMBER, -- item's lot control code
|p_lot_number IN VARCHAR2, -- lot number
|p_sub_lot_control_code IN NUMBER, --sub lot control code
|p_sublot_number IN VARCHAR2, -- sublot number
|p_from_quantity IN NUMBER, -- qty in first UOM
|p_from_uom_code IN VARCHAR2, -- UOM of fisrt qty
|p_to_uom_code IN VARCHAR2, -- UOM of second qty
|p_to_quantity_to_check IN NUMBER, -- qty in second UOM
|x_resultant_to_quantity OUT NUMBER, -- calculated qty in second UOM
|x_comparison OUT NUMBER,--Possible values are 1,0,-1,-99
|x_msg_count OUT NUMBER, -- number of messages
|x_msg_data OUT VARCHAR2, -- populated,if msg count = 1
|x_return_status OUT VARCHAR2) -- return status
|
|Note: The comparisons are done in base UOM
| of the UOM class to which the first UOM belongs. x_comparison returns:
|-1 if from_quantity is less than to_quantity (A < B)
| 0 if from_quantity is equal to to_quantity (A = B)
| 1 if from_quantity is greater than to_quantity (A > B)
| -99 if the validations for the first/second quantity failed
| If the UOMs belong to different classes, then users can specify whether
| they want to use the effective interclass UOM conversion tolerance, say, T.
| CASE: p_use_interclass_tolerance = 1
| ------
| Q1 > Q2 if (Q1 - Q2) >= T
| Q1 = Q2 if ABS(Q1 - Q2) < T
| Q1 < Q2 if (Q1 - Q2 ) <= -T
|
|The output variable x_resultant_to_quantity will contain the converted
|quantity
|in the second UOM, using effective conversion rates.
|Usage: In a dual UOM scenario, this api will confirm whether quantities in
|the two UOMs are equal or not, based on x_comparison output variable.
+--------------------------------------------------------------------------*/
Procedure validate_compare_quantities(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_control_code IN NUMBER,
p_lot_number IN VARCHAR2,
p_sub_lot_control_code IN NUMBER,
p_sublot_number IN VARCHAR2,
p_from_quantity IN NUMBER,
p_from_uom_code IN VARCHAR2,
p_to_uom_code IN VARCHAR2,
p_to_quantity_to_check IN NUMBER,
x_resultant_to_quantity OUT NUMBER,
x_valid_conversion OUT NUMBER,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCHAR2);
/*--------------------------------------------------------------------------+
|Function convert_UOM(..) return NUMBER ;
|Returns the quantity converted from the first unit into the second unit.
|If conversion is not possible, return status is failure.
|Function convert(
|p_api_version_number IN NUMBER,
|p_init_msg_list IN VARCHAR2, -- whether to initialize list
|p_inventory_item_id IN NUMBER, -- inventory_item_id
|p_organization_id IN NUMBER, -- organization_id
|p_lot_control_code IN NUMBER, -- item's lot control code
|p_lot_number IN VARCHAR2, -- lot number
|p_sub_lot_control_code IN NUMBER,
|p_sublot_number IN VARCHAR2,
|p_from_quantity IN NUMBER, -- qty in first UOM
|p_from_uom_code IN VARCHAR2, -- UOM of fisrt qty
|p_to_uom_code IN VARCHAR2, -- UOM of second qty
|x_msg_count OUT NUMBER,
|x_msg_data OUT VARCHAR2,
|x_return_status OUT VARCHAR2)
| return NUMBER ;
|If there is an error, then -99 is returned.
|1) From_quantity must be an absolute value.
|2) From_quantity will be truncated to decimal precision in the from UOM, then
| converted to base UOM in the class,
|3) Then converted to base UOM of the
| to_UOM class,
|4) Then converted to the quantity in to_UOM,
|5) Then truncated to decimal precision of the to_UOM.
+--------------------------------------------------------------------------*/
Function convert_UOM(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_control_code IN NUMBER,
p_lot_number IN VARCHAR2,
p_sub_lot_control_code IN NUMBER,
p_sublot_number IN VARCHAR2,
p_from_quantity IN NUMBER,
p_from_uom_code IN VARCHAR2,
p_to_uom_code IN VARCHAR2,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCHAR2) return NUMBER ;
/*--------------------------------------------------------------------------+
| get_uom_properties(..)
| This procedure is used to interrogate the UOM.
| It returns:
| (1) decimal precision at the UOM level
| (2) TU, if defined, at the UOM level
| (3) Atomicity, if defined for the class that this UOM belongs to
| If some of the controls are not defined, null values are returned.
| if the UOM is not found, the return status indicates this.
| Procedure get_uom_properties(
| p_api_version_number IN NUMBER,
| p_init_msg_list IN VARCHAR2,
| p_uom_code IN VARCHAR2,
| x_decimal_precision OUT NUMBER,
| x_uom_TU OUT NUMBER,
| x_uom_class OUT VARCHAR2,
| x_msg_count OUT NUMBER,
| x_msg_data OUT VARCHAR2,
| x_return_status OUT VARCAHR2);
+--------------------------------------------------------------------------*/
Procedure get_uom_properties(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
p_uom_code IN VARCHAR2,
x_decimal_precision OUT NUMBER,
x_uom_TU OUT NUMBER,
x_uom_class OUT VARCHAR2,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCAHR2);
/*-------------------------------------------------------------------------+
| get_item_uom_properties(..)
| This procedure returns a specific item's primary UOM, TU, and tolerance
| Procedure get_item_uom_properties(
| p_api_version_number IN NUMBER,
| p_init_msg_list IN VARCHAR2,
| p_inventory_item_id IN NUMBER,
| p_organization_id IN NUMBER,
| p_lot_control_code IN NUMBER, -- item's lot control code
| p_lot_number IN VARCHAR2,
| p_sub_lot_control_code IN NUMBER,
| p_sublot_number IN VARCHAR2,
| x_primary_uom_code OUT VARCHAR2,
| x_uom_class OUT VARCHAR2,
| x_decimal_precision OUT NUMBER,
| x_item_TU OUT NUMBER,
| x_uom_TU OUT NUMBER,
| x_effective_TU OUT NUMBER,
| x_msg_count OUT NUMBER,
| x_msg_data OUT VARCHAR2,
| x_return_status OUT VARCHAR2 );
| If the item is not a valid one, then this is reflected through the
| return status.
+-------------------------------------------------------------------------*/
Procedure get_item_uom_properties(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_control_code IN NUMBER,
p_lot_number IN VARCHAR2,
p_sub_lot_control_code IN NUMBER,
p_sublot_number IN VARCHAR2,
x_primary_uom_code OUT VARCHAR2,
x_uom_class OUT VARCHAR2,
x_decimal_precision OUT NUMBER,
x_item_TU OUT NUMBER,
x_class_TU OUT NUMBER,
x_uom_TU OUT NUMBER,
x_effective_TU OUT NUMBER,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCHAR2 );
/*-------------------------------------------------------------------------+
| Procedure compare_quantities(..)
| Procedure compare_quantities(
| p_api_version_number IN NUMBER,
| p_init_msg_list IN VARCHAR2,
| p_inventory_item_id IN NUMBER,
| p_organization_id IN NUMBER,
| p_lot_control_code IN NUMBER,
| p_lot_number IN VARCHAR2,
| p_sub_lot_control_code IN NUMBER,
| p_sublot_number IN VARCHAR2,
| p_fisrt_qauantity IN NUMBER,
| p_first_uom IN VARCHAR2,
| p_second_quantity IN NUMBER,
| p_second_uom IN VARCHAR2,
| p_use_interclass_tolerance IN VARCHAR2, -- Yes = 1, 2 = No
| x_comaprison_result OUT NUMBER,
| x_msg_count OUT NUMBER,
| x_msg_data OUT VARCHAR2,
| x_return_status OUT VARCHAR2);
|
| This procedure compares the quantities A and B and returns result in the
| output variable x_comparison_result. The comparisons are done in base UOM
| of the UOM class to which the first UOM belongs:
|-1 if quantity A is less than quantity B (A < B)
| 0 if quantity A is equal to quantity B (A = B)
| 1 if quantity A is greater than quantity B (A > B)
| If the UOMs belong to different classes, then users can specify whether
| they want to use interclass UOM conversion tolerance, say, T.
| CASE: p_use_interclass_tolerance = 1
| ------
| Q1 > Q2 if (Q1 - Q2) >= T
| Q1 = Q2 if ABS(Q1 - Q2) < T
| Q1 < Q2 if (Q1 - Q2 ) <= -T
+------------------------------------------------------------------------*/
Procedure compare_quantities(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_control_code IN NUMBER,
p_lot_number IN VARCAHR2,
p_sub_lot_control_code IN NUMBER,
p_sublot_number IN VARCHAR2,
p_fisrt_qauantity IN NUMBER,
p_first_uom IN VARCHAR2,
p_second_quantity IN NUMBER,
p_second_uom IN VARCHAR2,
p_use_interclass_tolerance IN VARCHAR2,
x_comaprison_result OUT NUMBER,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCHAR2);
/*-----------------------------------------------------------------------+
| Procedure Validate_Quantity(
| p_api_version_number IN NUMBER,
| p_init_msg_list IN VARCHAR2,
| p_inventory_item_id IN NUMBER,
| p_organization_id IN NUMBER,
| p_lot_control_code IN NUMBER,
| p_lot_number IN VARCHAR2,
| p_sub_lot_control_code IN NUMBER,
| p_sublot_number IN VARCHAR2,
| p_input_quantity IN NUMBER,
| p_UOM_code IN VARCHAR2,
| x_msg_count OUT NUMBER,
| x_msg_data OUT VARCHAR2,
| x_return_status OUT VARCHAR2);
|
| Validates and returns the quantity in this manner (the caller does not need
| to adjust the result):
| 0. Truncate to and validate decimal precision
| 1. Validate quantity with respect to TU controls.
+-------------------------------------------------------------------------*/
Procedure Validate_Quantity(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_control_code IN NUMBER,
p_lot_number IN VARCAHR2,
p_sub_lot_control_code IN NUMBER,
p_sublot_number IN VARCHAR2,
p_input_quantity IN NUMBER,
p_UOM_code IN VARCHAR2,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCHAR2);
/*------------------------------------------------------------------------+
| Function Truncate_Quantity(
| p_api_version_number IN NUMBER,
| p_init_msg_list IN VARCHAR2,
| p_inventory_item_id IN NUMBER,
| p_organization_id IN NUMBER,
| p_lot_control_code IN NUMBER,
| p_lot_number IN VARCHAR2,
| p_sub_lot_control_code IN NUMBER,
| p_sublot_number IN VARCHAR2,
| p_input_quantity IN NUMBER,
| p_UOM_code IN VARCHAR2,
| x_msg_count OUT NUMBER,
| x_msg_data OUT VARCHAR2,
| x_return_status OUT VARCHAR2) return NUMBER;
|
| Truncates the quantity to decimal precision of the UOM.
| In case of error conditions, -99 is returned.
+------------------------------------------------------------------------*/
Function Truncate_Quantity(
p_api_version_number IN NUMBER,
p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
p_inventory_item_id IN NUMBER,
p_organization_id IN NUMBER,
p_lot_control_code IN NUMBER,
p_lot_number IN VARCHAR2,
p_sub_lot_control_code IN NUMBER,
p_sublot_number IN VARCHAR2,
p_input_quantity IN NUMBER,
p_UOM_code IN VARCHAR2,
x_msg_count OUT NUMBER,
x_msg_data OUT VARCHAR2,
x_return_status OUT VARCHAR2) return NUMBER;
* show errors package INV_DECIMALS_PUB
* SELECT to_date('SQLERROR') FROM user_errors
* WHERE name = 'INV_DECIMALS_PUB'
* AND type = 'PACKAGE';
commit;
exit; -
Queries on Call Function In update Task
Hi ,
I have a requirement where I have to update a ztable in background once I execute the report.THe requirement is to exceute the updation in background.Will
Call funtion in update task help me?If yes, I have never used call function in update task .so can you guide me on the same.If no, how best can I acheive this?
Thanks & Regards,
JyotsnaHi,
look F1 to call function pls:
It is not executed at once, but the data passed with EXPORTING or TABLES is placed in a database table and a subsequent COMMIT WORK then causes the function module to be executed by the update task.
-> so in error case you can analyse err. with TA SM13
(update records)
regards Andreas -
Automatically updating table column in OBIEE
Hi folks,
I have a requirement for say i have to update a table column based on a condition, but this update should happen on daily basis (i mean it should be scheduled once daily) by checking if any records in that column meets the condition then update it
example :- column='Pending' then update it with 'Approved' . As transactions records comes on daily into the table.OBIEE should check and update the row so next time it doesnt show this row as 'Pending' .
I have thought of 2 approaches for this
1) Through writeback it is possible to update but manually ( the issue is it cant be automated or scheduled on daily basis and update multiple records on a go)
2) Writing a stored procedure or function for update, but how can i accomplish this procedure to be scheduled or run once daily.how to use it?
Any thoughts on the above two points or any method you guys can think off.
Any help is appreciated !
Cheers,
KKKranthi,
This shud be easy...
- Create a direct database request...with Update Statement
eg: Update table set col = 'Approved' where col = 'Pending'
- Create an ibot using the above DDR and schedule it on daily basis.
This will update the full table with new value on daily basis based on the condition -
Load / Update Table from a .csv file
Hi All,
I thought I would just throw this out there..be kind.
I have a requirement to build a page that allows the user to upload a excel (well I'll have them save it as a .csv) and upate an existing table in their schema.
I have successfully created a similar page for inserting into an existing table however my update is not working. Then I realized what the Oracle Application Express Tool does that for me on, LOAD DATA page. The feature I like best is that after browsing for the file and clicking next it shows the column header and the row data underneath. I would really like to duplicate the functionality of this page.
I looked into the flows schema found related procedures , for example wwv_flow_load_excel_data,but I'm lost on how to use them.
Is there a way to duplicate the LOAD DATA Page and fit it to meet the users requirement?
Also I have included my coding attempt :
CREATE OR REPLACE PROCEDURE exceltotable2
AS
NAME: exceltotable
PURPOSE:
REVISIONS:
Ver Date Author Description
1.0 11/17/2008 1. Created this procedure.
NOTES:
Automatically available Auto Replace Keywords:
Object Name: exceltotable
Sysdate: 11/17/2008
Date and Time: 11/17/2008, 2:02:03 PM, and 11/17/2008 2:02:03 PM
Username: (set in TOAD Options, Procedure Editor)
Table Name: (set in the "New PL/SQL Object" dialog)
v_blob_data BLOB;
v_blob_len NUMBER;
v_position NUMBER;
v_raw_chunk RAW (10000);
v_char CHAR (1);
c_chunk_len NUMBER := 1;
v_line VARCHAR2 (32767) := NULL;
v_data_array APEX_APPLICATION_GLOBAL.VC_ARR2;
v_rows NUMBER;
v_asset_id NUMBER;
v_new_location GINOS_LOCATION.ID_LOCATION%TYPE ;
sql_stmt VARCHAR2 (2000);
--delete from data_upld;
BEGIN
-- Read data from wwv_flow_files</span>
SELECT blob_content
INTO v_blob_data
FROM wwv_flow_file_objects$
WHERE NAME = 'F32700/scannedforrdc.csv';
--(used this for testing)
-- WHERE last_updated = (select max(last_updated) from WWV_FLOW_FILE_OBJECTS$ where UPDATED_BY
-- = 'ADMIN')
--and id = (select max(id) from WWV_FLOW_FILE_OBJECTS$ where UPDATED_BY = 'ADMIN');
v_blob_len := DBMS_LOB.getlength (v_blob_data);
v_position := 1;
-- Read and convert binary to char</span>
WHILE (v_position <= v_blob_len)
LOOP
v_raw_chunk := DBMS_LOB.SUBSTR (v_blob_data, c_chunk_len, v_position);
v_char := CHR (hex_to_decimal(RAWTOHEX(v_raw_chunk)));
v_line := v_line || v_char;
v_position := v_position + c_chunk_len;
-- When a whole line is retrieved </span>
IF v_char = CHR (10)
THEN
-- Convert comma to : to use wwv_flow_utilities </span>
v_line := REPLACE (v_line, ',', ':');
-- Convert each column separated by : into array of data </span>
v_data_array := APEX_UTIL.string_to_table (v_line);
-- Update assets with RDC location
-- First get the current location id of the RDC
-- Next take each serial number from the spreadsheet and update the location and rack details </span>
Select id_location into v_new_location from ginos_location gl, ginos_site gs, ginos_agency ga
where nm_office = 'OCFS Resource Distribution Center' and gl.id_site = gs.id_site
And gl.id_agency = ga.id_agency And ga.nm_agency ='Office of Children and Family Services';
-- test with only the serial number/location
UPDATE GINOS_ASSET SET ID_LOCATION = v_new_location WHERE NM_SERIAL = v_data_array(1);
-- Clear out
v_line := NULL;
v_rows := v_rows + 1;
END IF;
END LOOP;
END;
Any advice/assistance is always appreciated
Thanks
MoeDan
Thank You for your reply, I actually bookmark your site yesterday when googling this problem.
I am going to give it a try. I have ran through steps 1 through 4. Step 4 , I modified to my page.
Just a little more help..
do I put my update table code in the procedure (step 4) - how do I view and extract the information from the collection?
DECLARE
l_blob BLOB;
PROCEDURE cleanup
IS
BEGIN
DELETE FROM WWV_FLOW_FILES
WHERE name = :P103_UPLOAD;
END cleanup;
BEGIN
SELECT blob_content
INTO l_blob
FROM WWV_FLOW_FILES
WHERE name = :P103_UPLOAD;
csv.create_collection_from_blob(l_blob, 'CSV_UPLOAD', 'Y');
-- I looked in the ginodba schema (the ref schema for the app) for this collection but it's not there
cleanup;
EXCEPTION
WHEN OTHERS
THEN
cleanup;
RAISE;
END;
Thanks Again
MOe -
Reg: Functions of Planning Table MF50
Hi Friend,
i wish you all a happy Friendship day...
I need to know the following Function in REM,
1. Functions of Planning table.(MF50)
2.When we carry out Backflush , Components , activities get Posted. where can i find the reports for activities and components posted.
3. Preliminary Costing Values.
Thanks in advance.Hi dayanan,
1. Planning table MF50 is used to create a manual planned order respective date wise inspite of creating in MD11 one by one.
2. When you assembly backflush in MFBF your component consumption and Activities will get posted automatically GI, GR & Activities will be posted. This component consumption you can see through movement type 261 in MB51. Cost of that consumption and activities you can monitor in Product cost collector. PPC. for that go to KKF6N-select version- Header---- costs.... There you can refer the updated cost of consumption and MHR.
3. If you to consume additional component without GR that means only GI, goto MFBF and select component backflush and enter the component which you want to consume.
Hope this will clear all your doubts.
Regards,
Santhosh. -
Hi Experts,
I have a concern regarding updating the field in EQUI.
I need to update table IHPA parnr and table EQUI-kunde. I used PM_PARTNER_UPDATE for updating table ihpa, but how can i update the kunde in table EQUI?Hi Raymond,
Thank you for the response.
BAPI_EQUI_CHANGE does not have a field named kunde for CurCustomer that is why i didn't used it, then i search in the net and saw a code and tried it. But in my program it returns me a "Not Successful" output.
SELECT objnr
INTO gt_fxihpa-objnr
FROM equi
WHERE equnr EQ p_equnr.
ENDSELECT.
SELECT parvw
INTO gt_fxihpa-parvw
FROM ihpa
WHERE objnr EQ gt_fxihpa-objnr.
ENDSELECT.
IF r_emp EQ 'X'.
gt_fxihpa-parvw_ext = 'VW'. "'Assigned to Employee'.
ELSEIF r_third EQ 'X'.
gt_fxihpa-parvw_ext = 'VN'. " 'Assigned to Vendor'.
ENDIF.
gt_fxihpa-mandt = sy-mandt.
gt_fxihpa-erdat = sy-datum.
gt_fxihpa-erzeit = sy-uzeit.
gt_fxihpa-ernam = sy-uname.
gt_fxihpa-aedat = sy-datum.
gt_fxihpa-aezeit = sy-uzeit.
gt_fxihpa-aenam = sy-uname.
gt_fxihpa-obtyp = 'IEQ'.
gt_fxihpa-parnr = p_kunnr.
gt_fxihpa-updkz = 'U'.
APPEND gt_fxihpa.
IF NOT gt_fxihpa IS INITIAL.
CALL FUNCTION 'PM_PARTNER_UPDATE'
TABLES
fxihpa = gt_fxihpa.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ENDIF.
DATA: l_valid_equi LIKE itob,
l_itob_old LIKE itob,
l_itob_new LIKE itob,
l_valid_equi_new LIKE itob,
l_itob_rec LIKE itob,
gt_equipment LIKE bapi_itob_parms-equipment.
gt_equipment = p_equnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_equnr
IMPORTING
output = gt_equipment.
CALL FUNCTION 'ITOB_EQUIPMENT_READ_SINGLE'
exporting
i_lock = 'X'
i_objnr = gt_equipment
importing
e_object_rec = l_valid_equi
exceptions
not_successful = 1
others = 2.
IF sy-subrc = 0.
l_valid_equi_new = l_valid_equi.
l_valid_equi_new-kunde = p_kunnr.
move: l_valid_equi to l_itob_old,
l_valid_equi_new to l_itob_new.
CLEAR l_itob_rec.
* Function module to udate equipment data
call function 'ITOB_EQUIPMENT_MODIFY_SINGLE'
exporting
* i_auth_tcode = 'IE02'
i_filter_data = space
i_write_buffer = 'X'
i_post_buffer = 'X'
i_commit_work = 'X'
i_object_rec = l_itob_new
i_object_rec_old = l_itob_old
importing
e_object_rec = l_itob_rec
exceptions
not_successful = 1
others = 2.
IF sy-subrc = 0.
ENDIF.
ENDIF.
Maybe you are looking for
-
HOW TO: Add /manipulate columns for a GridControl
HOW TO: Add /manipulate columns for a GridControl when the columns (attributes) are from different entity objects. This HOWTO describes the basic steps of using attributes from different entity objects for a GridControl. One way you can create a Grid
-
Why should it take over an hour to export a video that is less than 2 minutes long?
The short clip I have is only 1;51 long, but Media Encoder has been slaving away at it for over 20 minutes and still says over an hour remaining. The only thing I am doing differently with this clip is I have sped up the action x10 to give it a "Keys
-
How to varify click and buy account
Trying to down load an app with a new iPad 2 it keeps coming up with problem with previous down load need to varify your click and buy account details looked at card details all correct with money in account address all ok ect still can't get it to w
-
A few random questions- email, internet, etc.
Hello. I'm a new Mac owner...and a little frustrated. I've been reading forums and help pages for the last two months. I have several questions. What's the most effective way to receive answers? Post all, hope for the best? or one question at a time?
-
QuickTime problems when installing Itunes 7...
Everytime I try to update to Itunes 7 + QuickTime, I get half way through installation and then this note pops up. Could not open key: HKEYLOCALMACHINE\Software\Classes\QuickTimePlayerLib.QuickTimePlayerApp\CLSID. Verify that you have sufficient acce