Displaying data in a tree from database table

Hi,
I want to display data from a database table (mara-matnr) in a tree structure. I went through the coding of SBSPEXT_HTMLB. There static data was taken in to wa_tab. But there I want to bring data from a database table into wa_tab. For this I created an internal table without headerline by taking a work area, now how can I move data from this work area to wa_tab record by record.
I hope some one might have worked on this. Plz help me....
Thanks in advance,
Ravindra.

Hi,
take a look at this <a href="/people/tomas.altman/blog/2004/12/13/sdn-blog-how-to-do-internal-tables-in-bsp which explains how internal tables work in ABAP OO.
Furthermore I think you want to do this:
insert <yourWorkarea> into table wa_tab.
A complete mara example would be:
data tab_mara type table of mara.
data wa_mara type mara.
select * from mara into table tab_mara.
*or you can use:
select * from mara into wa_mara.
   insert wa_mara into table tab_mara.
endselect.
regards
Thomas

Similar Messages

  • How to display data in detail block from a table.

    Dear members,
    i have 2 blocks. 1 is master block and another is detail block with multiple records.
    the requirement is when i navigate to the detail block the data from a table is displayed in it. using a where clause depend on the value in an item in the master block.
    i wrote the following code and tried in when-new-block-instance, when-new-record-instance, pre-block and post-block
    but...
    DECLARE
         CURSOR ITEM_CUR IS
         SELECT ITEM_ID, QTY_APPROVED
         FROM IN_REQUEST_FORM_DETAIL
         WHERE RF_MASTER_ID = :IN_MASTER_PO.RF_ID;
    BEGIN
         FOR ITEM_REC IN ITEM_CUR LOOP
              :IN_PO_DETAIL.ITEM_ID := ITEM_REC.ITEM_ID;
              :IN_PO_DETAIL.DIS_APPROVED_QTY := ITEM_REC.QTY_APPROVED;
              NEXT_RECORD;
              END LOOP;
    EXCEPTION
         WHEN NO_DATA_FOUND THEN
         MESSAGE ('THERE IS NO REQUESTS');
    END;

    thanks dear simon,
    i want to display the data from a table not included in this form. and these two tables are connected via a relation.
    i have the following tables.
    in_master_po
    PO_ID pk
    PO_DATE
    RF_DETAIL_ID fk (in_request_form_detail)
    in_po_detail
    DETAIL_PO_ID pk
    ITEM_ID fk
    PO_ID fk (in_master_po)
    QTY
    the above 2 tables are datablocks connected via relation
    the following is the from which i want to bring the data to display
    in_request_form_detail
    RF_DETAIL_ID pk
    ITEM_ID fk (items)
    QTY_REQ
    i tried my code on the sample tables with scott/tiger there it works good.
    thanks
    Muhammad Nadeem

  • Creating XML file using data from database table

    I have to create an xml file using the data from multiple table. The problem That i am facing is the data is huge it is in millions so I was wondering that is there any efective way of creating such an xml file.
    It would be great if you can suggest some approach to achieve my requirement.
    Thanks,
    -Vinod

    An example from the forum: Re: How to generate xml file from database table
    Edited by: Marco Gralike on Oct 18, 2012 9:41 PM

  • Extract data from database tables and download in pdf and csv

    extract data from database tables and download in pdf and csv
    hi how can i re-write my old form procedure in adf java. the procedure used to extract data from diffirent table and dowload the data in pdf and csv.am not downloading image, i what to extract data from diffirent tables in my database and download that data in pdf and csv. i would like to write this in java adf.i just what direction am not asking anyone to do my work this is my learning curve
    the form code is
    function merge_header3 return varchar2 is
    begin
         return '~FACILITY DESCRIPTION~ACCOUNT NO~BRANCH CODE~BANK REF NO.~P/P/ AMOUNT~Postal Address 1~Postal Address 2~Box Postal Code~Dep. Date~Month~BANK NAME~BRANCH NAME~ACCOUNT TYPE~DESCRIPTION~OBJECTIVE DESCRIPTION';
    end;
    procedure download_file (i_pbat integer) is
      dir varchar2(80);
      file_name1 varchar2(80);
      file_name2 varchar2(80);
      appl_code varchar2(80);
      fil1 client_text_io.file_type;
      fil2 client_text_io.file_type;
      dat varchar2(1000);
      DATA VARCHAR2(1000);
      bvspro varchar2(100);
      ssch   varchar2(100);
      bvspro_total number(20,2);
      ssch_total   number(20,2);
      grand_total  number(20,2);
      cnt    integer;
      cursor pbat is
           select *
           from sms_payment_batches
           where id = i_pbat
      cursor pay  (pb_id integer) is
           select *
           from sms_payment_vw
           where pbat_id = pb_id
           order by subsidy ASC,programme,beneficiary_name
      cursor cgref (low varchar2) is
           select *
           from cg_ref_codes
           where rv_domain ='SMS'
           and rv_low_value = low
      success boolean;     
      begin  
           set_application_property(cursor_style,'busy');
           appl_code := sms_global.ref_code('SMS','APP_CODE','SMS',0);
        dir       := sms_global.ref_code('SMS','PAY_DIR','c:\sms\batch_payments',0);
             success := webutil_file.create_directory(dir);
         if webutil_file.file_is_directory(dir) then
             null;
    --         message ('directory exists');
        else
    --                  message ('create directory ');
             success := webutil_file.create_directory(dir);
    --         if success then        message ('directory exists');    end if;
        end if;     
        for c_pbat in pbat loop
             file_name1 := dir ||'\' || appl_code||c_pbat.batch_number||'-'||to_char(c_pbat.batch_dt,'yyyymmdd')||'pay.txt';
             file_name2 := dir ||'\' || appl_code||c_pbat.batch_number||'-'||to_char(c_pbat.batch_dt,'yyyymmdd')||'merge.txt';
    --message('create files ');
    --         fil1  := client_text_io.fopen (file_name1,'W');
    --         fil2  := client_text_io.fopen (file_name2,'W');
        fil1  := client_text_io.fopen (file_name1,'W','');
        fil2  := client_text_io.fopen (file_name2,'W','');
                   dat :=                       'FROM ACCOUNT NUMBER'
                                                                ||'~'||'FROM ACCOUNT DESCRIPTION'
                                                                ||'~'||'MY STATEMENT DESCRIPTION'
                                                                ||'~'||'BENEFICIARY ACCOUNT NUMBER'
                                                                ||'~'||'BENEFICIARY SUB ACCOUNT NUMBER'        
                                                                ||'~'||'BENEFICIARY BRANCH CODE'
                                                                ||'~'||'BENEFICIARY NAME'
                                                                ||'~'||'BENEFICIARY STATEMENT DESCRIPTION'
                                                                ||'~'||'AMOUNT';
             --     client_text_io.put_line(fil1,dat);
             bvspro:= null;
             ssch  := null;
             cnt := 0;     
             dat := '~'||lpad('~',16,'~');
             for c_pay in pay(c_pbat.id) loop
    --message('cpay loop ' || cnt);              
               if bvspro is null then
                     dat := lpad('~',16,'~');
                     dat := utility.put_field(1,c_pay.programme,dat,'~');     
               client_text_io.put_line(fil2,dat);
               dat := utility.put_field(1,c_pay.subsidy,dat,'~');
               client_text_io.put_line(fil2,dat);
               dat := merge_header3;
                     client_text_io.put_line(fil2,dat);
                     bvspro := c_pay.programme;
                     ssch := c_pay.subsidy;
                     grand_total := 0;
                     bvspro_total := 0;
                     ssch_total := 0;
               end if;
               if bvspro <> c_pay.programme then
                     dat := lpad('~',16,'~');
                     dat := utility.put_field(5,ssch_total,dat,'~');
                     dat := lpad('~',16,'~');
                     dat := utility.put_field(5,bvspro_total,dat,'~');
               dat := utility.put_field(1,'Total:' || bvspro,dat,'~');
                     client_text_io.put_line(fil2,dat);
                     dat := lpad('~',16,'~');
               client_text_io.put_line(fil2,dat);
                     dat := utility.put_field(1,c_pay.programme,dat,'~');     
               client_text_io.put_line(fil2,dat);
                     bvspro := c_pay.programme;
               dat := utility.put_field(1,c_pay.subsidy,dat,'~');
               client_text_io.put_line(fil2,dat);
               dat := merge_header3;
                     client_text_io.put_line(fil2,dat);
                     bvspro := c_pay.programme;
                     ssch := c_pay.subsidy;
                     bvspro_total := 0;
                     ssch_total := 0;
                     cnt :=0;
             end if;                           
               if ssch <> c_pay.subsidy then
                     dat := lpad('~',16,'~');
                     dat := utility.put_field(5,ssch_total,dat,'~');
                     dat := lpad('~',16,'~');
               client_text_io.put_line(fil2,dat);
               dat := utility.put_field(1,c_pay.subsidy,dat,'~');
               client_text_io.put_line(fil2,dat);
               dat := merge_header3;
                     client_text_io.put_line(fil2,dat);
                     ssch := c_pay.subsidy;
                     ssch_total := 0;
                     cnt :=0;
             end if;                           
            bvspro_total := bvspro_total + c_pay.amount;
            ssch_total   := ssch_total   + c_pay.amount;              
                  grand_total  := grand_total  + c_pay.amount;              
            cnt := cnt +1;
    --message('bfore write file 2 ' );              
            client_text_io.put_line(fil2
                                   ,cnt
                            ||'~'|| c_pay.beneficiary_name
                                                                ||'~'||c_pay.BENEFICIARY_ACCOUNT_NUMBER ||''            
                                                                ||'~'||c_pay.BRANCH_CODE             ||''           
                                                                ||'~'|| c_pay.BENEFICIARY_STATEMENT_DESC            
                                                                ||'~'|| c_pay.AMOUNT                                
                            ||'~'|| c_pay.address_line1
                            ||'~'|| c_pay.address_line2
                                                    ||'~'|| c_pay.postal_code
                                                    ||'~'|| TO_CHAR(c_pay.deposit_date,'DD-Mon-YYYY')
                                                    ||'~'|| c_pay.month
                                                    ||'~'|| c_pay.bank
                                                    ||'~'|| c_pay.bank_branch
                                                    ||'~'|| c_pay.account_type
                                                    ||'~'|| c_pay.subsidy
                                                    ||'~'|| c_pay.programme)
                  DATA :=                                  c_pay.FROM_ACCOUNT_NUMBER                   
                                                                ||'~'||c_pay.FROM_ACCOUNT_DESCR                    
                                                                ||'~'||c_pay.MY_STATEMENT_DESCR                    
                                                                ||'~'||c_pay.BENEFICIARY_ACCOUNT_NUMBER
                                                                ||'~'
                                                                ||'~'||c_pay.BRANCH_CODE            
                                                                ||'~'||c_pay.BENEFICIARY_NAME                      
                                                                ||'~'||c_pay.BENEFICIARY_STATEMENT_DESC            
                                                                ||'~'||c_pay.AMOUNT;                                
            DATA := REPLACE(DATA, ',' , ' ' );
            DATA := REPLACE(DATA, '~' , ',' );
    --message (cnt ||' ' || data);       
    --message('bfore write file 1 ' );              
                  client_text_io.put_line(fil1, data);
             end loop;
    --message ('end of write');         
                 dat := lpad('~',16,'~');
                 dat := utility.put_field(6,ssch_total,dat,'~');
                 dat := lpad('~',16,'~');
           dat := utility.put_field(1,'Total:' || bvspro,dat,'~');
                 dat := utility.put_field(5,bvspro_total,dat,'~');
              client_text_io.put_line(fil2,dat);
              dat := lpad('~',16,'~');
           client_text_io.put_line(fil2,dat);
           dat := utility.put_field(1,'Grand Total:' ,dat,'~');
                 dat := utility.put_field(5,grand_total,dat,'~');
              client_text_io.put_line(fil2,dat);
             -- close file
    for i in 1..50 loop  
           if substr(i,-1) = 0 then
                 message ('flush ' || i);
           end if;                 
                  client_text_io.put_line(fil1, lpad(' ',2000));
                  client_text_io.put_line(fil2, lpad(' ',2000));
                  client_text_io.put_line(fil1, lpad(' ',2000));
                  client_text_io.put_line(fil2, lpad(' ',2000));
    end loop;
             client_text_io.fclose(fil1);
             client_text_io.fclose(fil2);
        end loop;
       set_application_property(cursor_style,'default');
        exception
             when others then
                  message(sqlcode ||' ' ||sqlerrm);
       end download_file;    i try this but this code onlydownload image not data from database tables
        public void downloadImage(FacesContext facesContext, OutputStream outputStream)
            BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
            // get an ADF attributevalue from the ADF page definitions
            AttributeBinding attr = (AttributeBinding) bindings.getControlBinding("DocumentImage");
            if (attr == null)
                return;
            // the value is a BlobDomain data type
            BlobDomain blob = (BlobDomain) attr.getInputValue();
            try
            {   // copy the data from the BlobDomain to the output stream
                IOUtils.copy(blob.getInputStream(), outputStream);
                // cloase the blob to release the recources
                blob.closeInputStream();
                // flush the output stream
                outputStream.flush();
            catch (IOException e)
                // handle errors
                e.printStackTrace();
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "");
                FacesContext.getCurrentInstance().addMessage(null, msg);
            }

    You should ask your forum in the ADF-forum.

  • How to create tree by database table

    hello sir ,
    my table is as follows,
    NAME LINK ID PID ROLLID
    User mgt. f?p=131:1: 1 - 10 ////root node///
    district 10 1 1 child
    Roles 16 14 4 child
    Users 11 10 1 child
    ROLLID is given from another table whis is (ROLES). i making tree by the combinations of id , pid, & roll id. by the roll id i can manage the tree to do not display specific nodes to specific users.
    ROLE table as :
    ROLE_ID NAME DESCRIPTION
    1 Administrator This is administrator
    2 Assistant Director -
    3 Assistant Statistical Officer -
    4 Data Entry Operator -
    but i think it is very complicated process . give me solution about it
    also i have to give my images to each node. how can i do that?

    You already have a thread going about this: Re: how to create tree by database table .
    Scott

  • Reconciilation from database table

    Hi I have to reconcile data from database table. I am using OIM 10g and Oracle 11g R2.
    I have created one GTC for Database Tables. And able to run th scheduled task for it.
    Table name: recondb
    there is one record present in table.but i saw on OIM server log it says no records.
    Not able to figure out what is the problem.
    log:
    DEBUG,07 Mar 2011 13:51:02,678,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize entered.
    DEBUG,07 Mar 2011 13:51:02,695,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: driver - Value: oracle.jdbc.driver.OracleDriver
    DEBUG,07 Mar 2011 13:51:02,696,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: url - Value: jdbc:oracle:thin:@10.88.176.155:1521:TRAININ
    DEBUG,07 Mar 2011 13:51:02,697,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: username - Value: oimuserpc
    DEBUG,07 Mar 2011 13:51:02,699,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: password - Value: *******
    DEBUG,07 Mar 2011 13:51:02,700,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: customizedQueries - Value:
    DEBUG,07 Mar 2011 13:51:02,702,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: useNativeQuery - Value: false
    DEBUG,07 Mar 2011 13:51:02,704,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: parentContainerName - Value: recondb
    DEBUG,07 Mar 2011 13:51:02,705,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/convertCSVToArraylist entered.
    DEBUG,07 Mar 2011 13:51:02,707,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/convertCSVToArraylist: providerParams:
    DEBUG,07 Mar 2011 13:51:02,709,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/convertCSVToArraylist left.
    DEBUG,07 Mar 2011 13:51:02,712,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: childContainerTableNames - Value: []
    DEBUG,07 Mar 2011 13:51:02,713,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: parentContainerUniqueKey - Value: userid
    DEBUG,07 Mar 2011 13:51:02,715,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: incrementalReconAttribute - Value:
    DEBUG,07 Mar 2011 13:51:02,756,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize - Data: dbDateFormat - Value: yyyy/MM/dd hh:mm:ss z
    DEBUG,07 Mar 2011 13:51:02,756,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/initialize left.
    DEBUG,07 Mar 2011 13:51:02,769,[OIMCP.DATC],Class/Method: DBFacade/getConnectio
    Prop entered.
    DEBUG,07 Mar 2011 13:51:02,837,[OIMCP.DATC],Class/Method: DBFacade/getClumns -
    ata: Columns: - Value: [com.thortech.xl.gc.impl.common.Column@1a15f06, com.tho
    tech.xl.gc.impl.common.Column@1658cfb, com.thortech.xl.gc.impl.common.Column@ad
    5b, com.thortech.xl.gc.impl.common.Column@1c0c692, com.thortech.xl.gc.impl.comm
    n.Column@12cc218, com.thortech.xl.gc.impl.common.Column@17ae572, com.thortech.x
    .gc.impl.common.Column@16db297, com.thortech.xl.gc.impl.common.Column@e7ebba]
    DEBUG,07 Mar 2011 13:51:02,849,[OIMCP.DATC],Class/Method: DBFacade/getPrimaryKe
    s - Data: Primary Keys - Value: []
    DEBUG,07 Mar 2011 13:51:02,850,[OIMCP.DATC],Class/Method: DBFacade/getSchema -
    ata: Parent Unique Key: - Value: [USERID]
    DEBUG,07 Mar 2011 13:51:02,851,[OIMCP.DATC],Class/Method: DBReconTransportProvi
    er/getFirstPage - Data: Filter Query - Value:
    DEBUG,07 Mar 2011 13:51:02,861,[OIMCP.DATC],Class/Method: DBFacade/getRecord -
    ata: SQL - Value: select * from oimuserpc.recondb
    DEBUG,07 Mar 2011 13:51:02,881,[OIMCP.DATC],Class/Method: DBFacade/getRecord -
    ata: startpage - Value: -1
    DEBUG,07 Mar 2011 13:51:02,882,[OIMCP.DATC],Class/Method: DBFacade/getRecord -
    ata: endpage - Value: -1
    DEBUG,07 Mar 2011 13:51:02,883,[OIMCP.DATC],Class/Method: DBFacade/getRecord -
    ata: Number of records - Value: 0

    I got Null Pointer Exception after User Password. I have checked mapping of Pasword field its correct.
    Here is log:
    DEBUG,08 Mar 2011 10:20:03,097,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize entered.
    DEBUG,08 Mar 2011 10:20:03,103,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: driver - Value: oracle.jdbc.driver.OracleDriver
    DEBUG,08 Mar 2011 10:20:03,103,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: url - Value: jdbc:oracle:thin:@10.88.176.155:1521:TRAINING
    DEBUG,08 Mar 2011 10:20:03,104,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: username - Value: oimuserpc
    DEBUG,08 Mar 2011 10:20:03,106,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: password - Value: *******
    DEBUG,08 Mar 2011 10:20:03,107,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: customizedQueries - Value:
    DEBUG,08 Mar 2011 10:20:03,109,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: useNativeQuery - Value: false
    DEBUG,08 Mar 2011 10:20:03,109,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: parentContainerName - Value: recondb
    DEBUG,08 Mar 2011 10:20:03,110,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/convertCSVToArraylist entered.
    DEBUG,08 Mar 2011 10:20:03,111,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/convertCSVToArraylist: providerParams:
    DEBUG,08 Mar 2011 10:20:03,112,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/convertCSVToArraylist left.
    DEBUG,08 Mar 2011 10:20:03,114,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: childContainerTableNames - Value: []
    DEBUG,08 Mar 2011 10:20:03,115,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: parentContainerUniqueKey - Value: userid
    DEBUG,08 Mar 2011 10:20:03,116,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: incrementalReconAttribute - Value:
    DEBUG,08 Mar 2011 10:20:03,154,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize - Data: dbDateFormat - Value: yyyy/MM/dd hh:mm:ss z
    DEBUG,08 Mar 2011 10:20:03,154,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/initialize left.
    DEBUG,08 Mar 2011 10:20:03,164,[OIMCP.DATC],Class/Method: DBFacade/getConnection
    Prop entered.
    DEBUG,08 Mar 2011 10:20:03,425,[OIMCP.DATC],Class/Method: DBFacade/getClumns - D
    ata: Columns: - Value: [com.thortech.xl.gc.impl.common.Column@126232b, com.thor
    tech.xl.gc.impl.common.Column@cef542, com.thortech.xl.gc.impl.common.Column@147e
    045, com.thortech.xl.gc.impl.common.Column@1d4d4b8, com.thortech.xl.gc.impl.comm
    on.Column@1d99597, com.thortech.xl.gc.impl.common.Column@1ebf294, com.thortech.x
    l.gc.impl.common.Column@1831114, com.thortech.xl.gc.impl.common.Column@1d67244]
    DEBUG,08 Mar 2011 10:20:03,460,[OIMCP.DATC],Class/Method: DBFacade/getPrimaryKey
    s - Data: Primary Keys - Value: []
    DEBUG,08 Mar 2011 10:20:03,461,[OIMCP.DATC],Class/Method: DBFacade/getSchema - D
    ata: Parent Unique Key: - Value: [USERID]
    DEBUG,08 Mar 2011 10:20:03,463,[OIMCP.DATC],Class/Method: DBReconTransportProvid
    er/getFirstPage - Data: Filter Query - Value:
    DEBUG,08 Mar 2011 10:20:03,473,[OIMCP.DATC],Class/Method: DBFacade/getRecord - D
    ata: SQL - Value: select * from oimuserpc.recondb
    DEBUG,08 Mar 2011 10:20:03,541,[OIMCP.DATC],Class/Method: DBFacade/getRecord - D
    ata: startpage - Value: -1
    DEBUG,08 Mar 2011 10:20:03,542,[OIMCP.DATC],Class/Method: DBFacade/getRecord - D
    ata: endpage - Value: -1
    DEBUG,08 Mar 2011 10:20:03,543,[OIMCP.DATC],Class/Method: DBFacade/getRecord - D
    ata: Number of records - Value: 1
    DEBUG,08 Mar 2011 10:20:03,721,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,722,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,723,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: Email
    DEBUG,08 Mar 2011 10:20:03,724,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    DEBUG,08 Mar 2011 10:20:03,730,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,730,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,732,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: First Name
    DEBUG,08 Mar 2011 10:20:03,733,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    DEBUG,08 Mar 2011 10:20:03,737,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,738,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,740,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: User Login
    DEBUG,08 Mar 2011 10:20:03,741,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    DEBUG,08 Mar 2011 10:20:03,745,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,745,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,746,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: Xellerate Type
    DEBUG,08 Mar 2011 10:20:03,747,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    DEBUG,08 Mar 2011 10:20:03,751,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,751,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,753,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: Role
    DEBUG,08 Mar 2011 10:20:03,754,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    DEBUG,08 Mar 2011 10:20:03,758,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,759,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,760,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: Organization Name
    DEBUG,08 Mar 2011 10:20:03,761,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    DEBUG,08 Mar 2011 10:20:03,765,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName entered.
    DEBUG,08 Mar 2011 10:20:03,765,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: attr src - Value: User Profile Data
    DEBUG,08 Mar 2011 10:20:03,766,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName - Data: display name - Value: User Password
    DEBUG,08 Mar 2011 10:20:03,767,[XELLERATE.JAVACLIENT],Class/Method: tcAttributeS
    ource/getAttrColumnName left.
    ERROR,08 Mar 2011 10:20:03,770,[XELLERATE.APIS],Class/Method: tcReconciliationOp
    erationsBean/ignoreEventData encounter some problems: {1}
    java.lang.NullPointerException
    at com.thortech.xl.dataobj.util.tcAttributeSource.getAttrColumnName(Unkn
    own Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.getRuleElementWhere
    (Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.getRuleWhere(Unknow
    n Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.getMatchedUserList(
    Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.getMatchedUserList(
    Unknown Source)
    at com.thortech.xl.dataobj.util.tcReconciliationUtil.ignoreEvent(Unknown
    Source)
    at com.thortech.xl.ejb.beansimpl.tcReconciliationOperationsBean.ignoreEv
    entData(Unknown Source)
    at com.thortech.xl.ejb.beansimpl.tcReconciliationOperationsBean.ignoreEv
    ent(Unknown Source)
    at com.thortech.xl.ejb.beans.tcReconciliationOperationsSession.ignoreEve
    nt(Unknown Source)
    at com.thortech.xl.ejb.beans.tcReconciliationOperations_gmh3ba_EOImpl.ig
    noreEvent(tcReconciliationOperations_gmh3ba_EOImpl.java:546)
    at Thor.API.Operations.tcReconciliationOperationsClient.ignoreEvent(Unkn
    own Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at Thor.API.Base.SecurityInvocationHandler$1.run(Unknown Source)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(Unknown Sou
    rce)
    at Thor.API.Base.SecurityInvocationHandler.invoke(Unknown Source)
    at $Proxy69.ignoreEvent(Unknown Source)
    at com.thortech.xl.gc.runtime.GCScheduleTask.execute(Unknown Source)
    at com.thortech.xl.scheduler.tasks.SchedulerBaseTask.run(Unknown Source)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper$TaskExecutionActi
    on.run(Unknown Source)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(Unknown Sou
    rce)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper.execute(Unknown S
    ource)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:178)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
    ava:477)
    ERROR,08 Mar 2011 10:20:03,808,[XELLERATE.GC.FRAMEWORKRECONCILIATION],Reconcilia
    tion Encountered error:
    Thor.API.Exceptions.tcAPIException: java.lang.NullPointerException
    at com.thortech.xl.ejb.beansimpl.tcReconciliationOperationsBean.ignoreEv
    entData(Unknown Source)
    at com.thortech.xl.ejb.beansimpl.tcReconciliationOperationsBean.ignoreEv
    ent(Unknown Source)
    at com.thortech.xl.ejb.beans.tcReconciliationOperationsSession.ignoreEve
    nt(Unknown Source)
    at com.thortech.xl.ejb.beans.tcReconciliationOperations_gmh3ba_EOImpl.ig
    noreEvent(tcReconciliationOperations_gmh3ba_EOImpl.java:546)
    at Thor.API.Operations.tcReconciliationOperationsClient.ignoreEvent(Unkn
    own Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at Thor.API.Base.SecurityInvocationHandler$1.run(Unknown Source)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(Unknown Sou
    rce)
    at Thor.API.Base.SecurityInvocationHandler.invoke(Unknown Source)
    at $Proxy69.ignoreEvent(Unknown Source)
    at com.thortech.xl.gc.runtime.GCScheduleTask.execute(Unknown Source)
    at com.thortech.xl.scheduler.tasks.SchedulerBaseTask.run(Unknown Source)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper$TaskExecutionActi
    on.run(Unknown Source)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    121)
    at weblogic.security.Security.runAs(Security.java:41)
    at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs(Unknown Sou
    rce)
    at com.thortech.xl.scheduler.core.quartz.QuartzWrapper.execute(Unknown S
    ource)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:178)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
    ava:477)
    WARN,08 Mar 2011 10:20:03,813,[XELLERATE.GC.FRAMEWORKRECONCILIATION],Though Rec
    onciliation Scheduled task has encountered an error, Reconciliation Transport pr
    oviders have been "ended" smoothly. Any provider operation that occurs during th
    at "end" or "clean-up" phase would have been executed e.g. Data archival. In cas
    e you want that data to be a part of next Reconciliation execution, restore it f
    rom Staging. Provider logs must be containing details about storage entities tha
    t would have been archived

  • Bank Key field change from database table

    Dear All,
    At our client, 4 house banks are maintained. The bank keys entered for these are not BSR Codes but something like 100,200,300,400.
    This is not correct as we need to maintain BSR Code in Bank Key field as it is required on Form 16 A (TDS Cetificate)
    The Bank Key field is in display mode. I am thinking of changing wrong value from database table T012 & BNKA .
    Has anybody done this before? Will it affect my past or future transactions?
    Thanks & regards,
    Gov

    Dear Gulshan,
    What you are saying is correct & I subscribe to your view also.
    Creation of House Bank all over again seems to be one of the better options.
    We tried doing one more thing & which is working fine on Development.
    Our primary requiremnt is to have BSR Code on the From 16 A. System picks up the Bank key for this.
    We copied the standard Form 16A & created a Z. Then abaper created a subroutine. It is like when Bank key 100 comes to Form16A, replace it with say 0098500 (Correct BSR Code of the Bank)
    This helped to get the correct BSR Code in Form 16A & saved us from recreation of House Bank data.
    Your comments are welcome.
    Regards,
    Gov

  • Dynamic record deletion from database table

    Hi,
    I need to delete selected records from database table(dynamic names). Table names are being passed from main program with some of their field names. The record to be deleted from the database table is being decided based on the fields passed for the table and their contains passed from the main program.
    It is not possible to write dynamic where clause for DELETE statement directly.
    So, I created a dynamic internal table and i am trying to fetch all records using SELECT statement(for which we can write dynamic where condition, something like...SELECT...WHERE (itab).  ) which need to be deleted in the iternal table.
    Piece of code :
              CONCATENATE c_im v_tablefield1 INTO v_imprtfield1.
              CONCATENATE v_tablefield1 c_in v_imprtfield1
                       into s_condition separated by space.
              APPEND s_condition TO t_condition.
              PERFORM GET_DYNAMIC_ITAB USING s_flds_agtab-tabname
                                    changing t_itab.
              ASSIGN t_itab->* TO <itab>.
    *Select the data (to be deleted) from the database table
               SELECT * FROM (s_flds_agtab-tabname) INTO TABLE <itab>
                 WHERE (t_condition).
    *Delete the records from the table
               IF SY-SUBRC = 0.
                 DELETE (s_flds_agtab-tabname) FROM TABLE <itab>.
               ENDIF.
    Here t_condition is of standard table of WHERETXT.
    t_condition at the run time before giving dump was:
    SPART IN IM_SPART
    AND KUNNR IN IM_KUNNR
    Here IM_SPART is renge type of SPART and IM_KUNNR is renge of KUNNR.
    I am getting a DUMP:
    The WHERE condition has an unexpected format.
    Error analysis                                                                               
    The current ABAP/4 program attempted to execute an ABAP/4 Open SQL
    statement containing a WHERE condition of the form WHERE (itab) or
    WHERE ... AND (itab). The part of the WHERE condition specified at
    runtime in the internal table itab contains the operator         
             IN (v1, ..., vn)                                        
    in incomplete form.                                              
    How to correct the error
    If the error occurred in a non-modified SAP program, you may be  
    able to find a solution in the SAP note system.                  
    If you have access to the note system yourself, use the following
    search criteria:                                                 
    "SAPSQL_IN_ILLEGAL_LIST"                               
    "SAPLZSD_TAB_REFRESH " or "LZSD_TAB_REFRESHU01 "       
    "Z_SD_REFRESH_AGTABLES"                                
    If you cannot solve the problem yourself, please send the
    following documents to SAP:                             
    I would like to know whether "IN" operator is allowed in (itab) of WHERE clause. While testing I changed the "IN" to "=" specifying a suitable value there. It worked. So please let me know if i can give "IN" operator using renge table in the dynamic where clause.
    Thanking you,
    Surya

    Hi again,  so if you can not use the IN in a dynamic where clause you might be forced to dynamically build the entire select statement,  Here is a sample program which may give you some ideas, notice that we are writing the select statement code, putting it in another program and generating the subroutine at runtime, then call this routine.  I'm sure that this will help you see what you need to do.
    report zrich_0003 .
    tables: kna1.
    types: t_source(72).
    data: routine(32) value 'DYNAMIC_SELECT',
                 program(8),
                 message(128),
                 line type i.
    data: isource type table of t_source,
                xsource type t_source.
    ranges:
            r_kunnr for kna1-kunnr.
    data: ikna1 type table of kna1.
    data: xkna1 type kna1.
    r_kunnr-sign = 'I'.
    r_kunnr-option = 'EQ'.
    r_kunnr-low    = '0001000500'.
    append r_kunnr.
    xsource = 'REPORT ZTEMP.'.
    insert xsource  into isource index 1.
    xsource = 'FORM dynamic_select'.
    insert xsource  into isource index 2.
    xsource = 'Tables r_kunnr ikna1.'.
    append xsource to isource.
    xsource = 'select * into table ikna1 from kna1'.
    append xsource to isource.
    xsource = 'where kunnr in r_kunnr.'.
    append xsource to isource.
    xsource = 'ENDFORM.'.
    append xsource to isource.
    generate subroutine pool isource name program
                             message message
                             line line.
    if sy-subrc = 0.
      perform (routine) in program (program) tables r_kunnr
                                                    ikna1.
    else.
      write:/ message.
    endif.
    loop at ikna1 into xkna1.
      write:/ xkna1-kunnr.
    endloop.
    Regards,
    Rich Heilman

  • It's possible to make Hierarchical Tree from multiple tables ?

    the famous example for Hierarchical Tree is about employee_id and manager_id field in employees table ............ so I was wondering it's possible to make[b] Hierarchical Tree from multiple tables ? and How ??
    if the answer associate with example that will be so kind of you :D
    and thanks in advance.

    HI
    use curose in when new form instance or procedure then u can got data more then one table like that
    DECLARE
    htree ITEM;
    top_node FTREE.NODE;
    new_node FTREE.NODE ;
    child_node ftree.node ;
    item_value VARCHAR2(30);
    cursor prime_cur is select main_desc mgr_name, main_code dept
    from pur_item_group_mst;
    cursor child_cur(v_dept number) is select sub_desc,sub_code
    from pur_item_group_dtl where main_code = v_dept ;
    BEGIN
    htree := Find_Item('tmp.tree4');
    for dummy in prime_cur loop
    new_node := Ftree.Add_Tree_Node(htree,
    ftree.root_node,
    Ftree.PARENT_OFFSET,
    Ftree.LAST_CHILD,
    Ftree.EXPANDED_NODE,
    dummy.mgr_name,
    'D:\ORYX_POLYBAGS\accept',
    dummy.dept);
    for child in child_cur(dummy.dept) loop
         child_node := Ftree.Add_Tree_Node(htree,
    new_node,
    Ftree.PARENT_OFFSET,
    Ftree.LAST_CHILD,
    Ftree.EXPANDED_NODE,
    child.sub_desc||' '||'('||child.sub_code||' '||')',
    'D:\ORYX_POLYBAGS\next',
    child.sub_code);
    end loop;
    end loop;
    END;
    Rizwan Shafiq
    www.rizwanshafiq.blogspot.com

  • Fill pdf form from database table

    I am working on small application for my employer. We have record fo all new employee in table and want to fill PDF (I-9) from database using APEX application.
    Below PDF form, we want to fill from database table.
    http://www.uscis.gov/files/form/I-9.pdf
    I am not sure how to take from APEX. Any ideas?
    I know one way to export from database table and import to PDF form.
    Is there any other way?
    Thanks

    If I understand you correctly then I need to first export the xml file using Data-> Load sample XML data and later create template in template.rtf and upload data using APEX in template. In this case I need to create rtf template exactly similar to http://www.uscis.gov/files/form/I-9.pdf.
    I am not sure is there any way to to used existing pdf template or save pdf template to rtf template. Later that template can be used to populate data using APEX.

  • Delete from database Table

    Hi,
    To delete data from database table using internal table I am using following statement.
    DELETE dbtab       FROM TABLE itab.
    Itab is a sorted table.Just wondering if table type matters while deleting database entries using internal table.which is efficient table type for deleting records from database table?
    Regards
    Nilesh

    Hi Nilesh
    The row type of the internal table must be a data object with at least the same length and alignment as the key structure of the database table. The key is read according to the structure of the table line, and not that of the row type. It is a good idea to define the row type with reference to the structure of the database table.
    From SAP Help
    DATA: BEGIN OF WA,
    CARRID TYPE SPFLI-CARRID,
    CONNID TYPE SPFLI-CONNID,
    END OF WA,
    ITAB LIKE HASHED TABLE OF WA
    WITH UNIQUE KEY CARRID CONNID.
    WA-CARRID = 'UA'. WA-CONNID = '0011'.
    INSERT WA INTO TABLE ITAB.
    WA-CARRID = 'LH'. WA-CONNID = '1245'.
    INSERT WA INTO TABLE ITAB.
    WA-CARRID = 'AA'. WA-CONNID = '4574'.
    INSERT WA INTO TABLE ITAB.
    DELETE SPFLI FROM TABLE ITAB.
    Besides, it is so technical what algorithm is run to delete records from the DB table when an internal table is given. If you want you can have a quick test using GET TIME. However, it seems logical that if your internal table is sorted with respect to any index, especially the primary index, of the DB table this may increase performance.
    Regards
    *--Serdar <a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=qbk%2bsag%2bjiw%3d">[ BC ]</a>

  • Delete entry from Database table

    Hi,
    I configured one PCR scenerio in SPRO node -> business Packakes/ funtional packages-> Manager self service-> Personal Change request -> Group Change request scenerio.
    later I deleted that entry in backend, but still the same entry exist in db table "TWPC_PCR_Groups" .
    How can we delete that entry?
    thanks

    Hi,
    If you just want to delete a single entry from database table then you have to it in debug mode .
    go to se11->Give table name->Press F7( ie: display table entries)-> Goto the table contents (CTRLSHIFTF10)->Select the entry you want to delete->Give /H in the command bar ->enter into debug mode-> Give code as DELE -> save it. and press enter. Your entry will be deleted from database.
    Hope this helps..

  • I want to delete the transactional record from database table

    Hai,
    I want to delete the transactional data from database table with out using the dialog programming is it there any trancation for this.
    for master data we have the transaction code for delete the records. The t.code is 'OBR2'.
    Plz help in that cse.
    Thanks and regards,
    P.Naganjana Reddy

    Hai,
    Plz help me urgent.
    I am asking i want to delete transactional data from database table without using the dialog programming.
    Thanks and Regards,
    P.Naganjana

  • Urgent......  how to select few fields, from database table, (dynamic ita.)

    Dear all experts,
    I am able to populate all fields data from database table, using dynamic table creation.
    eg,
    SELECT *    FROM (w_tabname)    INTO    TABLE <t_itab>.
    where w_tabname is the table name given by the user, and t_itab is field symbol.
    but some requirement is like that i need to pick up only few fields, <b>which user will give at the runtime.</b>
    <b>I can</b> take those fields from file into any internal table,
    but the problem is that instead of <b>select *</b>, i need to put selected the fields given by user.
    i have tried with field symbol, it is not working (as per my knowledge.)
    do i need to create any structures dynamically ?
    Can anybody please help in this regards ?
    Your help will be surely rewarded with points.
    Waiting for reply..
    Regards
    Vinay

    Hi Vinay ,
    Adding to the below code , you can use some more fields in the select stmt as below:-
    REPORT ychatest.
    PARAMETERS : p_field1 LIKE dd03l-fieldname,
                             P_field2 LIKE dd03l-fieldname,
                             p_table LIKE dd03l-tabname.
    FIELD-SYMBOLS : <fs> TYPE STANDARD TABLE.
    SELECT (p_field1) (p_field2) ( FROM (p_table) INTO TABLE <fs>.
    Now p_field1 & p_field2  belong to the same table since you have give the user to enter only one table name.
    This should work fine.
    please try & let me know .
    Thanks & Regards,
    Daniel

  • Retrive last inserted  record  from database table

    Hi,
    some body inserting a record into table 'A' through some procedure/java program.i want to retrive the last inserted record from database table.records are not stored in order.Can any body help me.

    In general, unless you are storing a timestamp as part of the row or you have some sort of auditing in place, Oracle has no idea what the "first" or "last" record in a table is. Nor does it track when a row was inserted.
    - If you have the archived logs from the point in time when the row was inserted, you could use LogMiner to find the timestamp
    - If the insert happened recently (i.e. within hours), you may be able to use flashback query to get the value
    - If you're on 10g or later and the table was built with ROWDEPENDENCIES and the insert happened in the last few days and you can deal with a granularity of a few seconds and you don't need 100% accuracy, you could get the ORA_ROWSCN of the row and convert that to a timestamp.
    If this is something you contemplate needing, you need to store the data in the row or set up some sort of auditing.
    Justin

Maybe you are looking for