TabIndex problem

Hello,
I'm experiencing some problems using tabIndex. I have 2
Movieclips that contains a form: "Login" and "Registration". If I
place them onto the stage the tab navigation works just fine. If I
use attachMovie to place the clips I loose the tabNavigation. I
tried to define a tabIndex order, but it simply doesn't work. I
tried to put the tabIndex on the main timeline and inside each
clip., I also tried to disable the keyboard shortcuts while testing
the swf inside flash, but it just simply doesn't work. Is there
something I'm doing wrong? Thanks in advance for the help!

Thanks for the reply.
First I just defined only the tabIndex in the main timeline
as follow:
this.login.userField.input.tabIndex = 1;
this.login.passField.input.tabIndex = 2;
I also tried to define them inside the "login" mc without any
luck.
Then I tried to set tabEnabled to true for each mc and each
textfield, but it didn't work either. The only thing I don't
understand is why it's working without defining any tabIndexes if I
place the mc onto the stage without using attachMovie.
I think I'm not setting the index on the right mc since they
are all nested. the input texfield (input) is inside an mc
(userField) which is inside another one (login).
Thank again for helping me out!

Similar Messages

  • TabIndex problems in custom components

    Hello, all!
    I don't quite understand tab navigation. I have two custom
    components: a link button and a text box. I need to be able, at the
    component level, to give the textBox.swc instances tab
    functionality (tab advances to the next one, shift-tab goes to the
    previous). The linkButtons are movieClips, so that they can be
    dynamically positioned. Is it possible to set focus on something
    like that? From what I've read it is. But, I can't seem to get it
    working using the same techniques I've used before for this
    component-level tabbing.
    Just setting their tabIndexes doesn't work. The textBox
    component has a textBox embedded in a movieClip, and that component
    is, in turn, embedded into another movieClip. I dont think that
    second movieClip is the problem. I think it's that we have a
    textBox (created using this.createTextField("_textbox",
    getNextHighestDepth(), 0, 0, textWidth, textHeight) that we then
    dynamically give a tab index from a parameter, but all that does is
    highlight all text when tab is pressed.
    Does tabIndex work on multiple layers? For example, can I do
    it per movieClip? If so...that would be my problem.
    Thank you for the help!
    JA

    I've found my problem. My custom components have to implement the interface NamingContainer.

  • Button tabindex problem

    hello,
    In my jsp Login page 3 buttons are there 1 gor login button and 2 for language setting.
    problem is when i fill username and password and press enter other than mouse click language button executed not login button .
    how to overcome this?

    Hi Experts,
    Thanks for your prompt response.
    We have a custom application in which a button is present for generating PDF of a table.
    It is visible for certain users and not visible for other users.
    We cleared the personalisation for all the users but still the problem persists.
    What could be the issue???
    Please reply ASAP.
    Regards,
    Soumyadeep.

  • JSF 1.2 - problem in IE - selectOneMenu loses tabIndex and focus

    I have a problem with selectOneMenuItem - only seems to occur in IE. Essentially when I'm tabbing through a screen in IE, once I get to the selectOneMenuItem, the tab order is lost and I'm no longer focused on any UI item. There are no a4j tags on the field.
    Does anyone have a workaround for this?
    Thanks

    I have a problem with selectOneMenuItem - only seems to occur in IE. Essentially when I'm tabbing through a screen in IE, once I get to the selectOneMenuItem, the tab order is lost and I'm no longer focused on any UI item. There are no a4j tags on the field.
    Does anyone have a workaround for this?
    Thanks

  • Problem in ALV report

    Hi Friends,
    I have the following 2 problems in ALV report
    1) Logo is not getting displayed in the report.
    2) When i click on the Purchase order number in the report  the interactive report is not working,i am not able to see report of First interactive level.
    can you help it out friends.
    Thanks and regards
    Dinesh
    REPORT  YSDBALV1
    tables: ekko , ekpo .
    type-pools: slis .
    Table for Display Header
    data:i_header type slis_t_listheader with header line.
    *Fieldcat Declaration
    data:fieldcatalog type slis_T_fieldcat_alv  WITH HEADER LINE.
    *Table of Events
    data:i_event type slis_t_event with header line .
    For Layout
    data:i_layout type slis_layout_alv .
    data: text(30) .
    *Internal Table Declaration
    data: begin of it_final occurs 0 ,
          ebeln like ekko-ebeln ,           "Purchasing Document No.
          bedat like ekko-bedat ,           "Purchasing Document Date
          matnr like ekpo-matnr ,           "Material No.
          netwr like ekpo-netwr ,         "Net Order Value in PO Currancy
          meins like ekpo-meins ,           "UOM
          chk(1) ,
          light(1) ,
          change like ekpo-menge ,
          end of it_final .
    **select option Declaration
    selection-screen begin of block block.
    select-options: s_ebeln for ekko-ebeln  .
    selection-screen end of block block .
    selection-screen begin of block block1 .
    parameters:grid radiobutton group r .
    parameters:list radiobutton group r .
    selection-screen end of block block1 .
    at selection screen
    at selection-screen .
    select single * from ekko where ebeln in s_ebeln .
    if sy-subrc <> 0 .
       message e000(8I) WITH 'No Data Exists' .
    endif .
    start-of-selection .
    if grid = 'X' .
    perform get_data .
    perform event using i_event[] .
    perform field using fieldcatalog[] .
    perform layout using i_layout .
    perform grid_display .
    endif .
    *&      Form  get_data
          text
    -->  p1        text
    <--  p2        text
    form get_data .
    *DATA Retrieval from tables
    SELECT EKKO~EBELN
           EKKO~BEDAT
           EKPO~EBELP
           EKPO~MATNR
           EKPO~NETWR
           EKPO~MEINS
           EKPO~MENGE
           EKPO~BPRME
           INTO CORRESPONDING FIELDS OF  table IT_FINAL
           FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
           WHERE EKKO~EBELN IN S_EBELN.
           APPEND IT_FINAL.
    endform.                    " get_data
    *Getting the Event for Top of Page display.
    *&      Form  event
          text
         -->P_I_event[]  text
    form event  using    p_i_event type slis_t_event.
      clear p_i_event .
      refresh p_i_event .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = p_i_event
    EXCEPTIONS
       LIST_TYPE_WRONG       = 1
       OTHERS                = 2
    read table p_i_event with key name = slis_ev_top_of_page into i_event.
          if sy-subrc = 0.
                 move 'TOP_OF_PAGE_PO' to i_event-form.
                 modify p_i_event from i_event index sy-tabix transporting form.
          endif.
          clear i_event.
    endform.                    " event
    *Display Top-of –Page Details and Logo
    form top_of_page_po .
           clear i_header .
           refresh i_header .
           write sy-datum to text.
           i_header-typ = 'H'.
           i_header-info = 'PURCHASE OREDER DETAILS'.
           append i_header.
          *Logo Display
          CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
                 EXPORTING
                     it_list_commentary       = i_header[]
                     I_LOGO                   = 'ENJOYSAPLOGO'.
    endform .
    *Field Catalog Append
    *&      Form  field
          text
         -->P_fieldCATALOG[]  text
    form field using  p_fieldcatalog type slis_t_fieldcat_alv.
         clear fieldcatalog.
          fieldcatalog-fieldname   = 'EBELN'.
          fieldcatalog-seltext_m   = 'Purchase Order No'.
          fieldcatalog-col_pos     = 1.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'BEDAT'.
          fieldcatalog-seltext_m   = 'PO Date'.
          fieldcatalog-col_pos     = 2.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'MATNR'.
          fieldcatalog-seltext_m   = 'Material No'.
          fieldcatalog-col_pos     = 4.
          fieldcatalog-outputlen   = 20.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'NETWR'.
          fieldcatalog-seltext_m   = 'Net Value '.
          fieldcatalog-col_pos     = 5.
          fieldcatalog-outputlen   = 20.
          fieldcatalog-do_sum = 'X'.
          append fieldcatalog .
          clear fieldcatalog.
          fieldcatalog-fieldname   = 'MEINS'.
          fieldcatalog-seltext_m   = 'Units'.
          fieldcatalog-col_pos     = 6.
          fieldcatalog-outputlen   = 4.
          append fieldcatalog .
          clear fieldcatalog.
    endform.                    " field
    *&      Form  layout
          text
    form layout  using    p_i_layout TYPE SLIS_LAYOUT_ALV .
    i_layout-zebra  = 'X'.
        i_layout-lights_fieldname = 'LIGHT'.
        i_layout-lights_tabname = 'IT_FINAL'.
        i_layout-box_fieldname = 'CHK'.
        i_layout-box_tabname  = 'IT_FINAL'.
        i_layout-edit = ' '.
    endform.
    *To display Buttons in the MENU BAR if needed
    FORM SET_PO_PF_STATUS USING  P_I_EXTAB TYPE
                     SLIS_T_EXTAB.
                     SET PF-STATUS 'MENUPO'.
      ENDFORM.
    *Event for Interactive display of ALV report
    form USER_COMMAND  using r_ucomm like sy-ucomm
                             rs_selfield type slis_selfield .
      if r_ucomm = '&IC1'.
      READ TABLE IT_FINAL  index   rs_selfield-tabindex.
      write:/ IT_FINAL-ebeln.
      endif.
    endform .
    *Parameters of FM  REUSE_ALV_GRID_DISPLAY
    *&      Form  grid_display
          text
    -->  p1        text
    <--  p2        text
    form grid_display .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM                = SY-REPID
       I_CALLBACK_PF_STATUS_SET          = 'SET_PO_PF_STATUS'
        I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
        IS_LAYOUT                         = I_LAYOUT
        IT_FIELDCAT                       = FIELDCATALOG[]
        IT_EVENTS                         = I_EVENT[]
      TABLES
        t_outtab                          = IT_FINAL.
    endform.                    " grid_display

    *& Report  YSDBALV1
    REPORT  YSDBALV1.
    tables: ekko , ekpo .
    type-pools: slis .
    Table for Display Header
    data:i_header type slis_t_listheader with header line.
    *Fieldcat Declaration
    data:fieldcatalog type slis_T_fieldcat_alv WITH HEADER LINE.
    *Table of Events
    data:i_event type slis_t_event with header line ,
         wa_event type line of slis_t_event.
    For Layout
    data:i_layout type slis_layout_alv .
    data: text(30) .
    *Internal Table Declaration
    data: begin of it_final occurs 0 ,
    ebeln like ekko-ebeln , "Purchasing Document No.
    bedat like ekko-bedat , "Purchasing Document Date
    matnr like ekpo-matnr , "Material No.
    netwr like ekpo-netwr , "Net Order Value in PO Currancy
    meins like ekpo-meins , "UOM
    chk(1) ,
    light(1) ,
    change like ekpo-menge ,
    end of it_final .
    **select option Declaration
    selection-screen begin of block block.
    select-options: s_ebeln for ekko-ebeln .
    selection-screen end of block block .
    selection-screen begin of block block1 .
    parameters:grid radiobutton group r .
    parameters:list radiobutton group r .
    selection-screen end of block block1 .
    at selection screen
    at selection-screen .
    select single * from ekko where ebeln in s_ebeln .
    if sy-subrc <> 0 .
    message e000(8I) WITH 'No Data Exists' .
    endif .
    start-of-selection .
    if grid = 'X' .
    perform get_data .
    perform event using i_event[] .
    perform field using fieldcatalog[] .
    perform layout using i_layout .
    perform grid_display .
    endif .
    *& Form get_data
    text
    --> p1 text
    <-- p2 text
    form get_data .
    *DATA Retrieval from tables
    SELECT EKKO~EBELN
    EKKO~BEDAT
    EKPO~EBELP
    EKPO~MATNR
    EKPO~NETWR
    EKPO~MEINS
    EKPO~MENGE
    EKPO~BPRME
    INTO CORRESPONDING FIELDS OF table IT_FINAL
    FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
    WHERE EKKO~EBELN IN S_EBELN.
    APPEND IT_FINAL.
    endform. " get_data
    *Getting the Event for Top of Page display.
    *& Form event
    text
    -->P_I_event[] text
    form event using p_i_event type slis_t_event.
    clear p_i_event .
    refresh p_i_event .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    I_LIST_TYPE = 0
    IMPORTING
    ET_EVENTS = p_i_event.
    EXCEPTIONS
    LIST_TYPE_WRONG = 1
    OTHERS = 2.
    read table p_i_event with key name = slis_ev_top_of_page into wa_event.
    if sy-subrc = 0.
    move 'TOP_OF_PAGE_PO' to i_event-form.
    modify p_i_event from i_event index sy-tabix transporting form.
    endif.
    clear i_event.
    endform. " event
    *Display Top-of –Page Details and Logo
    form top_of_page_po .
    clear i_header .
    refresh i_header .
    write sy-datum to text.
    i_header-typ = 'H'.
    i_header-info = 'PURCHASE OREDER DETAILS'.
    append i_header.
    *Logo Display
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = i_header[]
    I_LOGO = 'ENJOYSAP_LOGO'.
    endform .
    *Field Catalog Append
    *& Form field
    text
    -->P_fieldCATALOG[] text
    form field using p_fieldcatalog type slis_t_fieldcat_alv.
    clear fieldcatalog.
    fieldcatalog-fieldname = 'EBELN'.
    fieldcatalog-seltext_m = 'Purchase Order No'.
    fieldcatalog-col_pos = 1.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'BEDAT'.
    fieldcatalog-seltext_m = 'PO Date'.
    fieldcatalog-col_pos = 2.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MATNR'.
    fieldcatalog-seltext_m = 'Material No'.
    fieldcatalog-col_pos = 4.
    fieldcatalog-outputlen = 20.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'NETWR'.
    fieldcatalog-seltext_m = 'Net Value '.
    fieldcatalog-col_pos = 5.
    fieldcatalog-outputlen = 20.
    fieldcatalog-do_sum = 'X'.
    append fieldcatalog .
    clear fieldcatalog.
    fieldcatalog-fieldname = 'MEINS'.
    fieldcatalog-seltext_m = 'Units'.
    fieldcatalog-col_pos = 6.
    fieldcatalog-outputlen = 4.
    append fieldcatalog .
    clear fieldcatalog.
    endform. " field
    *& Form layout
    text
    form layout using p_i_layout TYPE SLIS_LAYOUT_ALV .
    i_layout-zebra = 'X'.
    i_layout-lights_fieldname = 'LIGHT'.
    i_layout-lights_tabname = 'IT_FINAL'.
    i_layout-box_fieldname = 'CHK'.
    i_layout-box_tabname = 'IT_FINAL'.
    i_layout-edit = ' '.
    endform.
    *To display Buttons in the MENU BAR if needed
    FORM SET_PO_PF_STATUS USING P_I_EXTAB TYPE
    SLIS_T_EXTAB.
    SET PF-STATUS 'MENUPO'.
    ENDFORM.
    *Event for Interactive display of ALV report
    form USER_COMMAND using r_ucomm like sy-ucomm
    rs_selfield type slis_selfield .
    if r_ucomm = '&IC1'.
    READ TABLE IT_FINAL index rs_selfield-tabindex.
    set parameter id 'VL1' field it_final-ebeln.
    call transaction 'ME23N'.
    endif.
    endform .
    *Parameters of FM REUSE_ALV_GRID_DISPLAY
    *& Form grid_display
    text
    --> p1 text
    <-- p2 text
    form grid_display .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = SY-REPID
    I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    IS_LAYOUT = I_LAYOUT
    IT_FIELDCAT = FIELDCATALOG[]
    IT_EVENTS = I_EVENT[]
    TABLES
    t_outtab = IT_FINAL.
    endform. " grid_display
    Regards,
    Rusidar S.

  • Problem with OleDBConnection and WindowForm

    Hello,
    this is my first post here, so dont get me wrong :p I have 2 diffrents problems with OleDBConnection. First problem is that when i open for example. access database my window from get smaller and elements are bugged. 
    Second problem is that when i change value in a cell in my datagridrow, source dataset get this change too but problem is when i fire method HasChanged() on my dataset it gives me false so its like i didnt modified cells. But when i remove or add row its
    get changes so idk what im doing wrong. Here is code how i change my datagridview values on cells:
    okienko.dataGridView1.Rows[index_wiersza].Cells[1].Value = textBox2.Text;
    //edit i fixed second problem http://geek-goddess-bonnie.blogspot.com/2009/09/fun-with-datasets.html but still first problem is pain :/
    Thx for help.

    namespace WindowsFormsApplication1
    partial class Form1
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    if (disposing && (components != null))
    components.Dispose();
    base.Dispose(disposing);
    #region Windows Form Designer generated code
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    this.components = new System.ComponentModel.Container();
    this.button1 = new System.Windows.Forms.Button();
    this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
    this.ugToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.fdfToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.fghToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.menuStrip1 = new System.Windows.Forms.MenuStrip();
    this.tEstToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.test2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.problemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.takToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    this.contextMenuStrip1.SuspendLayout();
    this.menuStrip1.SuspendLayout();
    this.SuspendLayout();
    // button1
    this.button1.Location = new System.Drawing.Point(268, 204);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 82);
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.UseVisualStyleBackColor = true;
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // contextMenuStrip1
    this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
    this.ugToolStripMenuItem,
    this.fdfToolStripMenuItem});
    this.contextMenuStrip1.Name = "contextMenuStrip1";
    this.contextMenuStrip1.Size = new System.Drawing.Size(98, 52);
    // ugToolStripMenuItem
    this.ugToolStripMenuItem.Name = "ugToolStripMenuItem";
    this.ugToolStripMenuItem.Size = new System.Drawing.Size(97, 24);
    this.ugToolStripMenuItem.Text = "ug";
    // fdfToolStripMenuItem
    this.fdfToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
    this.fghToolStripMenuItem});
    this.fdfToolStripMenuItem.Name = "fdfToolStripMenuItem";
    this.fdfToolStripMenuItem.Size = new System.Drawing.Size(97, 24);
    this.fdfToolStripMenuItem.Text = "fdf";
    // fghToolStripMenuItem
    this.fghToolStripMenuItem.Name = "fghToolStripMenuItem";
    this.fghToolStripMenuItem.Size = new System.Drawing.Size(100, 24);
    this.fghToolStripMenuItem.Text = "fgh";
    // menuStrip1
    this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
    this.tEstToolStripMenuItem,
    this.test2ToolStripMenuItem});
    this.menuStrip1.Location = new System.Drawing.Point(0, 0);
    this.menuStrip1.Name = "menuStrip1";
    this.menuStrip1.Size = new System.Drawing.Size(408, 28);
    this.menuStrip1.TabIndex = 1;
    this.menuStrip1.Text = "menuStrip1";
    // tEstToolStripMenuItem
    this.tEstToolStripMenuItem.Name = "tEstToolStripMenuItem";
    this.tEstToolStripMenuItem.Size = new System.Drawing.Size(48, 24);
    this.tEstToolStripMenuItem.Text = "TEst";
    // test2ToolStripMenuItem
    this.test2ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
    this.problemToolStripMenuItem});
    this.test2ToolStripMenuItem.Name = "test2ToolStripMenuItem";
    this.test2ToolStripMenuItem.Size = new System.Drawing.Size(56, 24);
    this.test2ToolStripMenuItem.Text = "Test2";
    // problemToolStripMenuItem
    this.problemToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
    this.takToolStripMenuItem});
    this.problemToolStripMenuItem.Name = "problemToolStripMenuItem";
    this.problemToolStripMenuItem.Size = new System.Drawing.Size(175, 24);
    this.problemToolStripMenuItem.Text = "Problem";
    // takToolStripMenuItem
    this.takToolStripMenuItem.Name = "takToolStripMenuItem";
    this.takToolStripMenuItem.Size = new System.Drawing.Size(175, 24);
    this.takToolStripMenuItem.Text = "Tak";
    // Form1
    this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(408, 382);
    this.Controls.Add(this.menuStrip1);
    this.Controls.Add(this.button1);
    this.MainMenuStrip = this.menuStrip1;
    this.Name = "Form1";
    this.Text = "Form1";
    this.contextMenuStrip1.ResumeLayout(false);
    this.menuStrip1.ResumeLayout(false);
    this.menuStrip1.PerformLayout();
    this.ResumeLayout(false);
    this.PerformLayout();
    #endregion
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
    private System.Windows.Forms.ToolStripMenuItem ugToolStripMenuItem;
    private System.Windows.Forms.ToolStripMenuItem fdfToolStripMenuItem;
    private System.Windows.Forms.ToolStripMenuItem fghToolStripMenuItem;
    private System.Windows.Forms.MenuStrip menuStrip1;
    private System.Windows.Forms.ToolStripMenuItem tEstToolStripMenuItem;
    private System.Windows.Forms.ToolStripMenuItem test2ToolStripMenuItem;
    private System.Windows.Forms.ToolStripMenuItem problemToolStripMenuItem;
    private System.Windows.Forms.ToolStripMenuItem takToolStripMenuItem;

  • Spry Collapsible Panel Problem in Safari

    When check my site in Firefox, there are no problems, but
    when I open it in Safari, none of the CSS settings are applied to
    the Collapsible Panel widget. Some settings I have make the widget
    200 px width and make it have a black background, but Safari
    doesn't show these. HERE IS THE CODE OF MY HOMEPAGE:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Transitional//EN" "
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    http://www.w3.org/1999/xhtml">
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html;
    charset=UTF-8" />
    <style type="text/css">
    body {
    background: url(Victorias%20Secret%20models.jpg) fixed
    no-repeat center bottom;
    </style>
    <script src="SpryAssets/SpryCollapsiblePanel.js"
    type="text/javascript"></script>
    <link href="SpryAssets/SpryCollapsiblePanel.css"
    rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="CollapsiblePanel1" class="CollapsiblePanel">
    <div class="CollapsiblePanelTab"
    tabindex="0"></div>
    <div class="CollapsiblePanelContent">
    <p>BLOG</p>
    <p>LISTEN</p>
    <p>WATCH</p>
    <p>ABOUT</p>
    </div>
    </div>
    <script type="text/javascript">
    var CollapsiblePanel1 = new
    Spry.Widget.CollapsiblePanel("CollapsiblePanel1",
    {contentIsOpen:false});
    </script>
    </body>
    </html>
    AND HERE IS THE CODE OF MY CSS
    @charset "UTF-8";
    .CollapsiblePanel {
    margin: 0px;
    padding: 0px;
    width: 200px;
    color: #FFFFFF;
    background-color: #000000;
    .CollapsiblePanelTab {
    background-color: #000000;
    margin: 0px;
    padding: 0px;
    cursor: pointer;
    -moz-user-select: none;
    -khtml-user-select: none;
    font-family: sans-serif;
    font-size: 0.7em;
    font-weight: bold;
    color: #FFFFFF;
    height: 40px;
    .CollapsiblePanelContent {
    margin: 0px;
    padding: 0px;
    background-color: #000;
    .CollapsiblePanelTab a {
    color: black;
    text-decoration: none;
    background-color: #000;
    height: 40px;
    .CollapsiblePanelOpen .CollapsiblePanelTab {
    background-color: #000;
    color: #FFFFFF;
    .CollapsiblePanelTabHover, .CollapsiblePanelOpen
    .CollapsiblePanelTabHover {
    background-color: #000;
    .CollapsiblePanelFocused .CollapsiblePanelTab {
    background-color: #000;
    THANKS FOR YOUR HELP

    Can't tell by that code, can you post a URL to the page?
    Ken Ford
    Adobe Community Expert - Dreamweaver/ColdFusion
    Fordwebs, LLC
    http://www.fordwebs.com
    "kkaiser1" <[email protected]> wrote in
    message news:[email protected]...
    > When check my site in Firefox, there are no problems,
    but when I open it in
    > Safari, none of the CSS settings are applied to the
    Collapsible Panel widget.
    > Some settings I have make the widget 200 px width and
    make it have a black
    > background, but Safari doesn't show these. HERE IS THE
    CODE OF MY HOMEPAGE:
    > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Transitional//EN"
    > "
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    > <html xmlns="
    http://www.w3.org/1999/xhtml">
    > <head>
    >
    > <title>Untitled Document</title>
    >
    > <meta http-equiv="Content-Type" content="text/html;
    charset=UTF-8" />
    > <style type="text/css">
    >
    > body {
    > background: url(Victorias%20Secret%20models.jpg) fixed
    no-repeat center
    > bottom;
    > }
    >
    > </style>
    > <script src="SpryAssets/SpryCollapsiblePanel.js"
    > type="text/javascript"></script>
    > <link href="SpryAssets/SpryCollapsiblePanel.css"
    rel="stylesheet"
    > type="text/css" />
    > </head>
    > <body>
    > <div id="CollapsiblePanel1"
    class="CollapsiblePanel">
    > <div class="CollapsiblePanelTab"
    tabindex="0"></div>
    > <div class="CollapsiblePanelContent">
    > <p>BLOG</p>
    > <p>LISTEN</p>
    > <p>WATCH</p>
    > <p>ABOUT</p>
    > </div>
    > </div>
    > <script type="text/javascript">
    >
    > var CollapsiblePanel1 = new
    Spry.Widget.CollapsiblePanel("CollapsiblePanel1",
    > {contentIsOpen:false});
    >
    > </script>
    > </body>
    > </html>
    >
    >
    > AND HERE IS THE CODE OF MY CSS
    >
    > @charset "UTF-8";
    >
    > .CollapsiblePanel {
    > margin: 0px;
    > padding: 0px;
    > width: 200px;
    > color: #FFFFFF;
    > background-color: #000000;
    > }
    >
    > .CollapsiblePanelTab {
    > background-color: #000000;
    > margin: 0px;
    > padding: 0px;
    > cursor: pointer;
    > -moz-user-select: none;
    > -khtml-user-select: none;
    > font-family: sans-serif;
    > font-size: 0.7em;
    > font-weight: bold;
    > color: #FFFFFF;
    > height: 40px;
    > }
    >
    > .CollapsiblePanelContent {
    > margin: 0px;
    > padding: 0px;
    > background-color: #000;
    > }
    >
    > .CollapsiblePanelTab a {
    > color: black;
    > text-decoration: none;
    > background-color: #000;
    > height: 40px;
    > }
    >
    > .CollapsiblePanelOpen .CollapsiblePanelTab {
    > background-color: #000;
    > color: #FFFFFF;
    > }
    >
    > .CollapsiblePanelTabHover, .CollapsiblePanelOpen
    .CollapsiblePanelTabHover {
    > background-color: #000;
    > }
    >
    > .CollapsiblePanelFocused .CollapsiblePanelTab {
    > background-color: #000;
    > }
    >
    >
    > THANKS FOR YOUR HELP
    >

  • Spry Collapsible Panel problem when previewing in web browser

    Hello.
    I have inserted a spry collapsible panel into my website, made ZERO adjustments to any of the scripting or even css styling, and previewed the panel in my Safari browser. It does not seem to be working correctly. I've attached a couple of images showing what the panel looks like in the browser. My site is not published yet, so I cannot give out the url.
    Is something wrong with the js file? I tried the panel earlier on a different site on the same computer and it was working fine.
    the "Tab" menu text does not fit inside the grey box. Everything collapses fine, however, the gray box is too thin for the text. I've tried adjusting it in the CSS sheet, but it doesn't seem to change anything.
    This is the panel in the collapsed state. It looks bad. I know it's not supposed to work like this.
    When I preview the site in "live view" everything works fine...
    // SpryCollapsiblePanel.js - version 0.8 - Spry Pre-Release 1.6.1
    // Copyright (c) 2006. Adobe Systems Incorporated.
    // All rights reserved.
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of Adobe Systems Incorporated nor the names of its
    //     contributors may be used to endorse or promote products derived from this
    //     software without specific prior written permission.
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.
    (function() { // BeginSpryComponent
    if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
    Spry.Widget.CollapsiblePanel = function(element, opts)
    this.element = this.getElement(element);
    this.focusElement = null;
    this.hoverClass = "CollapsiblePanelTabHover";
    this.openClass = "CollapsiblePanelOpen";
    this.closedClass = "CollapsiblePanelClosed";
    this.focusedClass = "CollapsiblePanelFocused";
    this.enableAnimation = true;
    this.enableKeyboardNavigation = true;
    this.animator = null;
    this.hasFocus = false;
    this.contentIsOpen = false;
    this.openPanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_DOWN;
    this.closePanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_UP;
    Spry.Widget.CollapsiblePanel.setOptions(this, opts);
    this.attachBehaviors();
    Spry.Widget.CollapsiblePanel.prototype.getElement = function(ele)
    if (ele && typeof ele == "string")
    return document.getElementById(ele);
    return ele;
    Spry.Widget.CollapsiblePanel.prototype.addClassName = function(ele, className)
    if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
    return;
    ele.className += (ele.className ? " " : "") + className;
    Spry.Widget.CollapsiblePanel.prototype.removeClassName = function(ele, className)
    if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
    return;
    ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    Spry.Widget.CollapsiblePanel.prototype.hasClassName = function(ele, className)
    if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
    return false;
    return true;
    Spry.Widget.CollapsiblePanel.prototype.setDisplay = function(ele, display)
    if( ele )
    ele.style.display = display;
    Spry.Widget.CollapsiblePanel.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
    if (!optionsObj)
    return;
    for (var optionName in optionsObj)
    if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
    continue;
    obj[optionName] = optionsObj[optionName];
    Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver = function(e)
    this.addClassName(this.getTab(), this.hoverClass);
    return false;
    Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut = function(e)
    this.removeClassName(this.getTab(), this.hoverClass);
    return false;
    Spry.Widget.CollapsiblePanel.prototype.open = function()
    this.contentIsOpen = true;
    if (this.enableAnimation)
    if (this.animator)
    this.animator.stop();
    this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, true, { duration: this.duration, fps: this.fps, transition: this.transition });
    this.animator.start();
    else
    this.setDisplay(this.getContent(), "block");
    this.removeClassName(this.element, this.closedClass);
    this.addClassName(this.element, this.openClass);
    Spry.Widget.CollapsiblePanel.prototype.close = function()
    this.contentIsOpen = false;
    if (this.enableAnimation)
    if (this.animator)
    this.animator.stop();
    this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, false, { duration: this.duration, fps: this.fps, transition: this.transition });
    this.animator.start();
    else
    this.setDisplay(this.getContent(), "none");
    this.removeClassName(this.element, this.openClass);
    this.addClassName(this.element, this.closedClass);
    Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
    if (this.isOpen())
    this.close();
    else
    this.open();
    this.focus();
    return this.stopPropagation(e);
    Spry.Widget.CollapsiblePanel.prototype.onFocus = function(e)
    this.hasFocus = true;
    this.addClassName(this.element, this.focusedClass);
    return false;
    Spry.Widget.CollapsiblePanel.prototype.onBlur = function(e)
    this.hasFocus = false;
    this.removeClassName(this.element, this.focusedClass);
    return false;
    Spry.Widget.CollapsiblePanel.KEY_UP = 38;
    Spry.Widget.CollapsiblePanel.KEY_DOWN = 40;
    Spry.Widget.CollapsiblePanel.prototype.onKeyDown = function(e)
    var key = e.keyCode;
    if (!this.hasFocus || (key != this.openPanelKeyCode && key != this.closePanelKeyCode))
    return true;
    if (this.isOpen() && key == this.closePanelKeyCode)
    this.close();
    else if ( key == this.openPanelKeyCode)
    this.open();
    return this.stopPropagation(e);
    Spry.Widget.CollapsiblePanel.prototype.stopPropagation = function(e)
    if (e.preventDefault) e.preventDefault();
    else e.returnValue = false;
    if (e.stopPropagation) e.stopPropagation();
    else e.cancelBubble = true;
    return false;
    Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers = function()
    var tab = this.getTab();
    if (!tab)
    return;
    var self = this;
    Spry.Widget.CollapsiblePanel.addEventListener(tab, "click", function(e) { return self.onTabClick(e); }, false);
    Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e); }, false);
    Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e); }, false);
    if (this.enableKeyboardNavigation)
    // XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't
    // rely on adding the tabindex attribute if it is missing to enable keyboard navigation
    // by default.
    // Find the first element within the tab container that has a tabindex or the first
    // anchor tag.
    var tabIndexEle = null;
    var tabAnchorEle = null;
    this.preorderTraversal(tab, function(node) {
    if (node.nodeType == 1 /* NODE.ELEMENT_NODE */)
    var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
    if (tabIndexAttr)
    tabIndexEle = node;
    return true;
    if (!tabAnchorEle && node.nodeName.toLowerCase() == "a")
    tabAnchorEle = node;
    return false;
    if (tabIndexEle)
    this.focusElement = tabIndexEle;
    else if (tabAnchorEle)
    this.focusElement = tabAnchorEle;
    if (this.focusElement)
    Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "focus", function(e) { return self.onFocus(e); }, false);
    Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "blur", function(e) { return self.onBlur(e); }, false);
    Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "keydown", function(e) { return self.onKeyDown(e); }, false);
    Spry.Widget.CollapsiblePanel.addEventListener = function(element, eventType, handler, capture)
    try
    if (element.addEventListener)
    element.addEventListener(eventType, handler, capture);
    else if (element.attachEvent)
    element.attachEvent("on" + eventType, handler);
    catch (e) {}
    Spry.Widget.CollapsiblePanel.prototype.preorderTraversal = function(root, func)
    var stopTraversal = false;
    if (root)
    stopTraversal = func(root);
    if (root.hasChildNodes())
    var child = root.firstChild;
    while (!stopTraversal && child)
    stopTraversal = this.preorderTraversal(child, func);
    try { child = child.nextSibling; } catch (e) { child = null; }
    return stopTraversal;
    Spry.Widget.CollapsiblePanel.prototype.attachBehaviors = function()
    var panel = this.element;
    var tab = this.getTab();
    var content = this.getContent();
    if (this.contentIsOpen || this.hasClassName(panel, this.openClass))
    this.addClassName(panel, this.openClass);
    this.removeClassName(panel, this.closedClass);
    this.setDisplay(content, "block");
    this.contentIsOpen = true;
    else
    this.removeClassName(panel, this.openClass);
    this.addClassName(panel, this.closedClass);
    this.setDisplay(content, "none");
    this.contentIsOpen = false;
    this.attachPanelHandlers();
    Spry.Widget.CollapsiblePanel.prototype.getTab = function()
    return this.getElementChildren(this.element)[0];
    Spry.Widget.CollapsiblePanel.prototype.getContent = function()
    return this.getElementChildren(this.element)[1];
    Spry.Widget.CollapsiblePanel.prototype.isOpen = function()
    return this.contentIsOpen;
    Spry.Widget.CollapsiblePanel.prototype.getElementChildren = function(element)
    var children = [];
    var child = element.firstChild;
    while (child)
    if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
    children.push(child);
    child = child.nextSibling;
    return children;
    Spry.Widget.CollapsiblePanel.prototype.focus = function()
    if (this.focusElement && this.focusElement.focus)
    this.focusElement.focus();
    Spry.Widget.CollapsiblePanel.PanelAnimator = function(panel, doOpen, opts)
    this.timer = null;
    this.interval = 0;
    this.fps = 60;
    this.duration = 500;
    this.startTime = 0;
    this.transition = Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition;
    this.onComplete = null;
    this.panel = panel;
    this.content = panel.getContent();
    this.doOpen = doOpen;
    Spry.Widget.CollapsiblePanel.setOptions(this, opts, true);
    this.interval = Math.floor(1000 / this.fps);
    var c = this.content;
    var curHeight = c.offsetHeight ? c.offsetHeight : 0;
    this.fromHeight = (doOpen && c.style.display == "none") ? 0 : curHeight;
    if (!doOpen)
    this.toHeight = 0;
    else
    if (c.style.display == "none")
    // The content area is not displayed so in order to calculate the extent
    // of the content inside it, we have to set its display to block.
    c.style.visibility = "hidden";
    c.style.display = "block";
    // Clear the height property so we can calculate
    // the full height of the content we are going to show.
    c.style.height = "";
    this.toHeight = c.offsetHeight;
    this.distance = this.toHeight - this.fromHeight;
    this.overflow = c.style.overflow;
    c.style.height = this.fromHeight + "px";
    c.style.visibility = "visible";
    c.style.overflow = "hidden";
    c.style.display = "block";
    Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition = function(time, begin, finish, duration) { time /= duration; return begin + ((2 - time) * time * finish); };
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start = function()
    var self = this;
    this.startTime = (new Date).getTime();
    this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop = function()
    if (this.timer)
    clearTimeout(this.timer);
    // If we're killing the timer, restore the overflow property.
    this.content.style.overflow = this.overflow;
    this.timer = null;
    Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation = function()
    var curTime = (new Date).getTime();
    var elapsedTime = curTime - this.startTime;
    if (elapsedTime >= this.duration)
    if (!this.doOpen)
    this.content.style.display = "none";
    this.content.style.overflow = this.overflow;
    this.content.style.height = this.toHeight + "px";
    if (this.onComplete)
    this.onComplete();
    return;
    var ht = this.transition(elapsedTime, this.fromHeight, this.distance, this.duration);
    this.content.style.height = ((ht < 0) ? 0 : ht) + "px";
    var self = this;
    this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
    Spry.Widget.CollapsiblePanelGroup = function(element, opts)
    this.element = this.getElement(element);
    this.opts = opts;
    this.attachBehaviors();
    Spry.Widget.CollapsiblePanelGroup.prototype.setOptions = Spry.Widget.CollapsiblePanel.prototype.setOptions;
    Spry.Widget.CollapsiblePanelGroup.prototype.getElement = Spry.Widget.CollapsiblePanel.prototype.getElement;
    Spry.Widget.CollapsiblePanelGroup.prototype.getElementChildren = Spry.Widget.CollapsiblePanel.prototype.getElementChildren;
    Spry.Widget.CollapsiblePanelGroup.prototype.setElementWidget = function(element, widget)
    if (!element || !widget)
    return;
    if (!element.spry)
    element.spry = new Object;
    element.spry.collapsiblePanel = widget;
    Spry.Widget.CollapsiblePanelGroup.prototype.getElementWidget = function(element)
    return (element && element.spry && element.spry.collapsiblePanel) ? element.spry.collapsiblePanel : null;
    Spry.Widget.CollapsiblePanelGroup.prototype.getPanels = function()
    if (!this.element)
    return [];
    return this.getElementChildren(this.element);
    Spry.Widget.CollapsiblePanelGroup.prototype.getPanel = function(panelIndex)
    return this.getPanels()[panelIndex];
    Spry.Widget.CollapsiblePanelGroup.prototype.attachBehaviors = function()
    if (!this.element)
    return;
    var cpanels = this.getPanels();
    var numCPanels = cpanels.length;
    for (var i = 0; i < numCPanels; i++)
    var cpanel = cpanels[i];
    this.setElementWidget(cpanel, new Spry.Widget.CollapsiblePanel(cpanel, this.opts));
    Spry.Widget.CollapsiblePanelGroup.prototype.openPanel = function(panelIndex)
    var w = this.getElementWidget(this.getPanel(panelIndex));
    if (w && !w.isOpen())
    w.open();
    Spry.Widget.CollapsiblePanelGroup.prototype.closePanel = function(panelIndex)
    var w = this.getElementWidget(this.getPanel(panelIndex));
    if (w && w.isOpen())
    w.close();
    Spry.Widget.CollapsiblePanelGroup.prototype.openAllPanels = function()
    var cpanels = this.getPanels();
    var numCPanels = cpanels.length;
    for (var i = 0; i < numCPanels; i++)
    var w = this.getElementWidget(cpanels[i]);
    if (w && !w.isOpen())
    w.open();
    Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels = function()
    var cpanels = this.getPanels();
    var numCPanels = cpanels.length;
    for (var i = 0; i < numCPanels; i++)
    var w = this.getElementWidget(cpanels[i]);
    if (w && w.isOpen())
    w.close();
    })(); // EndSpryComponent

    I have inserted a spry collapsible panel into my website, made ZERO
    adjustments to any of the scripting or even css styling
    That is good, that means that I have a local copy of the scripting and css files eliminating the need to attach the code to a post.
    Is something wrong with the js file? I tried the panel earlier on a
    different site on the same computer and it was working fine
    The fact that it works on a different site means that something is correct. My assumption is that the scripting and css files are doing their job correctly and to answer your question regarding the js file, no.
    Having eliminated the Spry original JavaScript and CSS files as being the culprits, there must be a problem with the rest of the site, incorrect HTML, other interfering JavaScript or CSS.
    I can keep guessing, but only those persons that are privy to your code can give you any positive input. Please find a way to upload your files so that we can see the code in context.
    To this end, screen captures do not assist in solving the problem, they only add to others' amusement at seeing the problem.
    Ben
    PS I forgot to say, welcome to our community and yes I am a cynical old codger, sorry.

  • Problem displaying drill down STANDARD ALV for a particular record after pressing back button

    I have a simple interactive ALV grid report. NOT 'OO'. It display correctly on initial execution. AT the moment, 6 records. I want it to work such that if i click record '1', a drill-down version of that ALV with only that one record clicked is displayed. This currently occurs correctly. The problem arises when i click the back button and want to click on a new record, say in the 2nd row..this new 2nd row record is not displayed. The first one is displayed again. I tried clearing and fiddling around but then the last record is displayed. I have used the 'ID' field as a 'hotspot' getting picked up by sy-tabindex. Maybe it could be that i shouldn't loop and use  a work area e.g in my select statement. i'm not so sure i've looked around, and tried a few things. I can't get it right yet. My code is below:
    *& Report  ZALV
    REPORT  ZALV.
    TABLES: ZCONTACT.
    TYPE-POOLS: slis. "slis contains all of the ALV data types.
    TYPES: BEGIN OF ty_zcontact.
             INCLUDE STRUCTURE zcontact.
    TYPES: icon TYPE char4, "field holding traffic light value- adding a column to internal table to hold the traffic light
             END OF ty_zcontact.
    DATA: "fieldcatALOG TYPE slis_t_fieldcat_alv WITH HEADER LINE,
           it_zcontact TYPE TABLE OF ty_zcontact,"declares an internal table of type ZCONTACT
           wa_zcontact TYPE ty_zcontact,
           gd_layout TYPE slis_layout_alv,
           gd_repid LIKE sy-repid,
           g_variant TYPE disvariant,
           gx_variant TYPE disvariant,
           g_save TYPE c VALUE 'X',
           it_fieldcat TYPE slis_t_fieldcat_alv,"declares field catalog table of line type alv
           wa_fieldcat TYPE slis_fieldcat_alv, "declares the work area of the field catalog
           it_list_top_of_page TYPE slis_t_listheader.
    DATA: it_fieldcat1 TYPE slis_t_fieldcat_alv,
           wa_fieldcat1 TYPE slis_fieldcat_alv.
    DATA: V_FIELD(30) TYPE C,
    V_VALUE(10) TYPE C.
           "izontact TYPE TABLE OF zcontact.
            "i_logo TYPE OT.
           "ls_layout TYPE slis_layout_alv.
    **Selection Screen details
    *SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
    *PARAMETERS: variant like disvariant-variant.
    *SELECTION-SCREEN END OF BLOCK B1.
    SELECT-OPTIONS:
    age FOR wa_zcontact-age,
    lastnme FOR wa_zcontact-lastname.
    **Getting default variant
    *  AT SELECTION-SCREEN ON age.
    *    SELECT SINGLE age FROM zcontact INTO wa_zcontact-age WHERE age = age.
    *  IF sy-subrc NE 0.
    *    MESSAGE:'That age does not exist mate, Please enter another age' TYPE 'E'.
    *    ENDIF.
    INITIALIZATION.
    *gx_variant-report = sy-repid.
    *CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    *EXPORTING
    *  I_SAVE = G_SAVE
    *  CHANGING
    *    CS_VARIANT = GX_VARIANT
    *  EXCEPTIONS
    *    NOT_FOUND = 2.
    *IF SY-SUBRC = 0.
    *  VARIANT = GX_VARIANT-VARIANT.
    *  ENDIF.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_FIELDCATALOG.
      PERFORM DISPLAY_ALV_REPORT.
      PERFORM top_of_page.
    "g_repid = sy-repid.
    *Fetch data from the database
    FORM DATA_RETRIEVAL.
    SELECT * FROM zcontact INTO TABLE it_zcontact WHERE age IN age AND lastname IN lastnme.
    "assigning traffic light colour to each row based on a condition
    *  IF wa_zcontact-age GE 65.
    *   wa_zcontact-icon = 1. "Red Traffic Light
    *   ELSEIF wa_zcontact-age BETWEEN 40 AND 64.
    *     wa_zcontact-icon = 2. "Yellow traffic light
    *     ELSE.
    *       wa_zcontact-icon = 3." Green traffic light
    *       ENDIF.
    *       MODIFY it_zcontact FROM wa_zcontact TRANSPORTING icon.
    *       CLEAR wa_zcontact.
    ENDFORM.
    FORM BUILD_FIELDCATALOG.
    *Build field catalog
    wa_fieldcat-fieldname = 'ID'.
    "wa_fieldcat-seltext_m = 'The Contact ID'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'LASTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Lastname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FIRSTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Firstname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'DOB'.
    "wa_fieldcat-seltext_m = 'Date Of Birth'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'TEL'.
    "wa_fieldcat-seltext_m = 'Telephone Number'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'ADDRESS'.
    "wa_fieldcat-seltext_m = 'The Address'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'OCCUPATION'.
    "wa_fieldcat-seltext_m = 'The Occupation'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'WEIGHT'.
    "wa_fieldcat-seltext_m = 'WEIGHT'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'AGE'.
    "wa_fieldcat-seltext_m = 'AGE OF THE CONTACT'.
    wa_fieldcat-do_sum   = 'X'.        "Display column total
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'SALARY'.
    "wa_fieldcat-seltext_m = 'SALARY'.
    wa_fieldcat-do_sum   = 'X'.
    APPEND wa_fieldcat TO it_fieldcat.
    gd_layout-lights_fieldname = 'ICON'.
    ENDFORM.
    FORM DISPLAY_ALV_REPORT.
    gd_repid = sy-repid.
    *Pass data and field catalog to ALV function module to display ALV list
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           it_fieldcat            = it_fieldcat
           i_callback_program     = gd_repid
           i_callback_top_of_page =  'TOP_OF_PAGE'
           i_callback_user_command =  'USER_COMMAND'
           i_structure_name       =  'ZCONTACT'
           i_save                 = 'X'
           is_variant             = g_variant
           is_layout     = gd_layout
    TABLES
           t_outtab      = it_zcontact
    EXCEPTIONS
           program_error = 1
           OTHERS        = 2.
    ENDFORM.
    FORM top_of_page.
    *ALV Header declarations
       DATA: it_listheader TYPE slis_t_listheader,
             wa_listheader TYPE slis_listheader,
             t_line like wa_listheader-info,
             ld_lines TYPE I,
             ld_linesc(10) TYPE C.
    wa_listheader-typ = 'H'.
    wa_listheader-info = 'Contact Details'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-info = sy-repid.
    wa_listheader-key = 'Program Name:'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-info = sy-uname.
    wa_listheader-key = 'User Name:'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-key = 'Run Date :'.
    CONCATENATE sy-datum+6(2)
                 sy-datum+4(2)
                 sy-datum(4)
                 INTO wa_listheader-info
                 SEPARATED BY '/'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
    wa_listheader-typ = 'S'.
    wa_listheader-key = 'Time :'.
    CONCATENATE sy-uzeit(2)
                 sy-uzeit+2(2)
                 sy-uzeit+4(2)
                 INTO wa_listheader-info
                 SEPARATED BY ':'.
    APPEND wa_listheader TO it_listheader.
    CLEAR wa_listheader.
       CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
           it_list_commentary = it_listheader
           i_logo = 'KLOGO'.
    ENDFORM. "top_of_page
    *& Form sub_user_command
    FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM
    P_SELTAB TYPE SLIS_SELFIELD.
    CASE P_UCOMM.
       WHEN '&IC1'.
    CASE p_seltab-fieldname.
       WHEN 'ID'.
       READ TABLE it_zcontact INTO wa_zcontact INDEX p_seltab-tabindex.
       PERFORM DATA_RETRIEVAL1.
       PERFORM BUILD_FIELDCATALOG1.
       PERFORM SECOND_GRID.
       ENDCASE.
       ENDCASE.
    ENDFORM. "
    FORM DATA_RETRIEVAL1.
    SELECT * FROM zcontact INTO TABLE it_zcontact WHERE id EQ wa_zcontact-id.
    ENDFORM.
    FORM BUILD_FIELDCATALOG1.
    *Build field catalog
    CLEAR: wa_fieldcat, it_fieldcat.
    wa_fieldcat-fieldname = 'ID'.
    "wa_fieldcat-seltext_m = 'The Contact ID'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'LASTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Lastname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    wa_fieldcat-fieldname = 'FIRSTNAME'.
    "wa_fieldcat-seltext_m = 'Contact Firstname'.
    APPEND wa_fieldcat TO it_fieldcat.
    CLEAR wa_fieldcat.
    ENDFORM.
    FORM SECOND_GRID.
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM = SY-REPID
         IT_FIELDCAT = IT_FIELDCAT
         i_structure_name       =  'ZCONTACT'
         i_callback_user_command =  'USER_COMMAND'
         TABLES
           T_OUTTAB = IT_ZCONTACT.
       ENDFORM.

    Hi Ten Mariga,
                     I wonder why the second select Query is needed at all instead you can use
    ---> Not Needed
    FORM DATA_RETRIEVAL1.
    SELECT * FROM zcontact INTO TABLE it_zcontact WHERE id EQ wa_zcontact-id.
    ENDFORM.
    ----> Instead you can do
       READ TABLE it_zcontact INTO wa_zcontact INDEX p_seltab-tabindex.
      Append wa_zcontact to Second_table.
    And you can use the Second_table to display the second ALV. The second Select Query will affect the performance too.
    Cheers,
    Krishnakumar B.

  • Alv report problem

    hi,
    i have problem in ALV.
    my requirement is in a ALV report if i double click on a row it has to take me to another transaction ( say for eg vf03).
    how should i do it.
    john.

    hi
    good
    try this report
    MESSAGE-ID ZZ_9838                      .
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
           EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           BUKRS LIKE EKKO-BUKRS,
           BSART LIKE EKKO-BSART,
           LIFNR LIKE EKKO-LIFNR,
           END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
          WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MATNR LIKE EKPO-MATNR,
           MENGE LIKE EKPO-MENGE,
           MEINS LIKE EKPO-MEINS,
           NETPR LIKE EKPO-NETPR,
           END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    declaration for events table where user comand or set PF status will
    be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENT TYPE SLIS_ALV_EVENT.
    declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
          I_VARIANT1 TYPE DISVARIANT,
          I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
      V_REPID = SY-REPID.
      PERFORM BUILD_FIELDCATLOG.
      PERFORM EVENT_CALL.
      PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
      PERFORM DISPLAY_ALV_REPORT.
    *&      Form  BUILD_FIELDCATLOG
          Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'AEDAT'.
      WA_FIELDCAT-SELTEXT_M = 'DATE.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'LIFNR'.
      WA_FIELDCAT-NO_OUT    = 'X'.
      WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
    EXCEPTIONS
       LIST_TYPE_WRONG       = 1
       OTHERS                = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "EVENT_CALL
    *&      Form  POPULATE_EVENT
         Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'USER_COMMAND'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
      ENDIF.
    ENDFORM.                    "POPULATE_EVENT
    *&      Form  data_retrieval
      retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM.                    "data_retrieval
    *&      Form  bUild_listheader
          text
         -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
      DATA HLINE TYPE SLIS_LISTHEADER.
      HLINE-INFO = 'this is my first alv pgm'.
      HLINE-TYP = 'H'.
    ENDFORM.                    "build_listheader
    *&      Form  display_alv_report
          text
    FORM DISPLAY_ALV_REPORT.
      V_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
         I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
         I_GRID_TITLE                      = I_TITLE_EKKO
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         = ALV_LAYOUT
         IT_FIELDCAT                       = I_FIELDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
        i_default                         = 'ZLAY1'
         I_SAVE                            = 'A'
        is_variant                        = i_variant
         IT_EVENTS                         = V_EVENTS
        TABLES
          T_OUTTAB                          = IT_EKKO
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "display_alv_report
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
       i_logo                   =
       I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN '&IC1'.
          READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
          PERFORM BUILD_FIELDCATLOG_EKPO.
          PERFORM EVENT_CALL_EKPO.
          PERFORM POPULATE_EVENT_EKPO.
          PERFORM DATA_RETRIEVAL_EKPO.
          PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
          PERFORM DISPLAY_ALV_EKPO.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELDCATLOG_EKPO
          text
    FORM BUILD_FIELDCATLOG_EKPO.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELP'.
      WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MENGE'.
      WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MEINS'.
      WA_FIELDCAT-SELTEXT_M = 'UOM'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'NETPR'.
      WA_FIELDCAT-SELTEXT_M = 'PRICE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG_EKPO
    *&      Form  event_call_ekpo
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
    EXCEPTIONS
      LIST_TYPE_WRONG       = 1
      OTHERS                = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "event_call_ekpo
    *&      Form  POPULATE_EVENT
           Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      ENDFORM.                    "POPULATE_EVENT
    *&      Form  TOP_OF_PAGE
          text
    FORM F_TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
       i_logo                   =
       I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'CHECKING PGM'.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = 'F_USER_COMMAND'
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = I_TITLE_EKPO
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       = I_FIELDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         =
       I_SAVE                            = 'A'
      IS_VARIANT                        =
       IT_EVENTS                         = V_EVENTS
      TABLES
        T_OUTTAB                          = IT_EKPO
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.
    implement your logic in it and i hope this will definitely work.
    thanks
    mrutyun

  • Spry problem on IE

    hello i've got a problem with a spry menu
    on opera and other there's no problem but on IE the will not appear correctly
    here to see on IE
    and for opera
    here is the code from the pages
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <!--#include virtual="/Connections/cieffedb.asp" -->
    <%
    dim fs,fo,tfile,cpt,rsImage, crnd, first
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    Set fo=fs.GetFolder("c:\inetpub\wwwroot\slideshow")
    Set tfile=fo.CreateTextFile("sample.xml",true)
    set rsImage=server.CreateObject("adodb.recordset")
    connstring="dsn=cieffeDB"
    cpt = 0
    first = true
    randomize
    crnd = int(rnd(20)*10)
    rsImage.source = "select image from Images where id_page = 3 order by Rnd((-1000*id)*Time())"
    rsImage.activeconnection = connstring
    rsImage.locktype = 1
    rsImage.open()
    tfile.WriteLine("<?xml version=""1.0"" encoding=""UTF-8""?>")
    tfile.WriteLine("<slideshow>")
    while (cpt<15)
        tfile.WriteLine("<slide>")
        tfile.WriteLine("<image url='"&rsImage.Fields.Item("image").Value& "' duration='5' fill = 'stretch' />")
    tfile.WriteLine("<link>")
    tfile.WriteLine("<area x="& Chr(34)&"1"& Chr(34)& " y="& Chr(34)&"1"& Chr(34)&" width="& Chr(34)&"715"& Chr(34)&" height="& Chr(34)&"80"& Chr(34)&" url="& Chr(34)&"http://www.cieffe.be"& Chr(34)&" target="& Chr(34)&"_parent"& Chr(34)& "/>")
    tfile.WriteLine("</link>")  
    tfile.WriteLine("</slide>")
    rsImage.movenext()  
    cpt = cpt+1
    wend
    tfile.WriteLine("</slideshow>")
    tfile.Close
    rsImage.close
    set tfile=nothing
    set rsImage = nothing
    set fo=nothing
    set fs=nothing
    %>
    <%
    ' *** Logout the current user.
    MM_Logout = CStr(Request.ServerVariables("URL")) & "?MM_Logoutnow=1"
    If (CStr(Request("MM_Logoutnow")) = "1") Then
      Session.Contents.Remove("MM_Username")
      Session.Contents.Remove("MM_UserAuthorization")
      if application("langue") = "FR" then
      MM_logoutRedirectPage = "/acceuil.asp?lang=FR"
      end if
      if application("langue") = "NL" then
      MM_logoutRedirectPage = "/acceuil.asp?lang=NL"
      end if
      if application("langue") = "EN" then
      MM_logoutRedirectPage = "/acceuil.asp?lang=EN"
      end if
      ' redirect with URL parameters (remove the "MM_Logoutnow" query param).
      if (MM_logoutRedirectPage = "") Then MM_logoutRedirectPage = CStr(Request.ServerVariables("URL"))
      If (InStr(1, UC_redirectPage, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
        MM_newQS = "?"
        For Each Item In Request.QueryString
          If (Item <> "MM_Logoutnow") Then
            If (Len(MM_newQS) > 1) Then MM_newQS = MM_newQS & "&"
            MM_newQS = MM_newQS & Item & "=" & Server.URLencode(Request.QueryString(Item))
          End If
        Next
        if (Len(MM_newQS) > 1) Then MM_logoutRedirectPage = MM_logoutRedirectPage & MM_newQS
      End If
      session("login")=""
      Response.Redirect(MM_logoutRedirectPage)
    End If
    %>
    <%  application("langue") = Request.QueryString("lang")
    %>
    <%
    Dim categorie
    Dim categorie_cmd
    Dim categorie_numRows
    Set categorie_cmd = Server.CreateObject ("ADODB.Command")
    categorie_cmd.ActiveConnection = MM_cieffedb_STRING
    categorie_cmd.CommandText = "SELECT CategoryFR, CategoryNL, CategoryEN, N°, CommentaireFR,CommentaireNL, CommentaireEN FROM Categories"
    categorie_cmd.Prepared = true
    Set categorie = categorie_cmd.Execute
    categorie_numRows = 0
    %>
    <%
    Dim images
    Dim images_cmd
    Dim images_numRows
    Set images_cmd = Server.CreateObject ("ADODB.Command")
    images_cmd.ActiveConnection = MM_cieffedb_STRING
    images_cmd.CommandText = "SELECT image FROM images, categories WHERE N° = id_categorie"
    images_cmd.Prepared = true
    Set images = images_cmd.Execute
    images_numRows = 0
    %>
    <%
    Dim Repeat2__numRows
    Dim Repeat2__index
    Repeat2__numRows = 10
    Repeat2__index = 0
    images_numRows = images_numRows + Repea2__numRows
    %>
    <%
    Dim Repeat1__numRows
    Dim Repeat1__index
    Repeat1__numRows = 10
    Repeat1__index = 0
    categorie_numRows = categorie_numRows + Repeat1__numRows
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Categorie</title>
    <link href="/template/style.css" rel="stylesheet" type="text/css" />
    <!--[if IE]>
    <link  href="/template/ie.css"  type="text/css" />
    <![endif]-->
    <script src="/SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
    <link href="/SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="global">
    <div id="container">
      <div id="line1"> </div>
    <div id="line2" align="right"> <a href="categorie.asp?lang=FR" target="_parent">FR</a> <a href="categorie.asp?lang=NL" target="_parent">NL</a> <a href="categorie.asp?lang=EN" target="_parent">EN</a> </div>
    <div style="clear: both"></div>
    <div id="name">CIEFFE BENELUX</div>
    <div id="left">
    </div>
    <div id="center">
    <% If application("langue")="FR"  Then %>
    <div id="menu">
        <p><a href="acceuil.asp?lang=FR">Acceuil</a><br />
    menu </p>
        <p><a href="categorie.asp?lang=FR">Catégories</a><br />
    menu </p>
        <%if session("login") <> "OK" then%>
      <p><a href="login.asp?lang=FR">Login</a><br />
    menu </p>
         <%else%>
         <p><a href="<%= MM_Logout %>">Log out</a><br />
    menu </p>
        <%END IF%>
      <p><a href="enregistrement.asp?lang=FR">Incription</a><br />
    menu </p>
      <p><a href="contact.asp?lang=FR">Contactez nous</a><br />
    menu </p>
         </div>
      <% End If %>
        <% If application("langue")="NL" Then %>
        <div id="menu">
    <p><a href="acceuil.asp?lang=NL">Home</a><br />
    menu </p>
    <p><a href="categorie.asp?lang=NL">Categorieën</a><br />
    menu </p>
       <%if session("login") <> "OK" then%>
      <p><a href="login.asp?lang=NL">Login</a><br />
    menu </p>
         <%else%>
         <p><a href="<%= MM_Logout %>">Log out</a><br />
    menu </p>
         <%END IF%>
      <p><a href="enregistrement.asp?lang=NL">Opschrift</a><br />
    menu </p>
      <p><a href="contact.asp?lang=NL">Contact</a><br />
    menu </p>
        </div>
        <% End If %>
        <% If application("langue")="EN"  Then %>
        <div id="menu">
    <p><a href="acceuil.asp?lang=EN">Home</a><br />
    menu </p>
    <p><a href="categorie.asp?lang=EN">Categories</a><br />
    menu </p>
       <%if session("login") <> "OK" then%>
      <p><a href="login.asp?lang=EN">Login</a><br />
    menu </p>
         <%else%>
         <p><a href="<%= MM_Logout %>">Log out</a><br />
    menu </p>
         <%END IF%>
      <p><a href="enregistrement.asp?lang=EN">Registration</a><br />
    menu </p>
      <p><a href="contact.asp?lang=EN">Contact us</a><br />
    menu </p>
        </div>
        <% End If %>
    </div>
    <div  id="right">
    <center> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
            WIDTH="716"
            HEIGHT="80"
            id="slideshow">
    <PARAM NAME="movie" VALUE="slideshow\slideshow.swf?xml_source=slideshow\sample.xml"/>
    <PARAM NAME="quality" VALUE="high" />
    <PARAM NAME="bgcolor" VALUE="#000000" />
    <param name="allowScriptAccess" value="sameDomain" />
    <EMBED src="\slideshow\slideshow.swf?xml_source=slideshow\sample.xml"
    quality="high"
    bgcolor="#000000"
    WIDTH="715"
    HEIGHT="80"
    NAME="slideshow"
    allowScriptAccess="sameDomain"
    swLiveConnect="true"
    TYPE="application/x-shockwave-flash" 
    PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
    </EMBED>
    </OBJECT>
    </center>
    <% If application("langue")="FR" Then %>
      <ul id="MenuBar1" class="MenuBarHorizontal">
      <% While ((NOT categorie.EOF)) %>
          <li><a class="MenuBarItemSubmenu" href="/produits.asp?Num=<%=(categorie.Fields.Item("N°").Value)%>&lang=FR"><%=(categorie.F ields.Item("CategoryFR").Value)%> </a>
          <%
         dim rs,numProd
      numProd=categorie.fields.item("N°").value
         connstring="dsn=cieffeDB"
      set rs=server.CreateObject("adodb.recordset")
      rs.source = "select * from Produits where NumCategorie = " & numProd
      rs.activeconnection = connstring
            rs.locktype = 1
            rs.open()%>
          <ul>
       <% While ( (NOT rs.EOF)) %>
             <li><a class="MenuBarItemSubmenu" href="#"><%=(rs.Fields.Item("NomFR").Value)%></a>
             <%
         dim rs11,numCat
      numCat=rs.fields.item("ID").value
         connstring="dsn=cieffeDB"
      set rs11=server.CreateObject("adodb.recordset")
      rs11.source = "select * from marque where id_Produit = " & numCat
      rs11.activeconnection = connstring
            rs11.locktype = 1
            rs11.open()%>
            <ul>
            <% While ( (NOT rs11.EOF)) %>
               <li><a class="MenuBarItemSubmenu" href="#"><%=rs11.fields.item("marque").value%></a>
               <%
           dim rs12, numMarq
        numMarq = rs11.fields.item("ID").value
        connstring = "dsn=cieffeDB"
        set rs12 = server.CreateObject("adodb.recordset")
        rs12.source = "select * from produitsM where id_marque ="& numMarq
        rs12.activeconnection = connstring
        rs12.locktype = 1
        rs12.open()
         %>
               <ul>
                    <%while (not rs12.EOF)%>
                        <li><a class="MenuBarItemSubmenu" href="#"><%=rs12.fields.item("nom").value%></a>
                        <%
            dim rs13,numPrd
            connstring = "dsn=cieffeDB"
            numPrd = rs12.fields.item("ID").value
            set rs13 = server.CreateObject("adodb.recordset")
            rs13.source = "select * from type where id_produitM ="&NumPrd
            rs13.activeconnection = connstring
            rs13.locktype = 1
            rs13.open()
         %>
                        <ul>
                        <%while (not rs13.EOF)%>
                           <li><a class="MenuBarItemSubmenu" href="#"><%=rs13.fields.item("type").value%></a></li>
                        <%
           rs13.movenext()
           WEND
         %>   
                        <%
           rs13.close()
           set rs13 = nothing
         %>
                        </ul>
                      </li>
                    <%rs12.movenext()
             WEND
           %>
               </ul>
                   <% rs12.close()
             set rs12=nothing
          %>
               </li>
             <%rs11.movenext()
         WEND%>
            </ul>
             <% rs11.close()
           set rs11=nothing%>
            </li>
       <%
         rs.MoveNext()
         WEND%>
          </ul>  
         </li>
        <% rs.close()
           set rs=nothing
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1%>
      <%categorie.MoveNext()
    Wend
    %>
    <%categorie.close()
      Set categorie = categorie_cmd.Execute
      categorie_numRows = 0
      Repeat1__index = 0
      Repeat1__numRows = 10%>
    </ul>
    <p> </p>
    <p> </p>
    <table border="1" >
    <% While ((NOT categorie.EOF)) %>
          <td width="96"><%=(categorie.Fields.Item("CommentaireFR").Value)%></td>
        <%
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      categorie.MoveNext()
    Wend
    %>
    </table>
    <% End If %>
    <% If application("langue")="NL" Then %>
    <ul id="MenuBar1" class="MenuBarHorizontal">
      <% While ((NOT categorie.EOF)) %>
          <li><a class="MenuBarItemSubmenu" href="/produits.asp?Num=<%=(categorie.Fields.Item("N°").Value)%>&lang=NL"><%=(categorie.F ields.Item("CategoryNL").Value)%> </a>
          <%
         dim rs2,numProd2
      numProd2=categorie.fields.item("N°").value
         connstring="dsn=cieffeDB"
      set rs2=server.CreateObject("adodb.recordset")
      rs2.source = "select * from Produits where NumCategorie = " & numProd2
      rs2.activeconnection = connstring
            rs2.locktype = 1
            rs2.open()%>
          <ul>
       <% While ( (NOT rs2.EOF)) %>
             <li><a href="#"><%=(rs2.Fields.Item("NomNL").Value)%></a>
              <%
         dim rs21,numCat2
      numCat2=rs2.fields.item("ID").value
         connstring="dsn=cieffeDB"
      set rs21=server.CreateObject("adodb.recordset")
      rs21.source = "select * from marque where id_Produit = " & numCat2
      rs21.activeconnection = connstring
            rs21.locktype = 1
            rs21.open()%>
            <ul>
            <% While ( (NOT rs21.EOF)) %>
               <li><a href="#"><%=rs21.fields.item("marque").value%></a>
             <%rs21.movenext()
         WEND%>
             <% rs21.close()
           set rs21=nothing%></ul></li>
             <%
         rs2.MoveNext()
         WEND%>
          </ul>  
          </li>
        <% rs2.close()
           set rs2=nothing
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      categorie.MoveNext()
    Wend
    %>
    <%categorie.close()
      Set categorie = categorie_cmd.Execute
      categorie_numRows = 0
      Repeat1__index = 0
      Repeat1__numRows = 10%>
    </ul>
    <p> </p>
    <p> </p>
    <table border="1" >
    <% While ((NOT categorie.EOF)) %>
          <td width="96"><%=(categorie.Fields.Item("CommentaireNL").Value)%></td>
        <%
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      categorie.MoveNext()
    Wend
    %>
    </table>
    <% End If %>
    <% If application("langue")="EN" Then %>
    <ul id="MenuBar1" class="MenuBarHorizontal">
      <% While ((NOT categorie.EOF)) %>
          <li><a class="MenuBarItemSubmenu" href="/produits.asp?Num=<%=(categorie.Fields.Item("N°").Value)%>&lang=EN"><%=(categorie.F ields.Item("CategoryEN").Value)%> </a>
          <%
         dim rs3,numProd3
      numProd3=categorie.fields.item("N°").value
         connstring="dsn=cieffeDB"
      set rs3=server.CreateObject("adodb.recordset")
      rs3.source = "select * from Produits where NumCategorie = " & numProd3
      rs3.activeconnection = connstring
            rs3.locktype = 1
            rs3.open()%>
          <ul>
       <% While ( (NOT rs3.EOF)) %>
             <li><a href="#"><%=(rs3.Fields.Item("NomEN").Value)%></a>
             </li>
             <%
         rs3.MoveNext()
         WEND%>
          </ul>  
          </li>
        <% rs3.close()
           set rs3=nothing
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      categorie.MoveNext()
    Wend
    %>
    <%categorie.close()
      Set categorie = categorie_cmd.Execute
      categorie_numRows = 0
      Repeat1__index = 0
      Repeat1__numRows = 10%>
    </ul>
    <p> </p>
    <p> </p>
    <table border="1" >
    <% While ((NOT categorie.EOF)) %>
          <td width="96"><%=(categorie.Fields.Item("CommentaireFR").Value)%></td>
        <%
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      categorie.MoveNext()
    Wend
    %>
    </table><% End If %>
    <table border="2">
      <tr>
        <td>image</td>
      </tr>
      <% While ((Repeat2__numRows <> 0) AND (NOT images.EOF)) %>
        <tr>
          <td><img src="<%=(images.Fields.Item("image").Value)%>" width="150" height="150" /></td>
        </tr>
        <%
      Repeat2__index=Repeat2__index+1
      Repeat2__numRows=Repeat2__numRows-1
      images.MoveNext()
    Wend
    %>
    </table>
    </div>
    </div>
    </div>
    </div>
    <script type="text/javascript">
    <!--
    var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
    //-->
    </script>
    </body>
    </html>
    <%
    images.Close()
    Set images = Nothing
    %>
    <%
    categorie.Close()
    Set categorie = Nothing
    %>
    than the css
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    cursor: default;
    width: auto;
    background-color: #FF9000;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
    z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    position: relative;
    text-align: center;
    cursor: pointer;
    width: 102.5px;
    float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    z-index: 1020;
    cursor: default;
    width: 100 px;
    position: absolute;
    left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
    left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
    width: 100px;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
    position: absolute;
    margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
    left: auto;
    top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
    border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
    display: block;
    cursor: pointer;
    background-color: #EEE;
    height:35px;
    padding: 7px 7px;
    color: #333;
    text-decoration: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
    background-color: #FF9000;
    color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
    background-color: #FF9000;
    color: #FFF;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
    background-image: url(boutonNorm.gif);
    background-repeat: no-repeat;
    /* background-position: 95% 50%;*/
    size:auto;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
    background-image: url(boutonSourisDess.gif);
    background-repeat: no-repeat;
    /* background-position: 95% 50%;*/
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
    background-image: url(boutonNorm.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
    background-image: url(boutonSourisDess.gif);
    background-repeat: no-repeat;
    background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
    position: absolute;
    z-index: 1010;
    filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
    ul.MenuBarHorizontal li.MenuBarItemIE
      display: inline;
      f\loat: left;
      background: #FFF;
    and for the end the js
    // SpryMenuBar.js - version 0.12 - Spry Pre-Release 1.6.1
    // Copyright (c) 2006. Adobe Systems Incorporated.
    // All rights reserved.
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of Adobe Systems Incorporated nor the names of its
    //     contributors may be used to endorse or promote products derived from this
    //     software without specific prior written permission.
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.
    SpryMenuBar.js
    This file handles the JavaScript for Spry Menu Bar.  You should have no need
    to edit this file.  Some highlights of the MenuBar object is that timers are
    used to keep submenus from showing up until the user has hovered over the parent
    menu item for some time, as well as a timer for when they leave a submenu to keep
    showing that submenu until the timer fires.
    var Spry; if (!Spry) Spry = {}; if (!Spry.Widget) Spry.Widget = {};
    Spry.BrowserSniff = function()
    var b = navigator.appName.toString();
    var up = navigator.platform.toString();
    var ua = navigator.userAgent.toString();
    this.mozilla = this.ie = this.opera = this.safari = false;
    var re_opera = /Opera.([0-9\.]*)/i;
    var re_msie = /MSIE.([0-9\.]*)/i;
    var re_gecko = /gecko/i;
    var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
    var r = false;
    if ( (r = ua.match(re_opera))) {
      this.opera = true;
      this.version = parseFloat(r[1]);
    } else if ( (r = ua.match(re_msie))) {
      this.ie = true;
      this.version = parseFloat(r[1]);
    } else if ( (r = ua.match(re_safari))) {
      this.safari = true;
      this.version = parseFloat(r[2]);
    } else if (ua.match(re_gecko)) {
      var re_gecko_version = /rv:\s*([0-9\.]+)/i;
      r = ua.match(re_gecko_version);
      this.mozilla = true;
      this.version = parseFloat(r[1]);
    this.windows = this.mac = this.linux = false;
    this.Platform = ua.match(/windows/i) ? "windows" :
         (ua.match(/linux/i) ? "linux" :
         (ua.match(/mac/i) ? "mac" :
         ua.match(/unix/i)? "unix" : "unknown"));
    this[this.Platform] = true;
    this.v = this.version;
    if (this.safari && this.mac && this.mozilla) {
      this.mozilla = false;
    Spry.is = new Spry.BrowserSniff();
    // Constructor for Menu Bar
    // element should be an ID of an unordered list (<ul> tag)
    // preloadImage1 and preloadImage2 are images for the rollover state of a menu
    Spry.Widget.MenuBar = function(element, opts)
    this.init(element, opts);
    Spry.Widget.MenuBar.prototype.init = function(element, opts)
    this.element = this.getElement(element);
    // represents the current (sub)menu we are operating on
    this.currMenu = null;
    this.showDelay = 250;
    this.hideDelay = 600;
    if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (Spry.is.ie && typeof document.uniqueID == 'undefined'))
      // bail on older unsupported browsers
      return;
    // Fix IE6 CSS images flicker
    if (Spry.is.ie && Spry.is.version < 7){
      try {
       document.execCommand("BackgroundImageCache", false, true);
      } catch(err) {}
    this.upKeyCode = Spry.Widget.MenuBar.KEY_UP;
    this.downKeyCode = Spry.Widget.MenuBar.KEY_DOWN;
    this.leftKeyCode = Spry.Widget.MenuBar.KEY_LEFT;
    this.rightKeyCode = Spry.Widget.MenuBar.KEY_RIGHT;
    this.escKeyCode = Spry.Widget.MenuBar.KEY_ESC;
    this.hoverClass = 'MenuBarItemHover';
    this.subHoverClass = 'MenuBarItemSubmenuHover';
    this.subVisibleClass ='MenuBarSubmenuVisible';
    this.hasSubClass = 'MenuBarItemSubmenu';
    this.activeClass = 'MenuBarActive';
    this.isieClass = 'MenuBarItemIE';
    this.verticalClass = 'MenuBarVertical';
    this.horizontalClass = 'MenuBarHorizontal';
    this.enableKeyboardNavigation = true;
    this.hasFocus = false;
    // load hover images now
    if(opts)
      for(var k in opts)
       if (typeof this[k] == 'undefined')
        var rollover = new Image;
        rollover.src = opts[k];
      Spry.Widget.MenuBar.setOptions(this, opts);
    // safari doesn't support tabindex
    if (Spry.is.safari)
      this.enableKeyboardNavigation = false;
    if(this.element)
      this.currMenu = this.element;
      var items = this.element.getElementsByTagName('li');
      for(var i=0; i<items.length; i++)
       if (i > 0 && this.enableKeyboardNavigation)
        items[i].getElementsByTagName('a')[0].tabIndex='-1';
       this.initialize(items[i], element);
       if(Spry.is.ie)
        this.addClassName(items[i], this.isieClass);
        items[i].style.position = "static";
      if (this.enableKeyboardNavigation)
       var self = this;
       this.addEventListener(document, 'keydown', function(e){self.keyDown(e); }, false);
      if(Spry.is.ie)
       if(this.hasClassName(this.element, this.verticalClass))
        this.element.style.position = "relative";
       var linkitems = this.element.getElementsByTagName('a');
       for(var i=0; i<linkitems.length; i++)
        linkitems[i].style.position = "relative";
    Spry.Widget.MenuBar.KEY_ESC = 27;
    Spry.Widget.MenuBar.KEY_UP = 38;
    Spry.Widget.MenuBar.KEY_DOWN = 40;
    Spry.Widget.MenuBar.KEY_LEFT = 37;
    Spry.Widget.MenuBar.KEY_RIGHT = 39;
    Spry.Widget.MenuBar.prototype.getElement = function(ele)
    if (ele && typeof ele == "string")
      return document.getElementById(ele);
    return ele;
    Spry.Widget.MenuBar.prototype.hasClassName = function(ele, className)
    if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
      return false;
    return true;
    Spry.Widget.MenuBar.prototype.addClassName = function(ele, className)
    if (!ele || !className || this.hasClassName(ele, className))
      return;
    ele.className += (ele.className ? " " : "") + className;
    Spry.Widget.MenuBar.prototype.removeClassName = function(ele, className)
    if (!ele || !className || !this.hasClassName(ele, className))
      return;
    ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    // addEventListener for Menu Bar
    // attach an event to a tag without creating obtrusive HTML code
    Spry.Widget.MenuBar.prototype.addEventListener = function(element, eventType, handler, capture)
    try
      if (element.addEventListener)
       element.addEventListener(eventType, handler, capture);
      else if (element.attachEvent)
       element.attachEvent('on' + eventType, handler);
    catch (e) {}
    // createIframeLayer for Menu Bar
    // creates an IFRAME underneath a menu so that it will show above form controls and ActiveX
    Spry.Widget.MenuBar.prototype.createIframeLayer = function(menu)
    var layer = document.createElement('iframe');
    layer.tabIndex = '-1';
    layer.src = 'javascript:""';
    layer.frameBorder = '0';
    layer.scrolling = 'no';
    menu.parentNode.appendChild(layer);
    layer.style.left = menu.offsetLeft + 'px';
    layer.style.top = menu.offsetTop + 'px';
    layer.style.width = menu.offsetWidth + 'px';
    layer.style.height = menu.offsetHeight + 'px';
    // removeIframeLayer for Menu Bar
    // removes an IFRAME underneath a menu to reveal any form controls and ActiveX
    Spry.Widget.MenuBar.prototype.removeIframeLayer =  function(menu)
    var layers = ((menu == this.element) ? menu : menu.parentNode).getElementsByTagName('iframe');
    while(layers.length > 0)
      layers[0].parentNode.removeChild(layers[0]);
    // clearMenus for Menu Bar
    // root is the top level unordered list (<ul> tag)
    Spry.Widget.MenuBar.prototype.clearMenus = function(root)
    var menus = root.getElementsByTagName('ul');
    for(var i=0; i<menus.length; i++)
      this.hideSubmenu(menus[i]);
    this.removeClassName(this.element, this.activeClass);
    // bubbledTextEvent for Menu Bar
    // identify bubbled up text events in Safari so we can ignore them
    Spry.Widget.MenuBar.prototype.bubbledTextEvent = function()
    return Spry.is.safari && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget));
    // showSubmenu for Menu Bar
    // set the proper CSS class on this menu to show it
    Spry.Widget.MenuBar.prototype.showSubmenu = function(menu)
    if(this.currMenu)
      this.clearMenus(this.currMenu);
      this.currMenu = null;
    if(menu)
      this.addClassName(menu, this.subVisibleClass);
      if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
       if(!this.hasClassName(this.element, this.horizontalClass) || menu.parentNode.parentNode != this.element)
        menu.style.top = menu.parentNode.offsetTop + 'px';
      if(Spry.is.ie && Spry.is.version < 7)
       this.createIframeLayer(menu);
    this.addClassName(this.element, this.activeClass);
    // hideSubmenu for Menu Bar
    // remove the proper CSS class on this menu to hide it
    Spry.Widget.MenuBar.prototype.hideSubmenu = function(menu)
    if(menu)
      this.removeClassName(menu, this.subVisibleClass);
      if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
       menu.style.top = '';
       menu.style.left = '';
      if(Spry.is.ie && Spry.is.version < 7)
       this.removeIframeLayer(menu);
    // initialize for Menu Bar
    // create event listeners for the Menu Bar widget so we can properly
    // show and hide submenus
    Spry.Widget.MenuB

    Change
    ul.MenuBarHorizontal ul
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    z-index: 1020;
    cursor: default;
    width: 100 px;
    position: absolute;
    left:
    -1000em;
    to
    ul.MenuBarHorizontal ul
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    z-index: 1020;
    cursor: default;
    width: 100px;
    position: absolute;
    left:
    -1000em;
    I hope this helps.
    Ben

  • Problem with the PUT operation some files won't transfer help please

    Hi everyone,
    I am using DWCS3 on OS X Leoard 10.5 and MAMP
    I am putting together a basic index.html page and then I want to template it. Pretty basic stuff.
    However when I want to view the index.html page in my MAMP testing server, In the middle of the PUT operation I get a message saying;
    File activity incomplete 1 file or folder was not completed.
    index.html - Put operation successful
    - error occurred - An error occurred - cannot put .  An unknown error occurred.
    css:index.css - same - not transferred
    SpryAssets:SpryMenuBar.js - same - not transferred
    SpryAssets:SpryMenuBarHorizontal.css - same - not transferred
    SpryAssets:SpryMenuBarDown.gif - same - not transferred
    SpryAssets:SpryMenuBarRight.gif - same - not transferred
    SpryAssets:SpryMenuBarDownHover.gif - same - not transferred
    SpryAssets:SpryMenuBarRightHover.gif - same - not transferred
    SpryAssets:SpryMenuBarVertical.css - same - not transferred
    File activity incomplete. 1 file(s) or folder(s) were not completed.
    Files updated: 1
    Files skipped: 8
    Files with errors: 1
    Finished: 23/07/2010 13:30
    I am aware that files are not transferring over to the testing server but I don't understand why or how to fix the problem. I don't think the problem lies with the path from Dreamweaver to the testing server because I have been working on the page and viewing it in the testing server. It's only just started displaying the message above and not passing some of the files over. It will for example pass the index.css page over.
    I have copied the code over for index.html, SpryMenuBar.js, SpryMenuBarHorizontal.ccs and SpryMenuBarVertical.css.
    In the hope that someone will not mind taking a look at this for me.
    Below is the code for my home page in case the problem lies here
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Home Page Geoff Hyde is Innocent</title>
    <link href="//index.html" rel="stylesheet" type="text/css" media="all" />
    <link href="css/index.css" rel="stylesheet" type="text/css" />
    <!--[if IE 5]>
    <style type="text/css">
    /* place css box model fixes for IE 5* in this conditional comment */
    .twoColFixLtHdr #sidebar1 { width: 230px; }
    </style>
    <![endif]--><!--[if IE]>
    <style type="text/css">
    /* place css fixes for all versions of IE in this conditional comment */
    .twoColFixLtHdr #sidebar1 { padding-top: 30px; }
    .twoColFixLtHdr #mainContent { zoom: 1; }
    /* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
    </style>
    <![endif]-->
    <script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
    <link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
    <link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css" />
    </head>
    <body class="twoColFixLtHdr">
    <div id="container">
      <div id="header">
        <h1><u>Geoff Hyde is Innocent!</u></h1>
        <!-- end #header -->
      </div>
      <div id="nav">
        <ul id="MenuBar1" class="MenuBarHorizontal">
          <li><a href="index.html" title="Home page">Home</a> </li>
          <li><a href="about.html" title="About the campaign">About us</a> </li>
          <li><a href="updates1.html" title="links to updates" class="MenuBarItemSubmenu">Updates</a>
            <ul>
              <li><a href="confisupdate.html" title="Confiscation update">Confiscation</a></li>
              <li><a href="appealupdate.html" title="Appeal update">Appeal</a></li>
              <li><a href="petitionupdate.html" title="Petition update">Petition</a></li>
              <li><a href="newspdf.html" title="News articles">News articles</a></li>
            </ul>
          </li>
          <li><a href="charity.html" title="About charity for Geoff Hyde" class="MenuBarItemSubmenu">Charity</a>
              <ul>
                <li><a href="friends.html" title="About the people supporting Geoff Hyde" class="MenuBarItemSubmenu">Friends</a>
                    <ul>
                      <li><a href="#">Item 3.1.1</a></li>
                      <li><a href="#">Item 3.1.2</a></li>
                    </ul>
                </li>
                </ul>
          </li>
          <li><a href="#" title="Links to the petition">Petition</a></li>
        </ul>
      </div>
      <br/>
      <div id="sidebar1">
        <h3> </h3>
        <ul id="MenuBar2" class="MenuBarVertical">
              <li><a href="case.html" title="What happened on 27 Feb">The case</a>          </li>
          <li><a href="invest1.html" title="Links to investigation" class="MenuBarItemSubmenu">Investigation</a>
            <ul>
              <li><a href="tipoff.html" title="Some things we are not allowed to know">Tip off</a></li>
              <li><a href="whyg.html" title="Why arrest Geoff?">Why Geoff</a></li>
              <li><a href="int27.html" title="27 minute interview">27 minutes</a></li>
              <li><a href="cops.html" title="What the Police did not do">Police</a></li>
            </ul>
          </li>
          <li><a href="evi.html" title="Links to evidence" class="MenuBarItemSubmenu">Evidence</a>
              <ul>
                <li><a href="calls.htnl" title="Fictional phone calls">Phone calls</a>            </li>
                <li><a href="timing.html" title="It's all in the timing">Timing</a></li>
                <li><a href="lie.html" title="Can you convict on a lie">Lucas directive</a></li>
                <li><a href="all.html" title="That's all folks">That's all</a></li>
            </ul>
          </li>
          <li><a href="confis.html" title="Links to Confiscation" class="MenuBarItemSubmenu">Confiscation</a>
              <ul>
                <li><a href="claners.html" title="Taken to the cleaners">Cleaners</a></li>
                <li><a href="ruin.html" title="Family faces ruin">Ruin</a></li>
                <li><a href="won.html" title="We won the Confiscation">We won</a></li>
            </ul>
          </li>
          <li><a href="biog.html" title="About Geoff Hyde">Biography</a></li>
          <li><a href="#" title="Link to the Petition">Petition</a></li>
          <li><a href="friends.html" title="About the Charity Friends of Geoff Hyde" class="MenuBarItemSubmenu">Charity</a>
            <ul>
              <li><a href="supp.html" title="About the people who supprt Geoff Hyde">Supporters</a></li>
            </ul>
          </li>
          <li><a href="about.html" title="About the Geoff Hyde is Innocent campaign">About us</a></li>
        </ul>
        <h3> </h3>
        <!-- end #sidebar1 --></div>
      <div id="mainContent">
        <h1>An Innocent Man</h1>
        <p>On February 27, 2006, haulier Geoff Hyde took a call on his mobile. Taking that call changed his life forever; because it ended up with the 59-year-old grandfather with no previous convictions to his name being found guilty of drug smuggling. He was sentenced to 22 years in prison. This website is devoted to showing how the Crown Prosecution Service conspired to put an innocent man behind bars, and once they did set about siezing the fruits of nearly four decades of hard work.</p>
        <h2> </h2>
      <!-- end #mainContent --></div>
        <!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats --><br class="clearfloat" />
      <div id="footer">
        <p>&copy;copyright2010</p>
      <!-- end #footer --></div>
    <!-- end #container --></div>
    <script type="text/javascript">
    <!--
    var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
    var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
    //-->
    </script>
    </body>
    </html>
    This is the SpryMenuBar.js code which is not being transferred
    var Spry;
    if(!Spry)
        Spry = {};
    if(!Spry.Widget)
        Spry.Widget = {};
    // Constructor for Menu Bar
    // element should be an ID of an unordered list (<ul> tag)
    // preloadImage1 and preloadImage2 are images for the rollover state of a menu
    Spry.Widget.MenuBar = function(element, opts)
        this.init(element, opts);
    Spry.Widget.MenuBar.prototype.init = function(element, opts)
        this.element = this.getElement(element);
        // represents the current (sub)menu we are operating on
        this.currMenu = null;
        var isie = (typeof document.all != 'undefined' && typeof window.opera == 'undefined' && navigator.vendor != 'KDE');
        if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (isie && typeof document.uniqueID == 'undefined'))
            // bail on older unsupported browsers
            return;
        // load hover images now
        if(opts)
            for(var k in opts)
                var rollover = new Image;
                rollover.src = opts[k];
        if(this.element)
            this.currMenu = this.element;
            var items = this.element.getElementsByTagName('li');
            for(var i=0; i<items.length; i++)
                this.initialize(items[i], element, isie);
                if(isie)
                    this.addClassName(items[i], "MenuBarItemIE");
                    items[i].style.position = "static";
            if(isie)
                if(this.hasClassName(this.element, "MenuBarVertical"))
                    this.element.style.position = "relative";
                var linkitems = this.element.getElementsByTagName('a');
                for(var i=0; i<linkitems.length; i++)
                    linkitems[i].style.position = "relative";
    Spry.Widget.MenuBar.prototype.getElement = function(ele)
        if (ele && typeof ele == "string")
            return document.getElementById(ele);
        return ele;
    Spry.Widget.MenuBar.prototype.hasClassName = function(ele, className)
        if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
            return false;
        return true;
    Spry.Widget.MenuBar.prototype.addClassName = function(ele, className)
        if (!ele || !className || this.hasClassName(ele, className))
            return;
        ele.className += (ele.className ? " " : "") + className;
    Spry.Widget.MenuBar.prototype.removeClassName = function(ele, className)
        if (!ele || !className || !this.hasClassName(ele, className))
            return;
        ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
    // addEventListener for Menu Bar
    // attach an event to a tag without creating obtrusive HTML code
    Spry.Widget.MenuBar.prototype.addEventListener = function(element, eventType, handler, capture)
        try
            if (element.addEventListener)
                element.addEventListener(eventType, handler, capture);
            else if (element.attachEvent)
                element.attachEvent('on' + eventType, handler);
        catch (e) {}
    // createIframeLayer for Menu Bar
    // creates an IFRAME underneath a menu so that it will show above form controls and ActiveX
    Spry.Widget.MenuBar.prototype.createIframeLayer = function(menu)
        var layer = document.createElement('iframe');
        layer.tabIndex = '-1';
        layer.src = 'javascript:false;';
        menu.parentNode.appendChild(layer);
        layer.style.left = menu.offsetLeft + 'px';
        layer.style.top = menu.offsetTop + 'px';
        layer.style.width = menu.offsetWidth + 'px';
        layer.style.height = menu.offsetHeight + 'px';
    // removeIframeLayer for Menu Bar
    // removes an IFRAME underneath a menu to reveal any form controls and ActiveX
    Spry.Widget.MenuBar.prototype.removeIframeLayer =  function(menu)
        var layers = menu.parentNode.getElementsByTagName('iframe');
        while(layers.length > 0)
            layers[0].parentNode.removeChild(layers[0]);
    // clearMenus for Menu Bar
    // root is the top level unordered list (<ul> tag)
    Spry.Widget.MenuBar.prototype.clearMenus = function(root)
        var menus = root.getElementsByTagName('ul');
        for(var i=0; i<menus.length; i++)
            this.hideSubmenu(menus[i]);
        this.removeClassName(this.element, "MenuBarActive");
    // bubbledTextEvent for Menu Bar
    // identify bubbled up text events in Safari so we can ignore them
    Spry.Widget.MenuBar.prototype.bubbledTextEvent = function()
        return (navigator.vendor == 'Apple Computer, Inc.' && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget)));
    // showSubmenu for Menu Bar
    // set the proper CSS class on this menu to show it
    Spry.Widget.MenuBar.prototype.showSubmenu = function(menu)
        if(this.currMenu)
            this.clearMenus(this.currMenu);
            this.currMenu = null;
        if(menu)
            this.addClassName(menu, "MenuBarSubmenuVisible");
            if(typeof document.all != 'undefined' && typeof window.opera == 'undefined' && navigator.vendor != 'KDE')
                if(!this.hasClassName(this.element, "MenuBarHorizontal") || menu.parentNode.parentNode != this.element)
                    menu.style.top = menu.parentNode.offsetTop + 'px';
            if(typeof document.uniqueID != "undefined")
                this.createIframeLayer(menu);
        this.addClassName(this.element, "MenuBarActive");
    // hideSubmenu for Menu Bar
    // remove the proper CSS class on this menu to hide it
    Spry.Widget.MenuBar.prototype.hideSubmenu = function(menu)
        if(menu)
            this.removeClassName(menu, "MenuBarSubmenuVisible");
            if(typeof document.all != 'undefined' && typeof window.opera == 'undefined' && navigator.vendor != 'KDE')
                menu.style.top = '';
                menu.style.left = '';
            this.removeIframeLayer(menu);
    // initialize for Menu Bar
    // create event listeners for the Menu Bar widget so we can properly
    // show and hide submenus
    Spry.Widget.MenuBar.prototype.initialize = function(listitem, element, isie)
        var opentime, closetime;
        var link = listitem.getElementsByTagName('a')[0];
        var submenus = listitem.getElementsByTagName('ul');
        var menu = (submenus.length > 0 ? submenus[0] : null);
        var hasSubMenu = false;
        if(menu)
            this.addClassName(link, "MenuBarItemSubmenu");
            hasSubMenu = true;
        if(!isie)
            // define a simple function that comes standard in IE to determine
            // if a node is within another node
            listitem.contains = function(testNode)
                // this refers to the list item
                if(testNode == null)
                    return false;
                if(testNode == this)
                    return true;
                else
                    return this.contains(testNode.parentNode);
        // need to save this for scope further down
        var self = this;
        this.addEventListener(listitem, 'mouseover', function(e)
            if(self.bubbledTextEvent())
                // ignore bubbled text events
                return;
            clearTimeout(closetime);
            if(self.currMenu == listitem)
                self.currMenu = null;
            // show menu highlighting
            self.addClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : "MenuBarItemHover");
            if(menu && !self.hasClassName(menu, "MenuBarSubmenuVisible"))
                opentime = window.setTimeout(function(){self.showSubmenu(menu);}, 250);
        }, false);
        this.addEventListener(listitem, 'mouseout', function(e)
            if(self.bubbledTextEvent())
                // ignore bubbled text events
                return;
            var related = (typeof e.relatedTarget != 'undefined' ? e.relatedTarget : e.toElement);
            if(!listitem.contains(related))
                clearTimeout(opentime);
                self.currMenu = listitem;
                // remove menu highlighting
                self.removeClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : "MenuBarItemHover");
                if(menu)
                    closetime = window.setTimeout(function(){self.hideSubmenu(menu);}, 600);
        }, false);
    The code below is the SpryMenuBarHorizontal.css
    @charset "UTF-8";
    /* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: 780px;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        position: relative;
        text-align: left;
        cursor: pointer;
        width: 156px;
        float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        z-index: 1020;
        cursor: default;
        width: 156px;
        position: absolute;
        left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
        left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
        width: 156px;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
        position: absolute;
        margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
        left: auto;
        top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
        border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
        display: block;
        cursor: pointer;
        background-color: #CC0000;
        padding: 0.5em 0.75em;
        color: #FFFFFF;
        text-decoration: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
        background-color: #000000;
        color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
        background-color: #33C;
        color: #FFF;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarDown.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarRight.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarDownHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
        position: absolute;
        z-index: 1010;
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarHorizontal li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;
    Below is the code for SpryMenuBarVertical.css
    @charset "UTF-8";
    /* SpryMenuBarVertical.css - Revision: Spry Preview Release 1.4 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, a fixed width box with no margin or padding */
    ul.MenuBarVertical
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        cursor: default;
        width: 8em;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
        z-index: 1000;
    /* Menu item containers, position children relative to this container and are same fixed width as parent */
    ul.MenuBarVertical li
        margin: 0;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        position: relative;
        text-align: left;
        cursor: pointer;
        width: 8em;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarVertical ul
        margin: -5% 0 0 95%;
        padding: 0;
        list-style-type: none;
        font-size: 100%;
        position: absolute;
        z-index: 1020;
        cursor: default;
        width: 8.2em;
        left: -1000em;
        top: 0;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarVertical ul.MenuBarSubmenuVisible
        left: 0;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarVertical ul li
        width: 8.2em;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Outermost menu container has borders on all sides */
    ul.MenuBarVertical
        border: 1px solid #CCC;
    /* Submenu containers have borders on all sides */
    ul.MenuBarVertical ul
        border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarVertical a
        display: block;
        cursor: pointer;
        background-color: #000000;
        padding: 0.5em 0.75em;
        color: #FFFFFF;
        text-decoration: none;
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarVertical a:hover, ul.MenuBarVertical a:focus
        background-color: #666666;
        color: #FFF;
    /* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
    ul.MenuBarVertical a.MenuBarItemHover, ul.MenuBarVertical a.MenuBarItemSubmenuHover, ul.MenuBarVertical a.MenuBarSubmenuVisible
        background-color: #33C;
        color: #FFF;
    SUBMENU INDICATION: styles if there is a submenu under a given menu item
    /* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarVertical a.MenuBarItemSubmenu
        background-image: url(SpryMenuBarRight.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    /* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
    ul.MenuBarVertical a.MenuBarItemSubmenuHover
        background-image: url(SpryMenuBarRightHover.gif);
        background-repeat: no-repeat;
        background-position: 95% 50%;
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarVertical iframe
        position: absolute;
        z-index: 1010;
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
        ul.MenuBarVertical li.MenuBarItemIE
            display: inline;
            f\loat: left;
            background: #FFF;

    I've only encountered two instances where the PUT operation failed on certain files. One, the server does not like the particular file type, and two, when the file was open in another program.
    Other than that, I could only guess that it may have something else to do with the web server configuration and not DW.

  • Problem while calling subroutines in ECC 6.0 version

    Hi, here is some problem can you please try to solve.....
        I have created three forms TOP_OF_PAGE,DOC_DISPLAY,END_OF_LIST and i have called them by passing to wa_events-form. Up to this every thing is fine, the problem is i am working witth ECC 6.0  so while doing Extended program check through SLIN it is giving some waring like
    "FORM DO_DISPLAY_AT_USER_COMMAND not called directly
    (check dynamic PERFORMs!!) " for all the three forms which i have created...Please help me out to over come this warning... For ur reference i am giving some code as mentioned below.......
    LOOP AT i_events into wa_events.
        CASE wa_events-name.
          WHEN slis_ev_top_of_page.
            wa_events-form = 'TOP_OF_PAGE'.
          WHEN slis_ev_end_of_list.
            wa_events-form = 'END_OF_LIST'.
          WHEN slis_ev_user_command.
            wa_events-form = 'DOC_DISPLAY_AT_USER_COMMAND'.
        ENDCASE.
        MODIFY i_events from wa_events.
      ENDLOOP.
    ENDFORM.                               " INIT_ALV_EVENTS
    *&      Form  DOC_DISPLAY
    FORM doc_display_at_user_command USING p_ucomm    LIKE syst-ucomm
                                     p_selfield TYPE slis_selfield.
      CASE p_ucomm.
        WHEN '&IC1'.
          CLEAR i_out.
          READ TABLE i_out into wa1_out INDEX p_selfield-tabindex.
          IF sy-subrc EQ 0 .
            IF wa1_out-belnr EQ space.
              MESSAGE e016(kb).
            ELSE.
              SET PARAMETER ID 'BLN' FIELD wa1_out-belnr.
              SET PARAMETER ID 'BUK' FIELD wa1_out-bukrs.
              SET PARAMETER ID 'GJR' FIELD wa1_out-gjahr.
              CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
            ENDIF.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "DOC_DISPLAY_AT_USER_COMMAND
          FORM TOP_OF_PAGE                                              *
    FORM top_of_page.
      PERFORM std_header in program zstandrt
                           USING sy-cprog sy-title 'L' '1' ' ' 'confidential' 'restricted'.
    ENDFORM.                    "TOP_OF_PAGE
          FORM END_OF_LIST                                              *
    FORM end_of_list.
    Begin of V04 comment  >***********************************
    IF W_BDC_SESSION EQ 'X'.
      SKIP 2.
      IF P_NOUPD EQ 'X'.
        FORMAT COLOR COL_POSITIVE.
        WRITE :/20 ' Created BDC session : '(O02) , P_GROUP.
        WRITE :/25 ' Execute Using tcode SM35 ....'(O03).
      ELSE.
        FORMAT COLOR COL_NEGATIVE.
        WRITE :/20 ' Created BDC session For Error Transactions'(O04) ,
                     P_GROUP.
        WRITE :/25 ' Execute Using tcode SM35 ....'(O03).
      ENDIF.
      FORMAT COLOR COL_NORMAL.
    ENDIF.
    SKIP 2.
    End of V04 comment   >************************************
      WRITE :/50 ' *** END OF REPORT *** '(o01).
      PERFORM print_selections.
    ENDFORM.                    "END_OF_LIST
    Thanks & Regards.
    Laxman.P
    B'lore.

    Hi
    Are you getting the output or not?
    You can just ignore this warning in EPC
    as this FORM USER_COMMAND  is always called indirectly only
    But check the Output and see?
    <b>Reward points for useful Answers</b>
    Regards
    Anji

  • I have a perplexing problem, in firefox the iframe in the spry tabbed panel doesn't work any ideas?

    I have made a page with spry tabbed panels, i have embedded an iframe in the content section of the second tab, this works perfectly well with Google, IE, Safari, Opera etc but just doesnt work in Firefox.
    If I make the tab panel containing the iframe the Default tab then it works, i just cant figure out why,
    By the way new to all this so be gentle please
    <div id="main_column">
         <div class="section_w500">
            <h2>North Bali Listings</h2>
            <div id="TabbedPanels1" class="TabbedPanels">
              <ul class="TabbedPanelsTabGroup">
                <li class="TabbedPanelsTab" tabindex="0">About North Bali</li>
                <li class="TabbedPanelsTab" tabindex="0">Land</li>   <<<<< This is the tab where the iframe is embedded in the content panel>>>>>
                <li class="TabbedPanelsTab" tabindex="0">Houses / Villas /Apartments / Rooms</li>
                <li class="TabbedPanelsTab" tabindex="0">Commercial</li>
    </ul>
              <div class="TabbedPanelsContentGroup">
                <div class="TabbedPanelsContent">A property analyst recently said that limited land availability in the southern parts of Bali, especially  in and around the Badung and Denpasar areas, has driven investors northward, in our opinion   at this time it is an ideal opportunity to  acquire property still at very sensible prices in this area, be it for investment or as a place of residence.. <br />
                  <p> <img src="../../../Images/Bali Scenes General/panoramic-views.jpg" alt="views" width="183" height="140" align="left" />Over the last few of years, investors have been targeting the northern area,  principally along the coastline ,  with its variety of pristine black sandy beaches, pebble beaches and rugged coastline, offering a variety of activities; scuba diving, snorkelling,  water sports, fishing, sailing. trekking  gives this area the potential to be world-class tourist destination. Research has shown that  property prices are set to rise above the average due to increased infrastructure development, and the planned opening of a new International Airport in the North shows the Bali Government's commitment to the develop this area as a future tourist destination.<br />
                    <br />
                    The Northern part of Bali  is also an excellent base for exploration further afield, close to the main portal for trips to other parts of Indonesia. <br />
                  Although it is largely undeveloped there is a wide range of properties and land with beach front to panoramic rice paddy views still to be found at good value for money. </p>
                  <table width="100%">
                    <tr>
                      <td align="left" valign="top"><div class="AreasOfBaliHighlight" style="color: #60C; font-weight: bolder;">This is an ideal time to consider your dream property  in this area; be it for investment, development or private use.</div></td>
                    </tr>
                  </table>
                  <p> The main tourist area in the North is arguably <span style="color: #F00">Lovina</span>, with property prices reflecting this especially beach front or with panoramic views so expect to see prices a little bit more expensive in and around this area. However inland prices are still very reasonable.<br />
                    <br />
                    <img src="../../../Images/Bali Scenes General/Traditional-lifestyle.gif" alt="village life" width="188" height="137" hspace="2" align="right" />Other  areas to be found in the North going towards <span style="color: #F00">Gillimanuk</span> the main portal for the ferry to and from Java; include: <span style="color: #F00">Pemuteran</span> popular diving area, <span style="color: #F00">Menjangan</span> <span style="color: #F00">Island</span>, a popular diving and nature reserve;  are also beginning to attract investors, resulting in  prices  rising.<br />
                    The area of the North of Bali travelling East from <span style="color: #F00">Lovina</span> towards the eastern part of Bali is quieter and more rural, with stunning coastline and secluded traditional village life, here life slows down, people are very friendly and happy to integrate with &quot;Bule (Foreigner), this life style is definitely completely different to the hustle and bustle of the South of Bali, perfect for future development and peaceful retirement, and with the development of the new <span style="color: #F00">International Airport</span> in this area, about 1/2 way between <span style="color: #F00">Singaraja</span> and <span style="color: #F00">Almpura</span> in the East, which makes this area an ideal investment opportunity as property and land prices are set to grow in this part of North Bali faster than other areas.<br />
                    <br />
                    <img src="../../../Images/Bali Scenes General/img_bali_1.jpg" alt="Quiet Lanes" width="189" height="124" hspace="2" align="left" />It has to be said that facilities for schooling, medical services and shopping are not as good as in the South or around Ubud area, which have higher concentrations of  established ex pat communities, and better facilities  also the job opportunities are not anywhere near as plentiful as in the South or Ubud areas, which limits the lifestyle for many people looking to settle in Bali, careful consideration has to be given if your intention is for a place for you to reside, and it is possibly an area for consideration as an investment opportunity, or for a development of hotel or villa resort, or as a second retirement home. </p>
                  <p>There are of course facilities for all the usual services and plenty of job opportunities, and a small but growing ex-pat community, especially in and around <span style="color: #F00">Lovina</span> and <span style="color: #F00">Singaraja</span> just not as many as in the other popular areas for ex pat's. </p>
                </div>
                <div class="TabbedPanelsContent">
                  <p> </p>
                  <table width="100%" border="0">
                    <tr>
                      <td valign="top"><h7 style="color: #C03"><span style="font-weight: bold"><span style="font-size: 12px; color: #FFF;">Property Code BSP 00130101</span><span style="font-size: 16px"> </span>SAMBIRENTENG - North East Bali 7,300 meters (</span></h7>
                        <span style="font-weight: bold; color: #B90033;">73 ARE) Beach front flat wooded land for Sale/ Rent</span></td>
                      <td><span class="button_01"><a href="#" onclick="MM_openBrWindow('North Bali/Gold Package Listings/BSP-00130101/Sambirenteng  Property Location Map.html',width=750,height=200')">Location Map</a></span></td>
                    </tr>
                    <tr>
                      <td width="77%" valign="top"><p>A golden opportunity to acquire a prime plot of beach front land in the North East of Bali in an area that enjoys newly awarded &quot;Tourism Status&quot;  ideal for the development of a small hotel or villa complex, easy access to many popular tourist spots already developing in the North.</p>
                        <p> A 3 meter wide sealed road gives acces to the whole length of this prime plot of land: Electric (PLN) Water (PDAM) Telephone &amp; Internet close to hand and readilly available</p></td>
                      <td width="23%"><a href="Carousel Sambirneteng Listings.html target="_parent"></a><iframe src="Carousel Sambirneteng Listings.html" allowtransparency="yes" frameborder="no" height="111" width="156" scrolling="No" align="middle" marginheight="0"></iframe></td>
                    </tr>
                    <tr>
                      <td valign="top">Purchase price<span style="color: #33C; font-weight: bold;"> 12,500,000,000 Rp</span><br />
                        Rental Price (25 years) <span style="font-weight: bold">9,450,000,000</span> <span style="font-weight: bold">Rp</span> <span style="color: #FFF"> (<span style="font-weight: bold; color: #3333D0;"> 5,200,000 Rp</span><span style="color: #3933D5"> </span> per are per year )<br />
                          Min Rental Period 25 Years, extendable to to a max of 75 years
                          (with full &quot;Right Of Use&quot; issued by owner)</span></td>
                      <td valign="top"><p class="button_01"><a href="../Gold Package Listings/BSP-00130101/BSP00130101 Details.html">Find out more</a></p>
                        <br />
                        <span class="button_01"><a href="../Gold Package Listings/BSP-00130101/BSP00130101_Enquiry Form.html" target="_parent">Make Enquiry</a></span></td>
                    </tr>
                  </table>
                  <p><br />
                  </p>
                  <hr width="100%" noshade="noshade" />
                  <p> </p>
                </div>
    <div class="TabbedPanelsContent">Sorry we don't have any listings under this catagory at the moment,,, Check back later or register with us, and we will send you regular updates of any new properties we list.<iframe src="Carousel Sambirneteng Listings.html" allowtransparency="yes" frameborder="no" height="111" width="156" scrolling="No" align="middle" marginheight="0"></iframe></div>
                <div class="TabbedPanelsContent">Sorry we don't have any listings under this catagory at the moment,,, Check back later or register with us, and we will send you regular updates of any new properties we list.</div>
    </div>
            </div>
            <p> </p>
          <p>
            <h7 style="color: #C03"></h7>
          </p>
    <h2></h2><!-- this stays empty to put dotted line under listings block -->
         </div>
         <div class="cleaner"></div>
        </div> <!-- end of main column -->

    Could you share a link to the page?
    Seeing it in context and in our browsers is much easier to debug.
    If not, make sure to run the validator here The W3C Markup Validation Service and clear out any problems. HTML errors, especially structural ones, will cause all kinds of display problems in various browsers/versions/platforms.

  • Problem in displaying 2nd secondary list

    Hi ABAP Gurus,
    Here i got an assignment to develope interactive report (basic list, 1st secondary, 2nd secondary list)
    according to my report i am able to get 1st secondary list perfectly but i am not able to get 2nd secondary list .pls solve my problem
    below is my code.
    *& Report  ZCRPT_MM_MRP
    REPORT  zcrpt_mm_mrp .
    *& Report       : ZRPT_MM_PR_HISTORY                               *
    Dev. Class   : ZCVS                                             *
    Program Name : ZRPT_MM_PR_HISTORY                               *
    Description  : PO History Details List                          *
    Author       : Sujit   Created on : 12.11.2007          *
    SAP Release  : SAP ERP Central Component 5.0                    *
    Tcode        : Req DKIK905199  N-160                            *
                  :     DKIK905248  N-160 For Deletion indicator     *
    S O U R C E   C O D E   C H A N G E   H I S T O R Y             *
    CODE     | AUTHOR     | DATE     |   Description                *
              |            |          |                              *
          TABLE  DECLARATIONS                                        *
    TABLES: ekko,ekpo,mara, makt,ekes,eban,mard,s994.
    Internal tables decleration
    TYPE-POOLS: slis.
    DATA: BEGIN OF it_vbrkvbrp OCCURS 0,
            vbeln TYPE vbrk-vbeln,
            fktyp TYPE vbrk-fktyp,
            matnr TYPE vbrp-matnr,
            fkimg TYPE vbrp-fkimg,
            fklmg TYPE vbrp-fklmg,
            vrkme TYPE vbrp-vrkme,
            meins TYPE vbrp-meins,
            shkzg TYPE vbrp-shkzg,
          END OF it_vbrkvbrp.
    DATA: BEGIN OF it_vbrk OCCURS 0,
            matnr TYPE vbrp-matnr,
            fkimg TYPE vbrp-fkimg,
            meins TYPE vbrp-meins,
          END OF it_vbrk.
    DATA: BEGIN OF it_ekko OCCURS 0,
            ebeln TYPE ekko-ebeln,
            bukrs TYPE ekko-bukrs,
            frggr TYPE ekko-frggr,
            frgsx TYPE ekko-frgsx,
            frgke TYPE ekko-frgke,
            frgzu TYPE ekko-frgzu,
          END OF it_ekko.
    DATA: BEGIN OF it_ekbe OCCURS 0,
          ebeln type ekbe-ebeln,
          ebelp type ekbe-ebelp,
          belnr type ekbe-belnr,
          buzei type ekbe-buzei,
          xblnr type ekbe-xblnr,
          END OF it_ekbe.
    DATA: BEGIN OF it_lips OCCURS 0,
          vbeln type lips-vbeln,
          posnr type lips-posnr,
          matnr type lips-matnr,
          vgbel type lips-vgbel,
          lfimg type lips-lfimg,
          meins type lips-meins,
          END OF it_lips.
    data : it1_lips like it_lips occurs 0 with header line.
    DATA: BEGIN OF itab OCCURS 1 ,
          banfn     LIKE eban-banfn,    " Purchase requisition number
          bnfpo     LIKE eban-bnfpo,    " PR Item Number
          werks     LIKE ekpo-werks,    " Plant
          matnr     LIKE ekpo-matnr,    " Material
          maktx     LIKE makt-maktx,    " Name of Material
          pr_menge  LIKE eban-menge,    " PR Quantity
          meins     LIKE ekpo-meins,    " Unit
          ebeln     LIKE ekpo-ebeln,    " PO No
          bsart     LIKE ekko-bsart,    " Purchasing Document Type
          ebelp     LIKE ekpo-ebelp,    " Item
          menge     LIKE ekpo-menge,    " PO Qty
          grn_menge LIKE ekpo-menge,    " GRN Qty
          trn_menge LIKE ekpo-menge,    " Transit Qty
          bal_menge LIKE ekpo-menge,    " Balance PO Qty
          labst     LIKE mard-labst,    " Valuated stock with unrestricted
          fkimg     LIKE vbrp-fkimg,    " Actual billed quantity
          minbe TYPE marc-minbe,
          mabst TYPE marc-mabst,
          fixkz TYPE eban-fixkz,
          zfixkz(7) TYPE c,
          matkl TYPE mara-matkl,
          mvgr1 TYPE mvke-mvgr1,
          bezei TYPE tvm1t-bezei,
          zconfirm1(3) TYPE c,
          zconfirm2(3) TYPE c,
          zconfirm3(3) TYPE c,
        END OF itab.
    DATA: BEGIN OF itab_sale OCCURS 1 ,
          matnr     LIKE ekpo-matnr,    " Material
          werks     LIKE ekpo-werks,    " Plant
          maktx     LIKE makt-maktx,    " Name of Material
          labst     LIKE mard-labst,    " Valuated stock with unrestricted
        END OF itab_sale.
    DATA : i_eban LIKE eban OCCURS 0 WITH HEADER LINE.
    DATA : del_menge LIKE ekes-menge,
           grn_dabmg LIKE ekes-dabmg.
    DATA: BEGIN OF it_marc OCCURS 0,
            matnr TYPE marc-matnr,
            werks TYPE marc-werks,
            minbe TYPE marc-minbe,
            mabst TYPE marc-mabst,
          END OF it_marc.
    DATA: BEGIN OF it_eban OCCURS 0,
            banfn TYPE eban-banfn,
            bnfpo TYPE eban-bnfpo,
            fixkz TYPE eban-fixkz,
            ebeln type eban-ebeln,
          END OF it_eban.
    DATA: BEGIN OF it_mara OCCURS 0,
            matnr TYPE mara-matnr,
            matkl TYPE mara-matkl,
          END OF it_mara.
    DATA: BEGIN OF it_mvke OCCURS 0,
            matnr TYPE mvke-matnr,
            mvgr1 TYPE mvke-mvgr1,
            mvgr2 TYPE mvke-mvgr2,
            mvgr3 TYPE mvke-mvgr3,
            mvgr4 TYPE mvke-mvgr4,
          END OF it_mvke.
    DATA: BEGIN OF it_tvm1t OCCURS 0,
            mvgr1 TYPE tvm1t-mvgr1,
            bezei TYPE tvm1t-bezei,
          END OF it_tvm1t.
    DATA:  fcat TYPE slis_t_fieldcat_alv,
           fcat1 TYPE slis_t_fieldcat_alv,
           fcat2 TYPE slis_t_fieldcat_alv,
           heading  TYPE slis_t_listheader,
           heading1  TYPE slis_t_listheader,
           heading2  TYPE slis_t_listheader,
           events   TYPE slis_t_event,
           events1   TYPE slis_t_event,
           events2   TYPE slis_t_event,
           repname  LIKE sy-repid.
    DATA: keyinfo  TYPE slis_keyinfo_alv.
    CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    CONSTANTS: formname_top_of_page1 TYPE slis_formname VALUE 'TOP_OF_PAGE1'
    CONSTANTS: formname_top_of_page2 TYPE slis_formname VALUE 'TOP_OF_PAGE2'
    RANGES : s_erdat FOR vbrk-erdat.
    DATA: ss_date TYPE mkpf-budat.
    DATA: ss_period(3) TYPE n.
    Screen Selection
    SELECTION-SCREEN BEGIN OF BLOCK  s1 WITH FRAME TITLE text-001.
    *SELECT-OPTIONS : s_ebeln FOR ekpo-ebeln,
                    s_werks FOR ekpo-werks.
    SELECT-OPTIONS : s_banfn FOR eban-banfn,  "Purchase requisition number
                     s_badat FOR eban-badat,  "Requisition (request) date
                     s_matnr FOR eban-matnr,  "Material Number
                     s_werks FOR eban-werks,  "Plant
                     s_lgort FOR eban-lgort,  "Storage Location
                     s_matkl FOR eban-matkl,  "Material group
                     s_flief FOR eban-flief,  "Fixed Vendor
                     s_bsart FOR ekko-bsart NO INTERVALS.   " Purchasing
    SELECTION-SCREEN  END    OF BLOCK  s1 .
    SELECTION-SCREEN BEGIN OF BLOCK  s2 WITH FRAME TITLE text-002.
    PARAMETERS: s_period(3) TYPE n .
    SELECTION-SCREEN  END    OF BLOCK  s2 .
    initialization.
    repname = sy-repid.
      PERFORM build_eventtab  USING events[].
      PERFORM build_eventtab1  USING events1[].
      PERFORM build_eventtab2  USING events2[].
      PERFORM build_comment USING heading[].
      PERFORM build_comment1 USING heading1[].
      PERFORM build_comment2 USING heading2[].
    Strat-of-Selection
    START-OF-SELECTION.
      PERFORM getdata.
      PERFORM getfieldcatalog USING fcat[].
      PERFORM getfieldcatalog1 USING fcat1[].
      PERFORM getfieldcatalog2 USING fcat2[].
      PERFORM alvdisplaydata.
    END-OF-SELECTION.
    *&      Form  getdata
          text
    -->  p1        text
    <--  p2        text
    FORM getdata.
      SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE i_eban
               WHERE banfn IN s_banfn      "Purchase requisition number
               AND   badat IN s_badat      "Requisition (request) date
               AND   matnr IN s_matnr      "Material Number
               AND   werks IN s_werks      "Plant
               AND   lgort IN s_lgort      "Storage Location
               AND   matkl IN s_matkl      "Material group
               AND   flief IN s_flief      "Fixed Vendor
               AND   loekz NE 'X'          "Deletion Pocument
               AND   afnam EQ 'MRP'.       "Name of requisitioner/requester
      IF NOT i_eban[] IS INITIAL.
        LOOP AT i_eban.
          CLEAR itab.
          itab-banfn     =  i_eban-banfn.
          itab-bnfpo     =  i_eban-bnfpo.
          itab-pr_menge  =  i_eban-menge.
          itab-meins     =  i_eban-meins.
          itab-ebeln     =  i_eban-ebeln.
          itab-ebelp     =  i_eban-ebelp.
          itab-matnr     =  i_eban-matnr.
          itab-werks     =  i_eban-werks.
    **----Get Material Description
          IF NOT i_eban-matnr IS INITIAL.
            SELECT SINGLE * FROM  makt
                            WHERE matnr EQ i_eban-matnr.
            IF sy-subrc EQ 0.
              itab-maktx = makt-maktx.
            ENDIF.
          ELSE.
            itab-maktx = i_eban-txz01.
          ENDIF.
    *----Get PO & GRN Quantity
          IF i_eban-ebeln GT 0 AND i_eban-ebelp GT 0.
            SELECT SINGLE * FROM ekpo
                            WHERE ebeln = i_eban-ebeln
                            AND   ebelp = i_eban-ebelp.
            IF sy-subrc EQ 0.
              itab-menge     = ekpo-menge.
            ENDIF.
            SELECT SINGLE * FROM ekko
                            WHERE ebeln = i_eban-ebeln.
            IF sy-subrc EQ 0.
              itab-bsart     = ekko-bsart.
            ENDIF.
    *-------Get GRN Quantity
            CLEAR : del_menge,grn_dabmg.
            IF  ekpo-bstae = '0004'.  " GRN Against InbondDelivery
              SELECT SUM( menge ) SUM( dabmg )
                      FROM ekes
                      INTO (del_menge,grn_dabmg)
                      WHERE ebeln =  i_eban-ebeln
                      AND   ebelp =  i_eban-ebelp
                      AND   ebtyp = 'LA'.
              IF sy-subrc EQ 0.
                itab-grn_menge = grn_dabmg.
                itab-trn_menge = del_menge - grn_dabmg.
              itab-bal_menge = ekpo-menge - del_menge.
                IF itab-bal_menge < 0.
                 itab-bal_menge = 0.
                ENDIF.
              ELSE.
               itab-bal_menge = itab-menge.
              ENDIF.
            ELSE.          " Regular GRN
              SELECT SUM( menge )
                      FROM ekbe
                      INTO (grn_dabmg)
                      WHERE ebeln =  i_eban-ebeln
                      AND   ebelp =  i_eban-ebelp
                      AND   bewtp = 'E'
                      AND   bwart = '101'.
              IF sy-subrc EQ 0.
                itab-grn_menge = grn_dabmg.
              itab-trn_menge = del_menge - grn_dabmg.
              ENDIF.
    For Cancelled GRN
              SELECT SUM( menge )
                      FROM ekbe
                      INTO (grn_dabmg)
                      WHERE ebeln =  i_eban-ebeln
                      AND   ebelp =  i_eban-ebelp
                      AND   bewtp = 'E'
                      AND   bwart = '102'.
              IF sy-subrc EQ 0.
                itab-grn_menge = itab-grn_menge - grn_dabmg.
              itab-trn_menge = del_menge - grn_dabmg.
              ENDIF.
              IF itab-bsart = 'UB'.
                CLEAR : grn_dabmg,grn_dabmg.
                SELECT SUM( menge )
                        FROM ekbe
                        INTO (grn_dabmg)
                        WHERE ebeln =  i_eban-ebeln
                        AND   ebelp =  i_eban-ebelp
                        AND   bewtp = 'U'
                        AND   bwart = '641'.
                IF sy-subrc EQ 0.
                  itab-trn_menge  = grn_dabmg.
                ENDIF.
    For Reversal of Issue Document
                SELECT SUM( menge )
                        FROM ekbe
                        INTO (grn_dabmg)
                        WHERE ebeln =  i_eban-ebeln
                        AND   ebelp =  i_eban-ebelp
                        AND   bewtp = 'U'
                        AND   bwart = '642'.
                IF sy-subrc EQ 0.
                  itab-trn_menge  = itab-trn_menge  - grn_dabmg.
                ENDIF.
                IF itab-grn_menge <> 0.
                  itab-trn_menge = 0.
                ENDIF.
              ENDIF.
    End
            ENDIF.
    *-------End
          ENDIF.
          itab-bal_menge = itab-menge - ( itab-grn_menge + itab-trn_menge ).
          CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
            EXPORTING
              input  = itab-matnr
            IMPORTING
              output = itab-matnr.
          itab_sale-matnr = itab-matnr.
          itab_sale-werks = itab-werks.
          itab_sale-maktx = itab-maktx.
          COLLECT itab_sale.
          APPEND itab.
        ENDLOOP.
      ENDIF.
      IF NOT s_bsart[] IS INITIAL.
        DELETE itab WHERE bsart NOT IN s_bsart.
      ENDIF.
      IF NOT itab_sale IS INITIAL.
        LOOP AT itab_sale.
    *-----Get Sales Quantity
          CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
            EXPORTING
              input  = itab_sale-matnr
            IMPORTING
              output = itab_sale-matnr.
    *-----Change as on 08.12.2007
          SELECT SUM( clabs ) INTO  itab_sale-labst
                              FROM  mchb
                              WHERE matnr = itab_sale-matnr
                              AND   werks = itab_sale-werks.
    *-----End
          MODIFY itab_sale TRANSPORTING labst matnr.
        ENDLOOP.
        LOOP AT itab.
          READ TABLE itab_sale WITH KEY matnr = itab-matnr
                               werks = itab-werks.
          IF sy-subrc = 0.
            CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
              EXPORTING
                input  = itab_sale-matnr
              IMPORTING
                output = itab_sale-matnr.
            MOVE itab_sale-labst TO itab-labst.
          ENDIF.
          MODIFY itab TRANSPORTING labst.
          CLEAR itab.
        ENDLOOP.
      ENDIF.
      CHECK itab[] IS NOT INITIAL.
      SELECT * FROM marc CLIENT SPECIFIED
                              INTO CORRESPONDING FIELDS OF TABLE it_marc
                              FOR ALL ENTRIES IN itab
                              WHERE mandt = sy-mandt
                              AND matnr EQ itab-matnr
                              AND werks EQ itab-werks.
      SELECT * FROM eban CLIENT SPECIFIED
                             INTO CORRESPONDING FIELDS OF TABLE it_eban
                             FOR ALL ENTRIES IN itab
                             WHERE mandt = sy-mandt
                             AND banfn EQ itab-banfn
                             AND bnfpo EQ itab-bnfpo.
      SELECT * FROM mara CLIENT SPECIFIED
                            INTO CORRESPONDING FIELDS OF TABLE it_mara
                            FOR ALL ENTRIES IN itab
                            WHERE mandt = sy-mandt
                            AND matnr EQ itab-matnr.
      SELECT * FROM mvke CLIENT SPECIFIED
                           INTO CORRESPONDING FIELDS OF TABLE it_mvke
                           FOR ALL ENTRIES IN itab
                           WHERE mandt = sy-mandt
                           AND matnr EQ itab-matnr.
      IF sy-subrc = 0.
        SELECT * FROM tvm1t CLIENT SPECIFIED
                       INTO CORRESPONDING FIELDS OF TABLE it_tvm1t
                       FOR ALL ENTRIES IN it_mvke
                       WHERE mandt = sy-mandt
                       AND mvgr1 EQ it_mvke-mvgr1.
      ENDIF.
      IF s_period IS NOT INITIAL.
        ss_period = s_period.
        ss_period = ss_period + 1.
        s_erdat-sign = 'I'.
        s_erdat-option = 'BT'.
        s_erdat-high = sy-datum.
        ss_date = sy-datum - ss_period.
        s_erdat-low = ss_date.
        APPEND s_erdat.
        CLEAR s_erdat.
        SELECT * FROM zcvi_vbrk_vbrp CLIENT SPECIFIED
                             INTO CORRESPONDING FIELDS OF TABLE it_vbrkvbrp
                                     FOR ALL ENTRIES IN itab
                                     WHERE mandt = sy-mandt
                                     AND matnr = itab-matnr
                                     AND   fkart IN ('Z3PS','ZVIT',
                                           'ZVDT','ZFRV',
                                           'ZDRV','ZCMR')
                                     AND fkdat IN s_erdat
                                     AND fksto EQ space
                                     AND sfakn EQ space
                                     AND rfbsk NE 'E'
                                     AND fkimg NE 0.
        LOOP AT it_vbrkvbrp.
          IF it_vbrkvbrp-fktyp NE 'L'.
            DELETE it_vbrkvbrp.
            CONTINUE.
          ENDIF.
          IF it_vbrkvbrp-vrkme NE it_vbrkvbrp-meins.
            it_vbrkvbrp-fkimg = it_vbrkvbrp-fklmg.
            it_vbrkvbrp-meins = it_vbrkvbrp-vrkme.
          ENDIF.
          IF it_vbrkvbrp-shkzg = 'X'.
            it_vbrkvbrp-fkimg = it_vbrkvbrp-fkimg * -1.
          ENDIF.
          it_vbrk-matnr = it_vbrkvbrp-matnr.
          it_vbrk-fkimg = it_vbrkvbrp-fkimg.
          it_vbrk-meins = it_vbrkvbrp-meins.
          IF it_vbrk[] IS INITIAL.
            APPEND it_vbrk.
            CLEAR it_vbrk.
          ELSE.
            COLLECT it_vbrk.
            CLEAR it_vbrk.
          ENDIF.
        ENDLOOP.
      ENDIF.
      SORT it_vbrkvbrp BY matnr.
      SELECT * FROM ekko CLIENT SPECIFIED
                                 INTO CORRESPONDING FIELDS OF TABLE it_ekko
                                  FOR ALL ENTRIES IN itab
                                  WHERE mandt = sy-mandt
                                  AND ebeln = itab-ebeln.
      SORT it_ekko BY ebeln.
      LOOP AT itab.
        READ TABLE it_ekko BINARY SEARCH WITH KEY
                                                ebeln = itab-ebeln.
        IF sy-subrc = 0.
          IF it_ekko-frgke = 'R'.
            itab-zconfirm1 = 'YES'.
            itab-zconfirm2 = 'YES'.
            itab-zconfirm3 = 'YES'.
          ELSEIF it_ekko-frgzu = 'X'.
            itab-zconfirm1 = 'YES'.
          ELSEIF it_ekko-frgzu = 'XX'.
            itab-zconfirm1 = 'YES'.
            itab-zconfirm2 = 'YES'.
          ENDIF.
        ENDIF.
        IF s_period IS NOT INITIAL.
          READ TABLE it_vbrk BINARY SEARCH
                                           WITH KEY matnr = itab-matnr.
          IF sy-subrc = 0.
            itab-fkimg = it_vbrk-fkimg.
          ENDIF.
        ENDIF.
        READ TABLE it_marc WITH KEY matnr = itab-matnr
                                    werks = itab-werks.
        IF sy-subrc = 0.
          MOVE it_marc-minbe TO itab-minbe.
          MOVE it_marc-mabst TO itab-mabst.
        ENDIF.
        READ TABLE it_eban WITH KEY banfn = itab-banfn
                                    bnfpo = itab-bnfpo.
        IF sy-subrc = 0.
          IF it_eban-fixkz EQ 'X'.
            itab-zfixkz = 'Firmed'.
          ENDIF.
        ENDIF.
        READ TABLE it_mara WITH KEY matnr = itab-matnr.
        IF sy-subrc = 0.
          MOVE it_mara-matkl TO itab-matkl.
        ENDIF.
        READ TABLE it_mvke WITH KEY matnr = itab-matnr.
        IF sy-subrc = 0.
          MOVE it_mvke-mvgr1 TO itab-mvgr1.
          READ TABLE it_tvm1t WITH KEY mvgr1 = itab-mvgr1.
          IF sy-subrc = 0.
            MOVE it_tvm1t-bezei TO itab-bezei.
          ENDIF.
        ENDIF.
        MODIFY itab.
        CLEAR itab.
      ENDLOOP.
    ENDFORM.                    " getdata
    *&      Form  build_eventtab
          text
         -->P_EVENTS[]  text
    FORM build_eventtab  USING   p_events TYPE slis_t_event.
      DATA: ls_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_events.
      READ TABLE p_events WITH KEY name = slis_ev_top_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE formname_top_of_page TO ls_event-form.
        APPEND ls_event TO p_events.
      ENDIF.
    ENDFORM.                    " build_eventtab
    *&      Form  build_comment
          text
         -->P_HEADING[]  text
    FORM build_comment  USING    p_heading TYPE slis_t_listheader.
      DATA: hline TYPE slis_listheader.
      CLEAR: hline.
      hline-info = 'Purchase Requision History'.
      hline-typ  = 'H'.
      APPEND hline TO p_heading.
      CLEAR hline.
    ENDFORM.                    " build_comment
    *&      Form  getfieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM getfieldcatalog USING  p_fcat TYPE slis_t_fieldcat_alv.
      DATA : w_fcat TYPE slis_fieldcat_alv.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BANFN'.
      w_fcat-seltext_l    = 'PR No '.
      w_fcat-key          = 'X'.
      w_fcat-col_pos      = 1.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BNFPO'.
      w_fcat-seltext_l    = 'PR Item '.
      w_fcat-key          = 'X'.
      w_fcat-col_pos      = 2.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MATNR'.
      w_fcat-seltext_l    = 'Material '.
      w_fcat-col_pos      = 3.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MAKTX'.
      w_fcat-seltext_l    = 'Name of the Mateiral '.
      w_fcat-col_pos      = 4.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'WERKS'.
      w_fcat-seltext_l    = 'Plant '.
      w_fcat-col_pos      = 5.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'EBELN'.
      w_fcat-seltext_l    = 'PO No '.
      w_fcat-hotspot        = 'X'.
      w_fcat-col_pos      = 6.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'EBELP'.
      w_fcat-seltext_l    = 'PO Item '.
      w_fcat-col_pos      = 7.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'PR_MENGE'.
      w_fcat-seltext_l    = 'PR Qty '.
      w_fcat-col_pos      = 8.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MEINS'.
      w_fcat-seltext_l    = 'Unit'.
      w_fcat-col_pos      = 9.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MENGE'.
      w_fcat-seltext_l    = 'PO Quantity '.
      w_fcat-col_pos      = 10.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'GRN_MENGE'.
      w_fcat-seltext_l    = 'GRN Qty '.
      w_fcat-col_pos      = 11.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'TRN_MENGE'.
      w_fcat-seltext_l    = 'Transit Qty '.
      w_fcat-col_pos      = 12.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BAL_MENGE'.
      w_fcat-seltext_l    = 'Balance PO Qty '.
      w_fcat-col_pos      = 13.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'LABST'.
      w_fcat-seltext_l    = 'Current Stock'.
      w_fcat-col_pos      = 14.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'FKIMG'.
      w_fcat-seltext_l    = 'Sales Qty '.
      w_fcat-col_pos      = 15.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MINBE'.
      w_fcat-seltext_l    = 'Reorder Point'.
      w_fcat-col_pos      = 16.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MABST'.
      w_fcat-seltext_l    = 'Maximum stock level'.
      w_fcat-col_pos      = 17.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZFIXKZ'.
      w_fcat-seltext_l    = 'Fixed Indicator'.
      w_fcat-col_pos      = 18.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MATKL'.
      w_fcat-seltext_l    = 'Design'.
      w_fcat-col_pos      = 19.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'MVGR1'.
      w_fcat-seltext_l    = 'Size'.
      w_fcat-col_pos      = 20.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'BEZEI'.
      w_fcat-seltext_l    = 'Size Desc.'.
      w_fcat-col_pos      = 21.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'FKIMG'.
      w_fcat-seltext_l    = 'Sales Qty '.
      w_fcat-col_pos      = 22.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZCONFIRM1'.
      w_fcat-seltext_l    = 'Release1'.
      w_fcat-col_pos      = 23.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZCONFIRM2'.
      w_fcat-seltext_l    = 'Release2'.
      w_fcat-col_pos      = 24.
      APPEND w_fcat TO fcat.
      CLEAR w_fcat.
      w_fcat-tabname      = 'ITAB'.
      w_fcat-fieldname    = 'ZCONFIRM3'.
      w_fcat-seltext_l    = 'Release3'.
      w_fcat-col_pos      = 25.
      APPEND w_fcat TO fcat.
    ENDFORM.                    " getfieldcatalog
    *&      Form  alvdisplaydata
          text
    -->  p1        text
    <--  p2        text
    FORM alvdisplaydata .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repname
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = fcat
          it_events               = events[]
        TABLES
          t_outtab                = itab.
      IF sy-subrc <> 0.
        WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                    " alvdisplaydata
          FORM TOP_OF_PAGE                                              *
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = heading.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  build_eventtab1
          text
         -->P_EVENTS[]  text
    FORM build_eventtab1  USING   p_events1 TYPE slis_t_event.
      DATA: ls_event1 TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_events1.
      READ TABLE p_events1 WITH KEY name = slis_ev_top_of_page
                               INTO ls_event1.
      IF sy-subrc = 0.
        MOVE formname_top_of_page1 TO ls_event1-form.
        APPEND ls_event1 TO p_events1.
      ENDIF.
    endform.
    *&      Form  build_comment
          text
         -->P_HEADING[]  text
    FORM build_comment1  USING    p_heading1 TYPE slis_t_listheader.
      DATA: hline1 TYPE slis_listheader.
      hline1-info = '1 Secondary List'.
      hline1-typ  = 'H'.
      APPEND hline1 TO p_heading1.
      CLEAR hline1.
    ENDFORM.                    " build_comment
    *&      Form  getfieldcatalog1
          text
         -->P_FCAT1[]  text
    form getfieldcatalog1  using    p_fcat1 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat1 TYPE slis_fieldcat_alv.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'VBELN'.
      w_fcat1-seltext_l    = 'Pr.No'.
      w_fcat1-hotspot   = 'X'.
      w_fcat1-col_pos      = 1.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'POSNR'.
      w_fcat1-seltext_l    = 'PR Item'.
      w_fcat1-col_pos      = 2.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'MATNR'.
      w_fcat1-seltext_l    = 'Material'.
      w_fcat1-col_pos      = 3.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'LFIMG'.
      w_fcat1-seltext_l    = 'Actual quantity delivered'.
      w_fcat1-col_pos      = 4.
      APPEND w_fcat1 to fcat1.
      CLEAR w_fcat1.
      w_fcat1-tabname      = 'IT_LIPS'.
      w_fcat1-fieldname    = 'MEINS'.
      w_fcat1-seltext_l    = 'Base Unit of Measure'.
      w_fcat1-col_pos      = 5.
      APPEND w_fcat1 to fcat1.
    endform.                    " getfieldcatalog1
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM      text
         -->RS_SELFIELD  text
    FORM user_command  USING r_ucomm LIKE sy-ucomm
          rs_selfield TYPE slis_selfield.
    READ TABLE itab INDEX rs_selfield-tabindex.
      IF sy-subrc EQ 0.
      select vbeln
             posnr
             matnr
             vgbel
             lfimg
             meins from lips into table it_lips
             where vgbel = itab-ebeln.
      ENDIF.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = repname
          i_callback_user_command = 'USER_COMMAND'
          it_fieldcat             = fcat1
          it_events               = events1[]
        TABLES
          t_outtab                = it_lips.
      IF sy-subrc <> 0.
        WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                    "USER_COMMAND
          FORM TOP_OF_PAGE1                                              *
    FORM top_of_page1.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = heading1.
    ENDFORM.                    "TOP_OF_PAGE1
    *&      Form  build_eventtab1
          text
         -->P_EVENTS[]  text
    FORM build_eventtab2  USING   p_events2 TYPE slis_t_event.
      DATA: ls_event2 TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = p_events2.
      READ TABLE p_events2 WITH KEY name = slis_ev_top_of_page
                               INTO ls_event2.
      IF sy-subrc = 0.
        MOVE formname_top_of_page2 TO ls_event2-form.
        APPEND ls_event2 TO p_events2.
      ENDIF.
    endform.
    *&      Form  build_comment
          text
         -->P_HEADING[]  text
    FORM build_comment2  USING    p_heading2 TYPE slis_t_listheader.
      DATA: hline2 TYPE slis_listheader.
      hline2-info = '2 Secondary List'.
      hline2-typ  = 'H'.
      APPEND hline2 TO p_heading2.
      CLEAR hline2.
    ENDFORM.                    " build_comment
    *&      Form  getfieldcatalog1
          text
         -->P_FCAT1[]  text
    form getfieldcatalog2  using    p_fcat2 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat2 TYPE slis_fieldcat_alv.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'EBELN'.
      w_fcat2-seltext_l    = 'Pr.Doc No'.
      w_fcat2-col_pos      = 1.
      APPEND w_fcat2 to fcat2.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'EBELP'.
      w_fcat2-seltext_l    = 'PR Doc Item'.
      w_fcat2-col_pos      = 2.
      APPEND w_fcat2 to fcat2.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'BELNR'.
      w_fcat2-seltext_l    = 'No.Mat Doc'.
      w_fcat2-col_pos      = 3.
      APPEND w_fcat2 to fcat2.
      CLEAR w_fcat2.
      w_fcat2-tabname      = 'IT_EKBE'.
      w_fcat2-fieldname    = 'BUZEI'.
      w_fcat2-seltext_l    = 'Item in Mat Doc'.

    Hi,
    You did mistakes hear.
    check for >>>>
    *& Report ZCRPT_MM_MRP
    REPORT zcrpt_mm_mrp .
    *& Report : ZRPT_MM_PR_HISTORY *
    Dev. Class : ZCVS *
    Program Name : ZRPT_MM_PR_HISTORY *
    Description : PO History Details List *
    Author : Sujit Created on : 12.11.2007 *
    SAP Release : SAP ERP Central Component 5.0 *
    Tcode : Req DKIK905199 N-160 *
    : DKIK905248 N-160 For Deletion indicator *
    S O U R C E C O D E C H A N G E H I S T O R Y *
    CODE | AUTHOR | DATE | Description *
    | | | *
    TABLE DECLARATIONS *
    TABLES: ekko,ekpo,mara, makt,ekes,eban,mard,s994.
    Internal tables decleration
    TYPE-POOLS: slis.
    DATA: BEGIN OF it_vbrkvbrp OCCURS 0,
    vbeln TYPE vbrk-vbeln,
    fktyp TYPE vbrk-fktyp,
    matnr TYPE vbrp-matnr,
    fkimg TYPE vbrp-fkimg,
    fklmg TYPE vbrp-fklmg,
    vrkme TYPE vbrp-vrkme,
    meins TYPE vbrp-meins,
    shkzg TYPE vbrp-shkzg,
    END OF it_vbrkvbrp.
    DATA: BEGIN OF it_vbrk OCCURS 0,
    matnr TYPE vbrp-matnr,
    fkimg TYPE vbrp-fkimg,
    meins TYPE vbrp-meins,
    END OF it_vbrk.
    DATA: BEGIN OF it_ekko OCCURS 0,
    ebeln TYPE ekko-ebeln,
    bukrs TYPE ekko-bukrs,
    frggr TYPE ekko-frggr,
    frgsx TYPE ekko-frgsx,
    frgke TYPE ekko-frgke,
    frgzu TYPE ekko-frgzu,
    END OF it_ekko.
    DATA: BEGIN OF it_ekbe OCCURS 0,
    ebeln type ekbe-ebeln,
    ebelp type ekbe-ebelp,
    belnr type ekbe-belnr,
    buzei type ekbe-buzei,
    xblnr type ekbe-xblnr,
    END OF it_ekbe.
    DATA: BEGIN OF it_lips OCCURS 0,
    vbeln type lips-vbeln,
    posnr type lips-posnr,
    matnr type lips-matnr,
    vgbel type lips-vgbel,
    lfimg type lips-lfimg,
    meins type lips-meins,
    END OF it_lips.
    data : it1_lips like it_lips occurs 0 with header line.
    DATA: BEGIN OF itab OCCURS 1 ,
    banfn LIKE eban-banfn, " Purchase requisition number
    bnfpo LIKE eban-bnfpo, " PR Item Number
    werks LIKE ekpo-werks, " Plant
    matnr LIKE ekpo-matnr, " Material
    maktx LIKE makt-maktx, " Name of Material
    pr_menge LIKE eban-menge, " PR Quantity
    meins LIKE ekpo-meins, " Unit
    ebeln LIKE ekpo-ebeln, " PO No
    bsart LIKE ekko-bsart, " Purchasing Document Type
    ebelp LIKE ekpo-ebelp, " Item
    menge LIKE ekpo-menge, " PO Qty
    grn_menge LIKE ekpo-menge, " GRN Qty
    trn_menge LIKE ekpo-menge, " Transit Qty
    bal_menge LIKE ekpo-menge, " Balance PO Qty
    labst LIKE mard-labst, " Valuated stock with unrestricted
    fkimg LIKE vbrp-fkimg, " Actual billed quantity
    minbe TYPE marc-minbe,
    mabst TYPE marc-mabst,
    fixkz TYPE eban-fixkz,
    zfixkz(7) TYPE c,
    matkl TYPE mara-matkl,
    mvgr1 TYPE mvke-mvgr1,
    bezei TYPE tvm1t-bezei,
    zconfirm1(3) TYPE c,
    zconfirm2(3) TYPE c,
    zconfirm3(3) TYPE c,
    END OF itab.
    DATA: BEGIN OF itab_sale OCCURS 1 ,
    matnr LIKE ekpo-matnr, " Material
    werks LIKE ekpo-werks, " Plant
    maktx LIKE makt-maktx, " Name of Material
    labst LIKE mard-labst, " Valuated stock with unrestricted
    END OF itab_sale.
    DATA : i_eban LIKE eban OCCURS 0 WITH HEADER LINE.
    DATA : del_menge LIKE ekes-menge,
    grn_dabmg LIKE ekes-dabmg.
    DATA: BEGIN OF it_marc OCCURS 0,
    matnr TYPE marc-matnr,
    werks TYPE marc-werks,
    minbe TYPE marc-minbe,
    mabst TYPE marc-mabst,
    END OF it_marc.
    DATA: BEGIN OF it_eban OCCURS 0,
    banfn TYPE eban-banfn,
    bnfpo TYPE eban-bnfpo,
    fixkz TYPE eban-fixkz,
    ebeln type eban-ebeln,
    END OF it_eban.
    DATA: BEGIN OF it_mara OCCURS 0,
    matnr TYPE mara-matnr,
    matkl TYPE mara-matkl,
    END OF it_mara.
    DATA: BEGIN OF it_mvke OCCURS 0,
    matnr TYPE mvke-matnr,
    mvgr1 TYPE mvke-mvgr1,
    mvgr2 TYPE mvke-mvgr2,
    mvgr3 TYPE mvke-mvgr3,
    mvgr4 TYPE mvke-mvgr4,
    END OF it_mvke.
    DATA: BEGIN OF it_tvm1t OCCURS 0,
    mvgr1 TYPE tvm1t-mvgr1,
    bezei TYPE tvm1t-bezei,
    END OF it_tvm1t.
    DATA: fcat TYPE slis_t_fieldcat_alv,
    fcat1 TYPE slis_t_fieldcat_alv,
    fcat2 TYPE slis_t_fieldcat_alv,
    heading TYPE slis_t_listheader,
    heading1 TYPE slis_t_listheader,
    heading2 TYPE slis_t_listheader,
    events TYPE slis_t_event,
    events1 TYPE slis_t_event,
    events2 TYPE slis_t_event,
    repname LIKE sy-repid.
    DATA: keyinfo TYPE slis_keyinfo_alv.
    CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    CONSTANTS: formname_top_of_page1 TYPE slis_formname VALUE 'TOP_OF_PAGE1'
    CONSTANTS: formname_top_of_page2 TYPE slis_formname VALUE 'TOP_OF_PAGE2'
    RANGES : s_erdat FOR vbrk-erdat.
    DATA: ss_date TYPE mkpf-budat.
    DATA: ss_period(3) TYPE n.
    Screen Selection
    SELECTION-SCREEN BEGIN OF BLOCK s1 WITH FRAME TITLE text-001.
    *SELECT-OPTIONS : s_ebeln FOR ekpo-ebeln,
    s_werks FOR ekpo-werks.
    SELECT-OPTIONS : s_banfn FOR eban-banfn, "Purchase requisition number
    s_badat FOR eban-badat, "Requisition (request) date
    s_matnr FOR eban-matnr, "Material Number
    s_werks FOR eban-werks, "Plant
    s_lgort FOR eban-lgort, "Storage Location
    s_matkl FOR eban-matkl, "Material group
    s_flief FOR eban-flief, "Fixed Vendor
    s_bsart FOR ekko-bsart NO INTERVALS. " Purchasing
    SELECTION-SCREEN END OF BLOCK s1 .
    SELECTION-SCREEN BEGIN OF BLOCK s2 WITH FRAME TITLE text-002.
    PARAMETERS: s_period(3) TYPE n .
    SELECTION-SCREEN END OF BLOCK s2 .
    initialization.
    repname = sy-repid.
    PERFORM build_eventtab USING events[].
    PERFORM build_eventtab1 USING events1[].
    PERFORM build_eventtab2 USING events2[].
    PERFORM build_comment USING heading[].
    PERFORM build_comment1 USING heading1[].
    PERFORM build_comment2 USING heading2[].
    Strat-of-Selection
    START-OF-SELECTION.
    PERFORM getdata.
    PERFORM getfieldcatalog USING fcat[].
    PERFORM getfieldcatalog1 USING fcat1[].
    PERFORM getfieldcatalog2 USING fcat2[].
    PERFORM alvdisplaydata.
    END-OF-SELECTION.
    *& Form getdata
    text
    --> p1 text
    <-- p2 text
    FORM getdata.
    SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE i_eban
    WHERE banfn IN s_banfn "Purchase requisition number
    AND badat IN s_badat "Requisition (request) date
    AND matnr IN s_matnr "Material Number
    AND werks IN s_werks "Plant
    AND lgort IN s_lgort "Storage Location
    AND matkl IN s_matkl "Material group
    AND flief IN s_flief "Fixed Vendor
    AND loekz NE 'X' "Deletion Pocument
    AND afnam EQ 'MRP'. "Name of requisitioner/requester
    IF NOT i_eban[] IS INITIAL.
    LOOP AT i_eban.
    CLEAR itab.
    itab-banfn = i_eban-banfn.
    itab-bnfpo = i_eban-bnfpo.
    itab-pr_menge = i_eban-menge.
    itab-meins = i_eban-meins.
    itab-ebeln = i_eban-ebeln.
    itab-ebelp = i_eban-ebelp.
    itab-matnr = i_eban-matnr.
    itab-werks = i_eban-werks.
    **----Get Material Description
    IF NOT i_eban-matnr IS INITIAL.
    SELECT SINGLE * FROM makt
    WHERE matnr EQ i_eban-matnr.
    IF sy-subrc EQ 0.
    itab-maktx = makt-maktx.
    ENDIF.
    ELSE.
    itab-maktx = i_eban-txz01.
    ENDIF.
    *----Get PO & GRN Quantity
    IF i_eban-ebeln GT 0 AND i_eban-ebelp GT 0.
    SELECT SINGLE * FROM ekpo
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp.
    IF sy-subrc EQ 0.
    itab-menge = ekpo-menge.
    ENDIF.
    SELECT SINGLE * FROM ekko
    WHERE ebeln = i_eban-ebeln.
    IF sy-subrc EQ 0.
    itab-bsart = ekko-bsart.
    ENDIF.
    *-------Get GRN Quantity
    CLEAR : del_menge,grn_dabmg.
    IF ekpo-bstae = '0004'. " GRN Against InbondDelivery
    SELECT SUM( menge ) SUM( dabmg )
    FROM ekes
    INTO (del_menge,grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND ebtyp = 'LA'.
    IF sy-subrc EQ 0.
    itab-grn_menge = grn_dabmg.
    itab-trn_menge = del_menge - grn_dabmg.
    itab-bal_menge = ekpo-menge - del_menge.
    IF itab-bal_menge < 0.
    itab-bal_menge = 0.
    ENDIF.
    ELSE.
    itab-bal_menge = itab-menge.
    ENDIF.
    ELSE. " Regular GRN
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'E'
    AND bwart = '101'.
    IF sy-subrc EQ 0.
    itab-grn_menge = grn_dabmg.
    itab-trn_menge = del_menge - grn_dabmg.
    ENDIF.
    For Cancelled GRN
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'E'
    AND bwart = '102'.
    IF sy-subrc EQ 0.
    itab-grn_menge = itab-grn_menge - grn_dabmg.
    itab-trn_menge = del_menge - grn_dabmg.
    ENDIF.
    IF itab-bsart = 'UB'.
    CLEAR : grn_dabmg,grn_dabmg.
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'U'
    AND bwart = '641'.
    IF sy-subrc EQ 0.
    itab-trn_menge = grn_dabmg.
    ENDIF.
    For Reversal of Issue Document
    SELECT SUM( menge )
    FROM ekbe
    INTO (grn_dabmg)
    WHERE ebeln = i_eban-ebeln
    AND ebelp = i_eban-ebelp
    AND bewtp = 'U'
    AND bwart = '642'.
    IF sy-subrc EQ 0.
    itab-trn_menge = itab-trn_menge - grn_dabmg.
    ENDIF.
    IF itab-grn_menge <> 0.
    itab-trn_menge = 0.
    ENDIF.
    ENDIF.
    End
    ENDIF.
    *-------End
    ENDIF.
    itab-bal_menge = itab-menge - ( itab-grn_menge + itab-trn_menge ).
    CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
    EXPORTING
    input = itab-matnr
    IMPORTING
    output = itab-matnr.
    itab_sale-matnr = itab-matnr.
    itab_sale-werks = itab-werks.
    itab_sale-maktx = itab-maktx.
    COLLECT itab_sale.
    APPEND itab.
    ENDLOOP.
    ENDIF.
    IF NOT s_bsart[] IS INITIAL.
    DELETE itab WHERE bsart NOT IN s_bsart.
    ENDIF.
    IF NOT itab_sale IS INITIAL.
    LOOP AT itab_sale.
    *-----Get Sales Quantity
    CALL FUNCTION 'CONVERSION_EXIT_CCMAT_INPUT'
    EXPORTING
    input = itab_sale-matnr
    IMPORTING
    output = itab_sale-matnr.
    *-----Change as on 08.12.2007
    SELECT SUM( clabs ) INTO itab_sale-labst
    FROM mchb
    WHERE matnr = itab_sale-matnr
    AND werks = itab_sale-werks.
    *-----End
    MODIFY itab_sale TRANSPORTING labst matnr.
    ENDLOOP.
    LOOP AT itab.
    READ TABLE itab_sale WITH KEY matnr = itab-matnr
    werks = itab-werks.
    IF sy-subrc = 0.
    CALL FUNCTION 'CONVERSION_EXIT_CCMAT_OUTPUT'
    EXPORTING
    input = itab_sale-matnr
    IMPORTING
    output = itab_sale-matnr.
    MOVE itab_sale-labst TO itab-labst.
    ENDIF.
    MODIFY itab TRANSPORTING labst.
    CLEAR itab.
    ENDLOOP.
    ENDIF.
    CHECK itab[] IS NOT INITIAL.
    SELECT * FROM marc CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_marc
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr EQ itab-matnr
    AND werks EQ itab-werks.
    SELECT * FROM eban CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_eban
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND banfn EQ itab-banfn
    AND bnfpo EQ itab-bnfpo.
    SELECT * FROM mara CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_mara
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr EQ itab-matnr.
    SELECT * FROM mvke CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_mvke
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr EQ itab-matnr.
    IF sy-subrc = 0.
    SELECT * FROM tvm1t CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_tvm1t
    FOR ALL ENTRIES IN it_mvke
    WHERE mandt = sy-mandt
    AND mvgr1 EQ it_mvke-mvgr1.
    ENDIF.
    IF s_period IS NOT INITIAL.
    ss_period = s_period.
    ss_period = ss_period + 1.
    s_erdat-sign = 'I'.
    s_erdat-option = 'BT'.
    s_erdat-high = sy-datum.
    ss_date = sy-datum - ss_period.
    s_erdat-low = ss_date.
    APPEND s_erdat.
    CLEAR s_erdat.
    SELECT * FROM zcvi_vbrk_vbrp CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_vbrkvbrp
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND matnr = itab-matnr
    AND fkart IN ('Z3PS','ZVIT',
    'ZVDT','ZFRV',
    'ZDRV','ZCMR')
    AND fkdat IN s_erdat
    AND fksto EQ space
    AND sfakn EQ space
    AND rfbsk NE 'E'
    AND fkimg NE 0.
    LOOP AT it_vbrkvbrp.
    IF it_vbrkvbrp-fktyp NE 'L'.
    DELETE it_vbrkvbrp.
    CONTINUE.
    ENDIF.
    IF it_vbrkvbrp-vrkme NE it_vbrkvbrp-meins.
    it_vbrkvbrp-fkimg = it_vbrkvbrp-fklmg.
    it_vbrkvbrp-meins = it_vbrkvbrp-vrkme.
    ENDIF.
    IF it_vbrkvbrp-shkzg = 'X'.
    it_vbrkvbrp-fkimg = it_vbrkvbrp-fkimg * -1.
    ENDIF.
    it_vbrk-matnr = it_vbrkvbrp-matnr.
    it_vbrk-fkimg = it_vbrkvbrp-fkimg.
    it_vbrk-meins = it_vbrkvbrp-meins.
    IF it_vbrk[] IS INITIAL.
    APPEND it_vbrk.
    CLEAR it_vbrk.
    ELSE.
    COLLECT it_vbrk.
    CLEAR it_vbrk.
    ENDIF.
    ENDLOOP.
    ENDIF.
    SORT it_vbrkvbrp BY matnr.
    SELECT * FROM ekko CLIENT SPECIFIED
    INTO CORRESPONDING FIELDS OF TABLE it_ekko
    FOR ALL ENTRIES IN itab
    WHERE mandt = sy-mandt
    AND ebeln = itab-ebeln.
    SORT it_ekko BY ebeln.
    LOOP AT itab.
    READ TABLE it_ekko BINARY SEARCH WITH KEY
    ebeln = itab-ebeln.
    IF sy-subrc = 0.
    IF it_ekko-frgke = 'R'.
    itab-zconfirm1 = 'YES'.
    itab-zconfirm2 = 'YES'.
    itab-zconfirm3 = 'YES'.
    ELSEIF it_ekko-frgzu = 'X'.
    itab-zconfirm1 = 'YES'.
    ELSEIF it_ekko-frgzu = 'XX'.
    itab-zconfirm1 = 'YES'.
    itab-zconfirm2 = 'YES'.
    ENDIF.
    ENDIF.
    IF s_period IS NOT INITIAL.
    READ TABLE it_vbrk BINARY SEARCH
    WITH KEY matnr = itab-matnr.
    IF sy-subrc = 0.
    itab-fkimg = it_vbrk-fkimg.
    ENDIF.
    ENDIF.
    READ TABLE it_marc WITH KEY matnr = itab-matnr
    werks = itab-werks.
    IF sy-subrc = 0.
    MOVE it_marc-minbe TO itab-minbe.
    MOVE it_marc-mabst TO itab-mabst.
    ENDIF.
    READ TABLE it_eban WITH KEY banfn = itab-banfn
    bnfpo = itab-bnfpo.
    IF sy-subrc = 0.
    IF it_eban-fixkz EQ 'X'.
    itab-zfixkz = 'Firmed'.
    ENDIF.
    ENDIF.
    READ TABLE it_mara WITH KEY matnr = itab-matnr.
    IF sy-subrc = 0.
    MOVE it_mara-matkl TO itab-matkl.
    ENDIF.
    READ TABLE it_mvke WITH KEY matnr = itab-matnr.
    IF sy-subrc = 0.
    MOVE it_mvke-mvgr1 TO itab-mvgr1.
    READ TABLE it_tvm1t WITH KEY mvgr1 = itab-mvgr1.
    IF sy-subrc = 0.
    MOVE it_tvm1t-bezei TO itab-bezei.
    ENDIF.
    ENDIF.
    MODIFY itab.
    CLEAR itab.
    ENDLOOP.
    ENDFORM. " getdata
    *& Form build_eventtab
    text
    -->P_EVENTS[] text
    FORM build_eventtab USING p_events TYPE slis_t_event.
    DATA: ls_event TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = p_events.
    READ TABLE p_events WITH KEY name = slis_ev_top_of_page
    INTO ls_event.
    IF sy-subrc = 0.
    MOVE formname_top_of_page TO ls_event-form.
    APPEND ls_event TO p_events.
    ENDIF.
    ENDFORM. " build_eventtab
    *& Form build_comment
    text
    -->P_HEADING[] text
    FORM build_comment USING p_heading TYPE slis_t_listheader.
    DATA: hline TYPE slis_listheader.
    CLEAR: hline.
    hline-info = 'Purchase Requision History'.
    hline-typ = 'H'.
    APPEND hline TO p_heading.
    CLEAR hline.
    ENDFORM. " build_comment
    *& Form getfieldcatalog
    text
    --> p1 text
    <-- p2 text
    FORM getfieldcatalog USING p_fcat TYPE slis_t_fieldcat_alv.
    DATA : w_fcat TYPE slis_fieldcat_alv.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BANFN'.
    w_fcat-seltext_l = 'PR No '.
    w_fcat-key = 'X'.
    w_fcat-col_pos = 1.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BNFPO'.
    w_fcat-seltext_l = 'PR Item '.
    w_fcat-key = 'X'.
    w_fcat-col_pos = 2.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MATNR'.
    w_fcat-seltext_l = 'Material '.
    w_fcat-col_pos = 3.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MAKTX'.
    w_fcat-seltext_l = 'Name of the Mateiral '.
    w_fcat-col_pos = 4.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'WERKS'.
    w_fcat-seltext_l = 'Plant '.
    w_fcat-col_pos = 5.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'EBELN'.
    w_fcat-seltext_l = 'PO No '.
    w_fcat-hotspot = 'X'.
    w_fcat-col_pos = 6.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'EBELP'.
    w_fcat-seltext_l = 'PO Item '.
    w_fcat-col_pos = 7.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'PR_MENGE'.
    w_fcat-seltext_l = 'PR Qty '.
    w_fcat-col_pos = 8.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MEINS'.
    w_fcat-seltext_l = 'Unit'.
    w_fcat-col_pos = 9.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MENGE'.
    w_fcat-seltext_l = 'PO Quantity '.
    w_fcat-col_pos = 10.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'GRN_MENGE'.
    w_fcat-seltext_l = 'GRN Qty '.
    w_fcat-col_pos = 11.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'TRN_MENGE'.
    w_fcat-seltext_l = 'Transit Qty '.
    w_fcat-col_pos = 12.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BAL_MENGE'.
    w_fcat-seltext_l = 'Balance PO Qty '.
    w_fcat-col_pos = 13.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'LABST'.
    w_fcat-seltext_l = 'Current Stock'.
    w_fcat-col_pos = 14.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'FKIMG'.
    w_fcat-seltext_l = 'Sales Qty '.
    w_fcat-col_pos = 15.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MINBE'.
    w_fcat-seltext_l = 'Reorder Point'.
    w_fcat-col_pos = 16.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MABST'.
    w_fcat-seltext_l = 'Maximum stock level'.
    w_fcat-col_pos = 17.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZFIXKZ'.
    w_fcat-seltext_l = 'Fixed Indicator'.
    w_fcat-col_pos = 18.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MATKL'.
    w_fcat-seltext_l = 'Design'.
    w_fcat-col_pos = 19.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'MVGR1'.
    w_fcat-seltext_l = 'Size'.
    w_fcat-col_pos = 20.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'BEZEI'.
    w_fcat-seltext_l = 'Size Desc.'.
    w_fcat-col_pos = 21.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'FKIMG'.
    w_fcat-seltext_l = 'Sales Qty '.
    w_fcat-col_pos = 22.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZCONFIRM1'.
    w_fcat-seltext_l = 'Release1'.
    w_fcat-col_pos = 23.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZCONFIRM2'.
    w_fcat-seltext_l = 'Release2'.
    w_fcat-col_pos = 24.
    APPEND w_fcat TO fcat.
    CLEAR w_fcat.
    w_fcat-tabname = 'ITAB'.
    w_fcat-fieldname = 'ZCONFIRM3'.
    w_fcat-seltext_l = 'Release3'.
    w_fcat-col_pos = 25.
    APPEND w_fcat TO fcat.
    ENDFORM. " getfieldcatalog
    *& Form alvdisplaydata
    text
    --> p1 text
    <-- p2 text
    FORM alvdisplaydata .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repname
    i_callback_user_command = 'USER_COMMAND'
    it_fieldcat = fcat
    it_events = events[]
    TABLES
    t_outtab = itab.
    IF sy-subrc <> 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. " alvdisplaydata
    FORM TOP_OF_PAGE *
    FORM top_of_page.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = heading.
    ENDFORM. "TOP_OF_PAGE
    *& Form build_eventtab1
    text
    -->P_EVENTS[] text
    FORM build_eventtab1 USING p_events1 TYPE slis_t_event.
    DATA: ls_event1 TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = p_events1.
    READ TABLE p_events1 WITH KEY name = slis_ev_top_of_page
    INTO ls_event1.
    IF sy-subrc = 0.
    MOVE formname_top_of_page1 TO ls_event1-form.
    APPEND ls_event1 TO p_events1.
    ENDIF.
    endform.
    *& Form build_comment
    text
    -->P_HEADING[] text
    FORM build_comment1 USING p_heading1 TYPE slis_t_listheader.
    DATA: hline1 TYPE slis_listheader.
    hline1-info = '1 Secondary List'.
    hline1-typ = 'H'.
    APPEND hline1 TO p_heading1.
    CLEAR hline1.
    ENDFORM. " build_comment
    *& Form getfieldcatalog1
    text
    -->P_FCAT1[] text
    form getfieldcatalog1 using p_fcat1 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat1 TYPE slis_fieldcat_alv.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'VBELN'.
    w_fcat1-seltext_l = 'Pr.No'.
    w_fcat1-hotspot = 'X'.
    w_fcat1-col_pos = 1.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'POSNR'.
    w_fcat1-seltext_l = 'PR Item'.
    w_fcat1-col_pos = 2.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'MATNR'.
    w_fcat1-seltext_l = 'Material'.
    w_fcat1-col_pos = 3.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'LFIMG'.
    w_fcat1-seltext_l = 'Actual quantity delivered'.
    w_fcat1-col_pos = 4.
    APPEND w_fcat1 to fcat1.
    CLEAR w_fcat1.
    w_fcat1-tabname = 'IT_LIPS'.
    w_fcat1-fieldname = 'MEINS'.
    w_fcat1-seltext_l = 'Base Unit of Measure'.
    w_fcat1-col_pos = 5.
    APPEND w_fcat1 to fcat1.
    endform. " getfieldcatalog1
    *& Form USER_COMMAND
    text
    -->R_UCOMM text
    -->RS_SELFIELD text
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    READ TABLE itab INDEX rs_selfield-tabindex.
    IF sy-subrc EQ 0.
    select vbeln
    posnr
    matnr
    vgbel
    lfimg
    meins from lips into table it_lips
    where vgbel = itab-ebeln.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repname
    >>>> i_callback_user_command = 'USER_COMMAND1'
    it_fieldcat = fcat1
    it_events = events1[]
    TABLES
    t_outtab = it_lips.
    IF sy-subrc 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. "USER_COMMAND
    FORM TOP_OF_PAGE1 *
    FORM top_of_page1.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = heading1.
    ENDFORM. "TOP_OF_PAGE1
    *& Form build_eventtab1
    text
    -->P_EVENTS[] text
    FORM build_eventtab2 USING p_events2 TYPE slis_t_event.
    DATA: ls_event2 TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = p_events2.
    READ TABLE p_events2 WITH KEY name = slis_ev_top_of_page
    INTO ls_event2.
    IF sy-subrc = 0.
    MOVE formname_top_of_page2 TO ls_event2-form.
    APPEND ls_event2 TO p_events2.
    ENDIF.
    endform.
    *& Form build_comment
    text
    -->P_HEADING[] text
    FORM build_comment2 USING p_heading2 TYPE slis_t_listheader.
    DATA: hline2 TYPE slis_listheader.
    hline2-info = '2 Secondary List'.
    hline2-typ = 'H'.
    APPEND hline2 TO p_heading2.
    CLEAR hline2.
    ENDFORM. " build_comment
    *& Form getfieldcatalog1
    text
    -->P_FCAT1[] text
    form getfieldcatalog2 using p_fcat2 TYPE slis_t_fieldcat_alv.
    DATA : w_fcat2 TYPE slis_fieldcat_alv.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'EBELN'.
    w_fcat2-seltext_l = 'Pr.Doc No'.
    w_fcat2-col_pos = 1.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'EBELP'.
    w_fcat2-seltext_l = 'PR Doc Item'.
    w_fcat2-col_pos = 2.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'BELNR'.
    w_fcat2-seltext_l = 'No.Mat Doc'.
    w_fcat2-col_pos = 3.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'BUZEI'.
    w_fcat2-seltext_l = 'Item in Mat Doc'.
    w_fcat2-col_pos = 4.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'MENGE'.
    w_fcat2-seltext_l = 'Quantity'.
    w_fcat2-col_pos = 5.
    APPEND w_fcat2 to fcat2.
    CLEAR w_fcat2.
    w_fcat2-tabname = 'IT_EKBE'.
    w_fcat2-fieldname = 'XBLNR'.
    w_fcat2-seltext_l = 'Ref Doc Num'.
    w_fcat2-col_pos = 5.
    APPEND w_fcat2 to fcat2.
    endform. " getfieldcatalog2
    *& Form USER_COMMAND1
    text
    -->R_UCOMM text
    -->RS_SELFIELD text
    FORM user_command1 USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    READ TABLE it_lips INDEX rs_selfield-tabindex.
    IF sy-subrc EQ 0.
    select ebeln
    ebelp
    belnr
    buzei
    menge
    xblnr from ekbe into table it_ekbe
    where xblnr = it_lips-vbeln.
    endif.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repname
    i_callback_user_command = 'USER_COMMAND1'
    it_fieldcat = fcat2
    it_events = events2[]
    TABLES
    t_outtab = it_ekbe.
    IF sy-subrc 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    ENDIF.
    ENDFORM. "USER_COMMAND
    FORM TOP_OF_PAGE1
    FORM top_of_page2.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = heading2.
    ENDFORM. "TOP_OF_PAGE2

Maybe you are looking for