Get Target table name and its count

Hi Experts,
I have created a Procedure where I want to get the Target table name and its count of the previous Interface in a Package and insert these values into the Audit table.
I am able to get the number of Inserts in previous step using getPrevStepLog() API, but I also want the Target table name and its total count of the previous Interface. Is there any generic way or code to bring these Information without hardcoding the table name. Kindly help to sort this issue.Thanks!
Warm Regards,
VBV

Hi VBV,
Please follow the below steps to audit ur execution.
Please note i coded in such a way that u can use ur existing procedure to capture the table name no need to query ur repository as its not advisable to query the repository as Oracle may change the structure in future which i personally feel right.
I created a Audit table with the below structure.
CREATE TABLE AUDIT_TABLE
INSERT_COUNT VARCHAR2(100 BYTE),
TABLE_NAME VARCHAR2(4000 BYTE)
Step 1 :
This step needs to be added in ur existing IKM after Commit step where i am using API to capture the target table name.
Step Name: Get Table Name
Command On Source
Technology: Oracle
Schema: Any Oracle related Schema
Command:
SELECT '<%=odiRef.getTargetTable("RES_NAME")%>' AS TGT_NAME FROM DUAL
Command On Target
Technology: Jython
Command:
TargetTable='#TGT_NAME'
Step 2:
In ur existing procedure add the below or add a new procedure.
Step Name: Audit Log
Command on Source
Technology : Oracle
Schema: Whichever schema holds the audit table
Command on Target
Technology : Jython
Command:
import java.sql as sql
import java.lang as lang
myCon =odiRef.getJDBCConnection("SRC")
MyStmt=myCon.createStatement()
myRs = MyStmt.executeQuery("INSERT INTO ODITGT.AUDIT_TABLE (INSERT_COUNT,TABLE_NAME) VALUES (<%=odiRef.getPrevStepLog("INSERT_COUNT")%>,'"+TargetTable+"')")
Thats it.
OTN doesnt allow me to put + sign in front of any word ( its assume its a Italic) so please add + (plus) sign before and after TargetTable in the above script.
This way u can capture the table name, insert count in to ur audit table.
Please note u need to call this Procedure after the successful completion of the interface in a package and make sure u selected the right IKM which capture the table name as in Step 1.
I tested in my local and its working fine. Let me know if u find any difficulties in implementation.
Thanks,
Guru

