Charateristics description on header of MC94/95

Hi,
I would like to display Material description for the characteristic on the header area of MC94/95 transactions, I have gone thru notes 74168, 60506 but couldnt make out anything of it.
If anyone of you have done similar enhancement pls let me know the process.
Thanks in advance

Yeah we can use the same notes, but you need to have some code written in user exit include.
follow this. - you can send me your email i will send you the document.
Implementing the characteristics descriptions in MC94.
Use the user exit: MCP20004 – activate the exit by crating the project.
Create a z* module pool program
Copy the corresponding screens from program: SAPMMCP6 – modify the screen by adding the input fields just beside the regular field where we are expecting descriptions with output type only.
The write the appropriate logic to call the z* program and screen in user exit like
****&  Include           ZXSOPU04
e_strat = i_strat.
CLEAR sy-subrc.
TABLES: s774,
s774e,
mcdynum.
DATA: short_text(40),
long_text(40),
hlp_index TYPE i,
hlp_screenfield(13),
con_sum_plobj(10) VALUE 'SUMMEN',
con_keyfigure_screen(4) VALUE '1000',
*con_mat_txt_screen(4) VALUE '0100',
con_prodcat_screen(4) VALUE '7039',
con_prodline_screen(4) VALUE '7040',
con_prodhier1_screen(4) VALUE '7041',
con_matnr_screen(4) VALUE '7042',
con_version_screen(4) VALUE '1020',
*Maheshg
con_initial_screen(4) VALUE '1002',
lv_char TYPE prodh_d,
lv_matdesc TYPE maktx,
lv_prodcat_desc TYPE bezei40,
lv_prodline_desc TYPE bezei40,
lv_prodhier_desc TYPE bezei40,
BEGIN OF screens_for_display OCCURS 0,
fieldname(10),
screenfield(10),
END OF screens_for_display.
*field-symbols: .
* in every case:
e_strat = i_strat.
CASE i_sav_t445a-gstru.
* which info structure ?
WHEN 'S774'.
* check the planning types
CHECK i_sav_t445p-sctyp = '~1S774' OR
i_sav_t445p-sctyp = 'ZS774-FCRS1'.
* collect the screens for display
* (the user settings were read by the standard)
SELECT * FROM mcdynum WHERE
progname = 'SAPMMCP6' AND
tabname = 'S774'.
screens_for_display-fieldname = mcdynum-fieldname.
CASE mcdynum-dynnr.
WHEN i_strat-dynp1.
screens_for_display-screenfield = '1'.
APPEND screens_for_display.
WHEN i_strat-dynp2.
screens_for_display-screenfield = '2'.
APPEND screens_for_display.
WHEN i_strat-dynp3.
screens_for_display-screenfield = '3'.
APPEND screens_for_display.
WHEN i_strat-dynp4.
screens_for_display-screenfield = '4'.
APPEND screens_for_display.
WHEN i_strat-dynp5.
screens_for_display-screenfield = '5'.
APPEND screens_for_display.
WHEN i_strat-dynp6.
screens_for_display-screenfield = '6'.
APPEND screens_for_display.
ENDCASE.
ENDSELECT.
* initialize the include dynpros
PERFORM initialize_dynpros_s774 IN PROGRAM zstfhead.
* get the characteristic values
CLEAR: s774, s774e.
IF i_strat-akt_plobj = con_sum_plobj OR i_strat-kennz = 'X'.
* get the characteristic values of the aggregated information
PERFORM get_sxyz_value IN PROGRAM mmcp6774
CHANGING s774.
MOVE-CORRESPONDING s774 TO s774e.
ELSE.
* get the characteristic values of the detailed information
SELECT SINGLE * FROM s774e WHERE plobj = i_strat-akt_plobj.
CHECK sy-subrc = 0.
ENDIF.
* set the information of the description fields
*product category
IF s774e-prod_cat <> space.
MOVE s774e-prod_cat TO lv_char.
PERFORM char_desc IN PROGRAM zstfhead
USING lv_char
CHANGING lv_prodcat_desc.
CLEAR lv_char.
ENDIF.
*product line
IF s774e-prod_line IS NOT INITIAL."<> space.
MOVE s774e-prod_line TO lv_char.
PERFORM char_desc IN PROGRAM zstfhead
USING lv_char
CHANGING lv_prodline_desc.
CLEAR lv_char.
ENDIF.
*product hierarchy
IF s774e-prod_hier1 IS NOT INITIAL. "<> space.
MOVE s774e-prod_hier1 TO lv_char.
PERFORM char_desc IN PROGRAM zstfhead
USING lv_char
CHANGING lv_prodhier_desc.
CLEAR lv_char.
ENDIF.
* here: material short text:
IF s774e-matnr IS NOT INITIAL. "<> space.
* get the material short text
PERFORM mat_desc IN PROGRAM zstfhead
USING s774e-matnr
CHANGING lv_matdesc.
ELSE.
* no material short text is to be filled
ENDIF.
* set the characteristic values into the screens
LOOP AT screens_for_display.
hlp_screenfield = 'E_STRAT-DYNP'.
hlp_screenfield+12 = screens_for_display-screenfield.
*assign (hlp_screenfield) to .
CASE screens_for_display-fieldname.
WHEN 'PROD_CAT'  . "product category
PERFORM fill_dynpro IN PROGRAM zstfhead
USING con_prodcat_screen
s774e-prod_cat
lv_prodcat_desc.
WHEN 'PROD_LINE'  . "product line
PERFORM fill_dynpro IN PROGRAM zstfhead
USING con_prodline_screen
s774e-prod_line
lv_prodline_desc.
WHEN 'PROD_HIER1'  . "product hierarchy
PERFORM fill_dynpro IN PROGRAM zstfhead
USING con_prodhier1_screen
s774e-prod_hier1
lv_prodhier_desc.
WHEN 'MATNR'  . "material number
*        con_matnr_screen.
PERFORM fill_dynpro IN PROGRAM zstfhead
USING con_matnr_screen
s774e-matnr
lv_matdesc.
ENDCASE.
ENDLOOP.
IF i_strat-kennz = 'X'.
* the key figure format is active
* ==> fill the dynpro with the key figure text
e_strat-dynp7 = con_keyfigure_screen.
PERFORM fill_dynpro IN PROGRAM zstfhead
USING '1020'
i_rmcp2-krit3
lv_matdesc.
ENDIF.
* set the dynpro prog
*maheshg
*    e_strat-dynp_prog = 'SAPMMCP6'. "ZSTFHEAD'.
e_strat-dynp_prog = 'ZSTFHEAD'.
* fill in every case the version and its texts
e_strat-dynp8 = con_version_screen.
PERFORM fill_version_and_vtext IN PROGRAM zstfhead
USING i_rmcp2-vrsio
i_rmcp2-vetxt
i_rmcp2-avtxt.
WHEN OTHERS.
ENDCASE.
Write subroutines to populate the characteristics as well descriptions like MATNR, PROD_LINE,PROD_CAT and PROD_HIER for S774
Program: ZFHEADF00
*&  Include           ZFHEADF00
*&      Module  PROCESS_BEFORE  OUTPUT
*       text
FORM fill_dynpro
USING fd_dynnr
fd_value
lv_desc.
CASE fd_dynnr.
*when '0100'.
*hlp_matnr_txt = fd_value.
WHEN '7042'.
*s774-matnr = fd_value.
makt-maktx   = lv_desc.
WHEN '7039'.
*s774-prod_cat = fd_value.
hlp_prodcat_txt = lv_desc.
WHEN '7040'.
*s774-prod_line = fd_value.
hlp_prodline_txt = lv_desc.
WHEN '7041'.
*s774-prod_hier1 = fd_value.
hlp_prodhier_txt = lv_desc.
WHEN '1020'.
rmcp2-krit3 = fd_value.
ENDCASE.
ENDFORM. " FILL_DYNPRO
*& Form INITIALIZE_DYNPROS_S712
* initialize all fields of all dynpros *
FORM initialize_dynpros_s774.
CLEAR: s774,
rmcp2,
hlp_matnr_txt.
ENDFORM. " INITIALIZE_DYNPROS_S774
*& Form FILL_VERSION_AND_VTEXT
* text
* --> vrsio version number
* --> vetxt text of the version
* --> avtxt active version / inactive version
FORM fill_version_and_vtext
USING vrsio
vetxt
avtxt.
rmcp2-vrsia = vrsio.
rmcp2-vetxt = vetxt.
rmcp2-avtxt = avtxt.

