Will using a SATA extension reduce performance?
I want to extend two Sata data cables outside of my case to allow cloning and testing the clone without opening the case and connecting and diconnecting cables from the motherboard.. (I prefer cloning to making image backups.)
Will that affect performance of the hard drives?
I found this for anybody interested:
http://www.maximumpc.com/article/features/your_sata_cable_slowing_down_your_data_transfers _max_pc_investigates
Similar Messages
-
Will using for loop decrease the performance
Hi,
Will using for loop with a query decrease the performance.
for r_row in (select * from table) Loop
end loop.
This is done inside another for loop, most of the cases it returns only one value.
will it decrease the peformance of the procedure.
kindly advice.......
Regards,
Baluuser575682 wrote:
Will using for loop with a query decrease the performance.
for r_row in (select * from table) Loop
end loop.
This is done inside another for loop, most of the cases it returns only one value.
will it decrease the peformance of the procedure.Perhaps it is better to understand just what this PL/SQL loop construct does.
PL/SQL is two languages. It is PL (programming logic code) like Pascal or C or Java. You can use a 2nd language inside it called SQL. The PL engine is clever enough to recognise when the 2nd language is used. And it compiles all the stuff that is needed for the PL engine to call the SQL engine, pass data to the SQL engine and get data back, etc. (compare this with the complexity of using the SQL language in Pascal or C or Java).
So what does that loop do? The PL engine recognises the SQL SELECT statement. It creates an implicit cursor by calling the SQL engine to parse it (hopefully a soft parse) and then execute it.
As part of the PL loop, the PL engine now calls the SQL engine to fetch the data (rows) from the cursor. With 10g and later, the PL engine is smart enough to use implicit bulk processing.
Prior to 10g it used to fetch a row from the SQL engine, do the loop, fetch the next row, do the loop, etc. This means if there is a 1000 rows to fetch, it will call the SQL engine a 1000 times.
With 10g and later it will fetch a 100 rows, store that in an internal buffer and then do the loop a 100 times. With a 1000 rows to fetch, it now only requires 10 bulk fetches instead of a 1000 single row fetches.
These fetches require a context switch - as the PL engine has to step out and into the SQL engine and back, to fetch a row. This is an overhead and thus can become slow the more context switching there is.
And this is the basics for this loop (and most other cursor loops) construct in PL/SQL.
The ideal is to reduce the number of context switches. This is an overhead that can impact on performance.
What about using a loop within a loop. Also "bad". This uses the outer loop to fetch data. This data is then used to drive the fetch in the inner or nested loop. So the outside loop pulls data from the SQL engine into PL variables. The inside loop pushes that very same data back to the SQL engine.
Why? It would have been a lot faster no to pull and push that data between the loops using PL.
It will be a lot faster doing it via SQL only. Write both loops as a single SQL statement and have the SQL engine directly drive these loops itself. This is called a JOIN in SQL. And the SQL engine can do it not only faster, but it has some froody algorithms that can be used that are even faster than a nested loop process (called merge joins, hash joins, etc).
Bottom line. Maximise SQL. Minimise PL.*
Do as much of your data crunching in SQL as possible. SQL is the best and fastest "place" to process data. Not PL (or Pascal/C/Java). -
420614M TD100x use SS SATA II drives
Hi all,
Have heard you can flash the Raid board so it will use SS SATA drives instead of the expensive HS SAS Drives as the SS SATA Drives certainly plug in perfectly.
Anyone done or heard of this?
Solved!
Go to Solution.according to the TD100x system service parts page (found here), it can already use simple-swap hard drives. or, are you asking about something else?
ThinkStation C20
ThinkPad X1C · X220 · X60T · s30 · 600 -
Will using FileVault 2 on the new MBP Retina SSD reduce performance?
I read in an ArsTechnica article (http://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution- mobile-devices-and-modern-oss/3/) that the performance impact of using Full Disk Encryption on an SSD with a SandForce controller is potentially sizeable, due to the inability of the controller to identify wether data was eligible for deduplication. This is because when the SandForce controller analyzes data for homogeneity, similar files that would otherwise be deduped would be treated like unique data (the encryption makes them all unique). I know they mentioned that the delta was minor, but I'm interested in how minor it is, and they used the MBA for performance benchmarks.
So my fundamental question is this: Would I receive reduced performance on my SSD in storage capacity, longevity, or write speeds because of using FileVault 2, and if so, is there any inherent encryption built into the SandForce controller that would protect my data without the need for FileVault 2? This is a deciding factor that will determine if my MBP can be used for work or not.
*As a sidenote, please don't say that FDE isn't necessary or that I should go without encryption to solve this problem. I handle sensitive patient data that requires all of my work devices to be encrypted.*I've been using FV2 on a 240GB OWC 6G for aboutr 6 momths. The disk is about 50% full. The performance is pretty bad as you can see - 105/177 MBs and I've contacted OWC to see if they have a view. But I'm about to turn FV off and see if the performance improves.
-
hi forum experts,
i have done a JDBC call in a UDF in a message mapping to fetch some records from a database,
i tried doing it with LookUp APIs, but i think/found that LookUp APIs dont provide
any method to execute DML statements, and moreover these APIs dont provide transactional behaviour....
so i tried with JDBC APIs.......<<<<java.sql.*;>>>>.....where i used custom code to provide transactional behaviour........like explicitly using commit() methods. Where i m using Connection class...and in this case XI communication channels are not being used,,,....
will using JDBC API instead of LookUp APIs hamper performance????????????Hi Sudeep,
This will surely help u,
/people/saravanakumar.kuppusamy2/blog/2005/01/19/rdbms-system-integration-using-xi-30-jdbc-senderreceiver-adapter
/people/william.li/blog/2007/03/30/using-jdbc-connection-pool-in-xi-message-mapping
According to help.sap
Use of Lookup API - Calls to other application systems are sometimes necessary to meet the following requirements:
● To get <b>read </b>access to application system data in the mapping program
● To call existing mapping routines in the application system
So DML statements couldnt be used
Additional help
/people/prasad.illapani/blog/2006/10/25/how-to-check-jdbc-sql-query-syntax-and-verify-the-query-results-inside-a-user-defined-function-of-the-lookup-api
<i>[Reward if helpful]</i>
Regards,
Prateek -
I own photoshop cs5 extended but now have win8. can i upgrade to cc at reduced price to cc or do i need to purchase it at full price? I don't need cloud but will use the pc for install.
There is no such thing as a "pay once, use forever CC". It's strictly a subscription model that you can use as long as you pay for it. Your CS5 will give you a discount for the first year.
Mylenium -
Workaround for using Oracle JDBC extension with WLS pooling
Reading the newsgroup I saw that many of us encountered the problems
with ClassCastException when tried to use Oracle JDBC extension
with WLS pooling. I also had.
In this case BEA recommends to use dangerous
method getVendorConnection() which exposes
the physical connection object to your code.
Yes it's really dangerous because of unsafe usage may breaks
WLS pooled connection(s).
Moreover, this practice will make your JDBC code
unportable (your JDBC code in addition to Oracle dependence
became Weblogic dependent):
void doSmth() {
Connection con = ...;
Connection vCon = ((WLConnection)con).getVendorConnection();
// + mess of usage con in one places and vCon in others
// (where Oracle extensions are needed)
// !Don't forget to don't close vCon!
Sux.
I found the workaround.
Introduction
============
Yes the real cause of ClassCastException is that
in depth of Oracle driver the casting
to class oracle.jdbc.driver.OracleConnection
(not to interface oracle.jdbc.OracleConnection)
is performed.
Someone can say that this is bug or pure desing.
Weblogic pooled connection provide dynamic
implementation for all public interfaces
which real physical (wrapped) connection object implements.
Great feature!
But I guess that all interface methods implemented
by simple call-delegation to physical (wrapped) connection object.
In case of oracle.jdbc.OracleConnection interface
this approach doesn't work for at least one its method:
public OracleConnection unwrap()
WLS pooled connection shoudn't implement this method by
delegation to physical connection object BUT should
return physical connection object itself!
// Wrong implementation of unwrap()
// delegation is used
public OracleConnection unwrap() {
return physicalConnection.unwrap();
// Right implementation of unwrap()
// physical connection returned
public OracleConnection unwrap() {
return physicalConnection;
Workaround
==========
1. Develop your own OracleConnection wrapper class:
import oracle.jdbc.OracleConnection;
import weblogic.jdbc.extensions.WLConnection;
public class MyOracleConnectionImpl implements OracleConnection {
private OracleConnection con;
public MyOracleConnectionImpl(OracleConnection connection)
throws SQLException
this.con = connection;
public OracleConnection unwrap() {
return (OracleConnection)
((WLConnection)con).getVendorConnection();
/* Implement all other methods by delegation to con object */
2. Don't get Connections directly from DataSource --
develop your own simple (may be static) utility
class which retrives Connections from dataSource
and returns them wrapped into your MyOracleConnectionImpl
to your code from some method:
puclic abstract class MyConnectionSource {
public static Connection getConnection() {
Connection con = // get it from DataSource
return new MyOracleConnectionImpl((OracleConnection)con);
3. Add attribute RemoveInfectedConnectionsEnabled="false"
to definition of your JDBCConnectionPool within config.xml
You may do it because of you `safely` use vendorConnection --
you don't expose it to application code.
4. Enjoy the Oracle JDBC extensions in your code!
Example:
Connection con = MyConnectionSource.getConnection;
ArrayDescriptor add =
ArrayDescriptor.createDescriptor("your_type", con);
Hope it helps to someone.
Best regards,
Eugene VoytitskyHello Eugene Voytitsky,
Thanks Eugene Voytitsky for your idea
I have tried the solution suggested by You, but it did not work.
It still throws ClassCastException.
I am sorry for posting the whole code of two classes below.
I did this to give you more clarity.
I am also indicating the place where the exception was thrown..
Please let me know if I am doing something wrong.
OracleConnection Wrapper class
package ejbTesting;
// sql imports
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;
// util imports
import java.util.Map;
import java.util.Properties;
// imports from Oracle Driver Classes
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleOCIFailover;
import oracle.jdbc.OracleSavepoint;
// import from Weblogic extensions
import weblogic.jdbc.extensions.WLConnection;
public class WeblogicConnectionWrapper implements OracleConnection
// oracle connection object
private OracleConnection connection;
public WeblogicConnectionWrapper (OracleConnection orclConnection)
try
this.connection = orclConnection;
catch(Exception unexpected )
unexpected.printStackTrace();
public OracleConnection unwrap()
try
// The datasource returns a weblogic.jdbc.pool.Connection
// This needs to be type casted to weblogic.jdbc.extensions.WLConnection
// Only this weblogic.jdbc.extensions.WLConnection CAN BE type casted
// to OracleConnection
return (OracleConnection) ((WLConnection) connection).getVendorConnection();
catch(Exception sqlException )
sqlException.printStackTrace ();
return null;
/* Implement all other methods by delegation to connection object */
public Connection _getPC()
return connection._getPC();
public void archive(int i, int j, String s)
throws SQLException
connection.archive(i, j, s);
public void assertComplete()
throws SQLException
connection.assertComplete();
public void clearWarnings()
throws SQLException
connection.clearWarnings();
public void close()
throws SQLException
connection.close();
public void commit()
throws SQLException
connection.commit();
public Statement createStatement()
throws SQLException
return connection.createStatement();
public Statement createStatement(int i, int j)
throws SQLException
return connection.createStatement(i, j);
public boolean getAutoClose()
throws SQLException
return connection.getAutoClose();
public boolean getAutoCommit()
throws SQLException
return connection.getAutoCommit();
public CallableStatement getCallWithKey(String s)
throws SQLException
return connection.getCallWithKey(s);
public String getCatalog()
throws SQLException
return connection.getCatalog();
public boolean getCreateStatementAsRefCursor()
return connection.getCreateStatementAsRefCursor();
public int getDefaultExecuteBatch()
return connection.getDefaultExecuteBatch();
public int getDefaultRowPrefetch()
return connection.getDefaultRowPrefetch();
public Object getDescriptor(String s)
return connection.getDescriptor(s);
public boolean getExplicitCachingEnabled()
throws SQLException
return connection.getExplicitCachingEnabled();
public boolean getImplicitCachingEnabled()
throws SQLException
return connection.getImplicitCachingEnabled();
public boolean getIncludeSynonyms()
return connection.getIncludeSynonyms();
public Object getJavaObject(String s)
throws SQLException
return connection.getJavaObject(s);
public DatabaseMetaData getMetaData()
throws SQLException
return connection.getMetaData();
public Properties getProperties()
return connection.getProperties();
public boolean getRemarksReporting()
return connection.getRemarksReporting();
public boolean getRestrictGetTables()
return connection.getRestrictGetTables();
public String getSQLType(Object obj)
throws SQLException
return connection.getSQLType(obj);
public String getSessionTimeZone()
return connection.getSessionTimeZone();
public int getStatementCacheSize()
throws SQLException
return connection.getStatementCacheSize();
public PreparedStatement getStatementWithKey(String s)
throws SQLException
return connection.getStatementWithKey(s);
public int getStmtCacheSize()
return connection.getStmtCacheSize();
public short getStructAttrCsId()
throws SQLException
return connection.getStructAttrCsId();
public boolean getSynchronousMode()
return connection.getSynchronousMode();
public int getTransactionIsolation()
throws SQLException
return connection.getTransactionIsolation();
public Map getTypeMap()
throws SQLException
return connection.getTypeMap();
public String getUserName()
throws SQLException
return connection.getUserName();
public boolean getUsingXAFlag()
return connection.getUsingXAFlag();
public SQLWarning getWarnings()
throws SQLException
return connection.getWarnings();
public boolean getXAErrorFlag()
return connection.getXAErrorFlag();
public boolean isClosed()
throws SQLException
return connection.isClosed();
public boolean isLogicalConnection()
return connection.isLogicalConnection();
public boolean isReadOnly()
throws SQLException
return connection.isReadOnly();
public String nativeSQL(String s)
throws SQLException
return connection.nativeSQL(s);
public Object openJoltConnection(String s, short word0, short word1)
return connection.openJoltConnection(s, word0, word1);
public void oracleReleaseSavepoint(OracleSavepoint oraclesavepoint)
throws SQLException
connection.oracleReleaseSavepoint(oraclesavepoint);
public void oracleRollback(OracleSavepoint oraclesavepoint)
throws SQLException
connection.oracleRollback(oraclesavepoint);
public OracleSavepoint oracleSetSavepoint()
throws SQLException
return connection.oracleSetSavepoint();
public OracleSavepoint oracleSetSavepoint(String s)
throws SQLException
return connection.oracleSetSavepoint(s);
public int pingDatabase(int i)
throws SQLException
return connection.pingDatabase(i);
public CallableStatement prepareCall(String s)
throws SQLException
return connection.prepareCall(s);
public CallableStatement prepareCall(String s, int i, int j)
throws SQLException
return connection.prepareCall(s, i, j);
public CallableStatement prepareCallWithKey(String s)
throws SQLException
return connection.prepareCallWithKey(s);
public PreparedStatement prepareStatement(String s)
throws SQLException
return connection.prepareStatement(s);
public PreparedStatement prepareStatement(String s, int i, int j)
throws SQLException
return connection.prepareStatement(s, i, j);
public PreparedStatement prepareStatementWithKey(String s)
throws SQLException
return connection.prepareStatementWithKey(s);
public void purgeExplicitCache()
throws SQLException
connection.purgeExplicitCache();
public void purgeImplicitCache()
throws SQLException
connection.purgeImplicitCache();
public void putDescriptor(String s, Object obj)
throws SQLException
connection.putDescriptor(s, obj);
public void registerApiDescription(String s, short word0, short word1, String
s1)
connection.registerApiDescription(s, word0, word1, s1);
public void registerSQLType(String s, Class class1)
throws SQLException
connection.registerSQLType(s, class1);
public void registerSQLType(String s, String s1)
throws SQLException
connection.registerSQLType(s, s1);
public void registerTAFCallback(OracleOCIFailover oracleocifailover, Object
obj)
throws SQLException
connection.registerTAFCallback(oracleocifailover, obj);
public void rollback()
throws SQLException
connection.rollback();
public void setAutoClose(boolean flag)
throws SQLException
connection.setAutoClose(flag);
public void setAutoCommit(boolean flag)
throws SQLException
connection.setAutoCommit(flag);
public void setCatalog(String s)
throws SQLException
connection.setCatalog(s);
public void setCreateStatementAsRefCursor(boolean flag)
connection.setCreateStatementAsRefCursor(flag);
public void setDefaultExecuteBatch(int i)
throws SQLException
connection.setDefaultExecuteBatch(i);
public void setDefaultRowPrefetch(int i)
throws SQLException
connection.setDefaultRowPrefetch(i);
public void setExplicitCachingEnabled(boolean flag)
throws SQLException
connection.setExplicitCachingEnabled(flag);
public void setImplicitCachingEnabled(boolean flag)
throws SQLException
connection.setImplicitCachingEnabled(flag);
public void setIncludeSynonyms(boolean flag)
connection.setIncludeSynonyms(flag);
public void setReadOnly(boolean flag)
throws SQLException
connection.setReadOnly(flag);
public void setRemarksReporting(boolean flag)
connection.setRemarksReporting(flag);
public void setRestrictGetTables(boolean flag)
connection.setRestrictGetTables(flag);
public void setSessionTimeZone(String s)
throws SQLException
connection.setSessionTimeZone(s);
public void setStatementCacheSize(int i)
throws SQLException
connection.setStatementCacheSize(i);
public void setStmtCacheSize(int i)
throws SQLException
connection.setStmtCacheSize(i);
public void setStmtCacheSize(int i, boolean flag)
throws SQLException
connection.setStmtCacheSize(i, flag);
public void setSynchronousMode(boolean flag)
connection.setSynchronousMode(flag);
public void setTransactionIsolation(int i)
throws SQLException
connection.setTransactionIsolation(i);
public void setTypeMap(Map map)
throws SQLException
connection.setTypeMap(map);
public void setUsingXAFlag(boolean flag)
connection.setUsingXAFlag(flag);
public void setWrapper(OracleConnection oracleconnection)
connection.setWrapper(oracleconnection);
public void setXAErrorFlag(boolean flag)
connection.setXAErrorFlag(flag);
public void shutdown(int i)
throws SQLException
connection.shutdown(i);
public void startup(String s, int i)
throws SQLException
connection.startup(s, i);
Util class to get Wrapped Connections from
datasource
package ejbTesting;
// j2ee imports
import javax.naming.InitialContext;
import javax.sql.DataSource;
// sql imports
import java.sql.Connection;
// imports from Oracle Driver Classes
import oracle.jdbc.OracleConnection;
* Wrapper class for the DataSource Connection from Weblogic pool
public class DataSourceConnectionWrapper
// datasource variable
private static transient DataSource datasource = null;
private static String dbName = "jdbc/workbench";
* Method that returns the database connection
public static Connection getConnection()
try
// initialsing the datasource object
initialiseDataSource ();
// Getting a connection from the datasource
Connection con = datasource.getConnection( );
// wrapping it custom wrapper class and
// returning the connection object
return new WeblogicConnectionWrapper((OracleConnection)con);
catch(Exception exception )
exception.printStackTrace();
return null;
private static void initialiseDataSource( ) throws Exception
if ( datasource == null )
try
InitialContext ic = new InitialContext( );
datasource = (DataSource) ic.lookup( dbName );
catch (Exception ne )
throw new Exception( "NamingException while looking up DataSource with
JNDI name" +
dbName + ": \n" + ne.getMessage( ) );
Exception Stack Trace
The line 46 in DataSourceConnectionWrapper
corresponds to
return new WeblogicConnectionWrapper((OracleConnection)con);
Which I feel is logical as the connection which we get from Weblogic
datasource cannot be type casted to OracleConnection
java.lang.ClassCastException: weblogic.jdbc.pool.Connection
at ejbTesting.DataSourceConnectionWrapper.getConnection(DataSourceConnectionWrapper.java:46) -
Restricting access by using custom buffer extension
Hi,
I have a problem and a possible solution. Before I start implementing it, I would like to ask for your opinion about this.
The problem has to do with security. We have two kinds of services.
1) Primary services: The client accesses these services directly. Tuxedo does the authentication and the service performs a custom autorisation.
2) Secondary services: These services are accessed only by other services. Since other services are trusted, no autorisation is done. But one has to guarantee that no client accesses these services directly. This is where the problem is.
We currently have a solution. We do a call to the .TMIB to find out whether the acessor is a service or a client. But this solution doesn't scale because the .TMIB-service is implemented by the BBL, which is a single process.
Therefore I'm thinking about another solution. Clients use the WSL to access Tuxedo. Local clients can be regarded as trusted in our environment. We use only XOCTET-buffers as buffer-type. It is possible to implement custom-buffers and link the buffer-type-definitions to a custom WSH (see buildwsh).
I'm thinking on extending the definitions of the XOCTET buffer type and implement a custom routing-function. When the routing-type of a service is "secondary-service", then the routing fails. This extension will be linked only to the WSH, so the WSH denies routing to secondary-services but the rest of the system allows them.
Do you think this would work? Do you see problems? Is there a better/simpler solution?
Regards
ErhardHi Erhard,
I would suggest you another way. Ok, the question here is how to know the client is a local client or workstation client. You can take advantage of the data structure in tpsvcinfo.
The "cltid" structure of tpsvcinfo contains some client related information, though it is unofficial published. You can use clientdata[2] to get the client's slot number in Tuxedo bulletin board. Tuxedo has a logic to generate the slot number. For example, your MAXACCESSER is 200 and MAXWSCLTS is 10, the tuxedo will allocate workstation client from 190 (200 - 10). The local client and server will use from 0. So you can write your code like,
TOUPPER(TPSVCINFO *rqst)
if ( rqst->cltid.clientdata[2] >= 190) {
userlog(" it is a workstation client");
tpreturn(TPFAIL);
The limitations are 1) if MAXACCESSERS and MAXWSCLTS changed, you have to tune the judge condition 2) it is un-offiicial interface, it is subject to Oracle to change. I think if your UBBCONFIG is stable you may take a try. The advantage is obvious, simple and no performance impact. You may try this first in a test environment.
Wayne -
Internal Server Error while using Frontpage Server Extension on SharePoint2013
I am working on a Proof of concept where I am trying to use Frontpage server Extension - RPC protocol to upload the files in sharepoint document library using "/_vti_bin/_vti_aut/author.dll". I am using following URL to upload bytes to SharePoint
Document library.
http://SPServer/Site/_vti_bin/_vti_aut/author.dll?method={0}&service_name=put+document&document=[document_name=<Encoded document path>;meta_info=[]]&put_option=overwrite,migrationsemantics&keep_checked_out=false&comment=
The same code works on one sharepoint environment but not on other. I am getting Internal Server Error (500) exactly when i try to execute the webrequest.GetResponse for the url given above.
Any pointers will be greatly appretiated.
Regards,
IndraHi,
According to your description, my understanding is that when you use the Front Server Extension to upload the files, it occur the error "Internal Server Error(500)".
As in your another environment, it works fine, for a better troubleshooting, I suggest you can do as the followings:
1. Using Fiddler to check the web request which occurs error to find the detailed error message and you can compare if there are something difference between the two environments.
2. Check the Windows server event log to check if there are something error message in it.
Here is a detailed article about troubleshooting solutions:
how to solve Web Service call failed error
Thanks
Best Regards
TechNet Community Support
Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
[email protected] -
How to reduce performance time.
Hi,
Any body guide me how to reduce performance time for this report.
Its taking to much time for execution.
*& Report ZEOU_CST_CLAIM_REP *
REPORT zeou_cst_claim_rep.
*& Program Name : ZEOU_CST_CLAIM_REP *
*& Title : CST Claim Report *
*& Module Name : EOU *
*& Author : Chandra Vangoor *
*& Create Date : 05.05.2006 *
*& Logical DB : None *
*& Program Type : On-Line. *
*& SAP Release : 4.7 *
*& Description : *
*& Log Date Author Reason of change
TABLES
TABLES : a363,
mara,
marc,
makt,
ekko,
ekpo,
mkpf,
mseg,
konp,
konh.
SELECTION-SCREEN
SELECTION-SCREEN : BEGIN OF BLOCK cst WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR mara-matnr, "Material Number
s_lifnr FOR ekko-lifnr, "Account Number of the Vendor
s_bedat FOR ekko-bedat, "Purchasing Document Date
s_kschl FOR konh-kschl OBLIGATORY NO INTERVALS, "Condition type
s_bwart FOR mseg-bwart OBLIGATORY NO INTERVALS. "Movement Type (Inventory Management)
PARAMETERS : p_werks LIKE marc-werks OBLIGATORY. "Plant
SELECTION-SCREEN : END OF BLOCK cst.
INCLUDES
INCLUDE zalv_data.
DATA - INTERNAL TABLES AND FIELD LISTS
DATA : BEGIN OF a363_itab OCCURS 0,
matnr LIKE a363-matnr, "Material Number
lifnr LIKE a363-lifnr, "Account Number of the Vendor
werks LIKE a363-werks, "Plant
kschl LIKE a363-kschl, "Condition type
knumh LIKE a363-knumh, "Condition record number
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
END OF a363_itab.
DATA : BEGIN OF konp_itab OCCURS 0,
knumh LIKE a363-knumh, "Condition record number
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
lifnr LIKE a363-lifnr, "Account Number of the Vendor
END OF konp_itab.
DATA : BEGIN OF ekko_itab OCCURS 0,
ebeln LIKE ekko-ebeln, "Purchasing Document Number
lifnr LIKE ekko-lifnr, "Account Number of the Vendor
bedat LIKE ekko-bedat, "Purchasing Document Date
END OF ekko_itab.
DATA : BEGIN OF ekpo_itab OCCURS 0,
ebeln LIKE ekpo-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
matnr LIKE ekpo-matnr, "Material Number
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Purchase order quantity
END OF ekpo_itab.
DATA : BEGIN OF v_po_det OCCURS 0, "VENDOR + PLANT + PO DEATILS
lifnr LIKE ekko-lifnr, "Account Number of the Vendor
ebeln LIKE ekko-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
bedat LIKE ekko-bedat, "Purchasing Document Date
matnr LIKE ekpo-matnr, "Material Number
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Purchase order quantity
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
END OF v_po_det.
DATA : BEGIN OF mseg_itab OCCURS 0,
mblnr LIKE mseg-mblnr, "Number of Material Document
ebeln LIKE mseg-ebeln, "Purchasing Document Number
ebelp LIKE mseg-ebelp, "Item Number of Purchasing Document
matnr LIKE mseg-matnr, "Material Number
lifnr LIKE mseg-lifnr, "Account Number of the Vendor
werks LIKE mseg-werks, "Plant
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
END OF mseg_itab.
DATA : BEGIN OF mkpf_itab OCCURS 0,
mblnr LIKE mkpf-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
END OF mkpf_itab.
DATA : BEGIN OF zeou_pcrdtl_itab OCCURS 0,
matnr LIKE zeou_pcrdtl-matnr, "Material Number
lifnr LIKE zeou_pcrdtl-lifnr, "Account Number of the Vendor
mblnr LIKE zeou_pcrdtl-mblnr, "Number of Material Document
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
END OF zeou_pcrdtl_itab.
DATA : BEGIN OF gr_wh_info OCCURS 0, "INFO OF GR & WH BASED ON MVMT TYPE & PO
mblnr LIKE mseg-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
ebeln LIKE mseg-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
matnr LIKE mseg-matnr, "Material Number
lifnr LIKE mseg-lifnr, "Account Number of the Vendor
werks LIKE mseg-werks, "Plant
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
END OF gr_wh_info.
DATA : BEGIN OF bseg_itab OCCURS 0,
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
bukrs LIKE bseg-bukrs, "Company Code
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
END OF bseg_itab.
DATA : BEGIN OF bkpf_itab OCCURS 0,
bukrs LIKE bkpf-bukrs, "Company Code
belnr LIKE bkpf-belnr, "Accounting Document Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
bldat LIKE bkpf-bldat, "Document Date in Document
END OF bkpf_itab.
DATA : BEGIN OF vend_inv OCCURS 0, "VENDOR INVOICE DETAILS
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
bukrs LIKE bseg-bukrs, "Company Code
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
bldat LIKE bkpf-bldat, "Document Date in Document
END OF vend_inv.
DATA : BEGIN OF chckinit OCCURS 0, "CHEQUE INIT INFO
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
bukrs LIKE bkpf-bukrs, "Company Code
belnr LIKE bkpf-belnr, "Accounting Document Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
END OF chckinit.
DATA : BEGIN OF chckpayer OCCURS 0, "CHEQUE BANK DETAILS
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
gjahr LIKE payr-gjahr, "Fiscal Year
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
END OF chckpayer.
DATA : chckpayer_u LIKE chckpayer OCCURS 0 WITH HEADER LINE. "UNIQUE CHEQUE DETAILS
DATA : BEGIN OF chckfinal OCCURS 0, "CHEQUE FINAL INFO
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
bukrs LIKE bkpf-bukrs, "Company Code
belnr LIKE bkpf-belnr, "Accounting Document Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
END OF chckfinal.
DATA : BEGIN OF mat_desc OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF mat_desc.
DATA : BEGIN OF vend_det OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
j_1icstno LIKE j_1imovend-j_1icstno,
END OF vend_det.
DATA : BEGIN OF cst_rep OCCURS 0, "FINAL CST REPORT
lifnr LIKE a363-lifnr, "Account Number of the Vendor
name1 LIKE lfa1-name1, "Vendor Name
j_1icstno LIKE j_1imovend-j_1icstno, " Vendor CST No.
werks LIKE a363-werks, "Plant
kschl LIKE a363-kschl, "Condition type
ebeln LIKE ekko-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
bedat LIKE ekko-bedat, "Purchasing Document Date
matnr LIKE ekpo-matnr, "Material Number
maktx LIKE makt-maktx, "Material Description.
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
mblnr LIKE mseg-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
cst_dmbtr LIKE mseg-dmbtr, "CST Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
cst_wrbtr LIKE bseg-wrbtr, "CST Amount in document currency
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
END OF cst_rep.
DATA : BEGIN OF gt_output OCCURS 0, "ALV OUTPUT
slno LIKE sy-tabix, "Serial Number
lifnr LIKE a363-lifnr, "Account Number of the Vendor
name1 LIKE lfa1-name1, "Vendor Name
j_1icstno LIKE j_1imovend-j_1icstno, " Vendor CST No.
werks LIKE a363-werks, "Plant
kschl LIKE a363-kschl, "Condition type
ebeln LIKE ekko-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
bedat LIKE ekko-bedat, "Purchasing Document Date
matnr LIKE ekpo-matnr, "Material Number
maktx LIKE makt-maktx, "Material Description
mblnr LIKE mseg-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
cst_dmbtr LIKE mseg-dmbtr, "CST Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
cst_wrbtr LIKE bseg-wrbtr, "CST Amount in document currency
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
usr_txt1(20) TYPE c,
usr_txt2(20) TYPE c,
END OF gt_output.
*Working Variables
DATA : cst_gr LIKE mseg-dmbtr,
cst_inv LIKE bseg-wrbtr,
usr_txt1(20) TYPE c,
usr_txt2(20) TYPE c.
START-OF-SELECTION.
*Retreiving Data from a363 table for the given input
SELECT matnr
lifnr
werks
kschl
knumh
FROM a363
INTO TABLE a363_itab
WHERE matnr IN s_matnr AND lifnr IN s_lifnr AND werks EQ p_werks AND kschl IN s_kschl.
*rakesh ***************************
SELECT *
FROM konp
INTO CORRESPONDING FIELDS OF TABLE konp_itab
FOR ALL ENTRIES IN a363_itab
WHERE knumh EQ a363_itab-knumh.
IF a363_itab[] IS NOT INITIAL.
SELECT knumh
kbetr
lifnr
FROM konp INTO TABLE konp_itab
FOR ALL ENTRIES IN a363_itab
WHERE knumh EQ a363_itab-knumh.
ENDIF.
LOOP AT a363_itab.
READ TABLE konp_itab WITH KEY knumh = a363_itab-knumh.
IF sy-subrc EQ 0.
MOVE : konp_itab-kbetr TO a363_itab-kbetr.
MODIFY a363_itab.
ENDIF.
CLEAR : a363_itab, konp_itab.
ENDLOOP.
rakesh****************************
SELECT *
FROM makt
INTO CORRESPONDING FIELDS OF TABLE mat_desc
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr.
SELECT matnr
maktx
FROM makt INTO TABLE mat_desc
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr.
SELECT a~lifnr
a~name1
b~j_1icstno
INTO TABLE vend_det
FROM lfa1 AS a JOIN j_1imovend AS b
ON alifnr EQ blifnr
FOR ALL ENTRIES IN a363_itab
WHERE a~lifnr EQ a363_itab-lifnr.
Retreiving Data from EKKO & EKPO table for the given input
And Populating the V_PO_DETAILS itab
SELECT *
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE ekko_itab
FOR ALL ENTRIES IN a363_itab
WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.
IF a363_itab[] IS NOT INITIAL.
SELECT ebeln
lifnr
bedat
FROM ekko INTO TABLE ekko_itab
FOR ALL ENTRIES IN a363_itab
WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.
ENDIF.
SELECT *
FROM ekpo
INTO CORRESPONDING FIELDS OF TABLE ekpo_itab
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.
IF a363_itab[] IS NOT INITIAL.
SELECT ebeln
ebelp
matnr
werks
menge
FROM ekpo INTO TABLE ekpo_itab
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.
ENDIF.
LOOP AT ekpo_itab.
MOVE : ekpo_itab-ebelp TO v_po_det-ebelp,
ekpo_itab-matnr TO v_po_det-matnr,
ekpo_itab-werks TO v_po_det-werks,
ekpo_itab-menge TO v_po_det-menge.
READ TABLE ekko_itab WITH KEY ebeln = ekpo_itab-ebeln.
IF sy-subrc EQ 0.
MOVE : ekko_itab-lifnr TO v_po_det-lifnr,
ekko_itab-ebeln TO v_po_det-ebeln,
ekko_itab-bedat TO v_po_det-bedat.
APPEND : v_po_det.
ENDIF.
CLEAR : ekko_itab, ekpo_itab, v_po_det.
ENDLOOP.
LOOP AT v_po_det.
READ TABLE a363_itab WITH KEY matnr = v_po_det-matnr lifnr = v_po_det-lifnr werks = v_po_det-werks.
IF sy-subrc EQ 0.
MOVE : a363_itab-kbetr TO v_po_det-kbetr.
MODIFY v_po_det.
ENDIF.
CLEAR : a363_itab, v_po_det.
ENDLOOP.
Retreiving Data from MKPF & MSEG & ZEOU_PCRDTL table for the given input
And Populating the GR_WH_info itab
SELECT *
FROM mseg
INTO CORRESPONDING FIELDS OF TABLE mseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.
IF v_po_det[] IS NOT INITIAL.
SELECT mblnr
ebeln
ebelp
matnr
lifnr
werks
menge
dmbtr
bwart
FROM mseg INTO TABLE mseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.
ENDIF.
IF mseg_itab[] IS NOT INITIAL.
SELECT *
FROM mkpf
INTO CORRESPONDING FIELDS OF TABLE mkpf_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr.
SELECT mblnr
bldat
FROM mkpf INTO TABLE mkpf_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr.
SELECT *
FROM zeou_pcrdtl
INTO CORRESPONDING FIELDS OF TABLE zeou_pcrdtl_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.
SELECT matnr
lifnr
mblnr
whssn
whsdt
FROM zeou_pcrdtl INTO TABLE zeou_pcrdtl_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.
ENDIF.
LOOP AT mseg_itab.
MOVE : mseg_itab-mblnr TO gr_wh_info-mblnr,
mseg_itab-ebeln TO gr_wh_info-ebeln,
mseg_itab-ebelp TO gr_wh_info-ebelp,
mseg_itab-matnr TO gr_wh_info-matnr,
mseg_itab-lifnr TO gr_wh_info-lifnr,
mseg_itab-werks TO gr_wh_info-werks,
mseg_itab-menge TO gr_wh_info-menge,
mseg_itab-dmbtr TO gr_wh_info-dmbtr,
mseg_itab-bwart TO gr_wh_info-bwart.
READ TABLE mkpf_itab WITH KEY mblnr = mseg_itab-mblnr.
IF sy-subrc EQ 0.
MOVE : mkpf_itab-bldat TO gr_wh_info-bldat.
ENDIF.
READ TABLE zeou_pcrdtl_itab WITH KEY mblnr = mseg_itab-mblnr.
IF sy-subrc EQ 0.
MOVE : zeou_pcrdtl_itab-whssn TO gr_wh_info-whssn,
zeou_pcrdtl_itab-whsdt TO gr_wh_info-whsdt.
ENDIF.
APPEND : gr_wh_info.
CLEAR : mseg_itab, mkpf_itab, gr_wh_info.
ENDLOOP.
Retreiving Data from BSEG & BKPF table
And Populating the Vendor Invoice Details
IF v_po_det[] IS NOT INITIAL.
SELECT *
FROM bseg
INTO CORRESPONDING FIELDS OF TABLE bseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
wrbtr
bukrs
belnr
gjahr
FROM bseg INTO TABLE bseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
ENDIF.
IF bseg_itab[] IS NOT INITIAL.
SELECT *
FROM bkpf
INTO CORRESPONDING FIELDS OF TABLE bkpf_itab
FOR ALL ENTRIES IN bseg_itab
WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.
SELECT bukrs
belnr
gjahr
xblnr
bldat
FROM bkpf INTO TABLE bkpf_itab
FOR ALL ENTRIES IN bseg_itab
WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.
ENDIF.
LOOP AT bseg_itab.
MOVE : bseg_itab-ebeln TO vend_inv-ebeln,
bseg_itab-ebelp TO vend_inv-ebelp,
bseg_itab-matnr TO vend_inv-matnr,
bseg_itab-lifnr TO vend_inv-lifnr,
bseg_itab-werks TO vend_inv-werks,
bseg_itab-buzid TO vend_inv-buzid,
bseg_itab-bschl TO vend_inv-bschl,
bseg_itab-wrbtr TO vend_inv-wrbtr,
bseg_itab-bukrs TO vend_inv-bukrs,
bseg_itab-belnr TO vend_inv-belnr,
bseg_itab-gjahr TO vend_inv-gjahr.
READ TABLE bkpf_itab WITH KEY bukrs = bseg_itab-bukrs belnr = bseg_itab-belnr gjahr = bseg_itab-gjahr.
IF sy-subrc EQ 0.
MOVE : bkpf_itab-xblnr TO vend_inv-xblnr,
bkpf_itab-bldat TO vend_inv-bldat.
APPEND : vend_inv.
ENDIF.
CLEAR : vend_inv, bseg_itab, bkpf_itab.
ENDLOOP.
Retreiving Data from BSEG & BKPF table
And Populating the Cheque Info Details
IF v_po_det[] IS NOT INITIAL.
SELECT *
FROM bseg
INTO CORRESPONDING FIELDS OF TABLE chckinit
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
bukrs
belnr
gjahr
koart
augbl
FROM bseg INTO TABLE chckinit
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
ENDIF.
IF chckinit[] IS NOT INITIAL.
SELECT *
FROM payr
INTO CORRESPONDING FIELDS OF TABLE chckpayer
FOR ALL ENTRIES IN chckinit
WHERE vblnr EQ chckinit-augbl.
SELECT vblnr
zbukr
gjahr
chect
zaldt
hbkid
FROM payr INTO TABLE chckpayer
FOR ALL ENTRIES IN chckinit
WHERE vblnr EQ chckinit-augbl.
ENDIF.
SORT chckpayer BY vblnr DESCENDING.
LOOP AT chckpayer.
ON CHANGE OF chckpayer-vblnr.
MOVE : chckpayer TO chckpayer_u.
APPEND : chckpayer_u.
CLEAR : chckpayer_u, chckpayer.
ENDON.
ENDLOOP.
LOOP AT chckinit.
MOVE : chckinit-ebeln TO chckfinal-ebeln,
chckinit-ebelp TO chckfinal-ebelp,
chckinit-matnr TO chckfinal-matnr,
chckinit-lifnr TO chckfinal-lifnr,
chckinit-werks TO chckfinal-werks,
chckinit-buzid TO chckfinal-buzid,
chckinit-bschl TO chckfinal-bschl,
chckinit-bukrs TO chckfinal-bukrs,
chckinit-gjahr TO chckfinal-gjahr,
chckinit-koart TO chckfinal-koart,
chckinit-augbl TO chckfinal-augbl.
READ TABLE chckpayer_u WITH KEY vblnr = chckinit-augbl gjahr = chckinit-gjahr.
IF sy-subrc EQ 0.
MOVE : chckpayer_u-vblnr TO chckfinal-vblnr,
chckpayer_u-zbukr TO chckfinal-zbukr,
chckpayer_u-chect TO chckfinal-chect,
chckpayer_u-zaldt TO chckfinal-zaldt,
chckpayer_u-hbkid TO chckfinal-hbkid.
APPEND : chckfinal.
ENDIF.
CLEAR : chckfinal, chckpayer_u, chckinit.
ENDLOOP.
Populating the final CST TABLE
LOOP AT v_po_det.
MOVE : v_po_det-lifnr TO cst_rep-lifnr,
v_po_det-werks TO cst_rep-werks,
v_po_det-ebeln TO cst_rep-ebeln,
v_po_det-ebelp TO cst_rep-ebelp,
v_po_det-bedat TO cst_rep-bedat,
v_po_det-matnr TO cst_rep-matnr,
v_po_det-kbetr TO cst_rep-kbetr.
READ TABLE gr_wh_info WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : gr_wh_info-mblnr TO cst_rep-mblnr,
gr_wh_info-bldat TO cst_rep-bldat,
gr_wh_info-menge TO cst_rep-menge,
gr_wh_info-dmbtr TO cst_rep-dmbtr,
gr_wh_info-bwart TO cst_rep-bwart,
gr_wh_info-whssn TO cst_rep-whssn,
gr_wh_info-whsdt TO cst_rep-whsdt.
ENDIF.
READ TABLE vend_inv WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : vend_inv-buzid TO cst_rep-buzid,
vend_inv-bschl TO cst_rep-bschl,
vend_inv-wrbtr TO cst_rep-wrbtr,
vend_inv-belnr TO cst_rep-belnr,
vend_inv-gjahr TO cst_rep-gjahr,
vend_inv-xblnr TO cst_rep-xblnr.
ENDIF.
READ TABLE chckfinal WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : chckfinal-augbl TO cst_rep-augbl,
chckfinal-vblnr TO cst_rep-vblnr,
chckfinal-zbukr TO cst_rep-zbukr,
chckfinal-chect TO cst_rep-chect,
chckfinal-zaldt TO cst_rep-zaldt,
chckfinal-hbkid TO cst_rep-hbkid.
ENDIF.
READ TABLE mat_desc WITH KEY matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : mat_desc-maktx TO cst_rep-maktx.
ENDIF.
READ TABLE vend_det WITH KEY lifnr = v_po_det-lifnr.
IF sy-subrc EQ 0.
MOVE : vend_det-name1 TO cst_rep-name1,
vend_det-j_1icstno TO cst_rep-j_1icstno.
ENDIF.
APPEND : cst_rep.
CLEAR : cst_rep, v_po_det, gr_wh_info, vend_inv, chckfinal.
ENDLOOP.
Populating GT_output
LOOP AT cst_rep.
cst_gr = cst_rep-dmbtr * ( cst_rep-kbetr / 1000 ).
cst_inv = cst_rep-wrbtr * ( cst_rep-kbetr / 1000 ).
MOVE : cst_gr TO cst_rep-cst_dmbtr,
cst_inv TO cst_rep-cst_wrbtr.
MODIFY : cst_rep.
CLEAR : cst_rep, cst_gr, cst_inv.
ENDLOOP.
LOOP AT cst_rep.
MOVE : sy-tabix TO gt_output-slno,
cst_rep-lifnr TO gt_output-lifnr,
cst_rep-name1 TO gt_output-name1,
cst_rep-j_1icstno TO gt_output-j_1icstno,
cst_rep-werks TO gt_output-werks,
cst_rep-matnr TO gt_output-matnr,
cst_rep-maktx TO gt_output-maktx,
cst_rep-ebeln TO gt_output-ebeln,
cst_rep-ebelp TO gt_output-ebelp,
cst_rep-bedat TO gt_output-bedat,
cst_rep-mblnr TO gt_output-mblnr,
cst_rep-bldat TO gt_output-bldat,
cst_rep-menge TO gt_output-menge,
cst_rep-dmbtr TO gt_output-dmbtr,
cst_rep-cst_dmbtr TO gt_output-cst_dmbtr,
cst_rep-bwart TO gt_output-bwart,
cst_rep-whssn TO gt_output-whssn,
cst_rep-whsdt TO gt_output-whsdt,
cst_rep-buzid TO gt_output-buzid,
cst_rep-bschl TO gt_output-bschl,
cst_rep-wrbtr TO gt_output-wrbtr,
cst_rep-cst_wrbtr TO gt_output-cst_wrbtr,
cst_rep-belnr TO gt_output-belnr,
cst_rep-gjahr TO gt_output-gjahr,
cst_rep-xblnr TO gt_output-xblnr,
cst_rep-augbl TO gt_output-augbl,
cst_rep-vblnr TO gt_output-vblnr,
cst_rep-zbukr TO gt_output-zbukr,
cst_rep-chect TO gt_output-chect,
cst_rep-zaldt TO gt_output-zaldt,
cst_rep-hbkid TO gt_output-hbkid.
APPEND gt_output.
CLEAR : cst_rep, gt_output, sy-tabix.
ENDLOOP.
END-OF-SELECTION.
*-ALV Routine
PERFORM alv_forms.
*& Form alv_forms
FORM alv_forms.
PERFORM alv_routines.
gx_variant = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
vari = gx_variant-variant.
ENDIF.
PERFORM comment_build USING gt_list_top_of_page[].
PERFORM fieldcat_init USING gt_fieldcat[].
PERFORM layout_build USING gs_layout.
PERFORM print_build USING gs_print.
PERFORM alv_output.
ENDFORM. " alv_forms
*& Form alv_routines
FORM alv_routines.
PERFORM eventtab_build USING gt_events[].
PERFORM e06_t_sort_build USING gt_sort[].
PERFORM sp_group_build USING gt_sp_group[].
g_save = 'A'.
PERFORM variant_init.
ENDFORM. " alv_routines
*& Form eventtab_build
----Hi Anu,
These two statements taking to much time for execution what I can do for reducing execution time.
Regards,
Rakesh
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
wrbtr
bukrs
belnr
gjahr
FROM bseg INTO TABLE bseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
ENDIF.
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
bukrs
belnr
gjahr
koart
augbl
FROM bseg INTO TABLE chckinit
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
ENDIF. -
I can't use flashget 3 extension
When I try to download something using flashget 3 extension nothing happen, it worked fine with Firefox 3 but not the new beta.
Thx for the help in advance.
Best Regards,
Samer.You may have to wait for the makers of Flashget 3 to update their extension to work with Firefox 4. There have been changes made during Firefox 4 development that will require some extensions to be updated to work with Firefox 4.
One thing you could try is the [https://addons.mozilla.org/en-US/firefox/addon/220/ FlashGot] extension. That one works with the Firefox 4 betas and it can be used to integrate third-party download managers with Firefox. The [http://flashgot.net/ FlashGot home page] shows that it can be used to integrate FlashGet with Firefox. -
Handling events in BSP application using WML tag Extensions
Hello Everyone ,
We are developing a BSP applications for Mobile handheld using WML tag library. I am looking for some code samples to know how we can handle evevents inside the BSP using the WML tag library.
Can any one of you plesae help us by placing a code snippet for handling onInputprocessing() methods (BSP Using WML Tag extensions).
I mean to ask how we can handle events inside the BSP applications that uses the WML tag library.
I know about how to handle BSP events using HTMLB and XHTMLB tags frameworks.
Thanks for your help in advance.
Thanks,
GreetsonIs this WML tag library something that is supplied by SAP u2013 as a BSP Extension Element? Or are you just using WML tags directly in your layout? I can tell you in general that if you want to generate HTMLB events from regular HTML code you can generate the JavaScript calls using the htmlbEvent tag of the BSP extension library. However your tags have to be running within an HTMLB Content tag for this to work.
If you want to work totally without HTMLB then you need to use the simple HTTP Post but format the input name as OnInputProcessing(<function code>) like this:
<input type="submit" name="OnInputProcessing(ok)" value="OK">
This will cause the OnInputProcessing event handler to trigger without needing any HTMLB tags (this is how it was done in WebAS 6.10 before we BSP Extensions). -
ReportServer intengration error - An attempt has been made to use a data extension 'ADS'
For a moment I thought I had the perfect SharePoint 2010 installation going until I went and created an Access Database site added some data then went to reports. I am getting the following error.
An error has occurred during report processing. (rsProcessingAborted)
An attempt has been made to use a data extension 'ADS' that is either not registered for this report server or is not supported in this edition of Reporting Services. (rsDataExtensionNotFound)
Other than that, life is good. I have pretty much uninstalled and stuff repeatedly. I'm about to do another uninstall, reinstall because Monitorying isn't showing any errors. Which it should be, but that's another post; should the issue return.
But if anybody has any ideas about the ADS thing I would sure like to hear it.
Thanks!
Oh, the system is the following:
Server 2008 R2 Standard
SQL Server 2008 R2
SharePoint 2010 Release with 2010 October CU updates. I ran the CUs just before running SharePoint Configuration.
At the moment it is all house on the same machine; but if it goes to production then it will be turned in to a two-tier system.OK - seems like we just have to read the manual!
You'll have to install the Reporting Services Add-in for Connected Mode:
A. Modify the C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config file on the Reporting Services server.
Under the <Data> node, under the <Extension> node, add the ADS data extension. For example:
<Extension Name="ADS" Type="Microsoft.Office.Access.Reports.DataProcessing.AdsConnection, Microsoft.Office.Access.Server.DataServer, Version=14.0.0.0, Culture=Neutral, PublicKeyToken=71e9bce111e9429c"/> -->
B. Modify the rssrvpolicy file on RS server.
Add the following XML code in the file under the <NamedPermissionSets> node:
<PermissionSet class="NamedPermissionSet" version="1" Name="ReportExpressionsDefaultPermissionSet">
<IPermission class="SecurityPermission" version="1" Flags="Execution" />
<IPermission class="Microsoft.Office.Access.Server.Security.AccessServicesPermission, Microsoft.Office.Access.Server.Security, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1.0" Flags="CalculationCallback" />
</PermissionSet>
In the <CodeGroup>node, find the following line and change PermissionSetName from “Execution” to “ReportExpressionsDefaultPermissionSet”.
For further instructions please see Technet Article: "Using Access Services with SQL Reporting Services: Installing SQL Server 2008 R2 Reporting Services Add-In (SharePoint
Server 2010)".
Kind regards
Thanks for the reply, but for the clarification I found my config files in a different location other than stated in A - C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer
In Step B, the following is unclear to me - In the <CodeGroup>node, find the following line and change PermissionSetName from “Execution” to “ReportExpressionsDefaultPermissionSet”. There are
MANY Code Group nodes. And in addition to that there are two with PermissionSetName="Execution"; Which one?
While awaiting your reply I'll go look at the docs and see if they are clearer.
Thanks! -
as the title really my mains socket is not right beside my bed and normal ipone lead will not reach can i use a usb extension ??or is it not recomended?
Tamara wrote:
You will be fine using a USB extension.
Hi Tamara
I have a question. Is it possible that a standard USB extension cable purchased from ... anywheremart connected to the iPhone dock could cause a kernel panic attack?
To be honest, I hope that is what caused 2 such attacks today. I purchased one of the new Magic Mouses and since my MacPro doesn't have bluetooth I purchased the rocketFish Micro Bluetooth adapter from Best Buy to enable Bluetooth for the mouse. I used it yesterday with not problems, everything was fine. Today, I decided I wanted to move my iPhone dock further away from my computer and well, as we all know that cable is not very long. So, I used an old USB extension cable I found in the closet left over from my PC days.
After running everything with that cable for several hours today, I got a panic attack (well the computer first, then me). The only thing I figured it could be was either the rockfish bluetooth adapter or the usb extension cable. Since a friend has had the rockfish connected to his MacPro for a few days now without any problems, I'm hoping my problem is the cable.
Any thoughts? One other observation. The keyboard extension cable that comes with the MacPro is specially keyed to prevent you from connecting it to the iPhone usb cable, so I'm thinking that maybe any cable that is connected to the iPhone or iPhone doc is specialized.
Thanks
Ron -
When will BRE [Backup restartable Extensions] be available in Ontap Cluster mode ?
Hi Folks, When will BRE [Backup restartable Extensions] be available in Ontap Cluster mode. With 7-mode there is no issue, we can suspend and restart backup from the checkpoint, however with Ontap cluster mode version 8.3 I am currently running, this is not possible [I guess all versions]. If the Job is suspended in cluster mode, session ID is lost and new session ID is generated when the backup is resumed, in other words data backup starts from begining. Is this something will be available in Onap 8.4 cluster mode ? Thanks,
-AshwinHi, Yeah, you are right - 8.3RC1 is older than 8.3P1.
8.3 Releases:
8.3RC1 ----> old release [I already tested - dump restart does not work]
8.3RC2
8.3
8.3P1 -----> Customer already is on higher update and it still dosent work
8.3P2
8.3.1RC1 ---> Latest release
My confusion has only increased now as far as when this BUG is fixed Or if at all fixed?
http://mysupport.netapp.com/NOW/cgi-bin/bol?Type=Detail&Display=1472 According to this BUG, this is already fixed in all versions of 8.3. I am currently running 8.3RC1 Simulator and suspending a Job is causing NDMP session ID to end. In 7-mode: When we suspend a Job from Backup Software, NDMP session ID is not lost and when you run Backup status command, it shows -> State : RESTARTABLEThe key word is 'RESTARTABLE' which dosent seem to work in cluster mode.
The NDMP Backup Restart Extension (BRE) interface is a proprietary extension defined in class 0x2050
According to NDMP.org:
NDMP_BRE_RESTART_BACKUP:
This request is used by the backup application (DMA) to instruct the Data Server to restart a previous backup operation at a specific point in the backup stream. Request arguments include a handle to a previously created backup context, the restart point specified as an absolute offset within the backup stream, and a file history entry corresponding to the restart point.The backup restart mechanism requires that the Data Server generate file history information and that the Data Server implementation of file history generate fh_info values as absolute byte offsets within the backup stream. The backup application determines restart points by accessing the Tape Server NDMP_MOVER_GET_STATE bytes_moved value at appropriate ‘checkpoints’ during the original backup operation. A checkpoint represents a known good point in the backup operation. BRE extensions are bydefault disabled, I enabled by setting it 'true' yet its not working. CMODE83RC1::*> ndmp extensions show
(vserver services ndmp extensions show)Is Extension 0x2050 Enabled: true Thanks,
-Ashwin
Maybe you are looking for
-
Satellite A110-195 PSAB0E - sound card has stopped working
Hello, My sound card has stopped working it was working fine but suddenly the sound quality started to faint and finally it stopped working i have tried the following methods: Realtek is default audio Control Panel/ Sound & Audio Devices/ Audio tab/
-
Download report into a flat file format
Hi Friends, I would like to know your thoughts on what is the best practice most of you using to download a report into a flat file(NOT csv). In my application business users want a report to be downloaded into their local desktop (just like a .csv)
-
Help with migrating from PPC G5 to MacBook Pro 2012
I haven't even booted up my new MacBook Pro, because a lot of postings in Discussions and elsewhere warn me of problems if I try to use Migration Assistant to bring my user data and files across from a PPC Mac to a new MacBook Pro running Lion. BORIN
-
Apex 4.0 how to add a button to each row of a report
Hi Everyone I have to a requirement where i need to add a button or link to each row of report dynamically and when a user clicks on it region has to display a region below. For example displaying report in region 1 and when a user clicks the link or
-
I am unable to enter a £ symbol to a wifi password has anyone had similar problem and found a solution?