Value of OCI_ATTR_CHARSET_ID for OCI programming

While learning OCI programming I need to know all values of OCI_ATTR_CHARSET_ID. Only in examples I know that 873 is for UTF8, 31 is for ISO-8859-1 and so on. Who can tell me where I can find the values of all encodings?
Thank you in advance.

1) Use Locale Builder.
Go to File->Open...->By Object Name...
The list of character sets contains IDs in parentheses.
2) Use SQL:
For a given character set name, issue:
SELECT NLS_CHARSET_ID('<name>') FROM dual;
-- Sergiusz

Similar Messages

  • Using a lookup for mapping program to retrieve the specific value

    Hi All,
    I have a scenario like …I need to use a lookup for mapping program to retrieve the specific value based on the input parameters.
    Here I have got some rough idea like …
    1. Creation of java program to connect the DB table and access the values, Import this java program as archive into XI.
    2. Creation of user defined function to use the above java program
    3. Include the user defined function in the interface mapping.
    Here I feel it needs some more info to complete this scenario, so can anyone provide the step by step procedure for the above scenario.
    Thanks in advance.
    Vijay.

    Hi Vijay,
    Basically you have embed Database lookup code in the UDF. For all kind of Lookups refer to below links..
    Lookup - /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    DB lookup - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    SOAP Lookup - /people/bhavesh.kantilal/blog/2006/11/20/webservice-calls-from-a-user-defined-function
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0
    Lookup’s in XI made simpler - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    How to check JDBC SQL Query Syntax and verify the query results inside a User Defined Function of the Lookup API -
    http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    /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
    Lookups - /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
    Lookups - /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    http://help.sap.com/saphelp_nw04/helpdata/en/cf/406642ea59c753e10000000a1550b0/content.htm
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    Lookups with XSLT - https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8e7daa90-0201-0010-9499-cd347ffbbf72
    /people/sravya.talanki2/blog
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14
    How we have to create the lookups?
    Check this weblogs with some screenshots on how to achieve this:
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    /people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
    /people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
    /people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
    /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
    Ranjeet Singh.

  • Setting module name in OCI program

    Hi,
    I have been struggling with setting the module name from my OCI program. Below is the code in which
    I create the environment, connect, attempt to set the module attribute, wait for key input, and clean up
    and exit after getting the key input.
    That I can tell, I have called OCISetAttr as the documentation says I should and none of my return values
    indicate a problem. Yet when I v$session, I get what I presume is the default value of the module
    and not the value I set in the code("moduletest").
    The programs physical filename is oci101.exe. It also connects to the Oracle instance as a user named
    oci101. I check v$session with this query:
    select username, module from v$session where username is not null;
    And the output is this:
    USERNAME MODULE
    OCI101 oci101.exe
    SYSTEM SQL*Plus
    I should see a MODULE column value of "moduletest" for the OCI101 user.
    Not sure what I'm missing. Any ideas?? Here is the code:
    // Begin code:
    OCIEnv* envhp;
    ub2 charset_id = 0;
    ub2 ncharset_id = 0;
    ub4 mode = OCI_DEFAULT;
    const sword env_rc = OCIEnvNlsCreate(
    &envhp, mode,
    (void*)0, // user-defined context for custom memory allocation
    (void* (*)(void*, size_t))0, // user-defined malloc
    (void* (*)(void*, void *, size_t))0, // user-defined realloc
    (void(*)(void*, void*))0, // // user-defined free
    (size_t)0, // extra user memory
    (void **)0,
    charset_id, ncharset_id
    OCIError* errhp;
    const sword err_rc = OCIHandleAlloc(
    (dvoid *) envhp, (dvoid **) &errhp,
    OCI_HTYPE_ERROR, (size_t) 0, (dvoid **) 0
    checkerr(err_rc, errhp);
    OCISvcCtx* svchp = 0;
    const sword l2rc = OCILogon2(
    envhp, errhp, &svchp,
    (const OraText*)zusername, (ub4)strlen(zusername),
    (const OraText*)zpassword, (ub4)strlen(zpassword),
    (const OraText*)zdatabase, (ub4)strlen(zdatabase),
    mode
    checkerr(l2rc, errhp);
    // Set the module attrbute
    // Extract the session handle into sessionhp.
    OCISession *sessionhp = 0;
    ub4 sh_size = 0;
    sword oci_attr_get_status = OCIAttrGet ( svchp,
    OCI_HTYPE_SVCCTX,
    &sessionhp,
    &sh_size,
    OCI_ATTR_SESSION,
    errhp );
    checkerr(oci_attr_get_status, errhp);
    // Set the module
    sword oas_rc = OCIAttrSet(sessionhp, OCI_HTYPE_SESSION,(void *)"moduletest",
    strlen("moduletest"), OCI_ATTR_MODULE, errhp);
    checkerr(oas_rc, errhp);
    getchar();
    // Cleanup:
    if (svchp) { // 0 when already disconnected
    OCISvcCtx*const tmp_svchp = svchp;
    svchp = 0; // reset svchp on error or not
    const sword lorc = OCILogoff(tmp_svchp, errhp);
    checkerr(lorc, errhp);
    const sword rc = OCIHandleFree(envhp, OCI_HTYPE_ENV);
    // End Code.
    Thanks for any help . . .
    Karl

    Hi Karl,
    I'm certainly not an OCI expert, but after setting the module attribute the value is updated upon the next statement execution in my experience. There may be other ways in which this can happen, but I have not seen those cases.
    Here is a short example:
    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>
    #include <oci.h>
    int main(int argc, char *argv[]) {
      OCIEnv      *envhp = NULL;  /* OCI Environment handle     */
      OCIError    *errhp = NULL;  /* OCI Error handle           */
      OCISvcCtx   *svchp = NULL;  /* OCI Service Context handle */
      OCISession  *usrhp = NULL;  /* OCI User Session handle    */
      OCIStmt     *stmtp = NULL;  /* OCI Statement handle       */
      /* the statement to execute   */
      /* this is purely for example */
      oratext *sqlstmt = "begin null; end;";
      /* connection information */
      oratext *username = "scott";
      oratext *password = "tiger";
      oratext *database = "orademo";
      /* used to hold the results of each OCI call */
      sword result = 0;
      /* Initialize and create a default environment */
      result = OCIEnvCreate(&envhp,
                            OCI_DEFAULT,
                            (dvoid *) 0,
                            0,
                            0,
                            0,
                            (size_t) 0,
                            (dvoid **) 0);
      /* allocate an error handle */
      result = OCIHandleAlloc((dvoid *) envhp,
                              (dvoid **) &errhp,
                              OCI_HTYPE_ERROR,
                              0,
                              (dvoid **) 0);
      /* create connection */
      result = OCILogon2(envhp,
                         errhp,
                         &svchp,
                         username,
                         (ub4) strlen(username),
                         password,
                         (ub4) strlen(password),
                         database,
                         (ub4) strlen(database),
                         OCI_DEFAULT);
      /* get the user session handle */
      result = OCIAttrGet(svchp,
                          OCI_HTYPE_SVCCTX,
                          (void *) &usrhp,
                          NULL,
                          OCI_ATTR_SESSION,
                          errhp);
      /* set the module attribute */
      result = OCIAttrSet(usrhp,
                          OCI_HTYPE_SESSION,
                          (void *) "My Module",
                          (ub4) strlen("My Module"),
                          OCI_ATTR_MODULE,
                          errhp);
      /* allocate the statement handle */
      result = OCIHandleAlloc((dvoid *) envhp,
                              (dvoid **) &stmtp,
                              OCI_HTYPE_STMT,
                              0,
                              (dvoid **) 0);
      /* prepare the statement for execution */
      result = OCIStmtPrepare(stmtp,
                              errhp,
                              sqlstmt,
                              (ub4) strlen((char *) sqlstmt),
                              OCI_NTV_SYNTAX,
                              OCI_DEFAULT);
      /* execute the statement - after execution the */
      /* MODULE value should be updated in v$session */
      result = OCIStmtExecute(svchp,
                              stmtp,
                              errhp,
                              (ub4) 1,
                              (ub4) 0,
                              (CONST OCISnapshot *) NULL,
                              (OCISnapshot *) NULL,
                              OCI_DEFAULT);
      /* print a simple prompt    */
      /* view session in SQL*Plus */
      printf("program paused, ENTER to continue...");
      getchar();
      /* disconnect from the server */
      result = OCILogoff(svchp,
                         errhp);
      /* deallocate the environment handle */
      /* OCI will deallocate child handles */
      result = OCIHandleFree((void *) envhp,
                             OCI_HTYPE_ENV);
      return OCI_SUCCESS;
    }When the program is paused I see this in SQL*Plus in my test:
    SQL> select sid, username, program, module from v$session where username = 'SCOTT';
           SID USERNAME         PROGRAM                          MODULE
           136 SCOTT            OCIModuleTest.exe                My ModulePerhaps that is a bit of help.
    Regards,
    Mark
    Edited by: Mark Williams on Dec 22, 2008 11:06 AM
    Tidied up the sample a bit.

  • The efficiency of oci program with OCI_COMMIT_ON_SUCCESS

    I have write a demo program to insert 1000 row data into a tab.
    As I want to commit at every insert operation, I call OCIStmtExecute with OCI_COMMIT_ON_SUCCESS parameter.
    And the time cost for each row is between 5ms and 10 ms.
    At the same time, insert data using SQL:
    declare
    return_res number(4);
    aa1 varchar(15);
    aa2 varchar(150);
    aa3 varchar(150);
    aa4 varchar(150);
    aa5 varchar(150);
    aa6 varchar(150);
    begin
    for i in 1..1000 loop
    aa1 := '13900000001';
    aa2 := '000102030405060708090a0b0c0d0e0f';
    aa3 := '000102030405060708090a0b0c0d0e0f';
    aa4 := '000102030405060708090a0b0c0d0e0f';
    aa5 := '000102030405060708090a0b0c0d0e0f';
    aa6 := '000102030405060708090a0b0c0d0e0f';
    insert into avinfotab_3g1 values(i,aa1,aa2,aa3,aa4,aa5,aa6);
    commit;
    select count(*) into return_res from avinfotab_3g1;
    delete from avinfotab_3g1 where strsImsi = '13900000001';
    commit;
    end loop;
    end;
    result:
    Command was executed successfully
    Executed: 6/2/09 4:10:27 PM CST Execution: 922/ms
    It's cost less than 1ms per row.
    Why the OCI program's efficiency so low?
    Edited by: bigtreefxs on 2009-6-2 下午11:06
    Edited by: bigtreefxs on 2009-6-2 下午11:08

    As wel the commit in the pl/sql block is executed as part of one pl/block executed on the server.
    If you do the execute in oci from a client app, you have as many roundtrips as execution...

  • The system has attempted to use an undefined value, which usually indicates a programming error, either in your code or

    I have taken the cfdump for tmpqry and it shows all data for
    the range ( No error at this step ) . But when we exceute this
    dbquery we get below mentioned error .
    <cfquery name="qry" dbtype="query" >
    SELECT *
    FROM tmpqry
    ORDER BY #arguments.colSort# ASC
    </cfquery>
    senerio:
    I am using createobject to create a reference for component
    and call MDArraySort function in the cfc and getting this error .
    'The system has attempted to use an undefined value, which
    usually indicates a programming error, either in your code or some
    system code.
    Null pointer is undefined.... '
    i am using this code in a cfc file.
    <cffunction name="MDArraySort" Returntype="query"
    access="public" >
    <cfargument name="colArray" type="array"
    required="true">
    <cfargument name="colNames" type="string"
    required="true">
    <cfargument name="colSort" type="string"
    required="true">
    <cfargument name="sensorIDs" type="string"
    required="true">
    <cfscript>
    var tmpqry = Querynew(arguments.colNames);
    var qRow = QueryAddRow(tmpqry, Arraylen(arguments.colArray)
    </cfscript>
    <cfloop from="1" to="#Arraylen(arguments.colArray)#"
    index="qRowIndex">
    <cfscript>
    sIndexinSensorIDs = colArray[qRowIndex]["SENSOR"]&"##";
    Temp_readin_code =
    colArray[qRowIndex]["READING_CODE"]&"##";
    QuerySetCell(tmpqry, 'SENSOR', sIndexinSensorIDs,
    qRowIndex);
    QuerySetCell(tmpqry,
    'TYPE',javacast('String',colArray[qRowIndex]["TYPE"]), qRowIndex);
    QuerySetCell(tmpqry, 'TIMESTAMP2',
    LSParseDateTime(colArray[qRowIndex]["TIMESTAMP2"]), qRowIndex);
    QuerySetCell(tmpqry,
    'ORDER_BY_PARAM',javacast('String',colArray[qRowIndex]["ORDER_BY_PARAM"]),
    qRowIndex);
    QuerySetCell(tmpqry, 'READING_CODE',Temp_readin_code ,
    qRowIndex);
    QuerySetCell(tmpqry,
    'READING',javacast('String',colArray[qRowIndex]["READING"]),
    qRowIndex);
    QuerySetCell(tmpqry,
    'PK_READING',javacast('String',colArray[qRowIndex]["PK_READING"]),
    qRowIndex);
    QuerySetCell(tmpqry,
    'ALARM_STATUS',javacast('String',colArray[qRowIndex]["ALARM_STATUS"]),
    qRowIndex);
    QuerySetCell(tmpqry, 'DURATION',
    javacast('String',colArray[qRowIndex]["DURATION"]), qRowIndex);
    QuerySetCell(tmpqry,
    'DESCRIPTION',javacast('String',colArray[qRowIndex]["DESCRIPTION"]),
    qRowIndex);
    </cfscript>
    </cfloop>
    <cfquery name="qry" dbtype="query" >
    SELECT *
    FROM tmpqry
    ORDER BY #arguments.colSort# ASC
    </cfquery>
    <cfreturn qry >
    </cffunction>
    It is working fine for some date range and and getting above
    mentioned error in sone situation .

    Hi All ,
    Thank you for your support ,
    Finally i have fix the issue using some changes in my
    function in cfc .
    <cffunction name="MDArraySort" Returntype="query"
    access="public" >
    <cfargument name="colArray" type="array"
    required="true">
    <cfargument name="colNames" type="string"
    required="true">
    <cfargument name="colSort" type="string"
    required="true">
    <cfargument name="sensorIDs" type="string"
    required="true">
    <cfscript>
    //Declare variable collection used in function as local
    --->
    var tmpqry =
    Querynew(arguments.colNames,"CF_SQL_VARCHAR,CF_SQL_VARCHAR,CF_SQL_DATE,CF_SQL_VARCHAR,CF_ SQL_VARCHAR,CF_SQL_VARCHAR,CF_SQL_VARCHAR,CF_SQL_VARCHAR,CF_SQL_VARCHAR,CF_SQL_VARCHAR");
    var qRow = QueryAddRow(tmpqry,
    Arraylen(arguments.colArray));
    </cfscript>
    <cfloop from="1" to="#Arraylen(arguments.colArray)#"
    index="qRowIndex">
    <cfscript>
    // Populate the query table
    QuerySetCell(tmpqry, 'SENSOR',
    colArray[qRowIndex]["SENSOR"], qRowIndex);
    QuerySetCell(tmpqry,
    'TYPE',arguments.colArray[qRowIndex]["TYPE"], qRowIndex);
    QuerySetCell(tmpqry, 'TIMESTAMP2',
    LSParseDateTime(arguments.colArray[qRowIndex]["TIMESTAMP2"]),
    qRowIndex);
    QuerySetCell(tmpqry,
    'ORDER_BY_PARAM',arguments.colArray[qRowIndex]["ORDER_BY_PARAM"],
    qRowIndex);
    QuerySetCell(tmpqry, 'READING_CODE',
    colArray[qRowIndex]["READING_CODE"] , qRowIndex);
    QuerySetCell(tmpqry,
    'READING',arguments.colArray[qRowIndex]["READING"], qRowIndex);
    QuerySetCell(tmpqry,
    'PK_READING',arguments.colArray[qRowIndex]["PK_READING"],
    qRowIndex);
    QuerySetCell(tmpqry,
    'ALARM_STATUS',arguments.colArray[qRowIndex]["ALARM_STATUS"],
    qRowIndex);
    QuerySetCell(tmpqry, 'DURATION',
    arguments.colArray[qRowIndex]["DURATION"], qRowIndex);
    QuerySetCell(tmpqry,
    'DESCRIPTION',arguments.colArray[qRowIndex]["DESCRIPTION"],
    qRowIndex);
    </cfscript>
    </cfloop>
    <cfquery name="qry" dbtype="query" >
    SELECT *
    FROM tmpqry
    ORDER BY #arguments.colSort# ASC
    </cfquery>
    <cfreturn qry >
    </cffunction>
    Rajesh
    SCMS
    India

  • How to improve performace for this program

    Hi,
    I want to improve performance for this program.Pls help me.Here is the code.
    Thanks
    kumar
    --# SCCS: @(#)nscdprpt_rpt_fam_fweq_detail_aggr_dml.sql     2.1 08/17/05 12:16:11
    --# Location: /appl/dpdm/src/sql/SCCS/s.nscdprpt_rpt_fam_fweq_detail_aggr_dml.sql
    -- =============================================================================
    -- Purpose:
    -- DML Script to calculate aggregate rows from table NSCDPRPT.RPT_FAM_FWEQ_DETAIL
    -- inserts one (1) monthly total row for each comparison type (6 of them)
    -- Modification History
    -- Date Version Who What
    -- 28-Jun-05 V1.00 J. Myers Initial Version
    -- 17-Aug-05 gzuerc Replaced UNION ALL code with INSERT's to avoid
    -- Oracle error out of undo tablespace.
    -- ============================================================================
    -- NOTES:
    -- This process pulls data from RPT_FAM_FWEQ_DETAIL table.
    -- The target table RPT_FAM_FWEQ_DETAIL_AGGR is truncated by plan_ctry and loaded daily;
    -- it is the data used in the Forecast Accuracy Measurements Report.
    -- The input data is 'wide' (6 quantities), and this script outputs a single
    -- row for each quantity as a 'thin' table (single column F1_QTY and F2_QTY shared by all quantities), and
    -- with a ROW_TYPE = 'TOTAL'
    -- Two (2) other scripts add additional rows to this table as follows:
    -- 1) nscdprpt_rpt_fam_FWEQ_detail_aggr_sesn_avg_dml.sql => calculates the
    -- total quantities F1_QTY, F2_QTY and AE for each LEVEL_VALUE
    -- 2) nscdprpt_rpt_fam_FWEQ_detail_aggr_pct_swg_dml.sql => calculates the
    -- percent swing in quantities between DISP_EVENTS for each grouping
    -- of PLAN_CTRY, DIVISION, SEASON and TRG_EVENT_NUM for only LEVEL_TYPE = 'SUB_CAT'
    -- =============================================================================
    -- The result set from joining RPT_FAM_FWEQ_DETAIL rows with comparison types
    -- is inserted into the table RPT_FAM_FWEQ_DETAIL_AGGR
    INSERT INTO rpt_fam_FWEQ_detail_aggr
    SELECT plan_ctry,
    division,
    season,
    monthly_seq,
         bucket_month_date,
    tier_num,
    level_num,
    tier_volume,
    trg_event_num,
    disp_event_num,
    max_event_num,
    compare_name,
    first_display_event_num,
    level_type,
    level_value,
    'TOTAL' AS row_type,
    material,
    key_material,
    sap_cat_cd,
    sap_cat_desc,
    sap_sub_cat_cd,
    sap_sub_cat_desc,
    sty_colr_sdesc,
    sty_grp_nbr,
    sty_grp_desc,
    matl_typ,
    sap_prod_typ_grp, -- 'Type Group' in Brio
    typ_grp_desc, -- 'Type Group' in Brio
    curr_prod_i2_life_cyc_cd,
    NULL AS promo_ind, -- for future use
    -- Each RPT_FAM_FWEQ_DETAIL row's eight (8) quantity columns are broken down
    -- into F1_QTY from DISP_aaaa_QTY, F2_QTY from TRG_aaaa_QTY and
         -- AE from aaaa_AE where 'aaaa' is equal to one of the COMPARE_TYPEs below:
    -- F1_QTY
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    disp_dlvry_plan_qty
    WHEN compare_type = 'NET' THEN
    disp_net_qty
    WHEN compare_type = 'NET_AO' THEN
    disp_ao_qty
    WHEN compare_type = 'NET_FTRS' THEN
    disp_futr_qty
    WHEN compare_type = 'NET_REPLENS' THEN
    disp_replen_qty
    WHEN compare_type = 'AUTH_FTRS' THEN
    disp_auth_futr_qty
    END as f1_qty,
    -- F2_QTY
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    trg_dlvry_plan_qty
    WHEN compare_type = 'NET' THEN
    trg_net_qty
    WHEN compare_type = 'NET_AO' THEN
    trg_ao_qty
    WHEN compare_type = 'NET_FTRS' THEN
    trg_futr_qty
    WHEN compare_type = 'NET_REPLENS' THEN
    trg_replen_qty
    WHEN compare_type = 'AUTH_FTRS' THEN
    trg_auth_futures_qty
    END as f2_qty,
    -- AE
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    abs(disp_dlvry_plan_qty - trg_dlvry_plan_qty)
    WHEN compare_type = 'NET' THEN
    abs(disp_net_qty - trg_net_qty)
    WHEN compare_type = 'NET_AO' THEN
    abs(disp_ao_qty - trg_ao_qty)
    WHEN compare_type = 'NET_FTRS' THEN
    abs(disp_futr_qty - trg_futr_qty)
    WHEN compare_type = 'NET_REPLENS' THEN
    abs(disp_replen_qty - trg_replen_qty)
    WHEN compare_type = 'AUTH_FTRS' THEN
    abs(disp_auth_futr_qty - trg_auth_futures_qty)
    END as ae,
    SYSDATE AS zz_insert_tmst
    FROM
    -- The following in-line view provides three (3) result sets from the RPT_FAM_FWEQ_DETAIL table
         -- This in-line view returns only LEVEL_NUM = 1 or LEVEL_TYPE = 'SUB_CAT' data
         SELECT plan_ctry,
         division,
         season,
         monthly_seq,
              bucket_month_date,
         tier_num,
         level_num,
         tier_volume,
         trg_event_num,
         trg_event_type,
         disp_event_num,
         max_event_num,
         first_display_event_num,
         level_type,
         level_value,
         -- The following NULL'd columns' values cannot be saved due to aggregation
         NULL AS material,
         NULL AS key_material,
         sap_cat_cd,
         sap_cat_desc,
         sap_sub_cat_cd,
         sap_sub_cat_desc,
         NULL AS sty_colr_sdesc,
         NULL AS sty_grp_nbr,
         NULL AS sty_grp_desc,
         NULL AS matl_typ,
         sap_prod_typ_grp, -- 'Type Group' in Brio
         typ_grp_desc, -- 'Type Group' in Brio
         NULL AS curr_prod_i2_life_cyc_cd,
         sum(disp_net_qty) AS disp_net_qty,
              sum(trg_net_qty) AS trg_net_qty,
         -- ABS(sum(trg_net_qty) - sum(disp_net_qty)) AS net_AE,
         sum(disp_dlvry_plan_qty) AS disp_dlvry_plan_qty,
              sum(trg_dlvry_plan_qty) AS trg_dlvry_plan_qty,
         -- ABS(sum(trg_dlvry_plan_qty) - sum(disp_dlvry_plan_qty)) AS dlvry_plan_AE,
         sum(disp_futr_qty) AS disp_futr_qty,
              sum(trg_futr_qty) AS trg_futr_qty,
         -- ABS(sum(trg_futr_qty) - sum(disp_futr_qty)) AS futr_AE,
         sum(disp_ao_qty) AS disp_ao_qty,
              sum(trg_ao_qty) AS trg_ao_qty,
         -- ABS(sum(trg_ao_qty) - sum(disp_ao_qty)) AS ao_AE,
         sum(disp_replen_qty) AS disp_replen_qty,
              sum(trg_replen_qty) AS trg_replen_qty,
         -- ABS(sum(trg_replen_qty) - sum(disp_replen_qty)) AS replen_AE,
         sum(disp_futr_qty) AS disp_auth_futr_qty,
              sum(trg_auth_futures_qty) AS trg_auth_futures_qty --,
         -- ABS(sum(trg_auth_futures_qty) - sum(disp_futr_qty)) AS auth_futures_AE
         FROM rpt_fam_FWEQ_detail
         WHERE plan_ctry &where_plan_ctry
         and level_num = 1 -- 'SUB-CAT'
         -- AND (promo_ind <> 'Y' OR promo_ind IS null)
         GROUP BY plan_ctry,
         division,
         season,
         monthly_seq,
              bucket_month_date,
         tier_num,
         level_num,
         tier_volume,
         trg_event_num,
         trg_event_type,
         disp_event_num,
         max_event_num,
         first_display_event_num,
         level_type,
         level_value,
         sap_cat_cd,
         sap_cat_desc,
         sap_sub_cat_cd,
         sap_sub_cat_desc,
         sap_prod_typ_grp, -- 'Type Group' in Brio
         typ_grp_desc -- 'Type Group' in Brio
         ) dtl,
         -- The following in-line view returns all of the different combinations
         -- of comparison types in the RPT_FAM_FWEQ_DETAIL table
         -- This select returns the pairing of all forecast types
         SELECT event_type, compare_type, compare_name
         from
         (SELECT event_type, compare_type, compare_type_description || ' to ' || compare_type_description AS compare_name
         FROM rpt_fam_compare_types
         WHERE event_type = 'FCST'
         UNION
         -- This select returns the pairing of all bookings types with forecast types
         SELECT bkng.event_type, fcst.compare_type, bkng.compare_type_description || ' to ' || fcst.compare_type_description AS compare_name
         FROM rpt_fam_compare_types fcst,
         rpt_fam_compare_types bkng
         WHERE fcst.event_type = 'FCST'
         AND bkng.event_type = 'BKNG'
         AND fcst.compare_type = bkng.compare_type
         WHERE event_type || ' ' || compare_type <> 'FCST AUTH_FTRS'
         AND compare_type NOT IN ('NET_SHIP', 'SHIP_NET_FTRS', 'NET_ETS', 'GROSS_FTRS')
         ) cmpr
    -- The two (2) in-line views are joined by EVENT_TYPE (i.e. 'FCST' and 'BKNG')
    -- to form a product of all RPT_FAM_FWEQ_DETAIL rows with comparison types
    WHERE dtl.trg_event_type = cmpr.event_type
    ORDER BY plan_ctry,
    division,
    season,
    monthly_seq,
    tier_num,
    level_num,
    tier_volume,
    trg_event_num,
    disp_event_num,
    max_event_num,
    first_display_event_num,
    level_type,
    level_value
    COMMIT
    INSERT INTO rpt_fam_FWEQ_detail_aggr
    SELECT plan_ctry,
    division,
    season,
    monthly_seq,
         bucket_month_date,
    tier_num,
    level_num,
    tier_volume,
    trg_event_num,
    disp_event_num,
    max_event_num,
    compare_name,
    first_display_event_num,
    level_type,
    level_value,
    'TOTAL' AS row_type,
    material,
    key_material,
    sap_cat_cd,
    sap_cat_desc,
    sap_sub_cat_cd,
    sap_sub_cat_desc,
    sty_colr_sdesc,
    sty_grp_nbr,
    sty_grp_desc,
    matl_typ,
    sap_prod_typ_grp, -- 'Type Group' in Brio
    typ_grp_desc, -- 'Type Group' in Brio
    curr_prod_i2_life_cyc_cd,
    NULL AS promo_ind, -- for future use
    -- Each RPT_FAM_FWEQ_DETAIL row's eight (8) quantity columns are broken down
    -- into F1_QTY from DISP_aaaa_QTY, F2_QTY from TRG_aaaa_QTY and
         -- AE from aaaa_AE where 'aaaa' is equal to one of the COMPARE_TYPEs below:
    -- F1_QTY
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    disp_dlvry_plan_qty
    WHEN compare_type = 'NET' THEN
    disp_net_qty
    WHEN compare_type = 'NET_AO' THEN
    disp_ao_qty
    WHEN compare_type = 'NET_FTRS' THEN
    disp_futr_qty
    WHEN compare_type = 'NET_REPLENS' THEN
    disp_replen_qty
    WHEN compare_type = 'AUTH_FTRS' THEN
    disp_auth_futr_qty
    END as f1_qty,
    -- F2_QTY
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    trg_dlvry_plan_qty
    WHEN compare_type = 'NET' THEN
    trg_net_qty
    WHEN compare_type = 'NET_AO' THEN
    trg_ao_qty
    WHEN compare_type = 'NET_FTRS' THEN
    trg_futr_qty
    WHEN compare_type = 'NET_REPLENS' THEN
    trg_replen_qty
    WHEN compare_type = 'AUTH_FTRS' THEN
    trg_auth_futures_qty
    END as f2_qty,
    -- AE
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    abs(disp_dlvry_plan_qty - trg_dlvry_plan_qty)
    WHEN compare_type = 'NET' THEN
    abs(disp_net_qty - trg_net_qty)
    WHEN compare_type = 'NET_AO' THEN
    abs(disp_ao_qty - trg_ao_qty)
    WHEN compare_type = 'NET_FTRS' THEN
    abs(disp_futr_qty - trg_futr_qty)
    WHEN compare_type = 'NET_REPLENS' THEN
    abs(disp_replen_qty - trg_replen_qty)
    WHEN compare_type = 'AUTH_FTRS' THEN
    abs(disp_auth_futr_qty - trg_auth_futures_qty)
    END as ae,
    SYSDATE AS zz_insert_tmst
    FROM
         -- This in-line view returns only LEVEL_NUM = 2 or LEVEL_TYPE = 'STYLE_GROUP' data
         (SELECT plan_ctry,
         division,
         season,
         monthly_seq,
              bucket_month_date,
         tier_num,
         level_num,
         tier_volume,
         trg_event_num,
         trg_event_type,
         disp_event_num,
         max_event_num,
         first_display_event_num,
         level_type,
         level_value,
         -- The following NULL'd columns' values cannot be saved due to aggregation
         NULL AS material,
         NULL AS key_material,
         sap_cat_cd,
         sap_cat_desc,
         sap_sub_cat_cd,
         sap_sub_cat_desc,
         NULL AS sty_colr_sdesc,
         sty_grp_nbr,
         sty_grp_desc,
         NULL AS matl_typ,
         sap_prod_typ_grp, -- 'Type Group' in Brio
         typ_grp_desc, -- 'Type Group' in Brio
         NULL AS curr_prod_i2_life_cyc_cd,
         sum(disp_net_qty) AS disp_net_qty,
              sum(trg_net_qty) AS trg_net_qty,
         -- ABS(sum(trg_net_qty) - sum(disp_net_qty)) AS net_AE,
         sum(disp_dlvry_plan_qty) AS disp_dlvry_plan_qty,
              sum(trg_dlvry_plan_qty) AS trg_dlvry_plan_qty,
         -- ABS(sum(trg_dlvry_plan_qty) - sum(disp_dlvry_plan_qty)) AS dlvry_plan_AE,
         sum(disp_futr_qty) AS disp_futr_qty,
              sum(trg_futr_qty) AS trg_futr_qty,
         -- ABS(sum(trg_futr_qty) - sum(disp_futr_qty)) AS futr_AE,
         sum(disp_ao_qty) AS disp_ao_qty,
              sum(trg_ao_qty) AS trg_ao_qty,
         -- ABS(sum(trg_ao_qty) - sum(disp_ao_qty)) AS ao_AE,
         sum(disp_replen_qty) AS disp_replen_qty,
              sum(trg_replen_qty) AS trg_replen_qty,
         -- ABS(sum(trg_replen_qty) - sum(disp_replen_qty)) AS replen_AE,
         sum(disp_futr_qty) AS disp_auth_futr_qty,
              sum(trg_auth_futures_qty) AS trg_auth_futures_qty --,
         -- ABS(sum(trg_auth_futures_qty) - sum(disp_futr_qty)) AS auth_futures_AE
         FROM rpt_fam_FWEQ_detail
         WHERE plan_ctry &where_plan_ctry
         and level_num = 2 -- 'STYLE-GRP' or 'STYLE'
         -- AND (promo_ind <> 'Y' OR promo_ind IS null)
         GROUP BY plan_ctry,
         division,
         season,
         monthly_seq,
              bucket_month_date,
         tier_num,
         level_num,
         tier_volume,
         trg_event_num,
         trg_event_type,
         disp_event_num,
         max_event_num,
         first_display_event_num,
         level_type,
         level_value,
         sap_cat_cd,
         sap_cat_desc,
         sap_sub_cat_cd,
         sap_sub_cat_desc,
         sty_grp_nbr,
         sty_grp_desc,
         sap_prod_typ_grp, -- 'Type Group' in Brio
         typ_grp_desc -- 'Type Group' in Brio
         ) dtl,
         -- The following in-line view returns all of the different combinations
         -- of comparison types in the RPT_FAM_FWEQ_DETAIL table
         -- This select returns the pairing of all forecast types
         SELECT event_type, compare_type, compare_name
         from
         (SELECT event_type, compare_type, compare_type_description || ' to ' || compare_type_description AS compare_name
         FROM rpt_fam_compare_types
         WHERE event_type = 'FCST'
         UNION
         -- This select returns the pairing of all bookings types with forecast types
         SELECT bkng.event_type, fcst.compare_type, bkng.compare_type_description || ' to ' || fcst.compare_type_description AS compare_name
         FROM rpt_fam_compare_types fcst,
         rpt_fam_compare_types bkng
         WHERE fcst.event_type = 'FCST'
         AND bkng.event_type = 'BKNG'
         AND fcst.compare_type = bkng.compare_type
         WHERE event_type || ' ' || compare_type <> 'FCST AUTH_FTRS'
         AND compare_type NOT IN ('NET_SHIP', 'SHIP_NET_FTRS', 'NET_ETS', 'GROSS_FTRS')
         ) cmpr
    -- The two (2) in-line views are joined by EVENT_TYPE (i.e. 'FCST' and 'BKNG')
    -- to form a product of all RPT_FAM_FWEQ_DETAIL rows with comparison types
    WHERE dtl.trg_event_type = cmpr.event_type
    ORDER BY plan_ctry,
    division,
    season,
    monthly_seq,
    tier_num,
    level_num,
    tier_volume,
    trg_event_num,
    disp_event_num,
    max_event_num,
    first_display_event_num,
    level_type,
    level_value
    COMMIT
    INSERT INTO rpt_fam_FWEQ_detail_aggr
    SELECT plan_ctry,
    division,
    season,
    monthly_seq,
         bucket_month_date,
    tier_num,
    level_num,
    tier_volume,
    trg_event_num,
    disp_event_num,
    max_event_num,
    compare_name,
    first_display_event_num,
    level_type,
    level_value,
    'TOTAL' AS row_type,
    material,
    key_material,
    sap_cat_cd,
    sap_cat_desc,
    sap_sub_cat_cd,
    sap_sub_cat_desc,
    sty_colr_sdesc,
    sty_grp_nbr,
    sty_grp_desc,
    matl_typ,
    sap_prod_typ_grp, -- 'Type Group' in Brio
    typ_grp_desc, -- 'Type Group' in Brio
    curr_prod_i2_life_cyc_cd,
    NULL AS promo_ind, -- for future use
    -- Each RPT_FAM_FWEQ_DETAIL row's eight (8) quantity columns are broken down
    -- into F1_QTY from DISP_aaaa_QTY, F2_QTY from TRG_aaaa_QTY and
         -- AE from aaaa_AE where 'aaaa' is equal to one of the COMPARE_TYPEs below:
    -- F1_QTY
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    disp_dlvry_plan_qty
    WHEN compare_type = 'NET' THEN
    disp_net_qty
    WHEN compare_type = 'NET_AO' THEN
    disp_ao_qty
    WHEN compare_type = 'NET_FTRS' THEN
    disp_futr_qty
    WHEN compare_type = 'NET_REPLENS' THEN
    disp_replen_qty
    WHEN compare_type = 'AUTH_FTRS' THEN
    disp_auth_futr_qty
    END as f1_qty,
    -- F2_QTY
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    trg_dlvry_plan_qty
    WHEN compare_type = 'NET' THEN
    trg_net_qty
    WHEN compare_type = 'NET_AO' THEN
    trg_ao_qty
    WHEN compare_type = 'NET_FTRS' THEN
    trg_futr_qty
    WHEN compare_type = 'NET_REPLENS' THEN
    trg_replen_qty
    WHEN compare_type = 'AUTH_FTRS' THEN
    trg_auth_futures_qty
    END as f2_qty,
    -- AE
    CASE WHEN compare_type = 'DELIVERY_PLAN' THEN
    abs(disp_dlvry_plan_qty - trg_dlvry_plan_qty)
    WHEN compare_type = 'NET' THEN
    abs(disp_net_qty - trg_net_qty)
    WHEN compare_type = 'NET_AO' THEN
    abs(disp_ao_qty - trg_ao_qty)
    WHEN compare_type = 'NET_FTRS' THEN
    abs(disp_futr_qty - trg_futr_qty)
    WHEN compare_type = 'NET_REPLENS' THEN
    abs(disp_replen_qty - trg_replen_qty)
    WHEN compare_type = 'AUTH_FTRS' THEN
    abs(disp_auth_futr_qty - trg_auth_futures_qty)
    END as ae,
    SYSDATE AS zz_insert_tmst
    FROM
         -- This in-line view returns only LEVEL_NUM = 3 or LEVEL_TYPE = 'MATL' data
         (SELECT plan_ctry,
         division,
         season,
         monthly_seq,
              bucket_month_date,
         tier_num,
         level_num,
         tier_volume,
         trg_event_num,
         trg_event_type,
         disp_event_num,
         max_event_num,
         first_display_event_num,
         level_type,
         level_value,
         material,
         key_material,
         sap_cat_cd,
         sap_cat_desc,
         sap_sub_cat_cd,
         sap_sub_cat_desc,
         sty_colr_sdesc,
         sty_grp_nbr,
         sty_grp_desc,
         matl_typ,
         sap_prod_typ_grp, -- 'Type Group' in Brio
         typ_grp_desc, -- 'Type Group' in Brio
         curr_prod_i2_life_cyc_cd,
         sum(disp_net_qty) AS disp_net_qty,
              sum(trg_net_qty) AS trg_net_qty,
         -- ABS(sum(trg_net_qty) - sum(disp_net_qty)) AS net_AE,
         sum(disp_dlvry_plan_qty) AS disp_dlvry_plan_qty,
              sum(trg_dlvry_plan_qty) AS trg_dlvry_plan_qty,
         -- ABS(sum(trg_dlvry_plan_qty) - sum(disp_dlvry_plan_qty)) AS dlvry_plan_AE,
         sum(disp_futr_qty) AS disp_futr_qty,
              sum(trg_futr_qty) AS trg_futr_qty,
         -- ABS(sum(trg_futr_qty) - sum(disp_futr_qty)) AS futr_AE,
         sum(disp_ao_qty) AS disp_ao_qty,
              sum(trg_ao_qty) AS trg_ao_qty,
         -- ABS(sum(trg_ao_qty) - sum(disp_ao_qty)) AS ao_AE,
         sum(disp_replen_qty) AS disp_replen_qty,
              sum(trg_replen_qty) AS trg_replen_qty,
         -- ABS(sum(trg_replen_qty) - sum(disp_replen_qty)) AS replen_AE,
         sum(disp_futr_qty) AS disp_auth_futr_qty,
              sum(trg_auth_futures_qty) AS trg_auth_futures_qty --,
         -- ABS(sum(trg_auth_futures_qty) - sum(disp_futr_qty)) AS auth_futures_AE
         FROM rpt_fam_FWEQ_detail
         WHERE plan_ctry &where_plan_ctry
         and level_num = 3 -- 'MATERIAL'
         -- AND promo_ind <> 'Y'
         GROUP BY plan_ctry,
         division,
         season,
         monthly_seq,
              bucket_month_date,
         tier_num,
         level_num,
         tier_volume,
         trg_event_num,
         trg_event_type,
         disp_event_num,
         max_event_num,
         first_display_event_num,
         level_type,
         level_value,
         material,
         key_material,
         sap_cat_cd,
         sap_cat_desc,
         sap_sub_cat_cd,
         sap_sub_cat_desc,
         sty_colr_sdesc,
         sty_grp_nbr,
         sty_grp_desc,
         matl_typ,
         sap_prod_typ_grp, -- 'Type Group' in Brio
         typ_grp_desc, -- 'Type Group' in Brio
         curr_prod_i2_life_cyc_cd
         ) dtl,
         -- The following in-line view returns all of the different combinations
         -- of comparison types in the RPT_FAM_FWEQ_DETAIL table
         -- This select returns the pairing of all forecast types
         SELECT event_type, compare_type, compare_name
         from
         (SELECT event_type, compare_type, compare_type_description || ' to ' || compare_type_description AS compare_name
         FROM rpt_fam_compare_types
         WHERE event_type = 'FCST'
         UNION
         -- This select returns the pairing of all bookings types with forecast types
         SELECT bkng.event_type, fcst.compare_type, bkng.compare_type_description || ' to ' || fcst.compare_type_description AS compare_name
         FROM rpt_fam_compare_types fcst,
         rpt_fam_compare_types bkng
         WHERE fcst.event_type = 'FCST'
         AND bkng.event_type = 'BKNG'
         AND fcst.compare_type = bkng.compare_type
         WHERE event_type || ' ' || compare_type <> 'FCST AUTH_FTRS'
         AND compare_type NOT IN ('NET_SHIP', 'SHIP_NET_FTRS', 'NET_ETS', 'GROSS_FTRS')
         ) cmpr
    -- The two (2) in-line views are joined by EVENT_TYPE (i.e. 'FCST' and 'BKNG')
    -- to form a product of all RPT_FAM_FWEQ_DETAIL rows with comparison types
    WHERE dtl.trg_event_type = cmpr.event_type
    ORDER BY plan_ctry,
    division,
    season,
    monthly_seq,
    tier_num,
    level_num,
    tier_volume,
    trg_event_num,
    disp_event_num,
    max_event_num,
    first_display_event_num,
    level_type,
    level_value
    COMMIT
    /

    I agree.
    SELECT ticket_no,name_of_the_passenger..
    FROM ticket_master
    WHERE ticket_no NOT IN
    (SELECT Ticket_no
    FROM ticket_cancellations
    WHERE trip_id = my_trip_id);
    This involves creating a little temp table for each record in ticket_no. Then full scanning it.
    Change it to
    SELECT ticket_no,name_of_the_passenger..
    FROM ticket_master B
    WHERE ticket_no NOT EXISTS
    (SELECT null
    FROM ticket_cancellations A
    WHERE A.ticket_no = B.ticket_no
    AND trip_id = my_trip_id);
    Then you get an index hit in both cases.

  • Need to create a driver class for a program i have made...

    hey guys im new to these forums and someone told me that i could get help on here if i get in a bind...my problem is that i need help creating a driver class for a program that i have created and i dont know what to do. i need to know how to do this is because my professor told us after i was 2/3 done my project that we need at least 2 class files for our project, so i need at least 2 class files for it to run... my program is as follows:
    p.s might be kinda messy, might need to put it into a text editor
    Cipher.java
    This program encodes and decodes text strings using a cipher that
    can be specified by the user.
    import java.io.*;
    public class Cipher
    public static void printID()
    // output program ID
    System.out.println ("*********************");
    System.out.println ("* Cipher *");
    System.out.println ("* *");
    System.out.println ("* *");
    System.out.println ("* *");
    System.out.println ("* CS 181-03 *");
    System.out.println ("*********************");
    public static void printMenu()
    // output menu
    System.out.println("\n\n****************************" +
    "\n* 1. Set cipher code. *" +
    "\n* 2. Encode text. *" +
    "\n* 3. Decode coded text. *" +
    "\n* 4. Exit the program *" +
    "\n****************************");
    public static String getText(BufferedReader input, String prompt)
    throws IOException
    // prompt the user and get their response
    System.out.print(prompt);
    return input.readLine();
    public static int getInteger(BufferedReader input, String prompt)
    throws IOException
    // prompt and get response from user
    String text = getText(input, prompt);
    // convert it to an integer
    return (new Integer(text).intValue());
    public static String encode(String original, int offset)
    // declare constants
    final int ALPHABET_SIZE = 26; // used to wrap around A-Z
    String encoded = ""; // base for string to return
    char letter; // letter being processed
    // convert message to upper case
    original = original.toUpperCase();
    // process each character of the message
    for (int index = 0; index < original.length(); index++)
    // get the letter and determine whether or not to
    // add the cipher value
    letter = original.charAt(index);
    if (letter >='A' && letter <= 'Z')
    // is A-Z, so add offset
    // determine whether result will be out of A-Z range
    if ((letter + offset) > 'Z') // need to wrap around to 'A'
    letter = (char)(letter - ALPHABET_SIZE + offset);
    else
    if ((letter + offset) < 'A') // need to wrap around to 'Z'
    letter = (char)(letter + ALPHABET_SIZE + offset);
    else
    letter = (char) (letter + offset);
    // build encoded message string
    encoded = encoded + letter;
    return encoded;
    public static String decode(String original, int offset)
    // declare constants
    final int ALPHABET_SIZE = 26; // used to wrap around A-Z
    String decoded = ""; // base for string to return
    char letter; // letter being processed
    // make original message upper case
    original = original.toUpperCase();
    // process each letter of message
    for (int index = 0; index < original.length(); index++)
    // get letter and determine whether to subtract cipher value
    letter = original.charAt(index);
    if (letter >= 'A' && letter <= 'Z')
    // is A-Z, so subtract cipher value
    // determine whether result will be out of A-Z range
    if ((letter - offset) < 'A') // wrap around to 'Z'
    letter = (char)(letter + ALPHABET_SIZE - offset);
    else
    if ((letter - offset) > 'Z') // wrap around to 'A'
    letter = (char)(letter - ALPHABET_SIZE - offset);
    else
    letter = (char) (letter - offset);
    // build decoded message
    decoded = decoded + letter;
    return decoded;
    // main controls flow throughout the program, presenting a
    // menu of options the user.
    public static void main (String[] args) throws IOException
    // declare constants
    final String PROMPT_CHOICE = "Enter your choice: ";
    final String PROMPT_VALID = "\nYou must enter a number between 1" +
    " and 4 to indicate your selection.\n";
    final String PROMPT_CIPHER = "\nEnter the offset value for a caesar " +
    "cipher: ";
    final String PROMPT_ENCODE = "\nEnter the text to encode: ";
    final String PROMPT_DECODE = "\nEnter the text to decode: ";
    final String SET_STR = "1"; // selection of 1 at main menu
    final String ENCODE_STR = "2"; // selection of 2 at main menu
    final String DECODE_STR = "3"; // selection of 3 at main menu
    final String EXIT_STR = "4"; // selection of 4 at main menu
    final int SET = 1; // menu choice 1
    final int ENCODE = 2; // menu choice 2
    final int DECODE =3; // menu choice 4
    final int EXIT = 4; // menu choice 3
    final int ALPHABET_SIZE = 26; // number of elements in alphabet
    // declare variables
    boolean finished = false; // whether or not to exit program
    String text; // input string read from keyboard
    int choice; // menu choice selected
    int offset = 0; // caesar cipher offset
    // declare and instantiate input objects
    InputStreamReader reader = new InputStreamReader(System.in);
    BufferedReader input = new BufferedReader(reader);
    // Display program identification
    printID();
    // until the user selects the exit option, display the menu
    // and respond to the choice
    do
    // Display menu of options
    printMenu();
    // Prompt user for an option and read input
    text = getText(input, PROMPT_CHOICE);
    // While selection is not valid, prompt for correct info
    while (!text.equals(SET_STR) && !text.equals(ENCODE_STR) &&
    !text.equals(EXIT_STR) && !text.equals(DECODE_STR))
    text = getText(input, PROMPT_VALID + PROMPT_CHOICE);
    // convert choice to an integer
    choice = new Integer(text).intValue();
    // respond to the choice selected
    switch(choice)
    case SET:
         // get the cipher value from the user and constrain to
    // -25..0..25
    offset = getInteger(input, PROMPT_CIPHER);
    offset %= ALPHABET_SIZE;
    break;
    case ENCODE:
    // get message to encode from user, and encode it using
    // the current cipher value
    text = getText(input, PROMPT_ENCODE);
    text = encode(text, offset);
    System.out.println("Encoded text is: " + text);
    break;
    case DECODE:
    // get message to decode from user, and decode it using
    // the current cipher value
    text = getText(input, PROMPT_DECODE);
    text = decode(text, offset);
    System.out.println("Decoded text is: " + text);
    break;
    case EXIT:
    // set exit flag to true
    finished = true ;
    break;
    } // end of switch on choice
    } while (!finished); // end of outer do loop
    // Thank user
    System.out.println("Thank you for using Cipher for all your" +
    " code breaking and code making needs.");
    }

    My source in code format...sorry guys :)
       Cipher.java
       This program encodes and decodes text strings using a cipher that
       can be specified by the user.
    import java.io.*;
    public class Cipher
       public static void printID()
          // output program ID
          System.out.println ("*********************");
          System.out.println ("*       Cipher      *");
          System.out.println ("*                   *");
          System.out.println ("*                          *");
          System.out.println ("*                   *");
          System.out.println ("*     CS 181-03     *");
          System.out.println ("*********************");
       public static void printMenu()
          // output menu
          System.out.println("\n\n****************************" +
                               "\n*   1. Set cipher code.    *" +
                               "\n*   2. Encode text.        *" +
                               "\n*   3. Decode coded text.  *" +
                               "\n*   4. Exit the program    *" +
                               "\n****************************");
       public static String getText(BufferedReader input, String prompt)
                                           throws IOException
          // prompt the user and get their response
          System.out.print(prompt);
          return input.readLine();
       public static int getInteger(BufferedReader input, String prompt)
                                           throws IOException
          // prompt and get response from user
          String text = getText(input, prompt);
          // convert it to an integer
          return (new Integer(text).intValue());
       public static String encode(String original, int offset)
          // declare constants
          final int ALPHABET_SIZE = 26;  // used to wrap around A-Z
          String encoded = "";           // base for string to return
          char letter;                   // letter being processed
          // convert message to upper case
          original = original.toUpperCase();
          // process each character of the message
          for (int index = 0; index < original.length(); index++)
             // get the letter and determine whether or not to
             // add the cipher value
             letter = original.charAt(index);
             if (letter >='A' && letter <= 'Z')          
                // is A-Z, so add offset
                // determine whether result will be out of A-Z range
                if ((letter + offset) > 'Z') // need to wrap around to 'A'
                   letter = (char)(letter - ALPHABET_SIZE + offset);
                else
                   if ((letter + offset) < 'A') // need to wrap around to 'Z'
                      letter = (char)(letter + ALPHABET_SIZE + offset);
                   else
                      letter = (char) (letter + offset);
             // build encoded message string
             encoded = encoded + letter;
          return encoded;
       public static String decode(String original, int offset)
          // declare constants
          final int ALPHABET_SIZE = 26;  // used to wrap around A-Z
          String decoded = "";           // base for string to return
          char letter;                   // letter being processed
          // make original message upper case
          original = original.toUpperCase();
          // process each letter of message
          for (int index = 0; index < original.length(); index++)
             // get letter and determine whether to subtract cipher value
             letter = original.charAt(index);
             if (letter >= 'A' && letter <= 'Z')          
                // is A-Z, so subtract cipher value
                // determine whether result will be out of A-Z range
                if ((letter - offset) < 'A')  // wrap around to 'Z'
                   letter = (char)(letter + ALPHABET_SIZE - offset);
                else
                   if ((letter - offset) > 'Z') // wrap around to 'A'
                      letter = (char)(letter - ALPHABET_SIZE - offset);
                   else
                      letter = (char) (letter - offset);
             // build decoded message
             decoded = decoded + letter;
          return decoded;
       // main controls flow throughout the program, presenting a
       // menu of options the user.
       public static void main (String[] args) throws IOException
         // declare constants
          final String PROMPT_CHOICE = "Enter your choice:  ";
          final String PROMPT_VALID = "\nYou must enter a number between 1" +
                                      " and 4 to indicate your selection.\n";
          final String PROMPT_CIPHER = "\nEnter the offset value for a caesar " +
                                       "cipher: ";
          final String PROMPT_ENCODE = "\nEnter the text to encode: ";
          final String PROMPT_DECODE = "\nEnter the text to decode: ";
          final String SET_STR = "1";  // selection of 1 at main menu
          final String ENCODE_STR = "2"; // selection of 2 at main menu
          final String DECODE_STR = "3"; // selection of 3 at main menu
          final String EXIT_STR = "4";  // selection of 4 at main menu
          final int SET = 1;            // menu choice 1
          final int ENCODE = 2;         // menu choice 2
          final int DECODE =3;          // menu choice 4
          final int EXIT = 4;           // menu choice 3
          final int ALPHABET_SIZE = 26; // number of elements in alphabet
          // declare variables
          boolean finished = false; // whether or not to exit program
          String text;              // input string read from keyboard
          int choice;               // menu choice selected
          int offset = 0;           // caesar cipher offset
          // declare and instantiate input objects
          InputStreamReader reader = new InputStreamReader(System.in);
          BufferedReader input = new BufferedReader(reader);
          // Display program identification
          printID();
          // until the user selects the exit option, display the menu
          // and respond to the choice
          do
             // Display menu of options
             printMenu(); 
             // Prompt user for an option and read input
             text = getText(input, PROMPT_CHOICE);
             // While selection is not valid, prompt for correct info
             while (!text.equals(SET_STR) && !text.equals(ENCODE_STR) &&
                     !text.equals(EXIT_STR) && !text.equals(DECODE_STR))       
                text = getText(input, PROMPT_VALID + PROMPT_CHOICE);
             // convert choice to an integer
             choice = new Integer(text).intValue();
             // respond to the choice selected
             switch(choice)
                case SET:
                // get the cipher value from the user and constrain to
                   // -25..0..25
                   offset = getInteger(input, PROMPT_CIPHER);
                   offset %= ALPHABET_SIZE;
                   break;
                case ENCODE:
                   // get message to encode from user, and encode it using
                   // the current cipher value
                   text = getText(input, PROMPT_ENCODE);
                   text = encode(text, offset);
                   System.out.println("Encoded text is: " + text);
                   break;
                case DECODE:
                   // get message to decode from user, and decode it using
                   // the current cipher value
                   text = getText(input, PROMPT_DECODE);
                   text = decode(text, offset);
                   System.out.println("Decoded text is: " + text);
                   break;
                case EXIT:
                   // set exit flag to true
                   finished = true ;
                   break;
             } // end of switch on choice
          } while (!finished); // end of outer do loop
          // Thank user
          System.out.println("Thank you for using Cipher for all your" +
                             " code breaking and code making needs.");
    }

  • How to Change Value set Dynamically for a Parameter in Apps?

    Hi All,
    I have a requirement where i need to change the value set dynamically for a given Parameter. This goes as, I have a Concurrent Program with 4 parameters. First Parameter is mandatory Business group.Second Parameter is Warehouse. Based up on the First parameter the second parameters LoV's are displayed, the third and fourth parameters value sets are dependent up on the Second parameter value. Parameter 2,3,4 Value sets are Table type. So i Used .$FLEX$.Value_setname to retrive the LOV's
    The Requirment now is that if the User doesn't enter the Parameter 2 than the Third Parameter field must be Open and he must be able to enter the Free text. In my case it is an Order Number. If the User enters the paramter 2 value than LOV's for ORder number pertaining to that Warehouse must get displayed. I've figured that this can be possible only if i change the Valuesets Dyanamically. I'm not sure if that is possible or not.
    I have tried :
    Using a Dummy Parameter with a new valueset(Transactable Independent) and giving Y and N based up on Warehouse parameter input.
    SELECT (DECODE ( :$FLEX$.WAREHOUSE_NAMES,NULL,'Y','N')) from dual;
    The default type was SQL.
    Then in the 3rd Parameter i have used Case function to differentiate Y or N. The third parameter being ORder number, is a table type and derived from Oe_order_headers_all.
    In the Query section i tried using dummy parameter value set to retreive the values. I was terribly Unsuccessful in doing so.
    Does the above Case exists or is Doable? Please, Help me out if somone had worked on Similar thing or have any idea of standard report/program using it in Oracle.
    Thanks alot for the Help!

    You will probably have better luck on the eBusinesSuite forum. This is more of a setup issue when defining your LOV and program parameters than it is a SQL or PL/SQL issue.
    http://forums.oracle.com/forums/category.jspa?categoryID=3
    Good luck - this is an aggravating issue to work with and I wish I did have the answer for you!

  • Unable to Give Input for my Program in JDEV 11g(11.1.1.3.0)

    I'm using Windows 7_Ultimate -32 Bit OS with Administrator Priviliges
    I'm trying to Run The Following Program
    package appln;
    import java.util.Scanner;
    public class arr {
    public static void main(String[] args) {
    Scanner so = new Scanner(System.in);
    System.out.println("Enter a value into variableID");
    int id = so.nextInt();
    System.out.println("Variable ="+id);
    I'm getting the following errors in "Extensions" Sub window of Output window
    oracle.BC4J:
    Warning: Classpath entry D:\Oracle\Middleware\jdeveloper\jdev\extensions\oracle.jdeveloper.junit\junit4.5\junit-4.5.jar not found.
    oracle.xsqldt-ide:
    Warning: Classpath entry D:\Oracle\Middleware\jdeveloper\jdev\extensions\oracle.jdeveloper.junit\junit4.5\junit-4.5.jar not found.
    Unknown Source: "Error: Field {0} of analyzer {1} references undefined bean {2}
    The MAIN purpose of the program is to Accept input into variable named id and display to output.
    Program Compiled Successfully but while the program is running,
    Out put is "Enter a value into variableID"
    And i'm unable to give input i.e unable to place cursor to give input
    Also i've configured the Input Settings as Mentioned in the BLOG at "http://blogs.oracle.com/shay/2008/02/enabling_user_input_when_runni.html"
    Even though the same thing thing is being repeated
    But when i've run the program in NET BEANS IDE 6.9.1, the program is compiled and runned well.

    John Stegeman WROTE: " Any way to avoid what, exactly?"
    I mean that every time we need to insert the cursor into INPUT field using mouse then input the value and press enter.
    But for large input's it becomes tedious to each time place the cursor in Input field.
    SO i meant to avoid this.
    How can i avoid this.
    Also you've mentioned me to run program's out of JDEV, if i do so i will be mising the Beauty and Advanced Capabilities of "ORACLE JDEV 11G".
    So i can't use any other IDE Than JDEV.
    Also can we Modify the way JDEV prompts for input's rather than this INPUT Field i.e by enabling the user input field for every program.
    If there any, please mention.
    Thanks for help in advance :)
    Edited by: Tejaswi.B on Jan 22, 2011 11:30 PM

  • Fdpstp failed due to ora-12899 value too large for column

    Hi All,
    User facing this problem while running the concurrent program.
    the program is complted but with rhis error.
    fdpstp failed due to ora-12899 value too large for column
    Can any one tell me the excat solution for this?
    RDBMS : 10.2.0.3.0
    Oracle Applications : 11.5.10.2

    User facing this problem while running the concurrent program.
    the program is complted but with rhis error.Is this a seeded or custom concurrent program?
    fdpstp failed due to ora-12899 value too large for column
    Can any one tell me the excat solution for this?Was this working before? If yes, any changes been done recently?
    Can other users run the same concurrent program with no issues?
    Please post the contents of the concurrent request log file here.
    Please ask your developer to open the file using Reports Builder and compile the report and run it (if possible) with the same parameters.
    OERR: ORA-12899 value too large for column %s (actual: %s, maximum: %s) [ID 287754.1]
    Thanks,
    Hussein

  • PO Output For Communication Program is not Submitting in Background PO appr

    Hi Gurus,
    We are working on "PO Output For Communication" Program.We created a Standard Purchase Order and Approved it through the "E-Mail" option checked."PO Output For Communication" program was not submitted in the background.
    From the workflow we found that it was stucked at PO new Communication Process.
    As the value of column "po_output_format" is NULL in the "PO_SYSTEM_PARAMETERS" table it is not submitting in background.
    Already in the front end
    Purchasing responsibility->setup->organizations->purchasing options
    under Documnet control we assigned Output format column as "PDF".
    Will you please provide us your valuable solution as soon as possible.
    Thanks in Advance,
    RS

    This Program "PO Output for Communication" does effects in other parts.
    I mean that this program actually sends an email (or fax or print) along with the PO in PDF attachment or in the TEXT format.
    This program does other part than the above mentioned point also.If yes then provide me the information in which other parts this program effects.I believe it is only the part you mentioned above.
    PO Output for Communication
    http://docs.oracle.com/cd/E18727_01/doc.121/e13410/T446883T443960.htm#srs.poxpopdf
    PO Output for Communication Search
    http://www.oracle.com/pls/ebs121/search?word=PO+Output+for+Communication&format=ranked&remark=quick_search
    Thanks,
    Hussein

  • How do i create a header template for ABAP programs?

    Hi all.
    Need a little bit of help here. When you create a new program you get a template with space for comments at the top of the program and basic stuff. If I want to change this template to add areas that we want to have comments on for every program we make at work. How do I do that?
    Instead of :
    I want to have in a way similar to this:
    *     Author:                         *
    *     Function:                    *
    And so on…
    I want the words to be there when our developers creates the program.
    How can I do that?
    BR
    Kalle

    After I create a new report program, I delete everything but the REPORT line.  I then put this code in for my skeleton.
    * Created By:            Walter Industries (Paul Chapman)
    * Created On:            02/29/2008
    * Tran Code:             ZLMxx
    * Program Name:          YPTC_REPORT_SKELETON        " replace New Progam Name herer
    * Program Descr:         Configurable Leads Data Query
    *                         Modification Log
    * Programmer   :Issue:   Date   : Chg Req. : Description
    * Paul Chapman :00000:02/29/2008:DEVK000000:New Program
    REPORT yptc_report_skeleton MESSAGE-ID zleads_msg.      " replace New Progam Name herer
    *_________________________________________________ Tables
    TABLES: zpca, cepc, zlmlead.
    *_________________________________________________ Constants
    CONSTANTS:
      line_length      TYPE i VALUE 100,
      c_tab            TYPE x VALUE 9,                          " x'09'
      c_crlf           TYPE x VALUE 3338.  " x'ODOA'
    *_________________________________________________ Types
    TYPES: BEGIN OF scr_text_line,
             line(line_length) TYPE c,
           END OF scr_text_line.
    *_________________________________________________ DATA
    DATA:
      curr_screen_tab(4) TYPE n.
    *_________________________________________________ ALV Area
    *_________________________________________________ Ranges
    RANGES:
      r_branch       FOR zpca-branch.
    *_________________________________________________ Selection Screen
    SELECTION-SCREEN:
      BEGIN OF TABBED BLOCK tabs FOR 36 LINES,
        TAB (20) tab1   USER-COMMAND push1 DEFAULT SCREEN 1010,
        TAB (20) tab2   USER-COMMAND push2 DEFAULT SCREEN 1020,
      END OF BLOCK tabs.
    * Tab1 Options            S E L E C T I O N    S C R E E N S    Tab 01 *
    SELECTION-SCREEN BEGIN OF SCREEN 1010 AS SUBSCREEN.
    SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:
       sdiv      FOR cepc-prctr MATCHCODE OBJECT zdivjwh,
       ssbrch    FOR zlmlead-branch.
    SELECTION-SCREEN: END OF BLOCK blk1.
    SELECTION-SCREEN: BEGIN OF BLOCK bl10 WITH FRAME TITLE text-010.
    PARAMETERS:
      cparm1   AS CHECKBOX USER-COMMAND sel,
      cparm2   AS CHECKBOX USER-COMMAND sel,
      cparm3   AS CHECKBOX USER-COMMAND sel,
      cparm4   AS CHECKBOX USER-COMMAND sel,
      cparm5   AS CHECKBOX USER-COMMAND sel.
    SELECTION-SCREEN: END OF BLOCK bl10.
    SELECTION-SCREEN END OF SCREEN 1010.
    * Tab 2 Options            S E L E C T I O N    S C R E E N S   Tab 02 *
    SELECTION-SCREEN BEGIN OF SCREEN 1020 AS SUBSCREEN.
    SELECTION-SCREEN: BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
    SELECT-OPTIONS:
       sctype      FOR zlmlead-ctype,
       sprfcnt     FOR zlmlead-prefcont.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25)   text-201.
    SELECTION-SCREEN POSITION 30.
    PARAMETERS:  rb_opt1 RADIOBUTTON GROUP gr20.
    SELECTION-SCREEN COMMENT 34(03)  text-991. " Yes
    SELECTION-SCREEN POSITION 40.
    PARAMETERS:  rb_opt2 RADIOBUTTON GROUP gr20.
    SELECTION-SCREEN COMMENT 44(03)  text-992. " No
    SELECTION-SCREEN POSITION 50.
    PARAMETERS:  rb_opt3 RADIOBUTTON GROUP gr20.
    SELECTION-SCREEN COMMENT 54(06)  text-993. " Either
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK blk2.
    SELECTION-SCREEN: BEGIN OF BLOCK bl20 WITH FRAME TITLE text-020.
    PARAMETERS:
      cb_opt1   AS CHECKBOX,
      cb_opt2   AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN: END OF BLOCK bl20.
    SELECTION-SCREEN END OF SCREEN 1020.
    *____________________________________________ Screen Actions
    AT SELECTION-SCREEN OUTPUT.
      PERFORM what_tab_am_i_on.
      CASE curr_screen_tab.
        WHEN '1010'.                                            " Tab 1
        WHEN '1020'.                                            " Tab 2
        WHEN OTHERS.
      ENDCASE.
      PERFORM tab_hide_unhide.
    *___________________________________________  Initialization
    INITIALIZATION.
    * Tab Text
      tab1  = 'Tab 1'.
      tab2  = 'Tab 2'.
    *_________________________________________________ Load of Program
    LOAD-OF-PROGRAM.
    *_________________________________________________ Start of Selection
    START-OF-SELECTION.
      PERFORM set_up_branch_range.
    *_________________________________________________ End of Selection
    END-OF-SELECTION.
    *&      Form  what_tab_am_i_on
    FORM what_tab_am_i_on.
      LOOP AT SCREEN.
        IF     screen-name CS 'BLOCK_1010'.
          curr_screen_tab = '1010'.
        ELSEIF screen-name CS 'BLOCK_1020'.
          curr_screen_tab = '1020'.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " what_tab_am_i_on
    *&      Form  tab_hide_unhide
    FORM tab_hide_unhide.
      LOOP AT SCREEN.
        CHECK screen-group3 = 'TAB'.
        CASE screen-name.
          WHEN 'TAB1'.
    *        IF
    *          screen-active = 1.
    *          screen-required = 1.
    *          screen-input = 1.
    *          screen-output = 1.
    *          screen-intensified = 1.
    *          screen-invisible = 1.
    *        ELSE.
    *          screen-active = 0.
    *          screen-required = 0.
    *          screen-input = 0.
    *          screen-output = 0.
    *          screen-intensified = 0.
    *          screen-invisible = 0.
    *        ENDIF.
          WHEN 'TAB2'.
    *        IF
    *          screen-active = 1.
    *        ELSE.
    *          screen-active = 0.
    *        ENDIF.
        ENDCASE.
        MODIFY SCREEN.
      ENDLOOP.
    ENDFORM.                    " tab_hide_unhide
    *&      Form  set_up_branch_range
    FORM set_up_branch_range.
      r_branch[]  = ssbrch[].
      CHECK NOT sdiv  IS INITIAL.
      r_branch     = 'IEQ'.
      SELECT branch INTO r_branch-low
        FROM zpca
        WHERE region = 'JWHCO'
          AND division IN sdiv.
        APPEND r_branch.
      ENDSELECT.
      SORT r_branch.
      DELETE ADJACENT DUPLICATES FROM r_branch.
    ENDFORM.                    " set_up_branch_range

  • For this program i could send the smart form thru mail but in the inbox ..

    *& Report  ZSFOO
    REPORT  ZSFOO.
    *& Report  ZSFINV
    TABLES : KNA1,         " General Data In Customer Master
             KNB1,         " Customer Master(Company Code)
             BSID,         " Accounting: Secondary Index for Customers
             ZSMARTFORM,   " Custom table for Storing Bank Details
             zsf_exp_inv,  " Structure that stores required fields from all tables used
             KNVK.         " Customer Master Contact Partner
    data : Begin of it_struct occurs 0.
            include structure zsf_exp_inv01.
    data : End of it_struct.
    types : begin of ty_bsid,
            kunnr like bsid-kunnr,
            WAERS like bsid-WAERS,
            XBLNR LIKE BSID-XBLNR,
            BUDAT LIKE BSID-BUDAT,
            WRBTR LIKE BSID-WRBTR,
            BUKRS LIKE BSID-BUKRS,
            end of ty_bsid.
    types : begin of ty_kna1,
            kunnr like kna1-kunnr,
            NAME1 LIKE KNA1-NAME1,
            STRAS LIKE KNA1-STRAS,
            MCOD3 LIKE KNA1-MCOD3,
            LAND1 LIKE KNA1-LAND1,
            SORTL LIKE KNA1-SORTL,
            end of ty_kna1.
    types : begin of ty_knb1,
            kunnr like knb1-kunnr,
            ZTERM LIKE KNB1-ZTERM,
            end of ty_knb1.
    types : begin of ty_knVK,
            kunnr like kNVK-kunnr,
            NAME1 LIKE KNVK-NAME1,
            end of ty_knVK.
    types : begin of ty_ZSMARTFORM,
            SNO      LIKE ZSMARTFORM-SNO,
            CURRENCY LIKE zsmartform-currency,
            BANKNAME LIKE zsmartform-bankname,
            ADDRESS1 LIKE ZSMARTFORM-ADDRESS1,
            ADDRESS2 LIKE ZSMARTFORM-ADDRESS2,
            ADDRESS3 LIKE ZSMARTFORM-ADDRESS3,
            ADDRESS4 LIKE ZSMARTFORM-ADDRESS4,
            ADDRESS5 LIKE ZSMARTFORM-ADDRESS5,
            ADDRESS6 LIKE ZSMARTFORM-ADDRESS6,
            VALIDFROM LIKE ZSMARTFORM-VALIDFROM,
            VALIDTO   LIKE ZSMARTFORM-VALIDTO,
            end of ty_ZSMARTFORM.
    data : it_bsid type table of ty_bsid,
           it_kna1 type table of ty_kna1,
           it_knb1 type table of ty_knb1,
           it_zsmartform type table of ty_zsmartform,
           it_knVK type table of ty_kNVK.
    data : wa_bsid like line of it_bsid,
           wa_kna1 like line of it_kna1,
           wa_knb1 like line of it_knb1,
           wa_zsmartform like line of it_zsmartform,
           wa_knVK like line of it_knVK.
    *****************Selection Screen**********************************
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
    SELECT-OPTIONS : S_KUNNR FOR KNA1-KUNNR,
                     S_belnr FOR BSID-belnr,
                     S_BUKRS FOR BSID-BUKRS,
                     S_CURR FOR ZSMARTFORM-CURRENCY.
    SELECTION-SCREEN END OF BLOCK B1.
    DATA : BEGIN OF IT_PARAM OCCURS 0.
            INCLUDE STRUCTURE ZPARAMETERS.
    DATA :  END OF IT_PARAM.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
    SKIP 1.
    Parameters : OPTION1 AS CHECKBOX,
                 P_POINF(300) type c,
                 OPTION2 AS CHECKBOX,
                 P_DESC(300) TYPE C,
                 OPTION3 AS CHECKBOX,
                 P_MONTH(200) TYPE C,
                 OPTION4 AS CHECKBOX,
                 P_RATE(100)  TYPE C.
    SELECTION-SCREEN END OF BLOCK B2.
    **********************PARAMETERS***********************************
    data :  l type i,
            Y(300) type c,
            j type i,
            k type i value 1,
            s type i,
            m(300) type c,
            p type i,
            z type i.
    data :  l1 type i,
            Y1(300) type c,
            j1 type i,
            k1 type i value 1,
            s1 type i,
            m1(300) type c,
            p1 type i,
            z1 type i.
    data :  l2 type i,
            Y2(300) type c,
            j2 type i,
            k2 type i value 1,
            s2 type i,
            m2(300) type c,
            p2 type i,
            z2 type i.
    data :  l3 type i,
            Y3(300) type c,
            j3 type i,
            k3 type i value 1,
            s3 type i,
            m3(300) type c,
            p3 type i,
            z3 type i.
    IF OPTION1 = 'X'.
      concatenate  P_POINF  ',' into P_POINF.
      l = strlen( P_POINF ).
      do l times.
        Y = P_POINF+j(k).
        case Y.
          when ','.
            m = P_POINF+s(z).
            s = j + 1.
            z = -1.
            p = p + 1.
            if p = 1.
              IT_PARAM-LINE1 = m.
            endif.
            if p = 2.
              IT_PARAM-LINE2 = m.
            endif.
            if p = 3.
              IT_PARAM-LINE3 = m.
            endif.
         when '.'.
            if p = 4.
              IT_PARAM-LINE4 = m.
            endif.
        endcase.
        j = j + 1.
        z = z + 1.
      enddo.
    ENDIF.
    IF OPTION2 = 'X'.
      concatenate  P_DESC  ',' into P_DESC.
      l1 = strlen( P_DESC ).
      do l1 times.
        Y1 = P_DESC+j1(k1).
        case Y1.
          when ','.
            m1 = P_DESC+s1(z1).
            s1 = j1 + 1.
            z1 = -1.
            p1 = p1 + 1.
            if p1 = 1.
              IT_PARAM-LINE5 = m1.
            endif.
            if p1 = 2.
              IT_PARAM-LINE6 = m1.
            endif.
            if p1 = 3.
              IT_PARAM-LINE7 = m1.
            endif.
         when '.'.
            if p1 = 4.
              IT_PARAM-LINE8 = m1.
            endif.
        endcase.
        j1 = j1 + 1.
        z1 = z1 + 1.
      enddo.
    ENDIF.
    IF OPTION3 = 'X'.
      concatenate  P_MONTH  ',' into P_MONTH.
      l2 = strlen( P_MONTH ).
      do l2 times.
        Y2 = P_MONTH+j2(k2).
        case Y2.
          when ','.
            m2 = P_MONTH+s2(z2).
            s2 = j2 + 1.
            z2 = -1.
            p2 = p2 + 1.
            if p2 = 1.
              IT_PARAM-LINE9 = m2.
            endif.
            if p2 = 2.
              IT_PARAM-LINE10 = m2.
            endif.
            if p2 = 3.
              IT_PARAM-LINE11 = m2.
            endif.
         when '.'.
            if p2 = 4.
              IT_PARAM-LINe12 = m2.
            endif.
        endcase.
        j2 = j2 + 1.
        z2 = z2 + 1.
      enddo.
    ENDIF.
    IF OPTION4 = 'X'.
      concatenate  P_RATE  ',' into P_RATE.
      l3 = strlen( P_RATE ).
      do l3 times.
        Y3 = P_RATE+j3(k3).
        case Y3.
          when ','.
            m3 = P_RATE+s3(z3).
            s3 = j3 + 1.
            z3 = -1.
            p3 = p3 + 1.
            if p3 = 1.
              IT_PARAM-LINE13 = m3.
            endif.
            if p3 = 2.
              IT_PARAM-LINE14 = m3.
            endif.
            if p3 = 3.
              IT_PARAM-LINE15 = m3.
            endif.
            if p3 = 4.
              IT_PARAM-LINe16 = m3.
            endif.
        endcase.
        j3 = j3 + 1.
        z3 = z3 + 1.
      enddo.
    ENDIF.
    APPEND IT_PARAM.
    select * from kna1 into corresponding fields of table it_kna1 where kunnr in s_kunnr.
    select * from knb1 into corresponding fields of table it_knb1 for all entries in it_kna1 where kunnr = it_kna1-kunnr.
    select * from bsid into corresponding fields of table it_bsid for all entries in it_kna1 where kunnr = it_kna1-kunnr and belnr in s_belnr and bukrs in s_bukrs..
    SELECT * FROM KNVK INTO CORRESPONDING FIELDS OF TABLE IT_KNVK FOR ALL ENTRIES IN IT_KNA1 WHERE KUNNR = IT_KNA1-KUNNR.
    select * from zsmartform into corresponding fields of table it_zsmartform .
    DATA :  AMT LIKE SPELL.
    loop at it_bsid into wa_bsid.
      read table it_kna1 into wa_kna1 with key kunnr = wa_bsid-kunnr.
      read table it_knb1 into wa_knb1 with key kunnr = wa_bsid-kunnr.
      read table it_zsmartform into wa_zsmartform with key  CURRENCY =  wa_bsid-WAERS.
      READ TABLE IT_KNVK INTO WA_KNVK WITH KEY KUNNR = WA_BSID-KUNNR.
      it_struct-name1 = wa_kna1-name1.
      it_struct-stras = wa_kna1-stras.
      it_struct-mcod3 = wa_kna1-mcod3.
      it_struct-land1 = wa_kna1-land1.
      it_struct-sortl = wa_kna1-sortl.
      it_struct-zterm = wa_knb1-zterm.
      it_struct-xblnr = wa_bsid-xblnr.
    it_struct-currency = wa_zsmartform-currency.
      it_struct-currency = wa_bsid-waers.
      it_struct-budat = wa_bsid-budat.
      it_struct-BANKNAME = wa_zsmartform-BANKNAME.
      it_struct-ADDRESS1 = wa_zsmartform-ADDRESS1.
      it_struct-ADDRESS2 = wa_zsmartform-ADDRESS2.
      it_struct-ADDRESS3 = wa_zsmartform-ADDRESS3.
      it_struct-ADDRESS4 = wa_zsmartform-ADDRESS4.
      it_struct-ADDRESS5 = wa_zsmartform-ADDRESS5.
      it_struct-ADDRESS6 = wa_zsmartform-ADDRESS6.
      it_struct-CURR = WA_BSID-WRBTR.
      IT_STRUCT-NAME = WA_KNVK-NAME1.
    IT_STRUCT-AMOUNT = IT_SPELL-AMT.
      append it_struct.
    endloop.
    data : x type i,
           x1 type i,
           a type string.
    loop at it_struct.
      x = strlen( it_struct-curr ).
      x1 = x - 3.
      a = it_struct-curr+0(x1).
      CALL FUNCTION 'SPELL_AMOUNT'
          EXPORTING
            AMOUNT          = a
      CURRENCY        = ' '
      FILLER          = ' '
      LANGUAGE        = SY-LANGU
          IMPORTING
            IN_WORDS        = AMT.
    EXCEPTIONS
      NOT_FOUND       = 1
      TOO_LARGE       = 2
      OTHERS          = 3
    *IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *ENDIF.
    endloop.
    DATA: ws_ucomm LIKE sy-ucomm.
    DATA: form_name TYPE rs38l_fnam.
    DATA: wa_ctrlop TYPE ssfctrlop,
    wa_outopt TYPE ssfcompop.
    data : i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,
          i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE.
    DATA: t_otfdata TYPE ssfcrescl,
    t_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE,
    i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
          i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
      data : wa_objhead TYPE soli_tab,
      wa_doc_chng typE sodocchgi1,
          w_data TYPE sodocchgi1,
          wa_buffer TYPE string,
          v_len_in LIKE sood-objlen,
          v_len_out LIKE sood-objlen,
          v_len_outn TYPE i,
          v_lines_txt TYPE i,
          v_lines_bin TYPE i.
    DATA: t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE.
    DATA: w_filesize TYPE string.
    DATA: w_bin_filesize TYPE i.
    wa_ctrlop-getotf = 'X'.
    CALL FUNCTION '/1BCDWB/SF00000001'
    EXPORTING
    control_parameters = wa_ctrlop
    output_options = wa_outopt
    user_settings = 'X'
    IN_WORDS = amt
    importing
    job_output_info = t_otfdata
    TABLES
    I_ZSF_EXP_INV = it_struct
    I_ZPARAMETERS = it_param.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    t_otf[] = t_otfdata-otfdata[].
    CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
    format = 'PDF'
    max_linewidth = 132
    IMPORTING
    bin_filesize = w_bin_filesize
    TABLES
    otf = t_otf
    lines = t_pdf_tab
    EXCEPTIONS
    err_max_linewidth = 1
    err_format = 2
    err_conv_not_possible = 3
    OTHERS = 4
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
    bin_filesize = w_bin_filesize
    CODEPAGE = ' '
    filename = 'c:     est59.PDF'
    filetype = 'BIN'
    IMPORTING
    filelength = w_filesize
    TABLES
    data_tab = t_pdf_tab
    EXCEPTIONS
    file_open_error = 1
    file_write_error = 2
    invalid_filesize = 3
    invalid_type = 4
    no_batch = 5
    unknown_error = 6
    invalid_table_width = 7
    gui_refuse_filetransfer = 8
    customer_error = 9
    OTHERS = 10
    IF sy-subrc <> 0.
    *You should include message-id in the report heading
    WRITE : sy-subrc.
    ELSE.
    WRITE : 'File Test.pdf downloaded succesfully'.
    ENDIF.
    loop at t_pdf_tab.
        translate t_pdf_tab using '~'.
        concatenate wa_buffer t_pdf_tab into wa_buffer.
      endloop.
      translate wa_buffer using '~'.
      do.
        i_record = wa_buffer.
        append i_record.
        shift wa_buffer left by 255 places.
        if wa_buffer is initial.
          exit.
        endif.
      enddo.
    Attachment
      refresh:
        i_reclist,
        i_objtxt,
        i_objbin,
        i_objpack.
      clear wa_objhead.
      i_objbin[] = i_record[].
    Create Message Body
    Title and Description
      i_objtxt = 'test with pdf-Attachment!'.
      append i_objtxt.
      describe table i_objtxt lines v_lines_txt.
      read table i_objtxt index v_lines_txt.
      wa_doc_chng-obj_name = 'smartform'.
      wa_doc_chng-expiry_dat = sy-datum + 10.
      wa_doc_chng-obj_descr = 'smartform'.
      wa_doc_chng-sensitivty = 'O'.
      wa_doc_chng-doc_size = v_lines_txt * 255.
    Main Text
    wa_doc_chng-doc_size = ( v_lines_txt - 1 ) * 255 + strlen( i_objtxt )
      clear i_objpack-transf_bin.
      i_objpack-head_start = 1.
      i_objpack-head_num = 0.
      i_objpack-body_start = 1.
      i_objpack-body_num = v_lines_txt.
      i_objpack-doc_type = 'RAW'.
      append i_objpack.
    i_objpack-transf_bin = 'X'.
    i_objpack-head_start = 1.
    i_objpack-head_num = 1.
    i_objpack-body_start = 1.
    i_objpack-body_num = v_lines_bin.
    i_objpack-doc_type = 'PDF'.
    i_objpack-obj_name = 'Smartform'.
    CONCATENATE 'Hazard report-' p_load '.pdf' INTO i_objpack-obj_descr.
    describe table i_objbin lines v_lines_bin.
    read table i_objbin index v_lines_bin.
    i_objpack-doc_size =  v_lines_bin * 255 .
    i_objpack-obj_descr = 'test'.
    i_objpack-doc_size = v_lines_bin * 255.
    APPEND i_objpack.
    Attachment
    (pdf-Attachment)
    i_objpack-transf_bin = 'X'.
    i_objpack-head_start = 1.
    i_objpack-head_num = 0.
    i_objpack-body_start = 1.
    Länge des Attachment ermitteln
    describe table i_objbin lines v_lines_bin.
    read table i_objbin index v_lines_bin.
    i_objpack-doc_size =  v_lines_bin * 255 .
    i_objpack-body_num = v_lines_bin.
    i_objpack-doc_type = 'PDF'.
    i_objpack-obj_name = 'smart'.
    i_objpack-obj_descr = 'test'.
    append i_objpack.
      clear i_reclist.
      i_reclist-receiver = '[email protected]'.
         i_reclist-express = 'X'.
      i_reclist-rec_type = 'U'.
      append i_reclist.
        call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
             EXPORTING
                  document_data              = wa_doc_chng
                  COMMIT_WORK = 'X'
                  put_in_outbox              = 'X'
             TABLES
                  packing_list               = i_objpack
                  object_header              = wa_objhead
                  CONTENTS_BIN               = i_objbin
                  contents_txt               = i_objtxt
                  receivers                  = i_reclist
             EXCEPTIONS
                  too_many_receivers         = 1
                  document_not_sent          = 2
                  document_type_not_exist    = 3
                  operation_no_authorization = 4
                  parameter_error            = 5
                  x_error                    = 6
                  enqueue_error              = 7
                  others                     = 8.
    for this program i could send the smart form thru mail but in the inbox i could not
    download it it says needed to be decoded properly.file not starting with pdf....
       IF sy-subrc <> 0.
         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       ELSE.
         CALL FUNCTION 'POPUP_TO_INFORM'
           EXPORTING
             titel = 'Mail sent'(003)
             txt1  = 'The report is sent via e-mail.'(004)
             txt2  = '  '.
         LEAVE PROGRAM.
       ENDIF.

    hi krishna,
    u r right. there is no error  in sending the mail and the file but the problem is that file created and converted to pdf is not done properly.jst verify whether the file is created properly or not .thats the only problem that can occurs else ur program is absolutely right.

  • Rs.updateBoolean SQLException: ORA-12899: value too large for column

    Complete error is SQLException: ORA-12899: value too large for column "SMSUSER"."PRUEBA"."VLOGIC" (actual: 4, maximum: 1)
    Let's see the code:
    PreparedStatement ps=null;
    ResultSet rs=null;
    try
    ps=conn.prepareStatement("create table prueba(name varchar2(32),vlogic char(1) not null check(vlogic in (0,1)))");
    ps.execute();
    logger.info("Table created.");
    ps=conn.prepareStatement("insert into prueba (name,vlogic) values ('user01',?)");
    ps.setBoolean(1,true);
    ps.executeUpdate();
    logger.info("Data Inserted.");
    ps=conn.prepareStatement("update prueba set vlogic=? where name=?");
    ps.setBoolean(1,false);
    ps.setString(2,"user01");
    ps.executeUpdate();
    logger.info("Data Updated.");
    ; Till here all runs ok, but if we try to modify vía Resulset.....
    ps=conn.prepareStatement("select vlogic from prueba where name=? for update", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.CLOSE_CURSORS_AT_COMMIT);
    ps.setString(1,"user01");
    rs=ps.executeQuery();
    if (rs.next())
    logger.info("Got record.");
    rs.updateBoolean("vlogic",true);
    rs.updateRow();
    logger.info("Column updated.");
    catch (SQLException E)
    logger.info("SQLException: "+E.getMessage());
    finally
    closeResultSet(rs);
    closePreparedStatement(ps);
    The trouble is that when updating via resultset, what is going to be inserted is "true" or "false" and not "0" or "1" as with insertions and modifications via preparedStatements.
    So systems returns error: SQLException: ORA-12899: value too large for column "SMSUSER"."PRUEBA"."VLOGIC" (actual: 4, maximum: 1)
    Cause it is tryng to insert "true".
    Can somebody tell me what's happenign here?
    Thanks in advance.
    Francisco Javier Ascanio Suárez.
    E-mail: [email protected]

    Ok, but why is this behaviour different in ResultSet statements than in Prepared Statements?
    As you can see in my example, prepared statements with set boolean runs ok.
    I like your "proper way", and it resolves my trouble, but it don't tells me why do I have to program a field update in different ways depending of Prepared Statements or updating resultsets.
    Thanks in advance.

  • ORA-01401: inserted value too large for column

    I am updating a couple dozen columns with this program. Is there a way to include the column name that caused the error in this message?
    Thanks
    H

    10g includes the columnname when throwing an error:
    michaels>  create table t (a varchar2(2))
    Table created.
    michaels>  insert into t values ('xyz')
    insert into t values ('xyz')
    Error at line 6
    ORA-12899: value too large for column "T"."A" (actual: 3, maximum: 2)May we conclude you are not on 10g and up?

Maybe you are looking for

  • Create an association in the folder options control panel.. pop up dialogue

    Installed on a win XP OS: Oracle Database 10g Release 2 (10.2.0.1) Oracle Database 10g Express Edition (Universal) Oracle Database 10g Express Edition (Western European) I keep getting this pop up dialogue box whenever I click go to Database Homepage

  • IPod wont Restore!!! Help please!

    Just recently my ipod displayed "Use iTunes to Restore" I connected it to my computer and tried restoring it but as soon as it completed restoring, once it connects to my computer again it tells me that it detected an ipod in recovery mode. I have tr

  • Merging two Devices

    Is it possible to merge all data on two different Palms (TX and LifeDrive) in one simple step so that one Palm acts as a backup/duplicate of the other? If so, how? Post relates to: Palm TX This question was solved. View Solution.

  • No read access to field L_C_ATINN

    Hi I have the following error No read access to field L_C_ATINN for the code data: l_c_atinn TYPE cabn-atinn. in SLIN check please advice how to avoid this

  • FaceTime nö connect After shutdown because of Löw battery

    facetime no connect After shutdown because of low battery. What can I do?