Similar Messages

  • Display Query Description in Header in PDF Print

    Hi all,
           When using PDF Print option I would like to print the Query Description in the Header. From the dialog box I only see options for Data, Time, Pages and custom text. Can you please let me know how can I print the Query Description in the Header while using PDF Print.
    Thank you,
    Ram

    Yes I understand but that is not what I mean.
    1. I have assigned a document to a certain query element in the BW metadata repository. This document contains a short report description and the purpose with it.
    2. Now I want to display this information within a "information field" under the information tab when running a report.
    Is it possible to display this information with a standard sap text element web item?

  • Problem in viewing Member Description in Header.

    Hi,
    Even after using the function MemeberAlias, I am not able to get the result that is the MemberDescription.
    I would like to again familiarize with the problem.
    I am trying to get the MemberDescription in my Header,the Member is selected in the Pages of the Grid. The MemberName function gives me the result but the MemberDescription do not. Why is there a exception to this function?
    My priority is only to MemberDescription.
    I think there is some problem in Hyperion Reporting Studio with regards to the function MemberDescription.
    I would like to welcome any solutions for this problem I am facing.
    Thanks.
    SN

    Hi,
    Member Alias doesn't give me the MemberDescription. It works well with the old version. But HFM 9.3.1 doesn't function properly in this case.
    I would like you to check by your own.
    The Dimension Layout is Row, Columns and Pages.
    Now I need to give a Dimension in Pages for example "Period"
    Now I need to pull the description of the Member i.e Period in the header. When I give give the function <<MemberName("GridName", Row/Col/Page, "DimName")>> then I get the Member name in the header.
    But when I give <<MemberDescription("GridName", Row/Col/Page, "DimName")>> to the get the member description in the header it gives me blank.
    As suggested I also used MemberAlias function but it did not work.
    I think there is a problem with Hyperion Reporting Studio. Please try for yourself and see I am correct or not.
    Solutions and idea comes in best forms. Please do revert me any suggestions.
    Thank You for the concern
    SN

  • Header and footer diplayed two times...

    Hi All.
    I have a problem that header and footer are displayed two times. I have two header jsp's one is header.jsp and the other one is header1.jsp.
    Firstly I used this shell which displayed just one header.jsp in the header panel....
    <netuix:markupDefinition
    xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
    xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0 markup-netuix-1_0_0.xsd">
    <netuix:locale language="en"/>
    <netuix:markup>
    <netuix:shell
    title="Left-Pane-Header-Footer Shell" description="A header, footer and left pane included in this shell." markupType="Shell" markupName="leftPaneHeaderFooter">
    <netuix:head/>
    <netuix:body>
    <netuix:header/>
    <netuix:footer/>
    </netuix:body>
    </netuix:shell>
    </netuix:markup>
    </netuix:markupDefinition>
    but now I changed shell to
    <netuix:markupDefinition xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0 markup-netuix-1_0_0.xsd">
    <netuix:locale language="en"/>
    <netuix:markup>
    <netuix:shell
    title="PAS Request Shell" description="A header and footer is included in this shell." markupType="Shell" markupName="headerFooter">
    <netuix:head/>
    <netuix:body>
    <netuix:header>
    <netuix:jspContent contentUri="/jsp/header1.jsp" errorUri="/error.jsp" />
    </netuix:header>
    <netuix:break/>
    <netuix:footer>
    <netuix:jspContent contentUri="/jsp/footer1.jsp" errorUri="/error.jsp"/>
    </netuix:footer>
    </netuix:body>
    </netuix:shell>
    </netuix:markup>
    </netuix:markupDefinition>
    and now header.jsp and also header1.jsp is dispalyed in the header panel. No where I am using header.jsp in the new shell but it is displayed.
    Same problem with footer too.
    Is anyone aware of this issue. How can get rid of this duplication?
    Thanks.
    Pradeep Peddi.

    this is the content of headerFooter.shell
    <?xml version="1.0" encoding="UTF-8"?>
    <netuix:markupDefinition xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0 markup-netuix-1_0_0.xsd">
    <netuix:locale language="en"/>
    <netuix:markup>
    <netuix:shell
    title="Header-Footer Shell" description="A header and footer is included in this shell." markupType="Shell" markupName="headerFooter">
    <netuix:head/>
    <netuix:body>
    <netuix:header/>
    <netuix:break/>
    <netuix:footer/>
    </netuix:body>
    </netuix:shell>
    </netuix:markup>
    </netuix:markupDefinition>
    Thanks.
    Pradeep.

  • Loading journal with description through FDM

    Can journals be loaded with line level description (not header level description) through FDM?
    System is taking the file with descriptions, when you generate the upload .jle file manually and use load journals in workspace. But when you trying to load the journals through FDM, it does not work.
    Any idea how to do it? Any settings that we are missing?

    This is currently not possible.
    The Description will be the description in the first line of the journal template.

  • Change Header row in crosstab

    Hello,
    does anybody know how to change the header row of a crosstab in the designstudio manually ? So i have currently some technical names and some descriptions as header and i want to have other names in the header.
    Thanks in advance

    You could change them in the properties of the BEx query
    Another idea (I have not tried this) - but I see Ilya made this suggestion using CSS -see Re: cross tab - change column name
    Good luck

  • Duplicate header in Portal framework...

    Hi,
    Header.jsp is displayed by default without mentioning its location in shell file.
    This is my shell and not specified any header.jsp
    <?xml version="1.0" encoding="UTF-8"?>
    <netuix:markupDefinition xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0 markup-netuix-1_0_0.xsd">
    <netuix:locale language="en"/>
    <netuix:markup>
    <netuix:shell
    title="Visitor Tools Shell" description="A header with a link to the contentUri for the edit mode of the main book." markupType="Shell" markupName="visitorToolsShell">
    <netuix:head/>
    <netuix:body>
    <netuix:header>
    </netuix:header>
    <netuix:break/>
    <netuix:footer/>
    </netuix:body>
    </netuix:shell>
    </netuix:markup>
    </netuix:markupDefinition>
    but it is taking the header.jsp as default from the location \framework\skeletons\default\header.jsp
    and if I update the same shell file with header1.jsp as...
    <?xml version="1.0" encoding="UTF-8"?>
    <netuix:markupDefinition xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0 markup-netuix-1_0_0.xsd">
    <netuix:locale language="en"/>
    <netuix:markup>
    <netuix:shell
    title="Visitor Tools Shell" description="A header with a link to the contentUri for the edit mode of the main book." markupType="Shell" markupName="visitorToolsShell">
    <netuix:head/>
    <netuix:body>
    <netuix:header>
    <netuix:jspContent contentUri="/framework/skeletons/default/header1.jsp"/>
    </netuix:header>
    <netuix:break/>
    <netuix:footer/>
    </netuix:body>
    </netuix:shell>
    </netuix:markup>
    </netuix:markupDefinition>
    then it is displaying header.jsp and header1.jsp. I didn't mention the location of header.jsp but still it is taking.
    Could anyone have any idea of this problem. If yes can u please help me.
    Thanks.
    Pradeep Peddi.

    header.jsp is the skeleton file for the <netuix:header> control. It's a part of WLP's Look and Feel feature, described here: http://download.oracle.com/docs/cd/E13155_01/wlp/docs103/portals/develop_ui_lookfeel.html.
    If you want to change what is displayed by your <netuix:header> control in regards to its skeleton, you can set its skeletonUri attribute. For example: <netuix:header skeletonUri="/framework/skeletons/default/header1.jsp">
    George

  • Heading Change for keyfigures in the layouts

    Hi-
    We have two keyfigures in Manual Layouts which has short description as heading. Now users want to see Long description as heading.
    1. I went to change mode of Manual layout and copied the "Long description" to heading. Still when users are creating the contracts in CRM, they are not seeing my changes. Is there any thing else I have to do. I dont find any option to activate the layouts or planning area.
    2. How to transport the layouts if the same technical name is used in different Planning levels? for Eg: lets say we have a layout called "XYZ" in two different Planning levels, should I transport the layout with the planning level? or I can jus transport the layout.

    I figured it out...

  • Logic for Header data required

    1.I have a Sales Cube.
    2.i have field called Header Data.
    3.I need to populate Header data by calculating Net Order amount based on Sales order no and Sales order item details.
    For Example:- 
                        Sales order  ,  Sales Item Data    ,      Net order amount ,   Header Data
                               001              ,             1             ,                    200             ,    500
                               001              ,            2             ,                    300           ,      500
                               002              ,          1             ,                    300         ,       1000
                               002               ,          2              ,                   500         ,       1000
                               002                ,           3                ,                 200           ,     1000
    4. I need to Sum all the items for each order to populate my Header data.
    I m using BI 7.0 .... how and where should i write the logic to populate my Header data field.

    Hi,
    Why do you maintain Header level data in Infocube? Just create a report with Sales Order in rows and Net order amount (Change description to Header Data)in Rows system will automatically give header level data as shown below:
    Sales order , Header Data
    001              ,     500
    002              ,    1000
    hope it helps...
    regards,
    Raju

  • How to get multiple copies with different decription on header line

    I want to get multiple copies of print out automatically with different description on header line when i click on save or print button.

    is this smartforms....?
    if yes then this can be achieved using the copy windows concept of smartforms.....
    Regards,
    Lalit Mohan Gupta

  • Parsing XML file & insert into Oracle Tables

    Hi,
    Following is a sample xml file which is an input for a oracle procedure :
    <Sales ID="1" CreatedDate="16-Jan-2007" CreatedTime="16:09:40">
    <Customer ID="1" Name="Scott" Address="City1">
         <Order ID="1" Date="15-Jan-2007" TotItems="2" Value="200">
              <Item ID="01" Name="Chocolate" Qty="2" Amount="80" />
              <Item ID="03" Name="Biscuit" Qty="5" Amount="120" />
         </Order>
    </Customer>
    <Customer ID="2" Name="Tiger" Address="City2">
         <Order ID="1" Date="15-Jan-2007" TotItems="1" Value="500">
              <Item ID="01" Name="Pizza" Qty="3" Amount="500" />
         </Order>
    </Customer>
    <User ID="ABC" Name="TestUser" LastLogin="16-Jan-2007" />
    <City Code="NY" Name="New York" />
    <City Code="NJ" Name="New Jersy" />
    </Sales>
    I have individual tables for Sales, Customer, Order, Item, User & City tags with proper referential constraints. I have to parse the xml & have to insert the corresponsing tables for each & every tag if the ID in individual tag does not exists in the table. If the ID already exist, then, I have to update other attributes in the table for the corresponding ID.
    Can anyone suggest me the simplest way to perform the above said scenario?

    Dera Michael,
    Sorry for the confusing previous reply. I went through your solution again and tried for my XML File.
    I have stored the XML File in table XXLF_DS_XML.Should I make use of the table in the below query.
    Here is my SQL Query erroring Out
    SQL> SELECT EXTRACTVALUE(s.COLUMN_VALUE,
    2 '/Header@orderID') ID
    3 ,EXTRACTVALUE(c.COLUMN_VALUE,
    4 '/Detail@lineNumber') lienum
    5 ,EXTRACTVALUE(t.COLUMN_VALUE,
    6 '/Detail/Tax@currency') currency
    7 ,EXTRACTVALUE(t.COLUMN_VALUE,
    8 '/Detail/Tax/Money') customer_name
    9 FROM TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE('- <Recordset>
    10 - <Header dueDate="2007-01-17T16:09:05" orderDate="2004-01-17" orderID="0009" transactionID="1389"
    type="new">
    11 <KeyIndex>2</KeyIndex>
    12 - <BillTo>
    13 - <Address addressID="5619" isoCountryCode="US">
    14 <Name>fMat</Name>
    15 - <PostalAddress name="default">
    16 <Street>34545</Street>
    17 <City>dfgfg</City>
    18 <State>AZ</State>
    19 <PostalCode>85086-1693</PostalCode>
    20 <County>Maricopa</County>
    21 <Country>US</Country>
    22 </PostalAddress>
    23 <Email name="default">[email protected]</Email>
    24 </Address>
    25 </BillTo>
    26 <PromotionCode />
    27 - <SubTotal>
    28 <Money currency="USD">32.49</Money>
    29 </SubTotal>
    30 - <Tax>
    31 <Money currency="USD">2.32</Money>
    32 <Description />
    33 </Tax>
    34 - <Shipping>
    35 <Money currency="USD">8.95</Money>
    36 <Description />
    37 </Shipping>
    38 </Header>
    39 - <Detail lineNumber="1" quantity="1">
    40 - <ItemDetail>
    41 - <UnitPrice>
    42 <Money currency="USD">29.99</Money>
    43 </UnitPrice>
    44 <ShortName>Little;reg; pxxxx® Learning System</ShortName>
    45 </ItemDetail>
    46 - <Tax>
    47 <Money currency="USD">1.68</Money>
    48 <Description />
    49 - <TaxDetail category="sales">
    50 - <TaxAmount>
    51 <Money currency="USD">1.68</Money>
    52 </TaxAmount>
    53 <TaxLocation>AZ</TaxLocation>
    54 </TaxDetail>
    55 </Tax>
    56 </Detail>
    57 - <Detail lineNumber="2" quantity="1">
    58 - <ItemDetail>
    59 - <UnitPrice>
    60 <Money currency="USD">29.99</Money>
    61 </UnitPrice>
    62 <ShortName>Little;reg; pxxxx® Learning System</ShortName>
    63 </ItemDetail>
    64 - <Tax>
    65 <Money currency="USD">1.68</Money>
    66 <Description />
    67 - <TaxDetail category="sales">
    68 - <TaxAmount>
    69 <Money currency="USD">1.68</Money>
    70 </TaxAmount>
    71 <TaxLocation>AZ</TaxLocation>
    72 </TaxDetail>
    73 </Tax>
    74 - <Tax>
    75 <Money currency="USD">0.68</Money>
    76 <Description />
    77 - <TaxDetail category="sales">
    78 - <TaxAmount>
    79 <Money currency="USD">0.68</Money>
    80 </TaxAmount>
    81 <TaxLocation>DISTRICT</TaxLocation>
    82 </TaxDetail>
    83 </Tax>
    84 </Detail>
    85 </Recordset>'),'/Recordset/Header'))) s
    86 ,TABLE(XMLSEQUENCE(EXTRACT(c.COLUMN_VALUE,
    87 '/Recordset/Detail'))) c
    88 ,TABLE(XMLSEQUENCE(EXTRACT(t.COLUMN_VALUE,
    89 '/Recordset/Detail/Tax'))) t
    90 /
    ,TABLE(XMLSEQUENCE(EXTRACT(c.COLUMN_VALUE,
    ERROR at line 86:
    ORA-00904: "C"."COLUMN_VALUE": invalid identifier
    Here is my XML Data
    <Recordset>
    <Header dueDate="2007-01-17T16:09:05" orderDate="2004-01-17" orderID="0009" transactionID="1389"
    type="new">
    <KeyIndex>2</KeyIndex>
    <BillTo>
    <Address addressID="5619" isoCountryCode="US">
    <Name>fMat</Name>
    <PostalAddress name="default">
    <Street>34545 </Street>
    <City>dfgfg</City>
    <State>AZ</State>
    <PostalCode>85086-1693</PostalCode>
    <County>Maricopa</County>
    <Country>US</Country>
    </PostalAddress>
    <Email name="default">[email protected]</Email>
    </Address>
    </BillTo>
    <PromotionCode/>
    <SubTotal>
    <Money currency="USD">32.49</Money>
    </SubTotal>
    <Tax>
    <Money currency="USD">2.32</Money>
    <Description/>
    </Tax>
    <Shipping>
    <Money currency="USD">8.95</Money>
    <Description/>
    </Shipping>
    </Header>
    <Detail lineNumber="1" quantity="1">
    <ItemDetail>
    <UnitPrice>
    <Money currency="USD">29.99</Money>
    </UnitPrice>
    <ShortName>Little;reg; pxxxx® Learning System </ShortName>
    </ItemDetail>
    <Tax>
    <Money currency="USD">1.68</Money>
    <Description/>
    <TaxDetail category="sales">
    <TaxAmount>
    <Money currency="USD">1.68</Money>
    </TaxAmount>
    <TaxLocation>AZ</TaxLocation>
    </TaxDetail>
    </Tax>
    </Detail>
    <Detail lineNumber="2" quantity="1">
    <ItemDetail>
    <UnitPrice>
    <Money currency="USD">29.99</Money>
    </UnitPrice>
    <ShortName>Little;reg; pxxxx® Learning System </ShortName>
    </ItemDetail>
    <Tax>
    <Money currency="USD">1.68</Money>
    <Description/>
    <TaxDetail category="sales">
    <TaxAmount>
    <Money currency="USD">1.68</Money>
    </TaxAmount>
    <TaxLocation>AZ</TaxLocation>
    </TaxDetail>
    </Tax>
    <Tax>
    <Money currency="USD">0.68</Money>
    <Description/>
    <TaxDetail category="sales">
    <TaxAmount>
    <Money currency="USD">0.68</Money>
    </TaxAmount>
    <TaxLocation>DISTRICT</TaxLocation>
    </TaxDetail>
    </Tax>
    </Detail>
    </Recordset>
    Thanks

  • Need Help on powershell Script to send mails in different languages

    Hello, Just wanted to use the script below to remind users of password expiry date (I got it from internet New-Passwordreminder.ps1). We have companies in many countries, so the email should be in the language of that country. So since our users are in different
    OU's according to countries, I thought some one could help me edit this script and say if the user is in AB ou then email in english will be sent, if in BC ou then the email will be in Russian....So in the script I will have all the languages I need
    to have written.
    <#
    .SYNOPSIS
      Notifies users that their password is about to expire.
    .DESCRIPTION
        Let's users know their password will soon expire. Details the steps needed to change their password, and advises on what the password policy requires. Accounts for both standard Default Domain Policy based password policy and the fine grain
    password policy available in 2008 domains.
    .NOTES
        Version            : v2.6 - See changelog at
    http://www.ehloworld.com/596
        Wish list      : Better detection of Exchange server
                  : Set $DaysToWarn automatically based on Default Domain GPO setting
                  : Description for scheduled task
                  : Verify it's running on R2, as apparently only R2 has the AD commands?
                  : Determine password policy settings for FGPP users
                  : better logging
        Rights Required   : local admin on server it's running on
        Sched Task Req'd  : Yes - install mode will automatically create scheduled task
        Lync Version    : N/A
        Exchange Version  : 2007 or later
        Author           : M. Ali (original AD query), Pat Richard, Exchange MVP
        Email/Blog/Twitter :
    [email protected]  http://www.ehloworld.com @patrichard
        Dedicated Post   :
    http://www.ehloworld.com/318
        Disclaimer       : You running this script means you won't blame me if this breaks your stuff.
        Info Stolen from   : (original)
    http://blogs.msdn.com/b/adpowershell/archive/2010/02/26/find-out-when-your-password-expires.aspx
                  : (date)
    http://technet.microsoft.com/en-us/library/ff730960.aspx
                : (calculating time)
    http://blogs.msdn.com/b/powershell/archive/2007/02/24/time-till-we-land.aspx
    http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/23fc5ffb-7cff-4c09-bf3e-2f94e2061f29/
    http://blogs.msdn.com/b/adpowershell/archive/2010/02/26/find-out-when-your-password-expires.aspx
                : (password decryption)
    http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/f90bed75-475e-4f5f-94eb-60197efda6c6/
                : (determine per user fine grained password settings)
    http://technet.microsoft.com/en-us/library/ee617255.aspx
    .LINK    
        http://www.ehloworld.com/318
    .INPUTS
      None. You cannot pipe objects to this script
    .PARAMETER Demo
      Runs the script in demo mode. No emails are sent to the user(s), and onscreen output includes those who are expiring soon.
    .PARAMETER Preview
      Sends a sample email to the user specified. Usefull for testing how the reminder email looks.
    .PARAMETER PreviewUser
      User name of user to send the preview email message to.
    .PARAMETER Install
      Create the scheduled task to run the script daily. It does NOT create the required Exchange receive connector.
    .EXAMPLE
      .\New-PasswordReminder.ps1
      Description
      Searches Active Directory for users who have passwords expiring soon, and emails them a reminder with instructions on how to change their password.
    .EXAMPLE
      .\New-PasswordReminder.ps1 -demo
      Description
      Searches Active Directory for users who have passwords expiring soon, and lists those users on the screen, along with days till expiration and policy setting
    .EXAMPLE
      .\New-PasswordReminder.ps1 -Preview -PreviewUser [username]
      Description
      Sends the HTML formatted email of the user specified via -PreviewUser. This is used to see what the HTML email will look like to the users.
    .EXAMPLE
      .\New-PasswordReminder.ps1 -install
      Description
      Creates the scheduled task for the script to run everyday at 6am. It will prompt for the password for the currently logged on user. It does NOT create the required Exchange receive connector.
    #>
    #Requires -Version 2.0
    [cmdletBinding(SupportsShouldProcess = $true)]
    param(
     [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
     [switch]$Demo,
     [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
     [switch]$Preview,
     [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
     [switch]$Install,
     [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
     [string]$PreviewUser
    Write-Verbose "Setting variables"
    [string]$Company = "Contoso Ltd"
    [string]$OwaUrl = "https://mail.contoso.com"
    [string]$PSEmailServer = "10.9.0.11"
    [string]$EmailFrom = "Help Desk <[email protected]>"
    [string]$HelpDeskPhone = "(586) 555-1010"
    [string]$HelpDeskURL = "https://intranet.contoso.com/"
    [string]$TranscriptFilename = $MyInvocation.MyCommand.Name + " " + $env:ComputerName + " {0:yyyy-MM-dd hh-mmtt}.log" -f (Get-Date)
    [int]$global:UsersNotified = 0
    [int]$DaysToWarn = 14
    [string]$ImagePath = "http://www.contoso.com/images/new-passwordreminder.ps1"
    [string]$ScriptName = $MyInvocation.MyCommand.Name
    [string]$ScriptPathAndName = $MyInvocation.MyCommand.Definition
    [string]$ou
    [string]$DateFormat = "d"
    if ($PreviewUser){
     $Preview = $true
    Write-Verbose "Defining functions"
    function Set-ModuleStatus {
     [cmdletBinding(SupportsShouldProcess = $true)]
     param (
      [parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $true, HelpMessage = "No module name specified!")]
      [string]$name
     if(!(Get-Module -name "$name")) {
      if(Get-Module -ListAvailable | ? {$_.name -eq "$name"}) {
       Import-Module -Name "$name"
       # module was imported
       return $true
      } else {
       # module was not available (Windows feature isn't installed)
       return $false
     }else {
      # module was already imported
      return $true
    } # end function Set-ModuleStatus
    function Remove-ScriptVariables { 
     [cmdletBinding(SupportsShouldProcess = $true)]
     param($path)
     $result = Get-Content $path | 
     ForEach { if ( $_ -match '(\$.*?)\s*=') {     
       $matches[1]  | ? { $_ -notlike '*.*' -and $_ -notmatch 'result' -and $_ -notmatch 'env:'} 
     ForEach ($v in ($result | Sort-Object | Get-Unique)){  
      Remove-Variable ($v.replace("$","")) -ErrorAction SilentlyContinue
    } # end function Get-ScriptVariables
    function Install {
     [cmdletBinding(SupportsShouldProcess = $true)]
     param()
    http://technet.microsoft.com/en-us/library/cc725744(WS.10).aspx
     $error.clear()
     Write-Host "Creating scheduled task `"$ScriptName`"..."
     $TaskPassword = Read-Host "Please enter the password for $env:UserDomain\$env:UserName" -AsSecureString
     $TaskPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($TaskPassword))
     # need to fix the issue with spaces in the path
     schtasks /create /tn $ScriptName /tr "$env:windir\system32\windowspowershell\v1.0\powershell.exe -psconsolefile '$env:ExchangeInstallPath\Bin\exshell.psc1' -command $ScriptPathAndName" /sc Daily /st 06:00 /ru $env:UserDomain\$env:UserName /rp
    $TaskPassword | Out-Null
     if (!($error)){
      Write-Host "done!" -ForegroundColor green
     }else{
      Write-Host "failed!" -ForegroundColor red
     exit
    } # end function Install
    function Get-ADUserPasswordExpirationDate {
     [cmdletBinding(SupportsShouldProcess = $true)]
     Param (
      [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true, HelpMessage = "Identity of the Account")]
      [Object]$accountIdentity
     PROCESS {
      Write-Verbose "Getting the user info for $accountIdentity"
      $accountObj = Get-ADUser $accountIdentity -properties PasswordExpired, PasswordNeverExpires, PasswordLastSet, name, mail
      # Make sure the password is not expired, and the account is not set to never expire
        Write-Verbose "verifying that the password is not expired, and the user is not set to PasswordNeverExpires"
        if (((!($accountObj.PasswordExpired)) -and (!($accountObj.PasswordNeverExpires))) -or ($PreviewUser)) {
         Write-Verbose "Verifying if the date the password was last set is available"
         $passwordSetDate = $accountObj.PasswordLastSet      
          if ($passwordSetDate -ne $null) {
           $maxPasswordAgeTimeSpan = $null
            # see if we're at Windows2008 domain functional level, which supports granular password policies
            Write-Verbose "Determining domain functional level"
            if ($global:dfl -ge 4) { # 2008 Domain functional level
              $accountFGPP = Get-ADUserResultantPasswordPolicy $accountObj
              if ($accountFGPP -ne $null) {
               $maxPasswordAgeTimeSpan = $accountFGPP.MaxPasswordAge
         } else {
          $maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
        } else { # 2003 or ealier Domain Functional Level
         $maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
        if ($maxPasswordAgeTimeSpan -eq $null -or $maxPasswordAgeTimeSpan.TotalMilliseconds -ne 0) {
         $DaysTillExpire = [math]::round(((New-TimeSpan -Start (Get-Date) -End ($passwordSetDate + $maxPasswordAgeTimeSpan)).TotalDays),0)
         if ($preview){$DaysTillExpire = 1}
         if ($DaysTillExpire -le $DaysToWarn){
          Write-Verbose "User should receive email"
          $PolicyDays = [math]::round((($maxPasswordAgeTimeSpan).TotalDays),0)
          if ($demo) {Write-Host ("{0,-25}{1,-8}{2,-12}" -f $accountObj.Name, $DaysTillExpire, $PolicyDays)}
                # start assembling email to user here
          $EmailName = $accountObj.Name      
          $DateofExpiration = (Get-Date).AddDays($DaysTillExpire)
          $DateofExpiration = (Get-Date($DateofExpiration) -f $DateFormat)      
    Write-Verbose "Assembling email message"      
    [string]$emailbody = @"
    <html>
     <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     </head>
    <body>
     <table id="email" border="0" cellspacing="0" cellpadding="0" width="655" align="center">
      <tr>
       <td align="left" valign="top"><img src="$ImagePath/spacer.gif" alt="Description: $ImagePath/spacer.gif" width="46" height="28" align="absMiddle">
    if ($HelpDeskURL){     
    $emailbody += @" 
       <font style="font-size: 10px; color: #000000; line-height: 16px; font-family: Verdana, Arial, Helvetica, sans-serif">If this e-mail does not appear properly, please <a href="$HelpDeskURL" style="font-weight:
    bold; font-size: 10px; color: #cc0000; font-family: verdana, arial, helvetica, sans-serif; text-decoration: underline">click here</a>.</font>
    $emailbody += @"   
       </td>
      </tr>
      <tr>
    if ($HelpDeskURL){  
    $emailbody += @"
       <td height="121" align="left" valign="bottom"><a href="$HelpDeskURL"><img src="$ImagePath/header.gif" border="0" alt="Description: $ImagePath/header.gif"
    width="655" height="121"></a></td>
    }else{
    $emailbody += @" 
       <td height="121" align="left" valign="bottom"><img src="$ImagePath/header.gif" border="0" alt="Description: $ImagePath/header.gif" width="655" height="121"></td>
    $emailbody += @"
      </tr>
      <tr>
       <td>
        <table id="body" border="0" cellspacing="0" cellpadding="0">
         <tr>
          <td width="1" align="left" valign="top" bgcolor="#a8a9ad"><img src="$ImagePath/spacer50.gif" alt="Description: $ImagePath/spacer50.gif" width="1"
    height="50"></td>
          <td><img src="$ImagePath/spacer.gif" alt="Description: $ImagePath/spacer.gif" width="46" height="106"></td>
          <td id="text" width="572" align="left" valign="top" style="font-size: 12px; color: #000000; line-height: 17px; font-family: Verdana, Arial, Helvetica, sans-serif">
    if ($DaysTillExpire -le 1){
     $emailbody += @"
      <div align='center'>
       <table border='0' cellspacing='0' cellpadding='0' style='width:510px; background-color: white; border: 0px;'>
        <tr>
         <td align='right'><img width='36' height='28' src='$ImagePath/image001b.gif' alt='Description: $ImagePath/image001b.gif'></td> 
         <td style="font-family: verdana; background: #E12C10; text-align: center; padding: 0px; font-size: 9.0pt; color: white">ALERT: You must change your password today or you will be locked out!</td>  
         <td align='left'><img border='0' width='14' height='28' src='$ImagePath/image005b.gif' alt='Description: $ImagePath/image005b.gif'></td>
        </tr>
       </table>
      </div>
    $emailbody += @"
       <p style="font-weight: bold">Hello, $EmailName,</p>
       <p>It's change time again! Your $company password expires in <span style="background-color: red; color: white; font-weight: bold;">&nbsp;$DaysTillExpire&nbsp;</span> day(s), on $DateofExpiration.</p>
       <p>Please use one of the methods below to update your password:</p>
       <ol>
        <li>$company office computers and Terminal Server users: You may update your password on your computer by pressing Ctrl-Alt-Delete and selecting 'Change Password' from the available options. If you use a $company laptop in addition
    to a desktop PC, be sure and read #3 below.</li>
        <li>Remote Outlook Client, Mac, and/or Outlook Web App users: If you only access our email system, please use the following method to easily change your password:</li>
        <ul>
         <li>Log into <a href="$owaurl">Outlook Web App</a> using Internet Explorer (PC) or Safari or Firefox (Mac).</li>
         <li>Click on the Options button in the upper right corner of the page.</li>  
         <li>Select the &quot;Change Password&quot; link to change your password.</li>
         <li>Enter your current password, then your new password twice, and click Save</li>
         <li><span style="font-weight: bold">NOTE:</span> You will now need to use your new password when logging into Outlook Web App, Outlook 2010, SharePoint, Windows Mobile (ActiveSync) devices, etc. Blackberry
    Enterprise Users (BES) will not need to update their password. Blackberry Internet Service (BIS) users will be required to use their new password on their device.</li>
        </ul>
        <li>$company issued laptops: If you have been issued a $company laptop, you must be in a corporate office and directly connected to the company network to change your password. If you also use a desktop PC in the office, you must
    remember to always update your domain password on the laptop first. Your desktop will automatically use the new password.</li>
        <ul>
         <li>Log in on laptop</li>
         <li>Press Ctrl-Alt-Delete and select 'Change Password' from the available options.</li>
         <li>Make sure your workstation (if you have one) has been logged off any previous sessions so as to not cause conflict with your new password.</li>
        </ul>
       </ol>
       <p>Think you've got a complex password? Run it through the <a href="The">http://www.passwordmeter.com/">The Password Meter</a></p>
       <p>Think your password couldn't easily be hacked? See how long it would take: <a href="How">http://howsecureismypassword.net/">How Secure Is My Password</a></p>
       <p>Remember, if you do not change your password before it expires on $DateofExpiration, you will be locked out of all $company Computer Systems until an Administrator unlocks your account.</p>
       <p>If you are traveling or will not be able to bring your laptop into the office before your password expires, please call the number below for additional instructions.</p>
       <p>You will continue to receive these emails daily until the password is changed or expires.</p>
       <p>Thank you,<br />
       The $company Help Desk<br />
       $HelpDeskPhone</p>
    if ($accountFGPP -eq $null){
     $emailbody += @"
       <table style="background-color: #dedede; border: 1px solid black">
        <tr>
         <td style="font-size: 12px; color: #000000; line-height: 17px; font-family: Verdana, Arial, Helvetica, sans-serif"><b>$company Password Policy</b>
          <ul>
           <li>Your password must have a minimum of a $MinPasswordLength characters.</li>
           <li>You may not use a previous password.</li>
           <li>Your password must not contain parts of your first, last, or logon name.</li>
           <li>Your password must be changed every $PolicyDays days.</li>
    if ($PasswordComplexity){
     Write-Verbose "Password complexity"
     $emailbody += @"
           <li>Your password requires a minimum of two of the following three categories:</li>
           <ul>
            <li>1 upper case character (A-Z)</li>
            <li>1 lower case character (a-z)</li>
            <li>1 numeric character (0-9)</li>        
           </ul>
    $emailbody += @"
           <li>You may not reuse any of your last $PasswordHistory passwords</li>
          </ul>
         </td>
        </tr>
       </table>
    $emailbody += @"        
           </td>
           <td width="49" align="left" valign="top"><img src="$ImagePath/spacer50.gif" alt="" width="49" height="50"></td>
           <td width="1" align="left" valign="top" bgcolor="#a8a9ad"><img src="$ImagePath/spacer50.gif" alt="Description: $ImagePath/spacer50.gif" width="1"
    height="50"></td>
          </tr>
         </table>
         <table id="footer" border="0" cellspacing="0" cellpadding="0" width="655">
          <tr>
           <td><img src="$ImagePath/footer.gif" alt="Description: $ImagePath/footer.gif" width="655" height="81"></td>
          </tr>
         </table>
         <table border="0" cellspacing="0" cellpadding="0" width="655" align="center">
          <tr>
           <td align="left" valign="top"><img src="$ImagePath/spacer.gif" alt="Description: $ImagePath/spacer.gif" width="36" height="1"></td>
           <td align="middle" valign="top"><font face="Verdana" size="1" color="#000000"><p>This email was sent by an automated process.
    if ($HelpDeskURL){
    $emailbody += @"               
           If you would like to comment on it, please visit <a href="$HelpDeskURL"><font color="#ff0000"><u>click here</u></font></a>
    $emailbody += @"               
            </p><p style="color: #009900;"><font face="Webdings" size="4">P</font> Please consider the environment before printing this email.</p></font>
           </td>
           <td align="left" valign="top"><img src="$ImagePath/spacer.gif" alt="Description: $ImagePath/spacer.gif" width="36" height="1"></td>
          </tr>
         </table>
        </td>
       </tr>
      </table>
     </body>
    </html>
          if (!($demo)){
           $emailto = $accountObj.mail
           if ($emailto){
            Write-Verbose "Sending demo message to $emailto"
            Send-MailMessage -To $emailto -Subject "Your password expires in $DaysTillExpire day(s)" -Body $emailbody -From $EmailFrom -Priority High -BodyAsHtml
            $global:UsersNotified++
           }else{
            Write-Verbose "Can not email this user. Email address is blank"
    } # end function Get-ADUserPasswordExpirationDate
    if ($install){
     Write-Verbose "Install mode"
     Install
    Write-Verbose "Checking for ActiveDirectory module"
    if ((Set-ModuleStatus ActiveDirectory) -eq $false){
     $error.clear()
     Write-Host "Installing the Active Directory module..." -ForegroundColor yellow
     Set-ModuleStatus ServerManager
     Add-WindowsFeature RSAT-AD-PowerShell
     if ($error){
      Write-Host "Active Directory module could not be installed. Exiting..." -ForegroundColor red;
      if ($transcript){Stop-Transcript}
      exit
    Write-Verbose "Getting Domain functional level"
    $global:dfl = (Get-AdDomain).DomainMode
    # Get-ADUser -filter * -properties PasswordLastSet,EmailAddress,GivenName -SearchBase "OU=Users,DC=domain,DC=test" |foreach {
    if (!($PreviewUser)){
     if ($ou){
      Write-Verbose "Filtering users to $ou"
      $users = Get-AdUser -filter * -SearchScope subtree -SearchBase $ou -ResultSetSize $null
     }else{
      $users = Get-AdUser -filter * -ResultSetSize $null
    }else{
     Write-Verbose "Preview mode"
     $users = Get-AdUser $PreviewUser
    if ($demo){
     Write-Verbose "Demo mode"
     # $WhatIfPreference = $true
     Write-Host "`n"
     Write-Host ("{0,-25}{1,-8}{2,-12}" -f "User", "Expires", "Policy") -ForegroundColor cyan
     Write-Host ("{0,-25}{1,-8}{2,-12}" -f "========================", "=======", "===========") -ForegroundColor cyan
    Write-Verbose "Setting event log configuration"
    $evt = new-object System.Diagnostics.EventLog("Application")
    $evt.Source = $ScriptName
    $infoevent = [System.Diagnostics.EventLogEntryType]::Information
    $EventLogText = "Beginning processing"
    $evt.WriteEntry($EventLogText,$infoevent,70)
    Write-Verbose "Getting password policy configuration"
    $DefaultDomainPasswordPolicy = Get-ADDefaultDomainPasswordPolicy
    [int]$MinPasswordLength = $DefaultDomainPasswordPolicy.MinPasswordLength
    # this needs to look for FGPP, and then default to this if it doesn't exist
    [bool]$PasswordComplexity = $DefaultDomainPasswordPolicy.ComplexityEnabled
    [int]$PasswordHistory = $DefaultDomainPasswordPolicy.PasswordHistoryCount
    ForEach ($user in $users){
     Get-ADUserPasswordExpirationDate $user.samaccountname
    Write-Verbose "Writing summary event log entry"
    $EventLogText = "Finished processing $global:UsersNotified account(s). `n`nFor more information about this script, run Get-Help .\$ScriptName. See the blog post at
    http://www.ehloworld.com/318."
    $evt.WriteEntry($EventLogText,$infoevent,70)
    # $WhatIfPreference = $false
    # Remove-ScriptVariables -path $MyInvocation.MyCommand.Name
    Remove-ScriptVariables -path $ScriptPathAndName

    Hi petro_jemes,
    Just a little claritification, you need to add the value to the variable "[string]$ou", and also change the language in the variable "$emailbody" in the function "Get-ADUserPasswordExpirationDate".
    I hope this helps.

  • Spec for this report not able to get values in the output

    okSection 1: Document information
    Title     PP – Total Component Requirement by Sales Forecast Report     Create Date     5/2/2006
    Author     Ivie Ng     Revision     1.0     Last changed on     
    Program type     ( X ) Report    (   ) Form        (   ) Batch input    (   ) Dialog program
    Priority     (   ) High       ( X ) Medium    (   ) Low
    Frequency      (   ) As require     (X ) Daily     (  ) Weekly       (  ) Monthly         (  ) Yearly
    (   ) Conversion
    Doc-Ref.     
    Section 2: Contact Person
    Task/Responsibility     Name     Signature     Date
    JM Project Manager     Sean Gilgunn          
    ISS Project Manager     YB Cisse          
    JM-Business Team Lead     Sathe          
    Functional Consultant      Ivie          
    ABAP Consultant     Soh          
    User Acceptance Test / Approved by                
    Transport               
    Section 3: Functional Description
    Background (whatever; Ex.Why does this program have to develop?)
    This is to allow materials dept to view and analyze total component requirement base on sales forecast ie. budget forecast, inactive version within specific planning horizon.
    Requirements
    In SOP, material dept will maintain planning data (sales & production plan) in various version.
    1. Active version: A00
    This version is transferred to demand mgmt as active version. MRP will use this planning data to create order proposals (planned orders, purchase requisitions).
    2. Inactive version: 001 – 999
    There are 3 types of inactive version in SOP:
    a) Sales forecast – 000 – 799
    b) Budge forecast – 800 – 820
    c) Forecast report – 821 – 999
    This report should allow to read any version of the sales forecast and return the total component requirements in the planning horizon that specify.
    Section 3.1: Selection screen
    Field name     Technical name     Type of selection field
         (*Please specify Transparent Table and field name)     (X) Single value             (  ) Range             ( ) Required field
              (  ) Single value             (X) Range             (  ) Required field
              (X) Single value             (  ) Range             (  ) Required field
    Section 3.2: Program Logic
    Business Requirement
    This report will allow option to choose to read the source from SOP or COPA.
    Input Selection
    Main Menu:
    o     Total Component Requirement from SOP forecast
    o     Total Component Requirement from COPA forecast
    If SOP is selected, Source = SOP
    If COPA is selected, Source = COPA
    Option 1: SOP
    1.     Input Layout
    Material: _____________    (note: allow multiple materials entry, no entry indicate all materials)
    RM Material Group: __________     (note: allow multiple entry, no entry indicate all Mat Grp)
    Plant:  MY11  (note: default value)
    Standard Price as of : _____________  (YYYYMM)
    Version: ________    (note: allow F4 option with Version and Description)
    Output Type: ____  (Month/Year)
    (If the output type chosen is Month, the below is display)
    Period From:  _________  (YYYYMM)
    Period To:      _________  (YYYYMM)
    (If the output type chosen is Year, the below is display)
    Period From:  __________ (YYYY)
    Period To:      __________ (YYYY)
    2.     Output Layout
    Plant: MY11
    Source:
    Version:
    System Date/Time:
    Output Layout in Month:
    Material     Desc     Component     Desc     UOM     M04.2006     M05.2006     M06.2006     M07.2006     M08.2006     M09.2006     BOM
    TO2368          NGK0003          PC                                   TO2368
              SIN96-015          MG                                   TO2368
              SIN96-066F          MG                                   TO2368
              SIN96-066N          MG                                   TO2368
              SIN96-127          GCL                                   WCS2004
              SIN96-055          G                                   WCS2004
              SIN96-110          G                                   WCS2004
              SIN96-007          G                                   WCS2004
              SIN96-002          GCL                                   WCS1003
              SIN96-001          GCL                                   WCS1003
              SIN96-006          GCL                                   WCS1003
              TO2358/511          PC                                   TO2368
              TO2358/512          PC                                   TO2368
              WCS2004          GCL                                   TO2368
              WCS1003          GCL                                   WCS2004
    Output Layout in Year:
    Material     Desc     Component     Desc     UOM     2006     2007     2008     BOM
    TO2368          NGK0003          PC                    TO2368
              SIN96-015          MG                    TO2368
              SIN96-066F          MG                    TO2368
              SIN96-066N          MG                    TO2368
              SIN96-127          GCL                    WCS2004
              SIN96-055          G                    WCS2004
              SIN96-110          G                    WCS2004
              SIN96-007          G                    WCS2004
              SIN96-002          GCL                    WCS1003
              SIN96-001          GCL                    WCS1003
              SIN96-006          GCL                    WCS1003
              TO2358/511          PC                    TO2368
              TO2358/512          PC                    TO2368
              WCS2004          GCL                    TO2368
              WCS1003          GCL                    WCS2004
    3.     Header Section:
    Header Field: Plant
    Print input field Plant.
    Header Field: Source
    If SOP is selected, Source = SOP
    If COPA is selected, Source = COPA
    Print Source.
    Header Field: Version
    Print input field Version, Print RMCP2-VETXT (version description).
    Header Field: System Date/Time
    Print current system date and time.
    4.     Table: S076 (SOP - Sales & Operations Planning)
    Read S076 rows with input selection of Material, Plant, Year, Month, Version sorted by Material.
          This table provides sales forecast figure.
    Table: MAKT – Material Decription
    Table: MARA - General Material Data
    Table: CDHDR - Change document header
    Table: CDPOS - Change document items
    5.     Details Section: -
    Read S076.PMNUX(Material).                    Note: There will be multiple rows in S076.PMNUX (Material)
    Field: Material
    Print S076.PMNUX(Material).
    Field: Description
    Read MAKT.MATNR(Material), Print MAKT.MAKTX.
    6.     Read L1 (Level 1) BOM Transaction: CS03
                   Where Material = S076.PMNUX (Material), Plant = MY11 (input field), BOM Usage = ’1’, Status = ‘01’
    7.     This is to print BOM component.
    If Input Material Group = ‘ ’
    Read Component (Material), Component Qty from BOM sorted by MARA.MTART (material type) = ‘ZROH’, ‘ZHLB’ , ‘ZRUH’
    If Input Material Group <> ‘ ’
    Read Component (Material), Component Qty from BOM sorted by MARA.MTART (material type) = ‘ZROH’, ‘ZHLB’ , ‘ZRUH’
          Where MARA-MATKL (Material Group) = Input Material Group.
    If MARA.MTART (material type) = ‘ZRUH’,
          Read L1 (Level 1) BOM Transaction: CS03
                  Where Material = S076.PMNUX, Plant = MY11 (input field), BOM Usage = ’1’, Status = ‘02’.
    GET RC29K-BMENG (Base Qty)  ***
    Field: Material Group
    Print MARA-MATKL
    Field: Component
    Print BOM Component.
    Field: Description
    Print MAKT.MAKTX.
    Field: UOM
    Print MARA.MEINS.
    Field: Currency
    Field: Standard Price
    If Input Standard Price Date = ‘’
       Print Currency = ‘ ‘
       Print Standard Price = 0
    Else
    Read CDHDR-OBJECTID (Material), CDHDR-CHANGENR (ChgNo)
    Where CDHDR-OBJECTID (Material) = BOM Component
    And CDHDR-TCODE (Transaction) = ‘MR21’
    And YYYYMM[CDHDR-UDATE (Date)] = Input Standard Price Date
    If NOT Found, look up YYYYMM[CDHDR-UDATE (Date)] – 1  
    I.e.    Input Standard Price Date is 200702, If CDHDR-UDATE (Date) Not Found, look up 200701.
    If Not Found, look up 200612 until the record is found    **
    If row return > 1, select the latest CDHDR-UDATE (Date)
    i.e. If rows return 20070201 and 20070215, Select 20070215    **
    Read CDPOS-CUKY_NEW (Currency), CDPOS-VALUE_NEW (New Value)
    Where CDPOS-OBJECTID (Material) = CDHDR-OBJECTID (Material)
    And CDPOS-CHANGENR (ChgNo) = CDHDR-CHANGENR (ChgNo)
    Print CDPOS-CUKY_NEW (Currency)
    Print CDPOS-VALUE_NEW (New Value)
    8.     If the output type is Year, print Requirement Qty in Yearly bucket.
    Requirement Qty = sum[S076-ABSAT (Sales) for current Year] ie 2006
    Requirement Qty = sum[S076-ABSAT (Sales) for current Year + 1] ie 2007
    Requirement Qty = sum[S076-ABSAT (Sales) for current Year + 2] ie 2008
         If the output type is Month, print Requirement Qty in Monthly bucket.
    Field: Month (ie. M04.2006)
    Requirement Qty = S076-ABSAT (Sales) * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M04.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Field: Month (ie. M05.2006)
    Requirement Qty = S076-ABSAT (Sales) * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M05.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Field: Month (ie. M06.2006)
    Requirement Qty = S076-ABSAT (Sales) * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M06.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Field: Month (ie. M07.2006)
    Requirement Qty = S076-ABSAT (Sales) * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M07.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Field: Month (ie. M08.2006)
    Requirement Qty = S076-ABSAT (Sales) * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M08.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Note: Repeat the requirement qty display in Monthly bucket base on period specified.
    Field: BOM
    Print L1 BOM which is S076.PMNUX (Material)  from Step 6.
    If Is end of component,
          Repeat Step 5 for next Material in SOP (S076.PMNUX).
    If MARA.MTART (material type) = ‘ZROH’,
    Perform Step 7 to read next L1 BOM Component.
    Perform Step 8 to print Requirement Qty.
    If [MARA.MTART (material type) = ‘ZHLB’] and [MARA.MATKL(material group) = ‘WP0100’, ‘WP0110’, or ‘WP0120’],
          Go Step 9 to read L2 BOM.
    If [MARA.MTART (material type) = ‘ZHLB’] and [MARA.MATKL (material group) <> ‘WP0100’, ‘WP0110’, ‘WP0120’],
          Perform Step 7 to read next BOM Component.
          Perform Step 8 to print Requirement Qty.
    9.     Read L2 (level 2) BOM for the ZHLB at Transaction: CS03
                Where Plant = MY11(input field), BOM Usage= ’1’, Status = ‘01’.
    GET RC29K-BMENG (Base Qty)  ***
    10.     Read Component (Material), Component Qty from BOM sorted by MARA.MTART (material type) = ‘ZROH’, ‘ZHLB’.
    Field: Material Group
    Print MARA-MATKL
    Field: Component
    Print BOM Component.
    Field: Description
    Print MAKT.MAKTX.
    Field: UOM
    Print MARA.MEINS.
    Field: Month (ie. M04.2006)
    Requirement Qty = Requirement Qty from L1 BOM  * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M04.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Field: Month (ie. M05.2006)
    Requirement Qty = Requirement Qty from L1 BOM * Component Qty / / RC29K-BMENG (Base Q)
          Print Requirement Qty.
    Field: Total Price (ie. M05.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
          Note: Repeat until end of Period.
    Field: BOM
    Print L2 BOM from Step 9.
    If is end of component, perform Step 7 to read next L1 BOM component, and Step 8 to print Requirement Qty.
    If MARA.MTART (material type) = ‘ZROH’,
    Perform Step 10 to read next L2 BOM Component.
    If MARA.MTART (material type) = ‘ZHLB’ and MARA.MATKL(material group) = ‘WP0100’, ‘WP0110’, or ‘WP0120’,
          Go Step 11 to read L3 BOM.
    If [MARA.MTART (material type) = ‘ZHLB’] and [MARA.MATKL (material group) <> ‘WP0100’, ‘WP0110’, ‘WP0120’],
          Perform Step 10 to read next L2 BOM Component.
    11.     Read L3 (level 3) BOM for the ZHLB at Transaction: CS03 where Plant=MY11(input field), BOM Usage=’1’, Status =‘01’.
    12.     Read Component (Material), Component Qty from BOM sorted by MARA.MTART (material type) = ‘ZROH’, ‘ZHLB’.
    Field: Material Group
    Print MARA-MATKL
    Field: Component
    Print BOM Component.
    Field: Description
    Print MAKT.MAKTX.
    Field: UOM
    Print MARA.MEINS.
    Field: Currency
    Field: Standard Price
    Read CDHDR-OBJECTID (Material), CDHDR-CHANGENR (ChgNo)
    Where CDHDR-OBJECTID (Material) = BOM Component
    And CDHDR-TCODE (Transaction) = ‘MR21’
    And YYYYMM[CDHDR-UDATE (Date)] = Input Standard Price Date
    If NOT Found, look up YYYYMM[CDHDR-UDATE (Date)] – 1  
    I.e.    Input Standard Price Date is 200702, If CDHDR-UDATE (Date) Not Found, look up 200701.
    If Not Found, look up 200612 until the record is found    **
    If row return > 1, select the latest CDHDR-UDATE (Date)
    i.e. If rows return 20070201 and 20070215, Select 20070215    **
    Read CDPOS-CUKY_NEW (Currency), CDPOS-VALUE_NEW (New Value)
    Where CDPOS-OBJECTID (Material) = CDHDR-OBJECTID (Material)
    And CDPOS-CHANGENR (ChgNo) = CDHDR-CHANGENR (ChgNo)
    Print CDPOS-CUKY_NEW (Currency)
    Print CDPOS-VALUE_NEW (New Value)
    Field: Month (ie. M04.2006)
    Requirement Qty = Requirement Qty from L2 BOM  * Component Qty / RC29K-BMENG (Base Q)
    Print Requirement Qty.
    Field: Total Price (ie. M04.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
    Field: Month (ie. M05.2006)
    Requirement Qty = Requirement Qty from L2 BOM * Component Qty / RC29K-BMENG (Base Q)
          Print Requirement Qty.
    Field: Total Price (ie. M05.2006)
    Total Price = Requirement Qty * Standard Price
    Print Total Price
          Note: Repeat until end of Period.
    Field: BOM
    Print L3 BOM from Step 11.
    If is end of component,
          Perform Step 10 to read next L2 BOM Component.
    If MARA.MTART (material type) = ‘ZROH’,
    Perform Step 12 to read next L3 BOM Component.
    If MARA.MTART (material type) = ‘ZHLB’ and MARA.MATKL(material group) = ‘WP0100’, ‘WP0110’, or ‘WP0120’,
          Repeat for next level of BOM reading.      ** for future BOM expansion **
    If [MARA.MTART (material type) = ‘ZHLB’] and [MARA.MATKL (material group) <> ‘WP0100’, ‘WP0110’, ‘WP0120’],
          Perform Step 12 to read next L3 BOM Component.
    13.     The report is ALV format and should allow to export to Excel. See example below:
    Option 2: COPA
    1.     Input Layout
    Company Code:  ________ 
    Plant:  MY11   
    Material: _____________    (note: allow multiple materials entry, no entry indicate all materials)
    Material Group: __________     (note: allow multiple materials entry, no entry indicate all materials)
    Standard Price as of : _____________  (YYYYMM)
    Version: ________    (note: allow F4 option with Version and Description)
    Read  V_TKEVS_CL-VERSI (Version),  V_TKEVS_CL-VTEXT (Version Description)
    Output Type: ____  (Month/Year)
    (If the output type chosen is Month, the below is display)
    Period From:  _________  (YYYYMM)
    Period To:      _________  (YYYYMM)
    (If the output type chosen is Year, the below is display)
    Period From:  __________ (YYYY)
    Period To:      __________ (YYYY)
    2.     Header Section:
    Header Field: Plant
    Print input field Plant.
    Header Field: Source
    If SOP is selected, Source = SOP
    If COPA is selected, Source = COPA
    Print Source.
    Header Field: Version
    Print V_TKEVS_CL-VERSI (Version),  V_TKEVS_CL-VTEXT (Version Description)
    Header Field: System Date/Time
    Print current system date and time.
    3.     Report details: -
    Table: CE2ASIA - JM Operating Concern
    If input selection is Monthly Report:-
    Read CE2ASIA-ARTNR (Product No), Sum[CE2ASIA-ABSMG001 (Sales Qty)]
    Where CE2ASIA-BUKRS (Company Code) = Input Company Code
    And CE2ASIA-WERKS (Plant) = Input Plant
    And CE2ASIA-PALEDGER (Currency Type) = ‘10’
    And [CE2ASIA-PERBL (FI Period) > = Input Period From And CE2ASIA-PERBL (FI Period) < = Input Period To]
    Group by CE2ASIA-ARTNR (Product No)
    If input selection is Yearly Report:-
    Read CE2ASIA-ARTNR (Product No), CE2ASIA-ABSMG001 (Sales Qty)
    Where CE2ASIA-BUKRS (Company Code) = Input Company Code
    And CE2ASIA-WERKS (Plant) = Input Plant
    And CE2ASIA-PALEDGER (Currency Type) = ‘10’
    And [YYYY[CE2ASIA-PERBL (FI Period)] > = Input Period From And CE2ASIA-PERBL (FI Period) < = Input Period To]
    Note: The details similar to Option 1: SOP, refer section (5)  to (13)
    Section 3.3: Report Layout
    Field name     Technical name     Comment
         (Please specify Transparent Table and field name)     (Ex. In case field does not read directly from transparent table but derive from formular or sum or else. Please show the detail how to do that.)
    Section 3.3: Unit Test Criteria
    Section 4: Technical Description
    Section 4.1: Object information
    Development class     
    Transport number     
    Section 4.2: Input/output file layout (In case upload/download file)
    *Please determine structure of  file like as below:
    No.     Field description     Type (Char,Numeric,…)     Length     Note
    Section 4.3: Report/Form information
    Paper size     Inch 11 8” X 11”     Type of printer     ( ) Laser printer     (X) Dot matrix
    Output report / Pre-printed Attach
    Technical Issue

    Hi gurus,actually this program selecion screen is linked to ..as
    First screen is .Sop
                          .copa
    Again for sop is having a selection screen and in this it is divide based on month and year seperately in two more screens.
    same for copa also....
    so pls tell me a correct solution where to correct and get values.
    Priority is very highhhhhhhhhhhhhh,so pls help me in sorting out this.

  • Why the same function ToolTipText behaves differently in Jar and in Class

    Hi All! In my applet I use two similar statements from javax.swing:
    jListTeaSortSelect.setToolTipText("To stop the alarm just click over here.");
    jProgressBar1.setToolTipText("To stop the alarm just click over here.");
    Both work correctly when I run my applet from classes.
    Problem: When I run it from jar, composed from the same classes, second tool tip does not appear.
    I have no idea on where to get a hint to the solution. Could that be that the problem is caused by other graphical components or by the layout of the container?
    The applet and JAR in question with source code can be found on
    http://www.kobylkin.net/TeaTimer.htm , and the source code is included below in this letter as well..
    Thanks!
    Egor
    I do not include GNU GPL here, for histerical reasons [:-)]
    * TeaTimerJApplet.java
    * Created on 19. Januar 2002, 18:56
    * Tea timer with sound alarm to brew your tea right for the best taste.
    * Copyright Kobylkin Egor 2002. [email protected] www.kobylkin.net
    * This program is free software; you can redistribute it and/or
    * modify it under the terms of the GNU General Public License
    * as published by the Free Software Foundation; either version 2
    * of the License, or (at your option) any later version.
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
    USA.
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.applet.*;
    import java.applet.Applet;
    import java.net.*;
    public class TeaTimerJApplet extends javax.swing.JApplet {
    /** Creates new form TeaTimerJApplet */
    public TeaTimerJApplet() {
    initComponents();
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    private void initComponents() {//GEN-BEGIN:initComponents
    java.awt.GridBagConstraints gridBagConstraints;
    jListTeaSortSelect = new javax.swing.JList();
    jButtonTimerStart = new javax.swing.JButton();
    jProgressBar1 = new javax.swing.JProgressBar();
    getContentPane().setLayout(new java.awt.GridBagLayout());
    jListTeaSortSelect.setBorder(new
    javax.swing.border.TitledBorder("Select the tea type"));
    jListTeaSortSelect.setModel(new javax.swing.AbstractListModel() {
    String[] strings = { "Test................10sec.", "Green
    tea.........3min.", "Black tea...........4min.", "Black
    tea...........5min.", "Mint, Coffee......8min." };
    public int getSize() { return strings.length; }
    public Object getElementAt(int i) { return strings; }
    jListTeaSortSelect.setToolTipText("To stop the alarm just click
    over here.");
    jListTeaSortSelect.setName("jListTeaSort");
    jListTeaSortSelect.setSelectedIndex(2);
    jListTeaSortSelect.setSelectionBackground(java.awt.Color.yellow);
    jListTeaSortSelect.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    jListTeaSortSelect.setAutoscrolls(false);
    jListTeaSortSelect.addMouseListener(new
    java.awt.event.MouseAdapter() {
    public void mousePressed(java.awt.event.MouseEvent evt) {
    jListTeaSortSelectMousePressed(evt);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    getContentPane().add(jListTeaSortSelect, gridBagConstraints);
    jButtonTimerStart.setBackground(java.awt.Color.lightGray);
    jButtonTimerStart.setText("Start the timer");
    jButtonTimerStart.setToolTipText("<html>Visit me at
    www.kobylkin.net <br> Copyright Kobylkin Egor 2002 under GNU GPL</html>");
    jButtonTimerStart.setDoubleBuffered(true);
    jButtonTimerStart.setMaximumSize(new java.awt.Dimension(180, 90));
    jButtonTimerStart.setMinimumSize(new java.awt.Dimension(120, 27));
    jButtonTimerStart.setNextFocusableComponent(jListTeaSortSelect);
    jButtonTimerStart.setPreferredSize(new java.awt.Dimension(140,
    27));
    jButtonTimerStart.addActionListener(new
    java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButtonTimerStartActionPerformed(evt);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    getContentPane().add(jButtonTimerStart, gridBagConstraints);
    jProgressBar1.setToolTipText("To stop the alarm signal just click
    over here.");
    jProgressBar1.setMinimumSize(new java.awt.Dimension(140, 14));
    jProgressBar1.setPreferredSize(new java.awt.Dimension(140, 14));
    jProgressBar1.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mousePressed(java.awt.event.MouseEvent evt) {
    jProgressBar1MousePressed(evt);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 2;
    getContentPane().add(jProgressBar1, gridBagConstraints);
    }//GEN-END:initComponents
    private void jListTeaSortSelectMousePressed(java.awt.event.MouseEvent
    evt) {//GEN-FIRST:event_jListTeaSortSelectMousePressed
    // Add your handling code here:
    if ( timerIsRunningFlag == false )
    jListTeaSortSelect.setBackground(java.awt.Color.white);
    so.stop();
    }//GEN-LAST:event_jListTeaSortSelectMousePressed
    private void jProgressBar1MousePressed(java.awt.event.MouseEvent evt)
    if ( timerIsRunningFlag == false )
    jListTeaSortSelect.setBackground(java.awt.Color.white);
    so.stop();
    private void
    jButtonTimerStartActionPerformed(java.awt.event.ActionEvent evt)
    {//GEN-FIRST:event_jButtonTimerStartActionPerformed
    //set the controls in dumb state:
    jButtonTimerStart.setEnabled(false);
    jListTeaSortSelect.setEnabled(false);
    jListTeaSortSelect.setBackground(java.awt.Color.white);
    switch ( jListTeaSortSelect.getSelectedIndex() ) {
    case 0 : timerDelay = 500; break; //Test 10 sec.
    case 1 : timerDelay = 9000; break; //Green tea 3 min.
    case 2 : timerDelay = 12000; break; //Black tea 4 min.
    case 3 : timerDelay = 15000; break; //Black tea 5 min.
    case 4 : timerDelay = 24000; break; //Mint tea 8 min.
    // every "timerDelay/100" seconds the progress bar status will be
    set to be -5% less by timerTaskPerformer.
    // After 20 times timerDelay will be less than 5% so the
    timerTaskPerformer fires the alarm.
    timer = new javax.swing.Timer(timerDelay, timerTaskPerformer);
    timer.setRepeats(true);
    timer.start();
    timerIsRunningFlag = true;
    progressBarStatus = 100;
    jProgressBar1.setValue( progressBarStatus );
    jButtonTimerStart.setLabel("Timer started");
    so.stop();
    }//GEN-LAST:event_jButtonTimerStartActionPerformed
    private ActionListener timerTaskPerformer = new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    if (progressBarStatus > 5){ progressBarStatus-=5;
    jProgressBar1.setValue(progressBarStatus);
    }else{
    timer.stop();
    timerIsRunningFlag = false;
    //user alarm actions
    jListTeaSortSelect.setBackground (java.awt.Color.red);
    Toolkit.getDefaultToolkit().beep();
    so=getAudioClip(getCodeBase(), "spacemusic.au");
    so.loop();
    /* "Server not found" IE error.
    open pop-up explorer window to alert user
    try {
    AppletContext ac = getAppletContext();
    ac.showDocument( new URL( getCodeBase() +
    "teaReady.html" ), "_self");
    catch (MalformedURLException exc) {
    showStatus("Cannot find file teaReady.html");
    progressBarStatus = 0;
    jProgressBar1.setValue( progressBarStatus );
    //return to the initial state
    jButtonTimerStart.setText("Start the tea timer");
    jButtonTimerStart.setEnabled(true);
    jListTeaSortSelect.setEnabled(true);
    //Variables declaration
    private int progressBarStatus = 100;
    public boolean timerIsRunningFlag = false;
    public int timerDelay;
    private javax.swing.Timer timer;
    public AudioClip so;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonTimerStart;
    private javax.swing.JList jListTeaSortSelect;
    private javax.swing.JProgressBar jProgressBar1;
    // End of variables declaration//GEN-END:variables

    Hi
    What i understand from u'r problem is that when a jar is created and run under browser, ToolTipText for progress panel is not shown? is so is the case - i had no problems..
    The code given was compiled and created a jar successfully..
    this is how i created the jar..(under WindowsNT and MSIE)
    jar cf TeaTimer.jar TeaTimerJApplet.class
    TeaTimer.html
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD>
    <BODY BGCOLOR="#FFFFFF">
    <APPLET CODE="TeaTimerJApplet" archive="TeaTimer.jar" WIDTH="200" HEIGHT="200">
    </APPLET>
    </BODY>
    </HTML>
    cheers
    Mohan

  • SRM PR,PO is not getting created in ECC backend

    HI
    i create SC in classic scenario. and after the manager approve the SC the follow on Doc didnt create in ECC
    i define object for po pr and reserve in backend
    when i check FM :BBP_PD_SC_CHECK i havent any error message
    but when i have chek the SC in RZ20 i have this error: Local Error: Shopping cart 0010000308: Error creating the follow-on document
    and when i chek BBP_PD i have this status:
    Stats:
               Status         Description                    Inactiv
    HEADER     I1015          Awaiting Approval              X
    HEADER     I1021          Created
    HEADER     I1038          Complete
    HEADER     I1106          Shopping cart ordered
    HEADER     I1129          Approved
    how to resolve this issue?
    Regards
    Elham

    Dear Elham,
    To find the solution of the problem I think you need to debug.
    Follow below steps if this help you
    a) Run the report "FBGENDAT"
    b) Input the data as below screen shot
    c) Then go to se37 execute FM : BAPI_PO_CREATE1
    d) You will find the test data directory and test data will be saved as below
    e) In this test date change PO number you should get the error which you are getting above.
    Thanks
    Ankit Jain

Maybe you are looking for

  • Unable to log-in in Oracle Identity Manager Design Console

    Hello, I successfully installed OIM9.1.0.1 Identity Manager on Jboss4.2.3.GA App server and could login to OIM using http://llocalhost:8080/xlWebApp on my window Server 2003 system without any problem. Then I installed the Design Console on my window

  • Structure with a string field as parameter in FM

    Hi, I have a requirement wherein based on some id which is the import paramter (table) i have to fetch some text of type string n pass as an export paramater. it has to be a table since for each id there wil a text associated with it. For this i have

  • A HEART FELT THANK YOU TO EVERYONE!

    A HUGE THANK YOU!!  to one and all here on this forum for all the help you have been and I am certain will continue to be to and for me.  You honestly have no idea how grateful I am for your kindness, patience with me. You made my giant leap of faith

  • Problem in setting header for a panelgrid in backing bean

    Hi , this is urgent... pls... Actually my problem is to set header for a panelgrid. I am generating panelgrid component in the backing bean itself , there i need to set header for that panelgrid. Here is some sample code which i have written pls let

  • How to determine shipping company from trackcode format?

    Hi Folks, I'm working on a CFM project that needs to determine which shipper a trackcode is associated with. My app gets a trackcode, but nothing else. I could try to find it by querying all of the shipper databases (slow, painful), but it would be e