Similar Messages

  • How to get the table name and bind columns names in an INSERT statement ?

    I have an INSERT statement with input parameters (for example
    INSERT INTO my_table VALUES (:a, :a, :a)) and I want to know
    without parsing the statement which is the name of table to
    insert to and the corresponding columns.
    This is needed to generate the SELECT FOR UPDATE statement to
    refetch a BLOB before actually writing to it. The code does not
    know in advance the schema (generic code).
    Thanks in advance,
    Joseph Canedo

    Once you have prepared your statement, you can execute the
    statement with the OCI_DESCRIBE_ONLY mode before binding any
    columns. Then you can use OCIParamGet to find out about each
    column (column index is 1-based). You should get OCI_NO_DATA or
    ORA-24334 if there are no more columns in the statement. Note
    that the parameter descriptor from OCIParamGet is
    allocated/freed internally by OCI; you do not need to manage it
    explicitly. The parameter descriptor is passed to OCIAttrGet in
    order to obtain for instance the maximum size of data in the
    column OCI_ATTR_DATA_SIZE. You can also get the column name in
    this way, although I do not remember the #define off the top of
    my head. Getting the table name appears to be much more
    difficult; I have never had to do that yet. Good luck. -Ralph

  • How to get target file name and buffer the incoming messages?

    Hi Experts
    I have one scenarion like
    I wanted to find whether is there any file existing in target folder. If it exists I dont want to overwrite it but I have to buffer the incoming messages in some queue or something like that. And when ever the request comes next time I have to send the data buffered in queue first.
    I dont want to add any time stamp for target file to avoide duplication.
    Can we do this using XI. If yes please suggest me how to achive this.
    Regards
    Sowmya

    >
    Sowmya wrote:
    > Hi Experts
    >
    > I have one scenarion like
    > I wanted to find whether is there any file existing in target folder. If it exists I dont want to overwrite it but I have to buffer the incoming messages in some queue or something like that. And when ever the request comes next time I have to send the data buffered in queue first.
    >
    > I dont want to add any time stamp for target file to avoide duplication.
    >
    > Can we do this using XI. If yes please suggest me how to achive this.
    >
    >
    > Regards
    > Sowmya
    there is no standard way to achieve this. I suggest a redesign.
    post the files to a different directory and write a script which will move the file to the required target directory only if it is not present there.

  • How to get the table_name and its count(*) in a SQL

    Hi,
    Can anybody tell me how to write a sql to get the table_name and its count(*) in a SQL:
    Output should be:
    table_name count(*)
    XXX 261723
    YYY 3343
    Regards,
    G. Rajakumar.

    hello
    there r a lot ways
    i'll suggest u two of them
    1) the following dynamic sql procedure
    DECLARE
    TYPE array_type IS TABLE OF VARCHAR(30);
    TYPE cur_typ IS REF CURSOR;
    c1 cur_typ;
    count1 integer;
    tab_arr array_type;
    querystr varchar2(200);
    begin
    SELECT table_name bulk collect into tab_arr FROM sys.all_all_tables ;
    FOR I IN tab_arr.first..tab_arr.last LOOP
    DBMS_OUTPUT.PUT(TAB_ARR(I));
    querystr := 'select count(*) from ' ||TAB_ARR(I);
    open c1 for querystr;
    fetch c1 into count1;
    EXIT WHEN c1%NOTFOUND;
    dbms_output.put_line(count1);
    END LOOP;
    close c1;
    END;
    2) or use ANALYZE to analyze the tables and get the number of rows in the NUM_ROW column of DBA_TABLES view.
    if u still have any problem mail me at [email protected]
    shalini

  • How to get selection screen elements and its table reference of a report ?

    halo experts
    How can I get selection screen elements and its table reference of a report ? . I tried rs_refresh_from_select_options. But I am unable to get the table and field it is referring to
    For eg if my selection screen 1000 is
    parameters: p_carrid type spfli-carrid,
    select-options :s-_connid type sflight-connid.
    is there any Fm or method which gives me what are the screen elements( p_carrid and s_connid ) and what table( splfi and sflight ) and field ( carrid and conid )it is referring to ?

    The following code is an example of how you might dynamically determine all your PARAMETERS and SELECT-OPTIONS variables at run time.  The PARAMETERS and SELECT-OPTIONS only point to a dictionary element--not a specific table.  Even though you may say "spfli-carrid" or "sflight-connid", the data type really references the dictionary type and not a specific table/structure.
    REPORT  ZTEST_PROG.
    TABLES sflight.
    DATA:
           screen_tab TYPE STANDARD TABLE OF screen,
           wa_screen TYPE screen,
           scrn_nm TYPE string,
           scrn_leftover TYPE string,
           l_type TYPE REF TO cl_abap_typedescr,
           typ_nm TYPE string,
           typ_pre TYPE string.
    FIELD-SYMBOLS <fs_data> TYPE ANY.
    PARAMETERS p_carrid TYPE spfli-carrid.
    SELECT-OPTIONS s_connid FOR sflight-connid.
    INITIALIZATION.
      LOOP AT SCREEN.
        IF screen-group3 = 'PAR'
          OR screen-group3 = 'LOW'.
            APPEND screen TO screen_tab.
        ENDIF.
      ENDLOOP.
    START-OF-SELECTION.
      LOOP AT screen_tab INTO wa_screen.
        ASSIGN (wa_screen-name) TO <fs_data>.
        l_type = cl_abap_typedescr=>describe_by_data( <fs_data> ).
        IF wa_screen-group3 = 'LOW'.
          SPLIT wa_screen-name AT '-' INTO scrn_nm scrn_leftover.
          TRANSLATE scrn_nm TO UPPER CASE.
        ELSE.
          scrn_nm = wa_screen-name.
        ENDIF.
        SPLIT l_type->absolute_name AT '=' INTO typ_pre typ_nm.
        WRITE:
                 / 'Screen Name:  ', scrn_nm,
                 / 'DDIC Type:    ', typ_nm.
      ENDLOOP.
    When you get into defining internal tables you can determine those at run time with cl_abap_structdescr.  The following is an example of how you might do that.  You can loop through the "components_table" and evaluate each field of the structure in this way.
    DATA: structure_reference TYPE REF TO cl_abap_structdescr,
          components_table TYPE abap_compdescr_tab,
          components_structure LIKE LINE OF components_table.
    structure_reference ?= cl_abap_structdescr=>describe_by_data( any_structure ).
    components_table = structure_reference->components.
    I don't know if this answers any of your questions but I hope that some of it is useful.

  • How to get Current Background Job name and Job Count programmically?

    Hi all,
            I have a requirement wherein I need to get the Current Background Job name and Job Count in the program and store it in a custom table. In other words, whenever I schedule a particular program ( This is a Std program) in background, I need to update this table with the Job Name and Job Count. This will be used by another program later to read the Job Information from table TBTCO. TBTCO has key fields Job Name and Job ID. The sheduled program will be a SAP standard program and I'll be writing the logic to get the info in an Implicit Enhancement Spot.
    Is there anyway I can do this? Any FM to get this information?
    Thanks,
    Mahesh.

    Hey Adrian,
                             Thanks a lot. This is what exactly i was looking for. Appreciate it.
    Mahesh.

  • Jquery/JavaScript to get current browser's name and its version

    Hi,
    I using sharepoint 2010, 
    Is it possible using Jquery/JavaScript to get current browser's name and its version.
    when my sharepoint site home page opens i need to display a popup msg of current browser name and its version.
    can anyone help me on this.
    With Regards,
    RK

    Please use the below code snippet:
    And here is the source code that performed the browser detection:
    var nVer = navigator.appVersion;
    var nAgt = navigator.userAgent;
    var browserName = navigator.appName;
    var fullVersion = ''+parseFloat(navigator.appVersion);
    var majorVersion = parseInt(navigator.appVersion,10);
    var nameOffset,verOffset,ix;
    // In Opera 15+, the true version is after "OPR/"
    if ((verOffset=nAgt.indexOf("OPR/"))!=-1) {
    browserName = "Opera";
    fullVersion = nAgt.substring(verOffset+4);
    // In older Opera, the true version is after "Opera" or after "Version"
    else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
    browserName = "Opera";
    fullVersion = nAgt.substring(verOffset+6);
    if ((verOffset=nAgt.indexOf("Version"))!=-1)
    fullVersion = nAgt.substring(verOffset+8);
    // In MSIE, the true version is after "MSIE" in userAgent
    else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
    browserName = "Microsoft Internet Explorer";
    fullVersion = nAgt.substring(verOffset+5);
    // In Chrome, the true version is after "Chrome"
    else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
    browserName = "Chrome";
    fullVersion = nAgt.substring(verOffset+7);
    // In Safari, the true version is after "Safari" or after "Version"
    else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
    browserName = "Safari";
    fullVersion = nAgt.substring(verOffset+7);
    if ((verOffset=nAgt.indexOf("Version"))!=-1)
    fullVersion = nAgt.substring(verOffset+8);
    // In Firefox, the true version is after "Firefox"
    else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
    browserName = "Firefox";
    fullVersion = nAgt.substring(verOffset+8);
    // In most other browsers, "name/version" is at the end of userAgent
    else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) <
    (verOffset=nAgt.lastIndexOf('/')) )
    browserName = nAgt.substring(nameOffset,verOffset);
    fullVersion = nAgt.substring(verOffset+1);
    if (browserName.toLowerCase()==browserName.toUpperCase()) {
    browserName = navigator.appName;
    // trim the fullVersion string at semicolon/space if present
    if ((ix=fullVersion.indexOf(";"))!=-1)
    fullVersion=fullVersion.substring(0,ix);
    if ((ix=fullVersion.indexOf(" "))!=-1)
    fullVersion=fullVersion.substring(0,ix);
    majorVersion = parseInt(''+fullVersion,10);
    if (isNaN(majorVersion)) {
    fullVersion = ''+parseFloat(navigator.appVersion);
    majorVersion = parseInt(navigator.appVersion,10);
    document.write(''
    +'Browser name = '+browserName+'<br>'
    +'Full version = '+fullVersion+'<br>'
    +'Major version = '+majorVersion+'<br>'
    +'navigator.appName = '+navigator.appName+'<br>'
    +'navigator.userAgent = '+navigator.userAgent+'<br>'
    VARIABLES
    DESCRIPTION
    navigator.appCodeName 
    The code name of the browser 
    (e.g. Mozilla) 
    navigator.appName
    The name of the browser 
    (e.g. Netscape or Microsoft Internet Explorer) 
    navigator.appVersion
    The browser version (e.g. 3.0 or 4.0) 
    navigator.userAgent
    The header information for the browser. 
    (e.g. Mozilla/4.0) 
    navigator.platform
    The users operating system
    (e.g. WIN32)
    http://www.w3schools.com/js/js_window_navigator.asp
    Click on Propose as Answer if the solutions works for you.

  • If i pass the SEGMENT NAME and its SDATA can i get the all IDOCs?

    Hello
    If i pass the SEGMENT NAME and its SDATA can i get the all IDOCs of these values(sdata) holding? is tehre any standard SAP function module?
    Moderator message: please search for information and try yourself before asking.
    Edited by: Thomas Zloch on Aug 23, 2011 2:44 PM

    Hi Uwe,
    Thanks very much for your reply, now I have another problem .
    Only the authrotiy field in the authority object is not '*' shall I check for the authority, how can I realize this?
    thanks very much for your help.
    Lament

  • How to get the column name and table name from xml file

    I have one XML file, I generated xsd file from that xml file but the problem is i dont know table name and column name. So my question is how can I retrieve the data from that xml file?

    Here's an example using binary XML storage (instead of Object-Relational storage as described in the article).
    begin
      dbms_xmlschema.registerSchema(
        schemaURL       => 'my_schema.xsd'
      , schemaDoc       => xmltype(bfilename('TEST_DIR','my_schema.xsd'), nls_charset_id('AL32UTF8'))
      , local           => true
      , genTypes        => false
      , genTables       => true
      , enableHierarchy => dbms_xmlschema.ENABLE_HIERARCHY_CONTENTS
      , options         => dbms_xmlschema.REGISTER_BINARYXML
    end;
    genTables => true : means that a default schema-based XMLType table will be created during registration.
    enableHierarchy => dbms_xmlschema.ENABLE_HIERARCHY_CONTENTS : indicates that a repository resource conforming to the schema will be automatically stored in the default table.
    If the schema is not annotated, the name of the default table is system-generated but derived from the root element name :
    SQL> select table_name
      2  from user_xml_tables
      3  where xmlschema = 'my_schema.xsd'
      4  and element_name = 'employee';
    TABLE_NAME
    employee1121_TAB
    (warning : the name is case-sensitive)
    To annotate the schema and control the naming, modify the content to :
    <?xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
      <xs:element name="employee" xdb:defaultTable="EMPLOYEE_XML">
        <xs:complexType>
    Next step : create a resource, or just directly insert an XML document into the table.
    Example of creating a resource :
    declare
      res  boolean;
      doc  xmltype := xmltype(
    '<employee>
      <details>
        <emp_id>1</emp_id>
        <emp_name>SMITH</emp_name>
        <emp_age>40</emp_age>
        <emp_dept>10</emp_dept>
      </details>
    </employee>'
    begin
      res := dbms_xdb.CreateResource(
               abspath   => '/public/test.xml'
             , data      => doc
             , schemaurl => 'my_schema.xsd'
             , elem      => 'employee'
    end;
    The resource has to be schema-based so that the default storage mechanism is triggered.
    It could also be achieved if the document possesses an xsi:noNamespaceSchemaLocation attribute :
    SQL> declare
      2 
      3    res  boolean;
      4    doc  xmltype := xmltype(
      5  '<employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      6             xsi:noNamespaceSchemaLocation="my_schema.xsd">
      7    <details>
      8      <emp_id>1</emp_id>
      9      <emp_name>SMITH</emp_name>
    10      <emp_age>40</emp_age>
    11      <emp_dept>10</emp_dept>
    12    </details>
    13   </employee>'
    14   );
    15 
    16  begin
    17    res := dbms_xdb.CreateResource(
    18             abspath   => '/public/test.xml'
    19           , data      => doc
    20           );
    21  end;
    22  /
    PL/SQL procedure successfully completed
    SQL> set long 5000
    SQL> select * from "employee1121_TAB";
    SYS_NC_ROWINFO$
    <employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceS
      <details>
        <emp_id>1</emp_id>
        <emp_name>SMITH</emp_name>
        <emp_age>40</emp_age>
        <emp_dept>10</emp_dept>
      </details>
    </employee>
    Then use XMLTABLE to shred the XML into relational format :
    SQL> select x.*
      2  from "employee1121_TAB" t
      3     , xmltable('/employee/details'
      4         passing t.object_value
      5         columns emp_id   integer      path 'emp_id'
      6               , emp_name varchar2(30) path 'emp_name'
      7       ) x
      8  ;
                                     EMP_ID EMP_NAME
                                          1 SMITH

  • How to get the table name in the trigger definition without hard coding.

    CREATE  TRIGGER db.mytablename
    AFTER UPDATE,INSERT
    AS
        INSERT INTO table1(col1)
        SELECT InsRec.col1   
        FROM
        INSERTED Ins
       --Below i am calling one sp for which i have to pass the table name
       EXEC myspname 'tablename'
      In the above trigger,presently i am hard coding the tablename
      but is it possible to get the table name dynamically on which the trigger is defined in order to avoid hard coding the table name

    I really liked your audit table concept.  You inspired me to modify it so that, the entire recordset gets captured and added a couple of other fields.  Wanted to share my end result.
    USE [YourDB]
    GO
    /****** Object: Trigger [dbo].[iudt_AutoAuditChanges] Script Date: 10/18/2013 12:49:55 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER TRIGGER [dbo].[iudt_AutoAuditChanges]
    ON [dbo].[YourTable]
    AFTER INSERT,DELETE,UPDATE
    AS
    BEGIN
    SET NOCOUNT ON;
    Declare @v_AuditID bigint
    IF OBJECT_ID('dbo.AutoAudit','U') IS NULL BEGIN
    CREATE TABLE [dbo].[AutoAudit]
    ( [AuditID] bigint identity,
    [AuditDate] DateTime,
    [AuditUserName] varchar(128),
    [TableName] varchar(128) NULL,
    [OldContent] XML NULL,
    [NewContent] XML NULL
    ALTER TABLE dbo.AutoAudit ADD CONSTRAINT
    PK_AutoAudit PRIMARY KEY CLUSTERED
    [AuditID]
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    CREATE NONCLUSTERED INDEX [idx_AutoAudit_TableName_AuditDate] ON [dbo].[AutoAudit]
    ( [TableName] ASC,
    [AuditDate] ASC
    )WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    END
    Select * Into #AuditDeleted from deleted
    Select * Into #AuditInserted from inserted
    While (Select COUNT(*) from #AuditDeleted) > 0 OR (Select COUNT(*) from #AuditInserted) > 0
    Begin
    INSERT INTO [dbo].[AutoAudit]
    ( [AuditDate], [AuditUserName], [TableName], [OldContent], [NewContent])
    SELECT
    GETDATE(),
    SUSER_NAME(),
    [TableName]=object_name([parent_obj]),
    [OldContent]=CAST((SELECT TOP 1 * FROM #AuditDeleted D FOR XML RAW) AS XML),
    [NewContent]=CAST((SELECT TOP 1 * FROM #AuditInserted I FOR XML RAW) AS XML)
    FROM sysobjects
    WHERE
    [xtype] = 'tr'
    and [name] = OBJECT_NAME(@@PROCID)
    Set @v_AuditID = SCOPE_IDENTITY()
    Delete from AutoAudit
    Where AuditID = @v_AuditID
    AND Convert(varchar(max),oldContent) = Convert(varchar(max),NewContent)
    Delete top(1) from #AuditDeleted
    Delete top(1) from #AuditInserted
    End
    END

  • Table name and field name

    hi frds
    Give me table name and field name of OPEN PO QUANTITY ..
    thanks
    Pari Vendhan.R

    See the sample code for the open PO's based on Vendor
    and do accordingly
    *& Report ZMM_PO_REPORT
    REPORT ZMM_PO_REPORT message-Id yb
    NO STANDARD PAGE HEADING
    LINE-COUNT 60(1)
    LINE-SIZE 230.
    D A T A B A S E T A B L E S D E C L A R A T I O N
    TABLES: lfa1, " Vendor Master
    t161, " PO Doc Types
    t024, " Purchase Groups
    ekko. " PO Header
    T Y P E S D E C L A R A T I O N S
    Purchase Orders Main Structure
    TYPES: BEGIN OF s_po,
    ebeln TYPE ebeln, " PO No.
    ebelp TYPE ebelp, " PO Item
    bstyp TYPE bstyp, " PO Category
    bukrs TYPE bukrs, " Company Code
    bsart TYPE bbsrt, " PO Type
    lifnr TYPE lifnr, " Vendor No
    ekgrp TYPE bkgrp, " Purchase Group
    waers TYPE waers, " Currency
    bedat TYPE etbdt, " PO Date
    txz01 TYPE txz01, " Material Text
    werks TYPE ewerk, " Plant
    lgort TYPE lgort_d, " Storage Location
    matkl TYPE matkl, " Material Group
    menge TYPE bamng, " PR Quantity
    meins TYPE bamei, " UOM
    bprme TYPE bbprm, " Price Unit
    netpr TYPE netpr, " Net price
    peinh TYPE peinh, " Price Unit UOM
    pstyp TYPE pstyp, " Item Category
    knttp TYPE knttp, " Account Assignment Category
    END OF s_po.
    Purchase Orders History Structure
    TYPES: BEGIN OF s_account,
    ebeln TYPE ebeln, " PO No.
    ebelp TYPE ebelp, " PO Item
    gjahr TYPE mjahr, " Fiscal Year
    belnr TYPE mblnr, " PO Invoice No
    menge TYPE menge_d, " PR Quantity
    wrbtr TYPE wrbtr, " Price in Local Currency
    dmbtr TYPE dmbtr, " Price in Foreign Currency
    waers TYPE waers, " Currency
    shkzg TYPE shkzg, " Dr/Cr Indicator
    END OF s_account.
    Purchase Orders History Structure(Item Sum)
    TYPES: BEGIN OF s_inv_sum,
    ebeln TYPE ebeln, " PO No.
    ebelp TYPE ebelp, " PO Item
    menge TYPE menge_d, " PR Quantity
    wrbtr TYPE wrbtr, " Price in Foreign Currency
    waers TYPE waers, " Currency
    END OF s_inv_sum.
    Purchase Orders Main Structure
    TYPES: BEGIN OF s_rep,
    lifnr TYPE lifnr, " Vendor No
    ebeln TYPE ebeln, " PO No.
    ebelp TYPE ebelp, " PO Item
    bstyp TYPE bstyp, " PO Category
    bsart TYPE bbsrt, " PO Type
    ekgrp TYPE bkgrp, " Purchase Group
    waers TYPE waers, " Currency
    bedat TYPE etbdt, " PO Date
    txz01 TYPE txz01, " Material Text
    werks TYPE ewerk, " Plant
    lgort TYPE lgort_d, " Storage Location
    matkl TYPE matkl, " Material Group
    menge TYPE bamng, " PR Quantity
    meins TYPE bamei, " UOM
    bprme TYPE bbprm, " Price Unit
    netpr TYPE netpr, " Net price
    peinh TYPE peinh, " Price Unit UOM
    pstyp TYPE pstyp, " Item Category
    knttp TYPE knttp, " Account Assignment Category
    name1 TYPE name1, " Plant
    orewr TYPE netpr, " To be Invoiced Price
    curr TYPE waers, " Inv Doc Currency
    END OF s_rep.
    D A T A D E C L A R A T I O N S
    DATA: gv_title1 TYPE sylisel, " Report title
    gv_dial. " Color flag
    C O N S T A N T S D E C L A R A T I O N S
    CONSTANTS: c_x VALUE 'X', " Flag X
    c_h VALUE 'H', " Debit
    c_vgabe TYPE vgabe VALUE '2'. " Transaction Type
    I N T E R N A L T A B L E S D E C L A R A T I O N S
    DATA: i_po TYPE STANDARD TABLE OF s_po WITH HEADER LINE,
    " Purchase Order
    i_inv TYPE STANDARD TABLE OF s_inv_sum WITH HEADER LINE,
    " PO Invoice Values
    i_rep TYPE STANDARD TABLE OF s_rep WITH HEADER LINE,
    " PO Invoice Values
    i_ekbe TYPE STANDARD TABLE OF s_account WITH HEADER LINE.
    " PO Invoice Values
    S E L E C T I O N S C R E E N *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr MATCHCODE OBJECT kred,
    s_ebeln FOR ekko-ebeln MATCHCODE OBJECT mekk,
    s_bsart FOR t161-bsart,
    s_ekgrp FOR t024-ekgrp,
    s_bedat FOR ekko-bedat.
    SELECTION-SCREEN END OF BLOCK b1.
    I N I T I A L I Z A T I O N *
    INITIALIZATION.
    A T S E L E C T I O N - S C R E E N *
    AT SELECTION-SCREEN.
    Validate the screen fields
    PERFORM validate_screen.
    S T A R T - O F - S E L E C T I O N *
    START-OF-SELECTION.
    Fetch main data
    PERFORM fetch_data.
    T O P - O F - P A G E *
    TOP-OF-PAGE.
    Header of the List
    PERFORM header.
    E N D - O F - P A G E *
    Footer
    END-OF-PAGE.
    ULINE.
    E N D - O F - S E L E C T I O N *
    END-OF-SELECTION.
    Display the Report Output data
    PERFORM display_data.
    At Line-Selection
    AT LINE-SELECTION.
    When double clicked on EBELN display the details of Purchase Doc
    PERFORM line_sel.
    *& Form validate_screen
    Validation of Selection Screen fields
    FORM validate_screen .
    Validation of Vendor Number
    CLEAR lfa1-lifnr.
    IF NOT s_lifnr[] IS INITIAL.
    SELECT lifnr UP TO 1 ROWS
    INTO lfa1-lifnr
    FROM lfa1
    WHERE lifnr IN s_lifnr.
    ENDSELECT.
    IF sy-subrc 0.
    MESSAGE e000 WITH 'Invalid Vendor'(002).
    ENDIF.
    ENDIF.
    Validation of PO Number
    CLEAR ekko-ebeln.
    IF NOT s_ebeln[] IS INITIAL.
    SELECT ebeln UP TO 1 ROWS
    INTO ekko-ebeln
    FROM ekko
    WHERE ebeln IN s_ebeln.
    ENDSELECT.
    IF sy-subrc 0.
    MESSAGE e000 WITH 'Invalid Document Number'(003).
    ENDIF.
    ENDIF.
    Validation of PO Document Type
    CLEAR t161-bsart.
    IF NOT s_bsart[] IS INITIAL.
    SELECT bsart UP TO 1 ROWS
    INTO t161-bsart
    FROM t161
    WHERE bsart IN s_bsart.
    ENDSELECT.
    IF sy-subrc 0.
    MESSAGE e000 WITH 'Invalid Purchase Document Type'(004).
    ENDIF.
    ENDIF.
    Validation of Purchasing Group
    CLEAR t024-ekgrp.
    IF NOT s_ekgrp[] IS INITIAL.
    SELECT ekgrp UP TO 1 ROWS
    INTO t024-ekgrp
    FROM t024
    WHERE ekgrp IN s_ekgrp.
    ENDSELECT.
    IF sy-subrc 0.
    MESSAGE e000 WITH 'Invalid Purchasing Group'(005).
    ENDIF.
    ENDIF.
    ENDFORM. " validate_screen
    *& Form fetch_data
    Fetching the PO related data from Database Tables
    FORM fetch_data .
    CLEAR i_po.
    REFRESH i_po.
    SELECT a~ebeln " PO No.
    b~ebelp " PO Item
    a~bstyp " PO Category
    a~bukrs " Company Code
    a~bsart " PO Type
    a~lifnr " Vendor No
    a~ekgrp " Purchase Group
    a~waers " Currency
    a~bedat " PO Date
    b~txz01 " Material Text
    b~werks " Plant
    b~lgort " Storage Location
    b~matkl " Material Group
    b~menge " PR Quantity
    b~meins " UOM
    b~bprme " Price Unit
    b~netpr " Net price
    b~peinh " Price Unit UOM
    b~pstyp " Item Category
    b~knttp " Account Assignment Category
    INTO TABLE i_po
    FROM ekko AS a JOIN ekpo AS b
    ON a~ebeln = b~ebeln
    WHERE a~ebeln IN s_ebeln AND
    a~lifnr IN s_lifnr AND
    a~ekgrp IN s_ekgrp AND
    a~bsart IN s_bsart AND
    a~bedat IN s_bedat.
    SORT i_po BY ebeln ebelp.
    break-point.
    IF NOT i_po[] IS INITIAL.
    Fetch the PO History/Invoice Details from EKBE Table
    CLEAR i_ekbe.
    REFRESH i_ekbe.
    SELECT ebeln " PO No.
    ebelp " PO Item
    gjahr " Fiscal Year
    belnr " PO Invoice No
    menge " PR Quantity
    wrbtr " Price in Local Currency
    dmbtr " Price in Foreign Currency
    waers " Currency
    shkzg " Dr/Cr Indicator
    INTO TABLE i_ekbe
    FROM ekbe
    FOR ALL ENTRIES IN i_po
    WHERE ebeln = i_po-ebeln AND
    ebelp = i_po-ebelp AND
    vgabe = c_vgabe.
    IF sy-subrc = 0.
    SORT i_ekbe BY ebeln ebelp.
    LOOP AT i_ekbe.
    IF i_ekbe-shkzg = c_h.
    i_ekbe-wrbtr = i_ekbe-wrbtr * -1.
    ENDIF.
    MODIFY i_ekbe.
    ENDLOOP.
    break-point.
    Sum up the Item wise Invoice totals
    LOOP AT i_ekbe.
    AT END OF ebelp.
    READ TABLE i_ekbe INDEX sy-tabix.
    SUM.
    MOVE-CORRESPONDING i_ekbe TO i_inv.
    APPEND i_inv.
    ENDAT.
    CLEAR i_inv.
    ENDLOOP.
    SORT i_inv BY ebeln ebelp.
    break-point.
    ENDIF.
    ENDIF.
    Move the Vendor Name and Invoice Values to I_rep Internal Table
    LOOP AT i_po.
    MOVE-CORRESPONDING i_po TO i_rep.
    CLEAR i_inv.
    READ TABLE i_inv WITH KEY ebeln = i_po-ebeln
    ebelp = i_po-ebelp.
    IF sy-subrc = 0.
    i_rep-orewr = ( i_po-menge - i_inv-menge ) * i_po-netpr.
    i_rep-curr = i_inv-waers.
    ELSE.
    i_rep-orewr = i_po-menge * i_po-netpr.
    i_rep-curr = i_po-waers.
    ENDIF.
    break-point.
    Get the Vendor Name
    CLEAR lfa1-name1.
    SELECT SINGLE name1 FROM lfa1 INTO lfa1-name1
    WHERE lifnr = i_po-lifnr.
    IF sy-subrc = 0.
    i_rep-name1 = lfa1-name1.
    ENDIF.
    APPEND i_rep.
    CLEAR i_rep.
    break-point.
    ENDLOOP.
    SORT i_rep BY lifnr ebeln ebelp.
    DELETE i_rep WHERE orewr LE 0.
    break-point.
    ENDFORM. " fetch_data
    *& Form display_data
    Display the Report Output data
    FORM display_data .
    DATA: lv_flag, " New Flag
    lv_rec TYPE i. " No of Records
    CLEAR lv_rec.
    IF i_rep[] IS INITIAL.
    MESSAGE e000 WITH 'No Data found'(022).
    ELSE.
    LOOP AT i_rep.
    Toggle Color
    PERFORM toggle_color.
    IF lv_flag space.
    NEW-LINE.
    ENDIF.
    At New Purchase Document
    AT NEW ebeln.
    WRITE:/1 sy-vline, 2(10) i_rep-ebeln INTENSIFIED OFF.
    lv_flag = c_x.
    lv_rec = lv_rec + 1.
    ENDAT.
    WRITE: 1 sy-vline,
    12 sy-vline,13(4) i_rep-bsart,
    17 sy-vline,18(10) i_rep-lifnr,
    28 sy-vline,29(35) i_rep-name1,
    64 sy-vline,65(4) i_rep-ekgrp,
    69 sy-vline,70(10) i_rep-bedat,
    80 sy-vline,81(5) i_rep-ebelp,
    86 sy-vline,87(40) i_rep-txz01,
    127 sy-vline,128(9) i_rep-matkl,
    137 sy-vline,138(1) i_rep-pstyp,
    139 sy-vline,140(1) i_rep-knttp,
    141 sy-vline,142(4) i_rep-werks,
    146 sy-vline,147(4) i_rep-lgort,
    151 sy-vline,152(13) i_rep-menge UNIT i_rep-meins,
    165 sy-vline,166(3) i_rep-meins,
    169 sy-vline,170(15) i_rep-netpr CURRENCY i_rep-waers,
    185 sy-vline,186(4) i_rep-waers,
    190 sy-vline,191(5) i_rep-peinh,
    196 sy-vline,197(4) i_rep-bprme,
    201 sy-vline,202(15) i_rep-orewr CURRENCY i_rep-curr,
    217 sy-vline,218(4) i_rep-curr,
    222 sy-vline,223(7) i_rep-bstyp centered,
    230 sy-vline.
    NEW-LINE.
    hide: i_rep-ebeln.
    ENDLOOP.
    ULINE.
    FORMAT COLOR OFF.
    WRITE : /2 'Total Number of Purchasing Documents:'(025) COLOR 3,
    lv_rec COLOR 3.
    ENDIF.
    ENDFORM. " display_data
    *& Form header
    Write the Report Header
    FORM header .
    FORMAT RESET.
    header
    WRITE:/1(230) 'LIST OF PURCHASE DOCUMENTS PER VENDOR'(006) CENTERED.
    SKIP.
    FORMAT COLOR COL_HEADING.
    ULINE.
    WRITE:/1 sy-vline,2(10) 'Pur.Doc.No'(006) CENTERED,
    12 sy-vline,13(4) 'Type'(007),
    17 sy-vline,18(10) 'Vendor'(008) CENTERED,
    28 sy-vline,29(35) 'Name'(009) CENTERED,
    64 sy-vline,65(4) 'PGrp'(010) CENTERED,
    69 sy-vline,70(10) 'Doc.Date'(012) CENTERED,
    80 sy-vline,81(5) 'Item'(011),
    86 sy-vline,87(40) 'Material Short Text'(024) CENTERED,
    127 sy-vline,128(9) 'Mat.Group'(013),
    137 sy-vline,138(1) 'I',
    139 sy-vline,140(1) 'A',
    141 sy-vline,142(4) 'Plnt'(014),
    146 sy-vline,147(4) 'SLoc'(015),
    151 sy-vline,152(13) 'Quantity'(016) CENTERED,
    165 sy-vline,166(3) 'UoM'(017),
    169 sy-vline,170(15) 'Net Value'(018) CENTERED,
    185 sy-vline,186(4) 'Curr'(019),
    190 sy-vline,191(5) 'Per'(020),
    196 sy-vline,197(4) 'Unit'(021),
    201 sy-vline,202(15) 'To be Invoiced'(023) CENTERED,
    217 sy-vline,218(4) 'Curr'(019),
    222 sy-vline,223(7) 'Doc.Cat'(026),
    230 sy-vline.
    ULINE.
    ENDFORM. " header
    *& Form toggle_color
    This routine alters the color of the records in the list FORM toggle_color.
    IF gv_dial = space.
    FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    gv_dial = c_x.
    ELSE.
    FORMAT COLOR 1 INTENSIFIED OFF.
    CLEAR gv_dial.
    ENDIF.
    ENDFORM. " toggle_color
    *& Form LINE_SEL
    *When double clicked on EBELN field display the details of Purchase Doc
    FORM line_sel.
    CASE sy-lsind.
    WHEN '1'.
    DATA: lv_field(20),
    lv_value(10),
    lv_bstyp like i_rep-bstyp.
    clear: lv_bstyp,lv_value, lv_field.
    GET CURSOR FIELD lv_field VALUE lv_value.
    IF lv_field = 'I_REP-EBELN'.
    IF NOT lv_value IS INITIAL.
    READ LINE sy-index FIELD VALUE i_rep-bstyp
    INTO lv_bstyp.
    READ CURRENT LINE FIELD VALUE i_rep-bstyp INTO lv_bstyp.
    if lv_bstyp = 'F'.
    SET PARAMETER ID 'BES' FIELD lv_value.
    CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    elseif ( lv_bstyp = 'K' or lv_bstyp = 'L' ).
    SET PARAMETER ID 'VRT' FIELD lv_value.
    CALL TRANSACTION 'ME33' AND SKIP FIRST SCREEN.
    elseif lv_bstyp = 'A'.
    SET PARAMETER ID 'ANF' FIELD lv_value.
    CALL TRANSACTION 'ME43' AND SKIP FIRST SCREEN.
    endif.
    ENDIF.
    ENDIF.
    ENDCASE.
    ENDFORM. " line_sel{code]
    <REMOVED BY MODERATOR>
    kushagra
    Edited by: Alvaro Tejada Galindo on Feb 18, 2008 2:03 PM

  • How to get source table name

    Hi,
    I need to know how get a source table name. I need to get a source table name and do some transformation. I am adding the step in IKM to do this and therefore need source table name in there.
    <%=odiRef.getSrcTablesList("","[RES_NAME]","","")%> gives work table name (C$_0XXXXX) whereas actual source table name is expected.
    Could someone please help?
    Thanks.

    Hi,
    May i add a point?
    In IKM level, if u use this API it will always return u C$ table name only since for IKM C$ is the source. You need to capture and use this API in LKM level.
    In LKM add a step in Command on target and technology as Jython and try the below code.
    mySourceTable= '<%=odiRef.getSrcTablesList("", "[RES_NAME]", ", ", "")%>'
    And later in IKM use this variable for ur transformation.
    Thanks,
    Guru

  • How to get the table name of a field in a result set

    hi!
    i have a simple sql query as
    select tbl_customerRegistration.*, tbl_customerAddress.address from tbl_customerRegistration, tbl_customerAddress where tbl_customerAddress.customer_id = tbl_customerRegistration.customer_ID
    this query executes well and gets data from the database when i get ResultsetMetaData from my result set (having result of above query) i am able to get the field name as
    ResultSetMetaData rsmd = rs.getMetaData();//rs is result set
    String columnName = rsmd.getColumnName(1);
    here i get columnName = "Customer_id"
    but when i try to get the tabel name from meta data as
    String tableName = rsmd.getTableName(1); i get empty string in table name....
    i want to get the table name of the respective field here as it is very important to my logic.....
    how can i do that.....
    please help me in that regard as it is very urgent
    thanks in advance
    sajjad ahmed paracha
    you may also see the discussion on following link
    http://forum.java.sun.com/thread.jspa?threadID=610200&tstart=0

    So far as I'm aware, you can't get metadata information about the underlying tables in a query from Oracle and/or the Oracle drivers. I suspect, in fact, that the driver would have to have its own SQL parser to get this sort of information.
    I'm curious though-- how do you have application logic that depends on the name of the source table but not know in the application what table is involved? Could you do something "cheesy" like
    SELECT 'tbl_customerRegistration' AS tbl1_name,
           tbl_customerRegistration.*
    ...Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • Table names and field names for the PO item details

    Hi,
    I want table names and field name for the below fields.
    I have PO number i want to get below fields for PO.
    <b>Confirmed Ship Date (or actual ship date if already shipped) – PGI Date
    Quantity of Product to be shipped (base unit of measure) Sales Order Qty
    Shipped Quantity of Product (normally zero)
    Shipped From Plant Name</b>
    Excellent reward is compulsary.
    reagrds,
    vijay

    Hi,
    Please find below the some of tables and fields for the PO. But from your query hope you are refering some other PO.
    Table : EKPO
    Fields
    KTMNG - Target Qty
    MENGE - Open Qty
    WEPOS - Goods Receipt
    LEWED - Latest GR date
    Table : EORD
    Fields
    RESWK - Procurement plant
    FRESW - Fixed Issuing plant
    LIFNR - Vendor
    FLIFN - Fixed vendor
    Regards,
    BK

  • SQL Query to get All AD Groups and its users in Active Directory

    Hi,
       Is there any query to get all AD groups and its user in an instance of a SQL server?

    Check this blog.
    http://www.mikefal.net/2011/04/18/monday-scripts-%E2%80%93-xp_logininfo/
    It will give you more than what is required. If you dont want the extra information,then you can try this.. I took the query and removed the bits that you might not require.
    declare @winlogins table
    (acct_name sysname,
    acct_type varchar(10),
    act_priv varchar(10),
    login_name sysname,
    perm_path sysname)
    declare @group sysname
    declare recscan cursor for
    select name from sys.server_principals
    where type = 'G' and name not like 'NT%'
    open recscan
    fetch next from recscan into @group
    while @@FETCH_STATUS = 0
    begin
    insert into @winlogins
    exec xp_logininfo @group,'members'
    fetch next from recscan into @group
    end
    close recscan
    deallocate recscan
    select
    u.name,
    u.type_desc,
    wl.login_name,
    wl.acct_type
    from sys.server_principals u
    inner join @winlogins wl on u.name = wl.perm_path
    where u.type = 'G'
    order by u.name,wl.login_name
    Regards, Ashwin Menon My Blog - http:\\sqllearnings.com

Maybe you are looking for

  • Wireless Keyboard Low Battery Indicator

    I just purchased a new HP Touchsmart 300-1017 PC.  I got the "Low Battery Indicator" message for the wireless keyboard after taking it out of the box so I put new batteries in.   Now, two weeks later, I got the same message.  How long should the batt

  • Purple LED flashing every minute

    I cannot find the source of this Purple LED that flashes every minute.  It even flashes when in Bedside Mode. I have looked through all Apps in Settings >> Notifications. I had an App called 'Power Tools' installed. This allows for the changing of LE

  • How can I copy a screenshot for emailing?

    I want to copy an image of the screen and include it in an emai. How can I do that?

  • Keeping changes when saving to jpeg.

    Working in raw, I have made changes to exposurre etc.  when I save to jpeg they go lighter.  I have looked in the colour settings which are set the same as the camera at sRGB but not sure if I a missing something.  I have recently upgraded from CS4 t

  • Add Face....Can't select box to move position of face

    I have ran into this a few times now. If a photo has multiple faces, but iPhoto only picked up on a couple and left out one or more. I go into the photo and ADD FACE, if the previous faces that iPhoto found are in the middle of the photo, the newly c