Tableview in diplay mode before line selection

Hi all,
Can I make a tableview in display mode before line selection? Suppose If I have a dropdown or f4 help for a cell it should be only visible when i select a particular row. The characteristics of cell should only be visible when a row is selected.
Any pointers?
Thanks and Regards,
Sneha.

Hi Sneha,
Maybe you can try this.....
Check if selectedRowIndex is initial....and if not then only create the iterator object....
eg.
IF NOT selectedrowindextable is initial.
    create object iterator.
ENDIF.
Hope this helps.
<b><i>Do reward each useful answer..!</i></b>
Thanks,
Tatvagna.

Similar Messages

  • [iPhone] TableView in editing mode disables selection methods

    When I put mu UITableView in editing mode, via setEditing:animated:, the selection methods from the delegate don't get called. In particular the didSelectRowAtIndexPath method does't get called.
    If I don't put the tableView in editing mode I can select the row as usual. Has anyone else had this issue?

    Found the problem. A tableview has a allowsSelectionWhileEditing property. Set that to YES and it works

  • DYNP_VALUES_READ Limitations for multiple lines select options

    Hi all !
       First post here, but a tough one I think. Here is my inquiry :
       I have worked on an specific abap function used in many long abap list reports. Theses reports are launched in background processing. The aim of this routine is to stop the report execution if a background job with the same selection parameters is already launched for the current user (to Prevent useless several launch of a time-expensive program).
        Because this routine is dynamic, I read the selection screen of the current report with the function 'DYNP_VALUES_READ'. And I compare the result with the variant of the backgroung job (read with function 'RS_VARIANT_CONTENTS').
        The real problem is that function "DYNP_VALUES_READ" only extract the first line of select-options. I found an alternative solution to extract the select options values (a dynamic assign with field symbols), but external conversions (for WBS elements for example ) are lost, so the comparison detects differences between the background job's variant values and the current selection screen values.
        Does anybody know a way to get entire select options values from a selection screen just as they are displayed on screen ?
    Thanks for reading my message
    Message was edited by: Thomas BRICOUT

    Thomas,
    Perhaps the following code will help you.  A function module in the code captures everything on the selection screen into an internal table.  It doesn't actually capture the information the way you want it, but I believe you will be able to work with it to achieve your desired result.  If it doesn't meet your needs, it is still useful for printing selection screen fields and their values.
    Bruce
    report zybttes2.
    tables: zf137,   " 137 General Ledger Document Details Table
            zf137a.  " 137 General Ledger Document Details Table, Archive
    selection-screen begin of block b1 with frame title text-004." BCT003
    parameters: p_zf137   radiobutton group xxx,                " BCT003
                p_zf137a  radiobutton group xxx.                " BCT003
    selection-screen end of block b1.                           " BCT003
    selection-screen begin of block parameter with frame title text-001.
    selection-screen skip 1.
    select-options: s_date for zf137-zzpostdat.
    selection-screen skip 1.
    selection-screen begin of line.
    selection-screen comment 3(6) text-002.
    selection-screen end of line.
    selection-screen skip 1.
    select-options: s_loan for zf137-zzloan.
    selection-screen skip 1.
    selection-screen begin of line.
    selection-screen comment 3(6) text-003.
    selection-screen end of line.
    selection-screen skip 1.
    select-options: s_ccentr for zf137-zzcostctr.
    selection-screen skip 1.
    selection-screen end of block parameter.
    data: ww(3) type n.
    data: zz(3) type c.
    data: c1(1) type c value '0'.
    do 2 times.
      ww = ww + 1.
      zz = ww.  shift zz left  deleting leading  c1.
      write: / zz.
    enddo.
      Capture and then print the selection screen fields and their values
    data: begin of i_info occurs 20,
            flag,
            olength type x,
            line  like raldb-infoline,
          end of i_info.
    call function 'PRINT_SELECTIONS'
      exporting
        mode      = 'TABLE'
        rname     = sy-cprog
        rvariante = sy-slset
      tables
        infotab   = i_info.
    loop at   i_info.
      write: / i_info-line.
    endloop.
    write:  / 'end'.

  • How to implement line selectability for a table control using table Wizard?

    Hello SDN Community,
    I have created a table control using the Table Wizard.  I found my exact question in this forum, but unfortunately it had not been andsered.  While I cannot paste a screen-print into this plane-text area, here are the steps I followed...
    1) SE51
    2) Create new screen 0100
    3) Click Layout button
    4) Clidk Table Control (with Wizard) and draw box on canvas.
    5) Step is "Start" - click Continue
    6) Step is "Name of Table Control" - provided name
    7) Step is "Table Name" - provided name of dictionary table (AUFK)
    8) Step is "Definition of Columns" - selected order numver and order text
    9) Step is "Table Control Attributes" - Line Selectability is in display mode - cannot set it.
    I would like to have a selectability column for my table.  Would appreciate any insight into how to do this.
    Thank you,
    Dean Atteberry.

    This is a puzzling...
    For the table control wizard, in the Table Control Attributes step, I was able to get line selectability to open up by declaring a char01 data element at the beginning of my type.
    The puzzling is in regards to the "Selection col. fld" entry field.
    If I leave it blank and try to go to the next step, I get message "Enter the name of the selection column if you are using a program table"
    So it looked like it wanted to know the name of my selection column.  So I type in "CHAR1".  and got the message "The field "CHAR1" for the selection column is already contained in the table."
    Hmmmmm.... don't understand............
    Dean Atteberry.

  • Table control: Line selection single issue

    Hi experts,
    I have created a table control and in the screen painter I have defined the line selection as "Single" for table control.
    The table control can display upto 20 lines in a screen and i can select a single record only which pertains to my requirement. if I try to select two records it will not allow.
    Issue: consider  i select a single record from the first 20 lines displayed in screen, then i scroll the records in the table control so that it displays the records from 21 to 40. if I select a single record now from line 21 to 40, the first record that i selected is not getting deselected. That is, totally two lines are getting selected.
    How to overcome this issue
    Thanks in advance
    Regards
    Anand

    Ok
    The "problem" is here:
    Types: Begin of ty_ic,
      ic(20),
      desc(20),
      sel(1)                                 <--------------------------------
    End of ty_ic.
    You've ha a field for selected line and that field is used in table control definition as you've written:
    "Note: wa_ic is the structure used in table control and wa_ic-sel is the mark field defined the table control attributes"
    So you're using the structure WA_IC as header line of internal table IT_IC and also as input/put field of your table control (I mean the screen fields of table control are based on WA_IC).
    You don't need any code in PBO to move the data from internal table to table control, because the headerline of IT_IC and field of table control are the same, infact you've implemented only the code in PAI to save the data from table control to IT_IC:
    Loop at it_ic.
    Modify it_ic from wa_ic index tc_ic-current_line
    Endloop
    t's a good solution if it needs to transfer all data to table control automatically: it doesn't need any code in PBO
    but, of course, there'll be a problem when you don't need to display something, in this case you have to think a solution, I mean you have to write a code in order to avoid to display those data.
    It's the case of the selected line: in your situation all selected lines keep the selection, because the code to clear IT_IC-SEL is missing: only the user can deselect a line, but if he doesn't do it, the line will remain selected after navigation.
    So you make to be sure to clear all selected lines are not displayed.
    You need to create a code in PAI out of the loop of table control where you clear the flag SEL, in order to do it you need to consider:
    - The index of the first record displayed in table control is stored in field TC_IC-TOP_LINE
    - The index of the last record displayed in table control can be calculated: the variable SY-LOOPC indicates how many rows can be displayed in table control, so the last record will be: TC_IC-TOP_LINE + SY-LOOPC.
    So you need to clear the field SEL for all records not displayed, a code like this:
    PROCESS PAI.
      LOOP AT IT_IC.
         MODULE GET_LOOPC.
      ENDLOOP.
      MODULE CLEAR_SEL.
      MODULE GET_LOOPC..
          TOT_LINE_DISPLAYED = SY-LOOPC.
      ENDMODULE
      MODULE CLEAR_SEL.
    * Here you need to clear the selection of the records before of TOP_LINE
           IF TC_IC-TOP_LINE > 1.
              LOOP AT IT_IC INTO WA_IC  TO TC_IC-TOP_LINE.
                 CLEAR WA_IC-SEL.
                 MODIFY IT_IC FROM WA_IC.
              ENDLOOP.
         ENDIF.
    * Here you need to clear the selection of the records after the last one:
          LAST_INDEX = TOT_LINE_DISPLAYED + TC_IC-TOP_LINE.
         DESCRIBE TABLE IT_IC LINES SY-TABIX,
         IF SY-TABIX > LAST_INDEX.
              LOOP AT IT_IC INTO WA_IC  FROM LAST_INDEX.
                 CLEAR WA_IC-SEL.
                 MODIFY IT_IC FROM WA_IC.
              ENDLOOP.
         ENDIF.
      ENDMODULE.

  • At line selection

    Hello All..
    1. I have created one basic list, now if i double click on any record then it should call another transaction... this is to be done using LIST PROCESSING. i need to write code in 'At Line Selection' but where to code this at line selection.
    2. Also while designing selection screen i've created execute icon using
    SET PF-STATUS.. but this is also appearing when basic list is being displayed.. i dont ant this to appear... no other buttons i.e.., back button, cancel are working...
    Regards,
    Radhi..

    Hi
    Sample program for At Line-Selection
    *& Report  ZHC010F_CONFIRMATION_COMPACT                                       *
           Module             PP - PRODUCTION PLANNING
    REPORT  ZHC010F_CONFIRMATION_COMPACT LINE-SIZE 275 LINE-COUNT 50 NO STANDARD PAGE HEADING.
    TABLES : ZHT010_FORGE,
             MARC.
    TYPES : BEGIN OF I_CONFIRM,
               ZBUDAT         TYPE ZHT010_FORGE-ZBUDAT,
               MATNR          TYPE ZHT010_FORGE-MATNR,
               PLWRK          TYPE ZHT010_FORGE-PLWRK,
               ZSHIFT         TYPE ZHT010_FORGE-ZSHIFT,
               ZWRKCE         TYPE ZHT010_FORGE-ZWRKCE,
               ZWIRECD        TYPE ZHT010_FORGE-ZWIRECD,
               ZACQTY         TYPE ZHT010_FORGE-ZACQTY,
               ZREQTY         TYPE ZHT010_FORGE-ZREQTY,
               ZSCQTY         TYPE ZHT010_FORGE-ZSCQTY,
               ZSEQTY         TYPE ZHT010_FORGE-ZSEQTY,
               ENDBIT         TYPE ZHT010_FORGE-ENDBIT,
               ENDBIT2        TYPE ZHT010_FORGE-ENDBIT2,
               TIMLO          TYPE ZHT010_FORGE-TIMLO,
               ZCONFIRM       TYPE ZHT010_FORGE-ZCONFIRM,
               ZCONFIRMREJ    TYPE ZHT010_FORGE-ZCONFIRM,
               ZCONFIRMSC     TYPE ZHT010_FORGE-ZCONFIRM,
               ZCONFIRMSE     TYPE ZHT010_FORGE-ZCONFIRM,
               ZCONFIRMBIT    TYPE ZHT010_FORGE-ZCONFIRM,
               ZCONFIRMBIT2   TYPE ZHT010_FORGE-ZCONFIRM,
               ZCONFIRMBUR    TYPE ZHT010_FORGE-ZCONFIRMBUR,
               TOKEN          TYPE ZHT010_FORGE-TOKEN,
               JONUMBER       TYPE ZHT010_FORGE-JONUMBER,
               CHARG          TYPE ZHT010_FORGE-CHARG,
               ZACCISSQTY     TYPE ZHT010_FORGE-ZACCISSQTY,
               ZREJISSQTY     TYPE ZHT010_FORGE-ZREJISSQTY,
               ZSCMISSQTY     TYPE ZHT010_FORGE-ZSCMISSQTY,
               ZSEMISSQTY     TYPE ZHT010_FORGE-ZSEMISSQTY,
               VERID          TYPE ZHT010_FORGE-VERID,
               MARK(1),
               DELETE(1),
            END OF I_CONFIRM.
    TYPES: BEGIN OF TAB_TYPE,
               FCODE LIKE RSMPE-FUNC,
             END OF TAB_TYPE.
    TYPES : BEGIN OF STR_BACKFLUSH,
                MATNR     LIKE  ZHT010_FORGE-MATNR,     
                PLWRK     LIKE  ZHT010_FORGE-PLWRK,
                GSMNG     LIKE  PLAF-GSMNG,
                ZWRKCE    LIKE  ZHT010_FORGE-ZWRKCE,
                ZBUDAT    LIKE  ZHT010_FORGE-ZBUDAT,
                ZSHIFT    LIKE  ZHT010_FORGE-ZSHIFT,
                TIMLO     LIKE  ZHT010_FORGE-TIMLO,
                ZWIRECD   LIKE  ZHT010_FORGE-ZWIRECD,
                ZACQTY    LIKE  ZHT010_FORGE-ZACQTY,
                ZREQTY    LIKE  ZHT010_FORGE-ZREQTY,
                ZSCQTY    LIKE  ZHT010_FORGE-ZSCQTY,
                ZSEQTY    LIKE  ZHT010_FORGE-ZSEQTY,
                ENDBIT    LIKE  ZHT010_FORGE-ENDBIT,
                ENDBIT2   LIKE  ZHT010_FORGE-ENDBIT2,
                BURSLG    LIKE  ZHT010_FORGE-BURSLG,
                TOKEN     LIKE  ZHT010_FORGE-TOKEN,
                JONUMBER  LIKE  ZHT010_FORGE-JONUMBER,
                CHARG     LIKE  ZHT010_FORGE-CHARG,
                MARK ,
                VERID     LIKE MKAL-VERID,
            END OF STR_BACKFLUSH.
    DATA : REM TYPE I,
           W_COUNT TYPE I VALUE 4,
           WA(200),
           W_ZACQTY(15),
           W_ZREQTY(15),
           W_ZSCQTY(15),
           W_ZSEQTY(15),
           W_ENDBIT(15),
           W_ENDBIT2(15),
           W_ACCISSQTY(15),
           W_REJISSQTY(15),
           W_SCMISSQTY(15),
           W_SEMISSQTY(15),
           W_CONFIRM,
           W_CONFIRMREJ,
           W_CONFIRMSC,
           W_CONFIRMSE,
           W_VERID LIKE ZHT010_FORGE-VERID,
           W_START_LINE TYPE I,
           W_END_LINE TYPE I,
           W_START_COUNT TYPE I,
           W_END_COUNT  TYPE I,
           W_LINES TYPE I ,
           W_TAB TYPE TAB_TYPE,
           W_MOD TYPE I,
           W_SPC(15),
           W_MATNR   TYPE MARA-MATNR,
           W_CHARG   TYPE ZHT010_FORGE-CHARG,
           W_TIMLO   TYPE ZHT010_FORGE-TIMLO,
           W_WIRECD  TYPE MARA-MATNR,
           W_JONO    TYPE ZHT010_FORGE-JONUMBER,
           W_MACHINE TYPE ZHT010_FORGE-ZWRKCE,
           W_LBKUM   TYPE MBEW-LBKUM,
           ZWCD      TYPE ZHT010_FORGE-ZWIRECD,
           W_BI      TYPE C,
           W_LINECOUNT TYPE I,
           W_MAKTX LIKE MAKT-MAKTX,
           W_STLAL LIKE STKO-STLAL.
    TYPES : BEGIN OF I_ST,
            MATNR  TYPE MARA-MATNR,
            WIRECD TYPE MARA-MATNR,  "Entered in ZHC018
            UOM    TYPE MARA-MEINS,
            RMCODE TYPE MARA-MATNR,  "Actual RM by BOM Explosion
            MEINS  TYPE MARA-MEINS,  "Actual meins of RM by BOM
            SPC    TYPE MBEW-LBKUM,
            END OF I_ST.
    TYPES :BEGIN OF STR_BATCH ,
          MARK(1),
          MATNR    LIKE MARA-MATNR,
          WIRECD   LIKE MARA-MATNR,
          CHARG    LIKE MCHB-CHARG,
          CLABS    LIKE MCHB-CLABS,
          QTY      LIKE MSEG-ERFMG,
          UOM      LIKE MSEG-ERFME,
          SCRPQTY  LIKE MSEG-MENGE,
          MEINS    LIKE MSEG-ERFME,
          PENQTY   LIKE MCHB-CLABS,
          POSSQTY  LIKE MCHB-CLABS,
          TOPOST   LIKE MCHB-CLABS,
          REQTY    LIKE MCHB-CLABS,
          TIMLO    LIKE ZHT010_FORGE-TIMLO,
          END OF STR_BATCH.
    DATA: IT_CONFIRM TYPE STANDARD TABLE OF I_CONFIRM WITH HEADER LINE,
          IT_BACKFLUSH TYPE STANDARD TABLE OF STR_BACKFLUSH WITH HEADER LINE
          TAB TYPE STANDARD TABLE OF TAB_TYPE WITH  NON-UNIQUE DEFAULT KEY
          INITIAL SIZE 10,
          IT_STBD_SCRP TYPE CSXDOC OCCURS  0 WITH HEADER LINE,
          IT_STBE_SCRP TYPE CSXEQUI OCCURS 0 WITH HEADER LINE,
          IT_STBK_SCRP TYPE  CSXKLA OCCURS 0 WITH HEADER LINE,
          IT_STBM_SCRP TYPE  CSXMAT OCCURS 0 WITH HEADER LINE,
          IT_STBP_SCRP TYPE  CSXGEN OCCURS 0 WITH HEADER LINE,
          IT_STBT_SCRP TYPE  CSXTPL OCCURS 0 WITH HEADER LINE,
          IT_BATCH TYPE STANDARD TABLE OF STR_BATCH WITH HEADER LINE,
          I_BATCH TYPE STANDARD TABLE OF STR_BATCH WITH HEADER LINE,
          IT_STPOX TYPE STPOX OCCURS 0 WITH HEADER LINE,
          IT_MAT  TYPE CSCMAT OCCURS 0 WITH HEADER LINE,
          WA_STPOX LIKE IT_STPOX,
          IT_ST TYPE STANDARD TABLE OF  I_ST WITH HEADER LINE,
          IT_ST1 TYPE STANDARD TABLE OF I_ST WITH HEADER LINE,
          IT_STBD TYPE  CSXDOC  OCCURS 0 WITH HEADER LINE,
          IT_STBE TYPE  CSXEQUI OCCURS 0 WITH HEADER LINE,
          IT_STBK TYPE  CSXKLA  OCCURS 0 WITH HEADER LINE,
          IT_STBM TYPE  CSXMAT  OCCURS 0 WITH HEADER LINE,
          IT_STBP TYPE  CSXGEN  OCCURS 0 WITH HEADER LINE,
          IT_STBT TYPE  CSXTPL OCCURS  0 WITH HEADER LINE,
          IT_STBD_ACTQTY TYPE  CSXDOC OCCURS  0 WITH HEADER LINE,
          IT_STBE_ACTQTY TYPE  CSXEQUI OCCURS 0 WITH HEADER LINE,
          IT_STBK_ACTQTY TYPE  CSXKLA OCCURS  0 WITH HEADER LINE,
          IT_STBM_ACTQTY TYPE  CSXMAT OCCURS  0 WITH HEADER LINE,
          IT_STBP_ACTQTY TYPE  CSXGEN OCCURS  0 WITH HEADER LINE,
          IT_STBT_ACTQTY TYPE  CSXTPL OCCURS  0 WITH HEADER LINE.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS :     PR_WERKS LIKE IT_CONFIRM-PLWRK OBLIGATORY,
                     PR_BUDAT LIKE IT_CONFIRM-ZBUDAT OBLIGATORY.
    SELECT-OPTIONS : SO_SHIFT FOR IT_CONFIRM-ZSHIFT NO-EXTENSION NO INTERVALS,
                     SO_MATNR FOR IT_CONFIRM-MATNR,
                     SO_WORK  FOR IT_CONFIRM-ZWRKCE ,
                     SO_TOKEN FOR ZHT010_FORGE-TOKEN,
                     SO_CELL FOR MARC-FEVOR NO-EXTENSION NO INTERVALS.
    PARAMETERS : PR_CONFM AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK B1.
    **This selection screen gives an option to execute in
    **foreground or in the background.
    **This is needed to analyse any errors while posting data.
    SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME TITLE TEXT-018 NO
    INTERVALS.
    PARAMETERS: PR_BIN RADIOBUTTON GROUP BI DEFAULT 'X',
                PR_BIA RADIOBUTTON GROUP BI.
    SELECTION-SCREEN END OF BLOCK RADIO.
    DATA W_WERKS LIKE ZHT010_FORGE-PLWRK.
    AT SELECTION-SCREEN.
      IF PR_WERKS IS NOT INITIAL.
        IF PR_WERKS <> '4100'.
          SET CURSOR FIELD 'PR_WERKS'.
          MESSAGE E000(ZSFL) WITH 'Plant 4100 Only Allowed'.
          EXIT.
        ENDIF.
      ENDIF.
      IF PR_BIA = 'X'.
        IF SY-UNAME = 'PP4100A01' OR SY-UNAME = 'PP4100B01' OR SY-UNAME = 'PP4100C01' OR
           SY-UNAME = 'PP4100C02' OR SY-UNAME = 'PP4200B01' OR SY-UNAME = 'PP4200C01' OR
           SY-UNAME = 'PP4200C02'.
          MESSAGE E000(ZSFL) WITH 'No Authorization to Run in Foreground'.
          EXIT.
        ENDIF.
      ENDIF.
    START-OF-SELECTION.
      MOVE 'DELETE' TO W_TAB-FCODE.
      APPEND W_TAB TO TAB.
      MOVE 'SELA' TO W_TAB-FCODE.
      APPEND W_TAB TO TAB.
      MOVE 'DSELA' TO W_TAB-FCODE.
      APPEND W_TAB TO TAB.
      SET PF-STATUS 'CONF' EXCLUDING TAB.
      IF PR_CONFM = 'X'.
        SELECT AZBUDAT AMATNR APLWRK AZSHIFT AZWRKCE AZWIRECD A~ZACQTY
        A~ZREQTY
               AZSCQTY AZSEQTY AENDBIT AENDBIT2 ATIMLO AZCONFIRM
               A~ZCONFIRMREJ
               AZCONFIRMSC AZCONFIRMSE AZCONFIRMBIT AZCONFIRMBIT2
               AZCONFIRMBUR ATOKEN AJONUMBER ACHARG A~ZACCISSQTY
               AZREJISSQTY AZSCMISSQTY AZSEMISSQTY AVERID
               FROM ZHT010_FORGE AS A INNER JOIN MARC AS B ON B~MATNR =
               AMATNR AND BWERKS = PR_WERKS
               INNER JOIN MARA AS C ON CMATNR = AMATNR
               INTO TABLE IT_CONFIRM
           WHERE A~PLWRK  EQ PR_WERKS
           AND   A~ZSHIFT IN SO_SHIFT
           AND   A~ZBUDAT EQ PR_BUDAT
           AND   A~MATNR  IN SO_MATNR
           AND   A~ZWRKCE IN SO_WORK
           AND  A~TOKEN IN  SO_TOKEN
           AND  B~FEVOR IN SO_CELL
           AND  C~FERTH = 'RCOMP'
           AND (   A~ZCONFIRM = ''
           OR   A~ZCONFIRMREJ = ''
           OR   A~ZCONFIRMSC = ''
           OR   A~ZCONFIRMSE = '' )
          or   a~zconfirmbit = '' )
          OR   a~zconfirmbit2 = '' ) and
          AND KZLOESCH <> 'X'.
      ELSE.
        SELECT AZBUDAT AMATNR APLWRK AZSHIFT AZWRKCE AZWIRECD A~ZACQTY
        A~ZREQTY
               AZSCQTY AZSEQTY AENDBIT AENDBIT2 ATIMLO AZCONFIRM
               A~ZCONFIRMREJ
               AZCONFIRMSC AZCONFIRMSE AZCONFIRMBIT AZCONFIRMBIT2
               AZCONFIRMBUR ATOKEN AJONUMBER ACHARG A~ZACCISSQTY
               AZREJISSQTY AZSCMISSQTY AZSEMISSQTY AVERID
               FROM ZHT010_FORGE AS A INNER JOIN MARC AS B ON B~MATNR =
               AMATNR AND BWERKS = PR_WERKS
               INNER JOIN MARA AS C ON CMATNR = AMATNR
               INTO TABLE IT_CONFIRM
           WHERE A~PLWRK  EQ PR_WERKS
           AND   A~ZSHIFT IN SO_SHIFT
           AND   A~ZBUDAT EQ PR_BUDAT
           AND   A~MATNR  IN SO_MATNR
           AND   A~ZWRKCE IN SO_WORK
           AND  A~TOKEN IN  SO_TOKEN
           AND  B~FEVOR IN SO_CELL
           AND  C~FERTH = 'RCOMP' AND
           KZLOESCH <> 'X'.
      ENDIF.
      W_LINES = LINES( IT_CONFIRM ).
      IF W_LINES LT 1.
        MESSAGE I999(ZSFL) WITH 'No Records Found For The Seln Criteria'.
        EXIT.
      ENDIF.
    END-OF-SELECTION.
      SORT IT_CONFIRM BY MATNR.
      LOOP AT IT_CONFIRM.
        W_MATNR      = IT_CONFIRM-MATNR.
        REM          = SY-TABIX MOD 2.
        W_WIRECD     = IT_CONFIRM-ZWIRECD.
        W_TIMLO      = IT_CONFIRM-TIMLO.
        W_CHARG      = IT_CONFIRM-CHARG.
        W_JONO       = IT_CONFIRM-JONUMBER.
        W_MACHINE    = IT_CONFIRM-ZWRKCE.
        W_ZACQTY     = IT_CONFIRM-ZACQTY.
        W_ZREQTY     = IT_CONFIRM-ZREQTY.
        W_ZSCQTY     = IT_CONFIRM-ZSCQTY.
        W_ZSEQTY     = IT_CONFIRM-ZSEQTY.
        W_ENDBIT     = IT_CONFIRM-ENDBIT.
        W_ENDBIT2    = IT_CONFIRM-ENDBIT2.
        W_ACCISSQTY  = IT_CONFIRM-ZACCISSQTY.
        W_REJISSQTY  = IT_CONFIRM-ZREJISSQTY.
        W_SCMISSQTY  = IT_CONFIRM-ZSCMISSQTY.
        W_SEMISSQTY  = IT_CONFIRM-ZSEMISSQTY.
        W_CONFIRM    = IT_CONFIRM-ZCONFIRM.
        W_CONFIRMREJ = IT_CONFIRM-ZCONFIRMREJ.
        W_CONFIRMSC = IT_CONFIRM-ZCONFIRMSC.
        W_CONFIRMSE = IT_CONFIRM-ZCONFIRMSE.
        W_VERID     = IT_CONFIRM-VERID.
        SHIFT W_ZACQTY    LEFT DELETING LEADING SPACE.
        SHIFT W_ZREQTY    LEFT DELETING LEADING SPACE.
        SHIFT W_ZSCQTY    LEFT DELETING LEADING SPACE.
        SHIFT W_ZSEQTY    LEFT DELETING LEADING SPACE.
        SHIFT W_ENDBIT    LEFT DELETING LEADING SPACE.
        SHIFT W_ENDBIT2   LEFT DELETING LEADING SPACE.
        SHIFT W_ACCISSQTY LEFT DELETING LEADING SPACE.
        SHIFT W_REJISSQTY LEFT DELETING LEADING SPACE.
        SHIFT W_SCMISSQTY LEFT DELETING LEADING SPACE.
        SHIFT W_SEMISSQTY LEFT DELETING LEADING SPACE.
        SELECT SINGLE MAKTX INTO W_MAKTX FROM  MAKT WHERE MATNR =
        IT_CONFIRM-MATNR AND SPRAS = 'E'.
        IF IT_CONFIRM-ZCONFIRM = 'X' AND IT_CONFIRM-ZCONFIRMREJ = 'X' AND
        IT_CONFIRM-ZCONFIRMSC = 'X'
        AND  IT_CONFIRM-ZCONFIRMSE = 'X' AND IT_CONFIRM-ZCONFIRMBIT = 'X'
        AND IT_CONFIRM-ZCONFIRMBIT2 = 'X'.
          WRITE : / SY-VLINE,
                  IT_CONFIRM-MARK AS CHECKBOX INPUT OFF ,
                  IT_CONFIRM-MATNR       UNDER TEXT-002,
                  W_MAKTX(20)            UNDER TEXT-027,
                  IT_CONFIRM-ZSHIFT      UNDER TEXT-011,
                  IT_CONFIRM-ZWRKCE      UNDER TEXT-010,
                  IT_CONFIRM-ZWIRECD     UNDER TEXT-003,
                  IT_CONFIRM-CHARG       UNDER TEXT-022,
                  IT_CONFIRM-JONUMBER    UNDER TEXT-019.
        ELSE.
          WRITE : / SY-VLINE,
                  IT_CONFIRM-MARK AS CHECKBOX,
                  IT_CONFIRM-MATNR       UNDER TEXT-002 HOTSPOT ON,
                  W_MAKTX(20)            UNDER TEXT-027,
                  IT_CONFIRM-ZSHIFT      UNDER TEXT-011,
                  IT_CONFIRM-ZWRKCE      UNDER TEXT-010,
                  IT_CONFIRM-ZWIRECD     UNDER TEXT-003,
                  IT_CONFIRM-CHARG       UNDER TEXT-022 ,
                  IT_CONFIRM-JONUMBER    UNDER TEXT-019.
        ENDIF.
    Check if the burslg has already been posted. Incase it
    has been posted then acc, rej , pr sc and se sc qnty cannot
    be in editable
        IF IT_CONFIRM-ZCONFIRM EQ 'X'. "or it_confirm-zconfirmbur eq 'X'.
          IF IT_CONFIRM-ZCONFIRM EQ 'X' .
            WRITE W_ZACQTY UNDER TEXT-004 COLOR 5 INTENSIFIED OFF.
          ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
            WRITE W_ZACQTY UNDER TEXT-004 COLOR 3 INTENSIFIED OFF.
          ENDIF.
        ELSE.
          WRITE W_ZACQTY UNDER TEXT-004 INPUT OFF.
        ENDIF.
        IF IT_CONFIRM-ZCONFIRMREJ EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
          IF IT_CONFIRM-ZCONFIRMREJ EQ 'X' .
            WRITE W_ZREQTY UNDER TEXT-005 COLOR 5 INTENSIFIED OFF.
          ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
            WRITE W_ZREQTY UNDER TEXT-005 COLOR 3 INTENSIFIED OFF.
          ENDIF.
        ELSE.
          WRITE W_ZREQTY  UNDER TEXT-005. "input on.
        ENDIF.
        IF IT_CONFIRM-ZCONFIRMSC EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
          IF IT_CONFIRM-ZCONFIRMSC EQ 'X' .
            WRITE W_ZSCQTY UNDER TEXT-006 COLOR 5 INTENSIFIED OFF.
          ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
            WRITE W_ZSCQTY UNDER TEXT-006 COLOR 3 INTENSIFIED OFF.
          ENDIF.
        ELSE.
          WRITE W_ZSCQTY  UNDER TEXT-006. "input on.
        ENDIF.
        IF IT_CONFIRM-ZCONFIRMSE EQ 'X' OR IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
          IF IT_CONFIRM-ZCONFIRMSE EQ 'X' .
            WRITE W_ZSEQTY UNDER TEXT-007 COLOR 5 INTENSIFIED OFF.
          ELSEIF IT_CONFIRM-ZCONFIRMBUR EQ 'X'.
            WRITE W_ZSEQTY UNDER TEXT-007 COLOR 3 INTENSIFIED OFF.
          ENDIF.
        ELSE.
          WRITE W_ZSEQTY  UNDER TEXT-007. "input on.
        ENDIF.
        IF IT_CONFIRM-ZCONFIRMBIT EQ 'X'.
          WRITE W_ENDBIT UNDER TEXT-008 COLOR 5 INTENSIFIED OFF.
        ELSE.
          WRITE W_ENDBIT UNDER TEXT-008. "input on.
        ENDIF.
        IF IT_CONFIRM-ZCONFIRMBIT2 EQ 'X'.
          WRITE W_ENDBIT2 UNDER TEXT-009 COLOR 5 INTENSIFIED OFF.
        ELSE.
          WRITE W_ENDBIT2 UNDER TEXT-009. " input on.
        ENDIF.
        WRITE W_ACCISSQTY UNDER TEXT-023 COLOR 5 INTENSIFIED OFF.
        WRITE W_REJISSQTY UNDER TEXT-024 COLOR 5 INTENSIFIED OFF.
        WRITE W_SCMISSQTY UNDER TEXT-025 COLOR 5 INTENSIFIED OFF.
        WRITE W_SEMISSQTY UNDER TEXT-026 COLOR 5 INTENSIFIED OFF.
        WRITE 274 SY-VLINE.
        HIDE: W_MATNR,W_WIRECD,W_ZACQTY,W_ZREQTY,W_ZSCQTY,
              W_ZSEQTY,W_CHARG,W_JONO,W_MACHINE,W_TIMLO,
              W_CONFIRM,W_CONFIRMREJ,W_CONFIRMSC,W_CONFIRMSE,W_VERID.
        ULINE (274).
      ENDLOOP.
    TOP-OF-PAGE.
      FORMAT COLOR 5 INTENSIFIED ON.
      WRITE : 'Plant: ', PR_WERKS,
      "'Shift: ', so_shift-low, ' To ' , so_shift-high,
              'Posting date: ', PR_BUDAT.
      WRITE : /''.
      ULINE (274).
      FORMAT COLOR 1 INTENSIFIED ON.
      WRITE :/1   SY-VLINE,
              5   TEXT-002,   " Material no.
              21  TEXT-027,   " Description
              45  TEXT-011,   " shift
              50  TEXT-010,   " Work center.
              65  TEXT-003,   " Wire code.
              85  TEXT-022,   " Heat Number
              105 TEXT-019,   " Job Order Number
              125 TEXT-004,   " Acc. qty.
              140 TEXT-005,   " Rej. qty.
              154 TEXT-006,   " Scrap.
              170 TEXT-007,   " Set qty.
              185 TEXT-008,   " Endbit in Kg.
              199 TEXT-009,   " SOP.
              214 TEXT-023,
              229 TEXT-024,
              244 TEXT-025,
              259 TEXT-026,
              274 SY-VLINE.
      FORMAT COLOR OFF.
      WRITE :/''.
      ULINE (274).
    END-OF-PAGE.
    in order to show the stock
    of wire code and requirement qty of wirecode .
    AT LINE-SELECTION.
      DATA:  W_MEINS  TYPE MARA-MEINS,
             W_SPC1   TYPE MBEW-LBKUM,
             W_STMAT  TYPE MARA-MATNR,
             W_QTY1   TYPE STKO-BMENG,
             W_QTY2   TYPE STKO-BMENG,
             W_QTY3   TYPE STKO-BMENG,
             W_QTY4   TYPE STKO-BMENG,
             W_TOTAL  TYPE STKO-BMENG,
             W_BRGEW  TYPE MARA-BRGEW,
             W_GEWEI  TYPE MARA-GEWEI,
             W_BUOM   TYPE MARA-MEINS,
             W_RQTY   TYPE P DECIMALS 3,
          w_ferth  type mara-ferth,
             TMATNR LIKE MARA-MATNR,
             W_BATCH1(10),
             W_BATCH2(10),
             W_BATCH3(10),
             W_BATCH4(10),
             W_BATCH5(10),
             W_BALQTY LIKE MCHB-CLABS,
          w_penqty like mchb-clabs,
             W_CLABS LIKE MCHB-CLABS.
      IF SY-LILLI <= 4.
        MESSAGE S000(ZSFL) WITH 'Select Correct Record'.
        STOP.
      ENDIF.
    *zwcd =  sy-lisel+64(18).
      REFRESH IT_ST.
      CLEAR   IT_ST.
      PERFORM F001-READ_MAT.
    **Logic changed. the req qty should be shown from the BOM.
    **Therefore these changes are needed.
      CLEAR : IT_STBD,IT_STBE,IT_STBK,IT_STBM,IT_STBP,IT_STBT,W_QTY1,W_QTY2,
      W_QTY3,W_TOTAL.
      W_QTY1   = SY-LISEL+119(15).
      W_QTY2   = SY-LISEL+137(15).
      W_QTY3   = SY-LISEL+152(15).
      W_QTY4   = SY-LISEL+167(15).
      W_TOTAL = W_QTY1.
      PERFORM F002-GET_QTY.
      CLEAR : IT_STBD_SCRP,IT_STBE_SCRP,IT_STBK_SCRP,IT_STBM_SCRP,IT_STBP_SCRP
      ,IT_STBT_SCRP.
      PERFORM F002-GET_SCRPQTY.
      SORT IT_ST.
      IF SY-LSIND = 1.
        WINDOW STARTING AT 1 10 ENDING AT 135 20.
        SET PF-STATUS 'ZCOMP'.
    *to display batch and batch qty in pop up screen
        REFRESH IT_BATCH[].
        CLEAR :IT_BATCH , IT_ST,TMATNR.
        LOOP AT IT_ST WHERE MATNR =  W_MATNR AND WIRECD = W_WIRECD.
          IT_BATCH-MATNR   = IT_ST-MATNR.
          IT_BATCH-WIRECD  = IT_ST-WIRECD .
          IT_BATCH-TIMLO   = W_TIMLO.
          READ TABLE IT_STBP_SCRP WITH KEY OBJNR = IT_ST-RMCODE.
          IF SY-SUBRC = 0.
            IF IT_ST-UOM = IT_ST-MEINS.
              IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG.
            ELSE.
              IF IT_ST-MEINS = 'KG' AND IT_ST-UOM = 'TO'.
                IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG / 1000.
              ELSEIF IT_ST-MEINS = 'TO' AND IT_ST-UOM ='KG'.
                IT_BATCH-SCRPQTY = IT_STBP_SCRP-MNGLG * 1000.
              ENDIF.
            ENDIF.
          ENDIF.
          SELECT SINGLE MATNR INTO TMATNR FROM MCHB WHERE MATNR =
          IT_BATCH-WIRECD.
          IF SY-SUBRC <> 0.
            READ TABLE IT_BATCH WITH KEY MATNR = W_MATNR  WIRECD =
            IT_BATCH-WIRECD.
            IF SY-SUBRC <> 0.
              APPEND IT_BATCH.
            ENDIF.
          ELSE.
            SELECT  CLABS CHARG INTO (IT_BATCH-CLABS , IT_BATCH-CHARG) FROM
            MCHB
             WHERE MATNR = IT_ST-WIRECD AND WERKS = PR_WERKS AND LGORT =
             '0007'.
              READ TABLE IT_BATCH WITH KEY MATNR = W_MATNR  WIRECD =
              IT_ST-WIRECD
                                CHARG = IT_BATCH-CHARG .
              IF SY-SUBRC <> 0.
                APPEND IT_BATCH.
              ENDIF.
            ENDSELECT.
          ENDIF.
          CLEAR :IT_BATCH , IT_STBP_SCRP.
        ENDLOOP.
        DELETE ADJACENT DUPLICATES FROM IT_BATCH COMPARING WIRECD CHARG.
        DELETE IT_BATCH WHERE CLABS = 0.
        ULINE AT /1(134).
        FORMAT COLOR 5 INTENSIFIED OFF.
        WRITE : /1    SY-VLINE,
                5     TEXT-003,   " Wire code.
                23(1) SY-VLINE,
                25    TEXT-013,
                39(1) SY-VLINE,
                40    TEXT-014,
                43(1) SY-VLINE,
                44    TEXT-015,
                59(1) SY-VLINE,
                60    TEXT-020,
                71(1) SY-VLINE,
                72    TEXT-021,
                90(1) SY-VLINE,
                91    'Pending Qty',
                104(1) SY-VLINE,
                105   'Possible Qty',
                119(1) SY-VLINE,
                120   'To Post',
                134(1) SY-VLINE.
        ULINE AT /1(134).
        CLEAR IT_ST.
        SORT IT_ST.
        DELETE ADJACENT DUPLICATES FROM IT_ST COMPARING ALL FIELDS.
        SORT IT_ST.
        REFRESH IT_ST1.
        CLEAR: IT_ST1,IT_ST.
        LOOP AT IT_ST WHERE MATNR =  W_MATNR AND WIRECD = W_WIRECD.
          MOVE-CORRESPONDING IT_ST TO IT_ST1.
          APPEND IT_ST1.
        ENDLOOP.
        SORT: IT_ST,IT_ST1.
        DELETE IT_ST1 WHERE MATNR NE W_MATNR.
        SORT: IT_ST,IT_ST1.
        CLEAR: IT_ST1.
        LOOP AT IT_ST1 WHERE MATNR =  W_MATNR AND WIRECD = W_WIRECD .
          W_MEINS = IT_ST1-MEINS.
          W_SPC   = IT_ST1-SPC.
          W_STMAT = IT_ST1-WIRECD.
    **ZC127 has only a one to one relationship to BOM therefore only one
    **line in the internal table is expected.
          CLEAR IT_STBP.
          READ TABLE IT_STBP WITH KEY OBJNR  = IT_ST1-RMCODE.
          IF IT_ST1-UOM = IT_ST1-MEINS .
            W_RQTY  = IT_STBP-MNGLG.
          ELSE.
            IF IT_ST1-MEINS = 'KG' AND IT_ST1-UOM = 'TO'.
              W_RQTY = IT_STBP-MNGLG / 1000.
            ELSEIF IT_ST1-MEINS = 'TO' AND IT_ST1-UOM = 'KG'.
              W_RQTY = IT_STBP-MNGLG * 1000.
            ENDIF.
          ENDIF.
          FORMAT COLOR 2 INTENSIFIED OFF.
          CLEAR : W_BATCH1,W_BATCH2,W_BATCH3,W_BATCH4,W_BATCH5,W_BALQTY,
          W_CLABS.
          SPLIT W_CHARG AT ',' INTO W_BATCH1 W_BATCH2 W_BATCH3 W_BATCH4
          W_BATCH5.
          DELETE IT_BATCH WHERE CHARG <> W_BATCH1 AND CHARG <> W_BATCH2 AND
          CHARG <> W_BATCH3
                                AND CHARG <> W_BATCH4 AND CHARG <> W_BATCH5
                                AND MATNR = W_MATNR
                                AND WIRECD = W_WIRECD AND TIMLO = W_TIMLO.
          W_BALQTY = W_RQTY.
          LOOP AT IT_BATCH WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD AND
          TIMLO = W_TIMLO.
            SELECT SINGLE PENDINGQTY FROM ZHT012_JOBORDNO INTO
            IT_BATCH-PENQTY WHERE LOT = IT_BATCH-CHARG AND
    RMCODE = W_WIRECD   AND
    JO_NO = W_JONO AND
    MACHINE = W_MACHINE.
            IF IT_BATCH-PENQTY >= IT_BATCH-CLABS.
              W_CLABS = IT_BATCH-CLABS.
            ELSE.
              W_CLABS = IT_BATCH-PENQTY.
            ENDIF.
            IF W_BALQTY > W_CLABS.
              IT_BATCH-TOPOST = W_CLABS.
              W_BALQTY =  W_BALQTY - W_CLABS.
            ELSEIF W_BALQTY < W_CLABS.
              IT_BATCH-TOPOST =  W_BALQTY.
              W_BALQTY = W_BALQTY - IT_BATCH-TOPOST.
            ENDIF.
            IF IT_BATCH-PENQTY < IT_BATCH-CLABS.
              IT_BATCH-POSSQTY = IT_BATCH-PENQTY.
            ELSEIF IT_BATCH-CLABS < IT_BATCH-PENQTY.
              IT_BATCH-POSSQTY = IT_BATCH-CLABS.
            ELSEIF IT_BATCH-CLABS = IT_BATCH-PENQTY.
              IT_BATCH-POSSQTY = IT_BATCH-CLABS.
            ENDIF.
            MODIFY IT_BATCH .
            CLEAR IT_BATCH.
          ENDLOOP.
          LOOP AT IT_BATCH WHERE MATNR = W_MATNR AND WIRECD = W_WIRECD .
            READ TABLE IT_STBP_ACTQTY WITH KEY OBJNR = IT_ST1-RMCODE.
            FORMAT COLOR 2 INTENSIFIED OFF.
            WRITE:/1 SY-VLINE,
                   3 IT_BATCH-MARK AS CHECKBOX,
                  IT_BATCH-WIRECD UNDER TEXT-003,
                  23(1) SY-VLINE.
           ON CHANGE OF IT_BATCH-WIRECD.
            AT NEW WIRECD.
              WRITE :
                  W_SPC UNDER TEXT-013 LEFT-JUSTIFIED.
           ENDON.
            ENDAT.
            WRITE:  39(1) SY-VLINE,
                IT_ST1-UOM  UNDER TEXT-014   ,
                43(1) SY-VLINE,
                W_RQTY UNDER TEXT-015 LEFT-JUSTIFIED,
                59(1) SY-VLINE,
                60 IT_BATCH-CHARG,
                71(1) SY-VLINE,
                72 IT_BATCH-CLABS LEFT-JUSTIFIED,
               90(1) SY-VLINE,
               91 IT_BATCH-PENQTY LEFT-JUSTIFIED,
               104(1) SY-VLINE,
               105 IT_BATCH-POSSQTY LEFT-JUSTIFIED,
               119(1) SY-VLINE,
               120 IT_BATCH-TOPOST LEFT-JUSTIFIED,
               134(1) SY-VLINE.
            IT_BATCH-QTY = IT_STBP_ACTQTY-MNGLG.
            IT_BATCH-UOM = IT_ST1-UOM.
            IT_BATCH-MEINS = IT_ST1-MEINS.
            IT_BATCH-REQTY = W_RQTY.
            MODIFY IT_BATCH TRANSPORTING QTY UOM MEINS REQTY.
          ENDLOOP.
          CLEAR : IT_BATCH , IT_STBP_ACTQTY.
        ENDLOOP.
        ULINE AT /1(134).
      ENDIF.
    AT USER-COMMAND.
      CLEAR W_MOD.
      CASE SY-UCOMM.
        WHEN 'SELA'.
          W_COUNT = 5.
          LOOP AT IT_CONFIRM.
            IF ( IT_CONFIRM-ZCONFIRM = '' OR IT_CONFIRM-ZCONFIRMREJ = '' OR
            IT_CONFIRM-ZCONFIRMSC = ''
            OR  IT_CONFIRM-ZCONFIRMSE = '' OR IT_CONFIRM-ZCONFIRMBIT = '' OR
            IT_CONFIRM-ZCONFIRMBIT2 = '' ) .
              IT_CONFIRM-MARK = 'X'.
              MODIFY IT_CONFIRM.
              READ LINE W_COUNT.
              MODIFY LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK FROM 'X'.
            ENDIF.
            W_MOD = SY-TABIX MOD 46.
            IF W_MOD EQ 0.
              W_COUNT = W_COUNT + 5.
            ELSE.
              W_COUNT = W_COUNT + 2.
            ENDIF.
          ENDLOOP.
        WHEN 'DSELA'.
          W_COUNT = 5.
          LOOP AT IT_CONFIRM.
            IT_CONFIRM-MARK = ''.
            MODIFY IT_CONFIRM.
            READ LINE W_COUNT.
            MODIFY LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK FROM ''.
            W_MOD = SY-TABIX MOD 46.
            IF W_MOD EQ 0.
              W_COUNT = W_COUNT + 5.
            ELSE.
              W_COUNT = W_COUNT + 2.
            ENDIF.
          ENDLOOP.
        WHEN 'BLOCK'.
          W_COUNT = 5.
          W_START_COUNT = W_START_LINE - W_COUNT.
          W_START_COUNT = W_START_COUNT + 1.
          W_END_COUNT   = W_END_LINE  - W_COUNT.
          W_END_COUNT   = W_END_COUNT + 1.
          REM = W_START_COUNT MOD 2.
          IF REM EQ 0.
            READ LINE W_START_LINE.
            MODIFY LINE W_START_LINE LINE FORMAT INTENSIFIED OFF COLOR = 1.
          ELSE.
            READ LINE W_START_LINE.
            MODIFY LINE W_START_LINE LINE FORMAT INTENSIFIED OFF COLOR = 2.
          ENDIF.
          REM = W_END_COUNT MOD 2.
          IF REM EQ 0.
            READ LINE W_END_LINE.
            MODIFY LINE W_END_LINE LINE FORMAT INTENSIFIED OFF COLOR = 1.
          ELSE.
            READ LINE W_END_LINE.
            MODIFY LINE W_END_LINE LINE FORMAT INTENSIFIED OFF COLOR = 2.
          ENDIF.
          LOOP AT IT_CONFIRM FROM W_START_COUNT TO W_END_COUNT.
            IT_CONFIRM-MARK = 'X'.
            MODIFY IT_CONFIRM.
            READ LINE W_START_LINE.
            MODIFY LINE W_START_LINE FIELD VALUE IT_CONFIRM-MARK FROM 'X'.
            W_START_LINE = W_START_LINE + 1.
          ENDLOOP.
          CLEAR : W_START_COUNT, W_END_COUNT, W_START_LINE, W_END_LINE.
        WHEN 'SAV'.
          DATA : W_TCOUNT TYPE I VALUE 0.
          W_LINECOUNT = 4.
          CLEAR IT_BATCH.
          LOOP AT IT_BATCH.
            READ LINE W_LINECOUNT FIELD VALUE IT_BATCH-MARK.
            IF IT_BATCH-MARK = 'X'.
              W_TCOUNT = W_TCOUNT + 1.
              MODIFY IT_BATCH TRANSPORTING MARK.
              READ TABLE I_BATCH WITH KEY MATNR  = IT_BATCH-MATNR
                                          WIRECD = IT_BATCH-WIRECD
                                          CHARG  = IT_BATCH-CHARG
                                          TIMLO  = IT_BATCH-TIMLO.
              IF SY-SUBRC <> 0.
                MOVE-CORRESPONDING IT_BATCH TO I_BATCH.
                APPEND I_BATCH.
              ENDIF.
              CLEAR : IT_BATCH , I_BATCH.
            ENDIF.
            W_LINECOUNT = W_LINECOUNT + 1.
          ENDLOOP.
          IF W_TCOUNT = 0.
            MESSAGE E000(ZSFL) WITH 'Select Atleast One Entry'.
          ENDIF.
          SELECT SINGLE WERKS INTO W_WERKS FROM MAST WHERE WERKS = PR_WERKS AND MATNR = W_MATNR.
          IF SY-SUBRC = 0.
            CLEAR W_STLAL.
            SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
                                                   MATNR = W_MATNR AND
                                                   VERID = W_VERID.
            CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
              EXPORTING
                CAPID = 'PP01'
                DATUV = SY-DATUM
                MKTLS = 'X'
                MTNRV = W_MATNR
                WERKS = PR_WERKS
                STLAL = W_STLAL
              TABLES
                STB   = IT_STPOX.
          ENDIF.
          CLEAR W_TCOUNT.
          LOOP AT IT_BATCH WHERE MARK = 'X'.
              AT NEW WIRECD.
                 W_TCOUNT = W_TCOUNT + 1.
              ENDAT.
          ENDLOOP.
          DESCRIBE TABLE IT_STPOX LINES SY-TFILL.
          IF W_TCOUNT <> SY-TFILL.
           MESSAGE E000(ZSFL) WITH 'Select all Components as in BOM'.
          ENDIF.
          SET SCREEN 0.
          SET USER-COMMAND 'BACK'.
        WHEN 'SAVE'.
          DATA W_MARK TYPE I VALUE 0.
          W_COUNT = 5.
          CLEAR   IT_BACKFLUSH.
          REFRESH IT_BACKFLUSH.
          LOOP AT IT_CONFIRM.
            CLEAR W_ZACQTY.
            CLEAR W_ZREQTY.
            CLEAR W_ZSCQTY.
            CLEAR W_ZSEQTY.
            CLEAR W_ENDBIT.
            CLEAR W_ENDBIT2.
            READ LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK.
            IF IT_CONFIRM-MARK EQ 'X'.
              READ TABLE I_BATCH WITH KEY MATNR = IT_CONFIRM-MATNR  WIRECD = IT_CONFIRM-ZWIRECD
                                  TIMLO = IT_CONFIRM-TIMLO.
              IF SY-SUBRC <> 0.
                W_MARK = W_MARK + 1.
              ENDIF.
              READ LINE W_COUNT FIELD VALUE W_ZACQTY.
              IT_CONFIRM-ZACQTY = W_ZACQTY.
              IF IT_CONFIRM-ZACQTY EQ 0.
                IT_CONFIRM-ZCONFIRM = 'X'.
              ENDIF.
              READ LINE W_COUNT FIELD VALUE W_ZREQTY.
              IT_CONFIRM-ZREQTY = W_ZREQTY.
              IF IT_CONFIRM-ZREQTY EQ 0.
                IT_CONFIRM-ZCONFIRMREJ = 'X'.
              ENDIF.
              READ LINE W_COUNT FIELD VALUE W_ZSCQTY.
              IT_CONFIRM-ZSCQTY = W_ZSCQTY.
              IF IT_CONFIRM-ZSCQTY EQ 0.
                IT_CONFIRM-ZCONFIRMSC = 'X'.
              ENDIF.
              READ LINE W_COUNT FIELD VALUE W_ZSEQTY.
              IT_CONFIRM-ZSEQTY = W_ZSEQTY.
              IF IT_CONFIRM-ZSEQTY EQ 0.
                IT_CONFIRM-ZCONFIRMSE = 'X'.
              ENDIF.
              READ LINE W_COUNT FIELD VALUE W_ENDBIT.
              IT_CONFIRM-ENDBIT = W_ENDBIT.
              IF IT_CONFIRM-ENDBIT EQ 0.
                IT_CONFIRM-ZCONFIRMBIT = 'X'.
              ENDIF.
              READ LINE W_COUNT FIELD VALUE W_ENDBIT2.
              IT_CONFIRM-ENDBIT2 = W_ENDBIT2.
              IF IT_CONFIRM-ENDBIT2 EQ 0.
                IT_CONFIRM-ZCONFIRMBIT2 = 'X'.
              ENDIF.
              PERFORM CHECK_FLAG_ROUTINE.
              PERFORM CHECK_BATCH.
              MODIFY IT_CONFIRM.
              CLEAR IT_BACKFLUSH.
              MOVE-CORRESPONDING IT_CONFIRM TO IT_BACKFLUSH.
              UPDATE ZHT010_FORGE
          SET ZACQTY  = W_ZACQTY
              ZREQTY  = W_ZREQTY
              ZSCQTY  = W_ZSCQTY
              ZSEQTY  = W_ZSEQTY
              ENDBIT  = W_ENDBIT
              ENDBIT2 = W_ENDBIT2
              ZCONFIRM = IT_CONFIRM-ZCONFIRM
              ZCONFIRMREJ = IT_CONFIRM-ZCONFIRMREJ
              ZCONFIRMSC = IT_CONFIRM-ZCONFIRMSC
              ZCONFIRMSE = IT_CONFIRM-ZCONFIRMSE
              ZCONFIRMBIT = IT_CONFIRM-ZCONFIRMBIT
              ZCONFIRMBIT2 = IT_CONFIRM-ZCONFIRMBIT2
        WHERE ZBUDAT EQ IT_CONFIRM-ZBUDAT
        AND   MATNR  EQ IT_CONFIRM-MATNR
        AND   PLWRK  EQ IT_CONFIRM-PLWRK
        AND   ZSHIFT EQ IT_CONFIRM-ZSHIFT
        AND JONUMBER EQ IT_CONFIRM-JONUMBER
        AND   ZWRKCE EQ IT_CONFIRM-ZWRKCE
        AND   TIMLO  EQ IT_CONFIRM-TIMLO.
    Transfer recs into the IT only if atleast one column
    needs to be posted.
              IF ( IT_CONFIRM-ZCONFIRM = '' OR IT_CONFIRM-ZCONFIRMREJ = ''
              OR IT_CONFIRM-ZCONFIRMSC = ''
              OR  IT_CONFIRM-ZCONFIRMSE = '' OR IT_CONFIRM-ZCONFIRMBIT = ''
              OR IT_CONFIRM-ZCONFIRMBIT2 = '' ) .
                APPEND IT_BACKFLUSH.
              ENDIF.
            ENDIF.
            W_MOD = SY-TABIX MOD 46.
            IF W_MOD EQ 0.
              W_COUNT = W_COUNT + 5.
            ELSE.
              W_COUNT = W_COUNT + 2.
            ENDIF.
          ENDLOOP.
          IF W_MARK > 0.
            MESSAGE E000(ZSFL) WITH 'Select the component'.
          ENDIF.
          DELETE IT_BACKFLUSH WHERE ZACQTY = 0 AND ZREQTY = 0 AND ZSCQTY = 0 AND ZSEQTY = 0.
          DESCRIBE TABLE IT_BACKFLUSH.
          CHECK SY-TFILL GT 0.
          SET PARAMETER ID 'ZPLWRK' FIELD PR_WERKS.
          SET PARAMETER ID 'ZBUDAT' FIELD PR_BUDAT.
          IF PR_BIN = 'X'.
            W_BI = 'N'.
          ELSEIF PR_BIA = 'X'.
            W_BI = 'A'.
          ENDIF.
          EXPORT W_BI FROM W_BI TO MEMORY ID 'W_BI'.
          EXPORT IT_BACKFLUSH TO MEMORY ID 'CONFIRM'.
          EXPORT I_BATCH TO MEMORY ID 'TMPBATCH'.
          CALL TRANSACTION 'ZHC010_FINAL'.
          SET SCREEN 0.
          LEAVE SCREEN.
        WHEN 'ENTER'.
          W_COUNT = 7.
          LOOP AT IT_CONFIRM.
            READ LINE W_COUNT FIELD VALUE IT_CONFIRM-MARK.
            IF IT_CONFIRM-MARK EQ 'X'.
              READ LINE W_COUNT FIELD VALUE W_ZACQTY.
              IT_CONFIRM-ZACQTY = W_ZACQTY.
              READ LINE W_COUNT FIELD VALUE W_ZREQTY.
              IT_CONFIRM-ZREQTY = W_ZREQTY.
              READ LINE W_COUNT FIELD VALUE W_ZSCQTY.
              IT_CONFIRM-ZSCQTY = W_ZSCQTY.
              READ LINE W_COUNT FIELD VALUE W_ZSEQTY.
              IT_CONFIRM-ZSEQTY = W_ZSEQTY.
              READ LINE W_COUNT FIELD VALUE W_ENDBIT.
              IT_CONFIRM-ENDBIT = W_ENDBIT.
              READ LINE W_COUNT FIELD VALUE W_ENDBIT2.
              IT_CONFIRM-ENDBIT2 = W_ENDBIT2.
              MODIFY IT_CONFIRM.
            ENDIF.
            W_MOD = SY-TABIX MOD 46.
            IF W_MOD EQ 0.
              W_COUNT = W_COUNT + 7.
            ELSE.
              W_COUNT = W_COUNT + 1.
            ENDIF.
          ENDLOOP.
        WHEN 'DELETE'.
          W_COUNT = 5.
          CLEAR   IT_BACKFLUSH.
          LOOP AT IT_CONFIRM.
            READ LINE W_COUNT FIELD VALUE IT_CONFIRM-DELETE.
            IF IT_CONFIRM-DELETE EQ 'X'.
    Tech Note : Provision to delete any record shld be given cos it wud
    create prbs
              IF ( IT_CONFIRM-ZCONFIRM = '' AND IT_CONFIRM-ZCONFIRMREJ = ''
              AND IT_CONFIRM-ZCONFIRMSC = ''
              AND  IT_CONFIRM-ZCONFIRMSE = '' AND IT_CONFIRM-ZCONFIRMBIT =
              '' AND IT_CONFIRM-ZCONFIRMBIT2 = ''
              AND IT_CONFIRM-ZCONFIRMBUR = '' ) .
                DELETE FROM ZHT010_FORGE
                  WHERE ZBUDAT = IT_CONFIRM-ZBUDAT
                  AND   MATNR  = IT_CONFIRM-MATNR
                  AND   PLWRK  = IT_CONFIRM-PLWRK
                  AND   ZSHIFT = IT_CONFIRM-ZSHIFT
                  AND   ZWRKCE = IT_CONFIRM-ZWRKCE
                  AND   TIMLO  = IT_CONFIRM-TIMLO.
              ENDIF.
            ENDIF.
            W_COUNT = W_COUNT + 1.
          ENDLOOP.
          LEAVE PROGRAM.
        WHEN 'RW'.
          SET SCREEN 0.
        WHEN 'BACK'.
          SET SCREEN 0.
      ENDCASE.
    *&      Form  check_flag_routine
          text
    -->  p1        text
    <--  p2        text
    FORM CHECK_FLAG_ROUTINE .
      IF IT_CONFIRM-ZCONFIRM EQ 'X'.
        IT_CONFIRM-ZACQTY = 0.
      ENDIF.
      IF IT_CONFIRM-ZCONFIRMREJ EQ 'X'.
        IT_CONFIRM-ZREQTY = 0.
      ENDIF.
      IF IT_CONFIRM-ZCONFIRMSC EQ 'X'.
        IT_CONFIRM-ZSCQTY = 0.
      ENDIF.
      IF IT_CONFIRM-ZCONFIRMSE EQ 'X'.
        IT_CONFIRM-ZSEQTY = 0.
      ENDIF.
      IF IT_CONFIRM-ZCONFIRMBIT EQ 'X'.
        IT_CONFIRM-ENDBIT = 0.
      ENDIF.
      IF IT_CONFIRM-ZCONFIRMBIT2 EQ 'X'.
        IT_CONFIRM-ENDBIT2 = 0.
      ENDIF.
    ENDFORM.                    " check_flag_routine
    *&      Form  f001-read_mat
          text
    -->  p1        text
    <--  p2        text
    FORM F001-READ_MAT .
      DATA :W_FERTH LIKE MARA-FERTH.
    **Note: BREMS = 'X' - give limited explosion
         MEHRS = 'X' - give the multi level explosion
      LOOP AT IT_CONFIRM.
        CLEAR W_STLAL.
        SELECT SINGLE STLAL INTO W_STLAL FROM MKAL WHERE WERKS = PR_WERKS AND
                                                         MATNR = IT_CONFIRM-MATNR AND
                                                         VERID = W_VERID.
        CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
          EXPORTING
            BREMS                 = 'X'
            CAPID                 = 'PP01'
            DATUV                 = SY-DATUM
            MEHRS                 = 'X'
            MTNRV                 = IT_CONFIRM-MATNR
            WERKS                 = IT_CONFIRM-PLWRK
            STLAL                 = W_STLAL
          TABLES
            STB                   = IT_STPOX
          EXCEPTIONS
            ALT_NOT_FOUND         = 1
            CALL_INVALID          = 2
            MATERIAL_NOT_FOUND    = 3
            MISSING_AUTHORIZATION = 4
            NO_BOM_FOUND          = 5
            NO_PLANT_DATA         = 6
            NO_SUITABLE_BOM_FOUND = 7
            CONVERSION_ERROR      = 8
            OTHERS                = 9.
        IF SY-SUBRC <> 0.
       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        DELETE IT_STPOX WHERE DUMPS = 'x'.
        SORT   IT_STPOX.
        LOOP AT IT_STPOX INTO WA_STPOX.
          CLEAR W_BUOM.
          SELECT SINGLE MEINS INTO W_BUOM
          FROM MARA WHERE MATNR = IT_CONFIRM-ZWIRECD.
          CLEAR IT_ST.
          IT_ST-MATNR    = IT_CONFIRM-MATNR.
          IT_ST-WIRECD   = IT_CONFIRM-ZWIRECD.
          IT_ST-UOM      = W_BUOM.
          IT_ST-RMCODE   = WA_STPOX-IDNRK.
          IT_ST-MEINS    = WA_STPOX-MMEIN.
          APPEND IT_ST.
        ENDLOOP.
      ENDLOOP.
      SORT IT_ST BY MATNR.
      CLEAR: IT_ST.
      LOOP AT IT_ST.
        SELECT SINGLE FERTH INTO W_FERTH FROM MARA WHERE MATNR = IT_ST-MATNR
        CLEAR W_LBKUM.
        SELECT SINGLE LBKUM INTO W_LBKUM FROM MBEW
       WHERE MBEW~MATNR = IT_ST-WIRECD
       AND   MBEW~BWKEY = PR_WERKS
       AND   MBEW~BWTAR = ''.
        IT_ST-SPC = W_LBKUM.
        MODIFY IT_ST INDEX SY-TABIX TRANSPORTING SPC .
      ENDLOOP.
    ENDFORM.                    " f001-read_mat
    *&      Form  f002-get_qty
          text
    -->  p1        text
    <--  p2        text
    ----

  • Processing of code in AT LINE-SELECTION section

    Hello,
    AT LINE-SELECTION.
    PERFORM disp_blkd_bill.
    PERFORM start_of_selection.
    LEAVE SCREEN.
    In the code above the first FORM routine displays an ALV list. The second FORM routine needs to display a WRITE statement. What happens is the first FORM routine is executed successfully. When I hit the BACK button I want the second FORM routine to execute and then the LEAVE SCREEN command, but it never executes the second FORM routine , it directly executes the  LEAVE SCREEN command.
    Is there a way to execute the second FORM routine before the LEAVE SCREEN command?
    Thanks,
    ALAM.

    Hi Ravi,
    Ravi,
    Thanks for the response.
    The requirement is :
    When the START OF SELECTION section is executed a write statement displaying the number of incomplete sales Orders is displayed. When you click on that output statement(as in drill down repoting) the code below comes into picture:
    AT LINE-SELECTION.
    PERFORM disp_blkd_bill.
    PERFORM start_of_selection.
    LEAVE SCREEN.
    Now the alv list displays incomplete Sales Orders. The user using the HOTSPOT feature completes/processes the sales Order and wants the ALV report to refresh when she hits the back button and returns to the ALV list which I do so. Now when she again hits the back button she wants to view the updated statement displaying the number of incomplete Sales orders which happens when the routine 'start_of_selection' is excuted again. But then If I do not use the LEAVE SCREEN command it takes her back to the old displaing the previous incomplete number of sales orders and then back to the selection screen. We do not want that old statement to be displayed on the way back to the selection screen.
    Please let me know if you still need further clarifications.
    Thanks,
    ALAM.

  • CL_GUI_ALV_GRID: Line selection and backend table

    Dear community,
    is there a way to propagate line selection of ALV GRID GUI automagically to the backend data table?
    This is my scenario:
    1) A table containing several records with one column 'SELECTED' for selection status
    2) ALV_GRID to display the table with layout info for line selection
    alv_layo-sel_mode   = 'A'.
    alv_layo-box_fname  = 'SELECTED'.
    3) At PBO methods set_table_for_first_display and refresh_table_display are called with the table containing some records marked as 'SELECTED'.
    First problem here: 'SELECTED' entries are not propagated to the ALV grid (the lines in the GUI are not marked). I know I could use set_selected_rows to force the selection, but is this really necessary?
    4) Then, at PAI method check_changed_data is called (and yes, event mc_evt_modified is registered).
    Second problem: Changes in selection are not propagated automagically to the underlying table. I also know I could use get_selected_rows to force this update manually, but again: is this really necessary?
    Can anyone explain the behavior why sorting etc. is propagated automatically to the underlying table, but not the selection of rows? Am I missing something?
    Hint: Removing box_fname = 'SELECTED' and setting the fieldcatalog to display the column 'SELECTED' as editable checkbox works also. But our users are familiar with the rowmark, so this is no option.
    Any suggestions are welcome.
    Thanks,
    Torsten.
    Here an (almost) complete listing of the code:
    PROCESS BEFORE OUTPUT.
      MODULE SET_STATUS_TITLE_0100.
      MODULE INIT_ALV_GRID_0100.
      MODULE DISPLAY_DATA_0100.
      MODULE SET_GRID_SELECTION_0100.
    PROCESS AFTER INPUT.
      MODULE EXIT_COMMAND_0100 AT EXIT-COMMAND.
      MODULE UPDATE_TABLE_DATA_0100.
      MODULE USER_COMMAND_0100.
    MODULE init_alv_grid_0100 OUTPUT.
      IF NOT gr_container IS BOUND.
    *   Container erzeugen
        CREATE OBJECT gr_container ...
    *   ALV Grid erstellen
        CREATE OBJECT gr_alv_grid ...
    *   ALV für die erste Anzeige vorbereiten
        gs_alv_layo-zebra      = on.         " Gestreifte Anzeige
        gs_alv_layo-no_toolbar = on.         " Keine Toolbar
        gs_alv_layo-no_rowmark = off.        " Keine Zeilenmarkierung
        gs_alv_layo-edit       = off.        " Editieren ermöglichen
        gs_alv_layo-sel_mode   = 'A'.        " Selektionsmodus
        gs_alv_layo-cwidth_opt = off.        " Optimierte Spaltenbreite!
        gs_alv_layo-info_fname = 'LCOLOR'.   " ALV-Control: Feldname mit
                                             " einfacher Farbcodierung für
                                             " Zeile
        gs_alv_layo-ctab_fname = 'CCOLOR'.   " ALV-Control: Feldname mit
                                             " komplexer Farbcodierung
                                             " für Zellen
        gs_alv_layo-box_fname  = 'SELECTED'. " Markierte Zeilen
    *   Feldkatalog für die Anzeige vorbereiten
    *    CLEAR gs_fcat.                       " Mehrfachsel. ermöglichen
    *    gs_fcat-fieldname = 'SELECTED'.      " Dazu muss das Feld für die
    *    gs_fcat-edit      = on.              " Selektion editierbar sein.
    *    gs_fcat-checkbox  = on.              " Ausserdem muss die
    **   gs_fcat-outputlen = '3'.             " Zeilenmark. eingeschaltet
    *    APPEND gs_fcat TO gt_fcat.           " und box_fname gesetzt sein.
    *   Ereignisbehandlung
        SET HANDLER
          lcl_event_handler=>on_click
          lcl_event_handler=>on_hotspot
          lcl_event_handler=>on_double_click
          lcl_event_handler=>on_user_command
          lcl_event_handler=>on_data_changed
        FOR gr_alv_grid.
        CALL METHOD gr_alv_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_modified
          EXCEPTIONS
            error      = 1
            OTHERS     = 2.
      ENDIF.
    ENDMODULE.                 " INIT_ALV_GRID_0100  OUTPUT
    MODULE display_data_0100 OUTPUT.
    * PBO Modul für alle weiteren Anzeigezyklen.
      IF gr_alv_grid IS BOUND.
        CALL METHOD gr_alv_grid->set_table_for_first_display ...
      ENDIF.
    ENDMODULE.                 " DISPLAY_DATA_0100  OUTPUT
    MODULE set_grid_selection_0100 OUTPUT.
      IF gr_alv_grid IS BOUND.
        CALL METHOD gr_alv_grid->refresh_table_display.
      ENDIF.
    * Alterative: Set selected rows manually
    *    CALL METHOD gr_alv_grid->set_selected_rows
    ENDMODULE.                 " SET_GRID_SELECTION_0100 OUTPUT
    MODULE update_table_data_0100 INPUT.
        CALL METHOD gr_alv_grid->check_changed_data.
    * Alternative: Get selected rows and update table manually
    *    CALL METHOD gr_alv_grid->get_selected_rows ...
    ENDMODULE.                 " UPDATE_TABLE_DATA_0100  INPUT

    Hello Torsten
    I may be wrong but I think the field LVC_S_LAYO-BOX_FNAME is a relict from the stone-age SLIS-based ALV programming.
    Using modern OO-based ALV we do not need any kind of "MARK" row but we have the appropriate methods available.
    Regards
      Uwe

  • Activate PF-Status as well as At LINE-SELECTION

    Hi,
    i have a problem, i have created a graph icon on the main list using SET PF-STATUS and the icon is cumin and the graphis also beiing displayed. at a later stage in reporting, i used AT LINE-SELECTION. but this is not gettin executed when i double click any wer, it says, choose a valid function. but when i remove the SET PF-STATUS code, it work fine.
    I want both of them work.....how??????
    Message was edited by:
            Sabahuddin Ahmed

    Right ...you do one thing....
    in se41 .. open  status in change mode.. then in front of function key F2 remove <..> and write PICK .. then save and activate ..it'll work...

  • Multi Line Selection with ALV Grid

    Dear all
    what do I have to do to make multiple line selection available in an ALV Grid (Version 4.7)?
    Herbert

    Hi Herbert again,
    Once you displayed your alv output display, then select rows in the alv display.
    then when you click for interactive buttion (ie. like Refresh functionality), In debug mode you can see internal table with Sell field active (i.e. marked "X") which you have selected.
    e.g.
    FORM user_command USING lv_ucomm TYPE sy-ucomm ls_selfield TYPE slis_selfield.
      DATA:
            lv_ref_grid   TYPE REF TO cl_gui_alv_grid.
      CLEAR : gv_tcode.
    *-- to ensure that only new processed data is displayed
      IF lv_ref_grid IS INITIAL.
        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
          IMPORTING
            e_grid = lv_ref_grid.
      ENDIF.
      IF NOT lv_ref_grid IS INITIAL.
        CALL METHOD lv_ref_grid->check_changed_data.
      ENDIF.
      CASE lv_ucomm.
        WHEN '&IC1'.
          IF ls_selfield-fieldname = 'MATNR'.
            READ TABLE gt_gi INTO gs_gi INDEX ls_selfield-tabindex.
            IF sy-subrc = 0.
              gv_tcode = 'MMBE'.
              SET PARAMETER ID 'MAT' FIELD gs_gi-matnr.
              CALL TRANSACTION gv_tcode AND SKIP FIRST SCREEN. "#EC CI_CALLTA "MMBE
            ENDIF.
          ENDIF.
        WHEN 'COPY'.
          LOOP AT gt_gi INTO gs_gi WHERE sel = 'X'.
            gs_gi-sel = ' '.
            APPEND gs_gi TO gt_gi.
            CLEAR gs_gi.
          ENDLOOP.
        WHEN 'POST'.
          REFRESH : gt_error[].
        WHEN OTHERS.
      ENDCASE.
    ENDFORM.                    " USER_COMMAND
    I hope you clear now.
    Feel free to ask any doubts.
    Thanks and regards,
    Vijay

  • What happens exactly during line selection

    Hi,
    What happens exactly during line selection of a report.
    I mean suppose I display 20 purchase orders with data in a list.When I select one line say I call ME23N.
    How will only that PO be called.
    What happens internally?
    Regards,
    Subhashini

    Each time you use HIDE statement, data are stored in special HIDE Area . The system inserts field name you are hiding together with its value. Current output line (SY-LINNO) is used to populate which index that entry will receive in Hide Area. That's
    why HIDE statement must be entered before beginning a new line.
    During line selection system variable SY-LILLI is read (index of selected line), then corresponding line in Hide Area is read and values are transported back to corresponding fields (data objects) you have hidden.
    What is also important is that each list (basic, detailed) has its own Hide Area, that's why you can even use HIDE when you are already in AT LINE-SELECTION event block, hence create subsequent detialed lists. This will fill new Hide Area of detailed list and so on.
    This topic is well discussed in BC405 course.
    Regards
    Marcin

  • Multiple line selection and then capturing the selected values

    Dear all
      in my alv program ,i need to capture multiple line selections  using checkboxes.
    I have appended check boxes by adding it in the internal table  & filling in field catalog.
    but problem is i'm not able to capture multiple selected check boxes dynamically,
    i could capture only the last selected check box,
    option i found was to use class method get-selected-rows,but i'm unable to use it properly, could anyone explain in detail
    i have already gone through the various examples in sdn but i am not able to work out.
    like using parameters etc....
    CAN ANY ONE HELP ME WITH THE CODE
    help reqired  immediately,
    Thanks in advance.

    Hi Ankur,
    In the PAI, just after the selection of your user event, button or menu,
    add this code before getting the selected records.
    <b>CALL METHOD grid1->check_changed_data
                 IMPORTING
                   e_valid = ws_x.</b>
    where    grid1  TYPE REF TO cl_gui_alv_grid,
    Now fetch the selected records.
    Check this code for reference
                C O M P A N Y   C O N F I D E N T I A L                **
           Care should be taken to prevent its unauthorized use.       **
    REPORT zfipost MESSAGE-ID f4 NO STANDARD PAGE HEADING .
    AUTHOR   : Susmitha Susan Thomas
    DATE     : August 18, 2005
    *Abridged Version : This report generates a list in Abap List Viewer of
                      all the selected records in VBKPF/VBSEG. * *
                      (TRANSACTION ZPPD:Modified from transaction FBV0)
    -- Class definition--
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    --Tables--
    TABLES:  vbkpf. " Belegkopf
    TABLES: tsp1d, pri_params, spopli.
    TYPE-POOLS slis.
    ---- Global Variables -
    DATA:    anzkr(6)     TYPE n,
             lsind        LIKE sy-lsind,
             no_output(1) TYPE c,
             records(1) TYPE c,
             xpick(1)     TYPE c,
             xpickc(1)    TYPE c,
             xbinp(1)     TYPE c,
             rc           LIKE syst-subrc,
             ok_code LIKE sy-ucomm,
             index TYPE i,
             char_x(1)    TYPE c VALUE 'X',
             post         TYPE c,
             ans          TYPE n,
             user(40) TYPE c.
    DATA :BEGIN OF i_doctype OCCURS 0,
             blart LIKE vbkpf-blart,
          END OF i_doctype.
    --AlV Initialization--
    DATA:  gs_layout TYPE lvc_s_layo,
           gt_fieldcat TYPE lvc_t_fcat,
           gs_fieldcat TYPE lvc_s_fcat,
           gs_index_rows TYPE lvc_t_row,
           l_layout TYPE disvariant,
           g_repid LIKE sy-repid,
           g_max TYPE i VALUE 100,
           ws_row_idx TYPE lvc_t_row ,
           ws_row_no TYPE lvc_t_roid,
           i_excl_func TYPE ui_functions,
           ls_prnt TYPE lvc_s_prnt,
           refresh TYPE c,
           i_fieldcat  TYPE lvc_t_fcat,
          post(1) TYPE c,
           accr_def(1) TYPE c,
           rev_cd(3) TYPE c,
           ch(1) TYPE c.
    DATA: list_index LIKE sy-lsind,
          flag TYPE n VALUE 0,
          fl TYPE n VALUE 0,
          g_container TYPE scrfname VALUE 'GRID_CONTAINER',
          grid_container TYPE REF TO cl_gui_docking_container,
          grid1  TYPE REF TO cl_gui_alv_grid,
          custom_container1 TYPE REF TO cl_gui_custom_container,
          event_receiver TYPE REF TO lcl_event_receiver,
          gt_vbkpf1 TYPE STANDARD TABLE OF vbkpf WITH HEADER LINE,
          i_vbkpf TYPE  TABLE OF vbkpf WITH HEADER LINE,
          i_ws_row_idx LIKE ws_row_idx WITH HEADER LINE.
    ---Internal table containing details of selected documents--
    DATA : BEGIN OF gt_vbkpf OCCURS 0,
             xpick(1) TYPE c,
             belnr LIKE vbkpf-belnr,
             gjahr LIKE vbkpf-gjahr,
             bukrs LIKE vbkpf-bukrs,
             blart LIKE vbkpf-blart,
             budat LIKE vbkpf-budat,
             bldat LIKE vbkpf-bldat,
             bktxt LIKE vbkpf-bktxt,
             waers LIKE vbkpf-waers,
             usnam LIKE vbkpf-usnam,
             xblnr LIKE vbkpf-xblnr,
             rev_code(3) TYPE c,
             rev_rsn(15) TYPE c,
             rev_date(10) TYPE c,
             linecolor(4) TYPE c,
           END OF gt_vbkpf.
    --Table to store long text--
    DATA : BEGIN OF inline OCCURS 0,
    tdformat TYPE tdformat,
    tdline TYPE tdline,
    END OF inline.
    DATA: thead LIKE thead OCCURS 0 WITH HEADER LINE.
    -- Records to be posted--
    DATA:   BEGIN OF tbkpf OCCURS 5.
            INCLUDE STRUCTURE vbkpf.
    DATA:   END   OF tbkpf.
    ---- Constants -
    CONSTANTS: awtyp_bkpf TYPE awtyp VALUE 'BKPF '.
    CONSTANTS: awtyp_space TYPE awtyp VALUE '     '.
    Selection Screen
    PARAMETER: funcl   LIKE t020-funcl NO-DISPLAY.   "P(ost),D(isplay),U(pd)
    SELECTION-SCREEN SKIP 2.
    SELECT-OPTIONS:
             p_bukrs     FOR  vbkpf-bukrs,
             p_belnr     FOR  vbkpf-belnr,
             p_gjahr     FOR  vbkpf-gjahr,
             p_budat     FOR  vbkpf-budat,
             p_bldat     FOR  vbkpf-bldat,
             p_blart     FOR  vbkpf-blart,
             p_xblnr     FOR  vbkpf-xblnr,
             p_bktxt     FOR  vbkpf-bktxt,
             p_usnam     FOR  vbkpf-usnam.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK blk
                WITH FRAME TITLE text-010 NO INTERVALS.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(35) text-002.
    PARAMETER norm_doc    TYPE c
              RADIOBUTTON GROUP doc DEFAULT 'X' .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(35) text-001.
    PARAMETER ad_doc       TYPE c
               RADIOBUTTON GROUP doc .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(35) text-003.
    PARAMETER all_doc       TYPE c
                RADIOBUTTON GROUP doc .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK blk.
          CLASS lcl_event_receiver DEFINITION
          For capturing events on the ALV                               *
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
    to capture all recently changed data.
          handle_data_changed      FOR EVENT data_changed OF
                                           cl_gui_alv_grid
                                           IMPORTING er_data_changed,
    for hot spot
          handle_hotspot           FOR EVENT hotspot_click OF
                                           cl_gui_alv_grid
                                           IMPORTING e_column_id e_row_id.
    ENDCLASS.   " lcl_event_receiver (Definition)
          CLASS lcl_event_receiver (Implementation)
          For capturing events on the ALV                               *
    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD handle_data_changed.
        PERFORM f2200_handle_data_changed USING er_data_changed.
      ENDMETHOD.
      METHOD handle_hotspot.
        PERFORM f2201_handle_hotspot USING e_column_id e_row_id .
      ENDMETHOD.
    ENDCLASS.  " lcl_event_receiver (Implementation)
    AT SELECTION-SCREEN
    AT SELECTION-SCREEN.
    START-OF-SELECTION
    START-OF-SELECTION.
    ---- Colors -
      FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    -------------------- Status und Title Bar----------------------------*
      SET PF-STATUS funcl.
      SET TITLEBAR  funcl.
    -- Read Records--
      SELECT * FROM vbkpf INTO TABLE gt_vbkpf1
          WHERE bukrs IN p_bukrs
            AND ausbk IN p_bukrs
            AND belnr IN p_belnr
            AND gjahr IN p_gjahr
            AND budat IN p_budat
            AND bldat IN p_bldat
            AND blart IN p_blart
            AND bktxt IN p_bktxt
            AND xblnr IN p_xblnr
            AND usnam IN p_usnam
            AND bstat EQ 'V'
          AND ( awtyp IN (awtyp_bkpf, awtyp_space) OR
                awtyp IS null )
          ORDER BY PRIMARY KEY.
    ----Call the ALV Screen -
      PERFORM alv_display.
    END-OF-SELECTION.
                         FORM BELEG_PICKUP                              *
          Indicate changing of the selected external record             *
    FORM beleg_pickup.
      SET PARAMETER ID 'BUK' FIELD vbkpf-bukrs.
      SET PARAMETER ID 'GJR' FIELD vbkpf-gjahr.
      SET PARAMETER ID 'BLP' FIELD vbkpf-belnr.
      CASE funcl.
         WHEN 'P'.
          IF anzkr IS INITIAL.
            CALL FUNCTION 'ZPRELIMINARY_POSTING_POST_D'
                 EXPORTING
                      bukrs = vbkpf-bukrs
                      belnr = vbkpf-belnr
                      gjahr = vbkpf-gjahr.
          ELSE.
            IF sy-ucomm EQ 'BUCH'.
              CALL FUNCTION 'ZPRELIMINARY_POSTING_POST_ALL'
                   EXPORTING
                        synch   = char_x
                        bupbi   = xbinp
                   TABLES
                        t_vbkpf = tbkpf.
            ELSE.
              CALL FUNCTION 'ZPRELIMINARY_POSTING_POST_ALL'
                   EXPORTING
                        bupbi   = xbinp
                   TABLES
                        t_vbkpf = tbkpf.
             wait up to 3 seconds.
             commit work.
            ENDIF.
          ENDIF.
        WHEN OTHERS.
          IF sy-tcode = 'ZPPD'.
            funcl = 'P'.
          ENDIF.
          CALL FUNCTION 'ZPRELIMINARY_POSTING_DISPLAY'
               EXPORTING
                    bukrs = vbkpf-bukrs
                    belnr = vbkpf-belnr
                    gjahr = vbkpf-gjahr.
      ENDCASE.
    ENDFORM.
                        FORM TBKPF_FUELLEN                              *
                Include  records for posting in TBKPF                   *
    FORM tbkpf_fuellen.
      records = 'X'.
      LOOP AT gt_vbkpf.
        IF gt_vbkpf-xpick = 'X'.
          CLEAR anzkr.
          CLEAR records.
          IF sy-subrc = 0.
            anzkr = anzkr + 1.
            MOVE-CORRESPONDING gt_vbkpf TO tbkpf.
            APPEND tbkpf.
          ELSE.
            EXIT.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.
                              FORM MALL                                 *
                         Select All documents                           *
    FORM mall.
      LOOP AT gt_vbkpf.
        gt_vbkpf-xpick = 'X'.
        MODIFY gt_vbkpf.
      ENDLOOP.
      refresh = 'X'.
      CALL METHOD grid1->refresh_table_display.
    ENDFORM.
                             FORM EMAL                                  *
                       Unselect all documents                           *
    FORM emal.
      LOOP AT gt_vbkpf.
        gt_vbkpf-xpick = ' '.
        MODIFY gt_vbkpf.
      ENDLOOP.
      refresh = 'X'.
      CALL METHOD grid1->refresh_table_display.
    ENDFORM.
                         Form  alv_display                               *
                  To display the details on an ALV.                      *
    FORM alv_display.
      CALL SCREEN 100.
    ENDFORM.                    " alv_display
    *&      Module  PB0_100  OUTPUT
    MODULE pb0_100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'POSTDOC'.
    --To verify that posting is complete.--
    ---- Setting the layout -
      IF grid1 IS INITIAL.
        PERFORM fill_table.
    -- Initializing the field catalog--
        PERFORM fieldcat_init CHANGING i_fieldcat.
    -- Initializing the ALV GRID and CONTAINER--
        CLEAR gs_layout.
        gs_layout-info_fname = 'linecolor'.
        gs_layout-grid_title = 'Parked Documents'(100).
        gs_layout-zebra               = 'X'.
        gs_layout-cwidth_opt   = 'X'.
        gs_layout-sel_mode = 'A'.
        gs_layout-edit                = 'X'.
        l_layout-report = sy-repid.
    ------ Create a custom container control for ALV Control----
        IF cl_gui_alv_grid=>offline( ) IS INITIAL.
          CREATE OBJECT grid_container
             EXPORTING
               dynnr                     = '100'
               ratio                     = '100'
            EXCEPTIONS
             cntl_error                  = 1
             cntl_system_error           = 2
             create_error                = 3
             lifetime_error              = 4
             lifetime_dynpro_dynpro_link = 5
             others                      = 6.
          IF sy-subrc NE 0.
         MESSAGE i000 WITH text-007.  " Error in object creation
            LEAVE LIST-PROCESSING.
          ENDIF.
    -- Create an instance of alv control--
          CREATE OBJECT grid1
                 EXPORTING
                    i_lifetime = 1
                    i_parent = grid_container.
    ---- Disable all unwanted button in the ALV grid -
          PERFORM disable_functions TABLES i_excl_func.
    ---- Call the display function of ALV grid -
          CALL METHOD grid1->set_table_for_first_display
               EXPORTING
                         is_variant       = l_layout
                         i_save           = 'A'
                         is_layout        = gs_layout
                         is_print         = ls_prnt
                         it_toolbar_excluding          = i_excl_func
               CHANGING  it_outtab        = gt_vbkpf[]
                         it_fieldcatalog  = i_fieldcat.
        ENDIF.                  "  IF cl_gui_alv_grid=>offline IS INITIAL
        CALL METHOD grid1->register_edit_event
            EXPORTING
             i_event_id = cl_gui_alv_grid=>mc_evt_enter.
        CALL METHOD grid1->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    ---- Create a reciever object to handle events -
        CREATE OBJECT event_receiver.
        SET HANDLER event_receiver->handle_data_changed FOR grid1.
        SET HANDLER event_receiver->handle_hotspot FOR grid1.
        CALL METHOD cl_gui_control=>set_focus EXPORTING control = grid1.
      ENDIF.                   " IF grid1 IS INITIAL.
    ENDMODULE.                 " PB0_100  OUTPUT
    *&      Form  fill_table
         Fills the data table to be passed to the ALV grid.
    FORM fill_table.
      LOOP AT gt_vbkpf1.
        MOVE-CORRESPONDING gt_vbkpf1 TO gt_vbkpf.
        IF ad_doc = 'X' OR all_doc = 'X'.
          thead-tdobject = 'BELEG'.
          CONCATENATE gt_vbkpf1-bukrs
                      gt_vbkpf1-belnr
                      gt_vbkpf1-gjahr INTO thead-tdname.
          thead-tdspras = sy-langu.
          thead-tdid = '0004'.
          PERFORM read_text.
          READ TABLE inline INDEX 1.
          gt_vbkpf-rev_code =  inline-tdline.
          REFRESH inline.
          CLEAR inline.
          thead-tdid = '0005'.
          PERFORM read_text.
          READ TABLE inline INDEX 1.
          gt_vbkpf-rev_rsn =  inline-tdline.
          REFRESH inline.
          CLEAR inline.
          thead-tdid = '0006'.
          PERFORM read_text.
          READ TABLE inline INDEX 1.
          gt_vbkpf-rev_date =  inline-tdline.
          REFRESH inline.
          CLEAR inline.
          REFRESH inline.
          CLEAR inline.
        ENDIF.
        APPEND gt_vbkpf.
        CLEAR gt_vbkpf.
    ENDLOOP.
      ENDLOOP.
    ENDFORM.
    *&      Form  fieldcat_init
         Initialize the field catalog
    FORM fieldcat_init CHANGING i_fieldcat TYPE lvc_t_fcat.
      DATA: i_fldcat TYPE lvc_t_fcat WITH HEADER LINE.
    CHECKBOX
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'XPICK'.
      i_fldcat-checkbox  = 'X'.
    i_fldcat-key       = 'X'.
      i_fldcat-tabname   = 'GT_VBKPF'.
      i_fldcat-outputlen   =  '4'.
      i_fldcat-scrtext_l =  'ChkB'.
       APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BELNR'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-hotspot   = 'X'.
      i_fldcat-outputlen   =  '15'.
      i_fldcat-scrtext_l =  'Document Number'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'GJAHR'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'FYear'.
      i_fldcat-outputlen   = '5'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BUKRS'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'CCode'.
      i_fldcat-outputlen   =  '5'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BLART'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'Type'.
      i_fldcat-outputlen   =  '6'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BLDAT'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Doc Date'.
      i_fldcat-outputlen   =  '12'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BUDAT'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Park Date'.
      i_fldcat-outputlen   =  '12'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'BKTXT'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Document Header Text'.
      i_fldcat-outputlen   =  '25'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'WAERS'.
      i_fldcat-tabname  = 'GT_VBKPF'.
    i_fldcat-key      = 'X'.
      i_fldcat-scrtext_l = 'Curr'.
      i_fldcat-outputlen   =  '7'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'USNAM'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'Parked By'.
      i_fldcat-outputlen   =  '13'.
      APPEND i_fldcat TO i_fieldcat.
      CLEAR i_fldcat.
      i_fldcat-fieldname = 'XBLNR'.
      i_fldcat-tabname   = 'GT_VBKPF'.
    i_fldcat-key       = 'X'.
      i_fldcat-scrtext_l = 'Reference Text'.
      i_fldcat-outputlen   =  '19'.
      APPEND i_fldcat TO i_fieldcat.
      IF ad_doc = 'X' OR all_doc = 'X'.
        CLEAR i_fldcat.
        i_fldcat-fieldname = 'REV_CODE'.
        i_fldcat-tabname   = 'GT_VBKPF'.
       i_fldcat-key       = 'X'.
        i_fldcat-scrtext_l = 'RC'.
        i_fldcat-outputlen   =  '2'.
        APPEND i_fldcat TO i_fieldcat.
        CLEAR i_fldcat.
        i_fldcat-fieldname = 'REV_RSN'.
        i_fldcat-tabname   = 'GT_VBKPF'.
       i_fldcat-key       = 'X'.
        i_fldcat-scrtext_l = 'Rev Reason'.
        i_fldcat-outputlen   =  '15'.
        APPEND i_fldcat TO i_fieldcat.
        CLEAR i_fldcat.
        i_fldcat-fieldname = 'REV_DATE'.
        i_fldcat-tabname   = 'GT_VBKPF'.
       i_fldcat-key       = 'X'.
        i_fldcat-scrtext_l = 'Rev Date'.
        i_fldcat-outputlen   =  '10'.
        APPEND i_fldcat TO i_fieldcat.
      ENDIF.
    ENDFORM.                    " fieldcat_init
    *&      Module  PAI_100  INPUT
    MODULE pai_100 INPUT.
      CASE ok_code.
        WHEN 'BACK'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN 'EXIT'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN '%EX'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN 'BINP'.
          DATA : ws_x TYPE c VALUE 'X'.
          CALL FUNCTION 'POPUP_TO_CONFIRM'
              EXPORTING
                   titlebar      = 'Posting Documents Via Batch Input'
                   text_question =
               'Are you sure you want to post all the selected documents?'
                   text_button_1 = 'Yes'
                   text_button_2 = 'No'
                   start_column  = 25
                   start_row     = 6
              IMPORTING
                   answer        = ans.
          IF ans = '1'.
            CALL METHOD grid1->check_changed_data
                 IMPORTING
                   e_valid = ws_x.
            xbinp = 'X'.
            PERFORM tbkpf_fuellen.
            IF records = 'X'.
              MESSAGE s999(zv) WITH text-007.
            ELSE.
              PERFORM beleg_pickup.
            ENDIF.
          ENDIF.
        WHEN 'MALL'.
          PERFORM mall.
        WHEN 'EMAL'.
          PERFORM emal.
        WHEN 'RW'.
          IF sy-dynnr = '1000'.
            PERFORM exit_program.
          ELSEIF sy-dynnr = '0100'.
            LEAVE TO TRANSACTION 'ZPPD'.
          ENDIF.
        WHEN 'BUCH'.
          CALL FUNCTION 'POPUP_TO_CONFIRM'
               EXPORTING
                    titlebar      = 'Posting Document'
                    text_question =
                'Are you sure you want to post all documents selected?'
                    text_button_1 = 'Yes'
                    text_button_2 = 'No'
                    start_column  = 25
                    start_row     = 6
               IMPORTING
                    answer        = ans.
          IF ans = '1'.
            CALL METHOD grid1->check_changed_data
              IMPORTING
                e_valid = ws_x.
                perform tbkpf_fuellen.
            IF records = 'X'.
              MESSAGE s999(zv) WITH text-007.
            ELSE.
              PERFORM beleg_pickup.
            ENDIF.
          ENDIF.
        WHEN 'PICK'.
          DATA : check TYPE n,
                 no_rec TYPE c.
          check = 0.
          no_rec = 'X'.
          CALL METHOD grid1->check_changed_data
            IMPORTING
              e_valid = ws_x.
          index = 0.
          LOOP AT gt_vbkpf.
            funcl = 'D'.
            index = index + 1.
            IF gt_vbkpf-xpick = 'X'.
              check = 1.
              CLEAR no_rec.
              READ TABLE gt_vbkpf1 INDEX index INTO vbkpf.
              PERFORM beleg_pickup.
            ENDIF.
          ENDLOOP.
          IF check = 0.
            CALL METHOD grid1->get_selected_rows
              IMPORTING
                et_index_rows = ws_row_idx.
            IF NOT ws_row_idx IS INITIAL.
              CLEAR no_rec.
            ENDIF.
            LOOP AT ws_row_idx INTO i_ws_row_idx.
              READ TABLE gt_vbkpf1 INDEX i_ws_row_idx-index INTO vbkpf.
              PERFORM beleg_pickup.
            ENDLOOP.
            IF no_rec = 'X'.
              MESSAGE s999(zv) WITH text-007.
            ENDIF.
          ENDIF.
        WHEN '&RNT_PREV'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '&RNT'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '%SC'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '&OL0'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&OAD'.
          CALL METHOD grid1->set_function_code
          CHANGING c_ucomm = ok_code.
        WHEN '&AVE'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&AQW'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&XXL'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '%PC'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN '&CRTEMPL'.
          CALL METHOD grid1->set_function_code
         CHANGING c_ucomm = ok_code.
        WHEN OTHERS.
         do nothing.
      ENDCASE.
      CLEAR ok_code.
    ENDMODULE.                 " PAI_100  INPUT
    *&      Form  exit_program
         Exits from the program after freeing the grid and container     *
    FORM exit_program.
      IF NOT grid_container IS INITIAL.
        CALL METHOD grid_container->free.
      ENDIF.
      IF NOT grid1 IS INITIAL.
        CALL METHOD grid1->free
           EXCEPTIONS
             cntl_error        = 1
             cntl_system_error = 2
             OTHERS            = 3.
      ENDIF.
      LEAVE PROGRAM.
    ENDFORM.                    " exit_program
    *&      Form  f2200_handle_data_changed
          To handle event of change in data in ALV.
         -->P_ER_DATA_CHANGED  text
    FORM f2200_handle_data_changed USING    ir_data_changed
                                             TYPE REF TO
                                             cl_alv_changed_data_protocol.
      DATA : ls_mod_cell TYPE lvc_s_modi ,
             lv_value TYPE lvc_value,
             lflg_check TYPE i.
      DATA : wa_vbkpf LIKE LINE OF gt_vbkpf.
      SORT ir_data_changed->mt_mod_cells BY row_id .
      LOOP AT ir_data_changed->mt_mod_cells
                         INTO ls_mod_cell
                         WHERE fieldname = 'I_PICK'.
        IF NOT ls_mod_cell-value IS INITIAL .
          CALL METHOD ir_data_changed->modify_cell
            EXPORTING
              i_row_id    = ls_mod_cell-row_id
              i_fieldname = ls_mod_cell-fieldname
              i_value     = ls_mod_cell-value.
          READ TABLE gt_vbkpf INTO wa_vbkpf
                     INDEX ls_mod_cell-row_id.
          IF ls_mod_cell-fieldname = 'I_PICK'.
            wa_vbkpf-xpick = ls_mod_cell-value.
          ENDIF.
          MODIFY gt_vbkpf  FROM wa_vbkpf
                              INDEX ls_mod_cell-row_id.
        ENDIF .
      ENDLOOP .
    ENDFORM.                    " f2200_handle_data_changed
    *&      Form  f2201_handle_hotspot
                To handle event of clicking on hyperlink
         -->P_E_COLUMN_ID  text
    FORM f2201_handle_hotspot USING    p_e_column_id  p_e_row_id.
      READ TABLE gt_vbkpf1 INDEX p_e_row_id INTO vbkpf.
      funcl = 'D'.
      PERFORM beleg_pickup.
      PERFORM exit_program.
    ENDFORM.                    " f2201_handle_hotspot
    Regards,
    Susmitha
    Dont forget to reward points for useful answers

  • Multiple line selection in report list

    HI All,
    I have a requirment to display multiple line items with a checkbox prefixed, and i should be able to select multiple line items with the checkbox provided and should keep the selectd line items in an internal table(note the list is not ALG LIST or GRID)
    can anybody please tell me how to select multiple line items and and keep the selected items in a  in a normal report list.
    Regards

    Hii,
      Have a look at this sample code
    Report z_sdn.
    *" Data declarations...................................................
    * Work variables                                                      *
    DATA:
      BEGIN OF fs_spfli,
        carrid   LIKE spfli-carrid,        " Airline Code
        connid   LIKE spfli-connid,        " Flight Connection Number
        airpfrom LIKE spfli-airpfrom,      " Departure airport
        airpto   LIKE spfli-airpto,        " Destination airport
        deptime  LIKE spfli-deptime,       " Departure time
        arrtime  LIKE spfli-arrtime,       " Arrival time
      END OF fs_spfli,
      BEGIN OF fs_sflight,
        carrid   LIKE sflight-carrid,       " Airline Code
        connid   LIKE sflight-connid,       " Flight Connection Number
        fldate   LIKE sflight-fldate,       " Flight date
        seatsmax LIKE sflight-seatsmax,     " Maximum seats in economy class
        seatsocc LIKE sflight-seatsocc,     " Occupied seats in economyclass
      END OF fs_sflight,
      w_checkbox TYPE c,                    " Variable for checkbox
      w_currentline TYPE i,                 " Variable to display current
                                            " line
      w_lines TYPE i,
      w_read TYPE c .
    * Internal Table to hold flight schedule information                  *
    DATA:
      t_spfli LIKE
        TABLE OF
              fs_spfli.
    * Internal Table to hold flight information                           *
    DATA:
      t_sflight LIKE
          TABLE OF
                fs_sflight,
      t_sflight1 LIKE t_sflight.
    *    START-OF-SELECTION Event                                         *
    START-OF-SELECTION.
      PERFORM get_data_spfli.
    *    END-OF-SELECTION Event                                           *
    END-OF-SELECTION.
      SET PF-STATUS 'MENU'.
      PERFORM display_data_spfli.
    *    TOP-OF-PAGE Event                                                *
    TOP-OF-PAGE.
      PERFORM header_table_spfli.
    *    AT LINE-SELECTION EVENT                                          *
    AT LINE-SELECTION.
      SET PF-STATUS space.
      IF sy-lsind EQ 1 AND sy-lilli GE 4.
        PERFORM get_data_sflight.
        PERFORM display_data_sflight.
        PERFORM flag_line.
      ENDIF.                               " IF sy-lsind EQ 1..
    *    AT USER-COMMAND                                                  *
    AT USER-COMMAND.
      IF sy-lsind EQ 1.
        SET PF-STATUS space.
        CASE sy-ucomm.
          WHEN 'DISPLAY'.
            PERFORM get_data_sflight1.
            PERFORM display_data_sflight.
          WHEN 'SELECTALL'.
            PERFORM select_all.
            PERFORM flag_line.
          WHEN 'DESELECTAL'.
            PERFORM deselect_all.
            PERFORM flag_line.
        ENDCASE.                           " CASE sy-ucomm
      ENDIF.                               " IF sy-lsind EQ 1
    *    TOP-OF-PAGE DURING LINE-SELECTION                                *
    TOP-OF-PAGE DURING LINE-SELECTION.
      PERFORM sec_list_heading.
    *&      Form  get_data_spfli
    *  This subroutine fetches the data from SPFLI
    * This subroutine does not have parameters to pass
    FORM get_data_spfli .
      SELECT carrid                        " Airline Code
             connid                        " Flight Connection Number
             airpfrom                      " Departure airport
             airpto                        " Destination airport
             deptime                       " Departure time
             arrtime                       " Arrival time
        FROM spfli
        INTO TABLE t_spfli.
    ENDFORM.                               " GET_DATA_SPFLI
    *&      Form  display_data_spfli
    * This subroutine displays the data of SPFLI
    * This subroutine does not have parameters to pass
    FORM display_data_spfli .
      LOOP AT t_spfli INTO fs_spfli.
        WRITE: /02 w_checkbox AS CHECKBOX,
                05 w_read,
                   fs_spfli-carrid UNDER text-001,
                   fs_spfli-connid UNDER text-002,
                   fs_spfli-airpfrom UNDER text-003,
                   fs_spfli-airpto UNDER text-004,
                   fs_spfli-deptime UNDER text-005,
                   fs_spfli-arrtime UNDER text-006.
        HIDE:
          fs_spfli-carrid,
          fs_spfli-connid.
      ENDLOOP.                             " LOOP AT t_spfli..
    ENDFORM.                               " DISPLAY_DATA_SPFLI
    *&      Form  header_table_spfli
    * This subroutine diplays the headings of table spfli
    * This subroutine does not have parameters to pass
    FORM header_table_spfli .
      WRITE: /10 text-001 COLOR 4,
              25 text-002 COLOR 4,
              40 text-003 COLOR 4,
              55 text-004 COLOR 4,
              70 text-005 COLOR 4,
              85 text-006 COLOR 4.
    ENDFORM.                               " HEADER_TABLE
    *&      Form  get_data_sflight
    * This subroutine fetches the data from SFLIGHT
    * This subroutine does not have interface parameters to pass
    FORM get_data_sflight .
      SELECT carrid                        " Airline Code
             connid                        " Flight Connection Number
             fldate                        " Flight date
             seatsmax                      " Maximum seats in economy class
             seatsocc                      " Occupied seats in economyclass
        FROM sflight
        INTO TABLE t_sflight
       WHERE carrid EQ fs_spfli-carrid
         AND connid EQ fs_spfli-connid.
    ENDFORM.                               " GET_DATA_SFLIGHT
    *&      Form  display_data_sflight
    * This subroutine displays the SFLIGHT data
    * This subroutine does not have interface parameters to pass
    FORM display_data_sflight .
      LOOP AT t_sflight INTO fs_sflight.
        WRITE: / fs_sflight-carrid UNDER text-001,
                 fs_sflight-connid UNDER text-002,
                 fs_sflight-fldate UNDER text-007,
                 fs_sflight-seatsmax UNDER text-008 LEFT-JUSTIFIED,
                 fs_sflight-seatsocc UNDER text-009 LEFT-JUSTIFIED.
      ENDLOOP.
        CLEAR: fs_sflight.
    ENDFORM.                               " DISPLAY_DATA_sflight
    *&      Form  sec_list_heading
    *  This subroutine diplays the headings of table spfli
    * This subroutine does not have interface parameters to pass
    FORM sec_list_heading .
      WRITE: /2 text-001 COLOR 4,
             15 text-002 COLOR 4,
             33 text-007 COLOR 4,
             45 text-008 COLOR 4,
             60 text-009 COLOR 4.
    ENDFORM.                               " SEC_LIST_HEADING
    *&      Form  get_data_sflight1
    * This subroutine displays the data from SFLIGHT according to checkbox
    * clicked.
    * This subroutine does not have interface parameters to pass
    FORM get_data_sflight1 .
      DATA:
        lw_checkbox TYPE c.
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_currentline = 3 + sy-index.
        CLEAR:
          w_checkbox,
          fs_spfli.
        READ LINE w_currentline FIELD VALUE
          w_checkbox INTO lw_checkbox
          fs_spfli-carrid INTO fs_spfli-carrid
          fs_spfli-connid INTO fs_spfli-connid.
        IF sy-subrc EQ 0.
          IF lw_checkbox EQ 'X'.
            SELECT carrid                  " Airline Code
                   connid                  " Flight Connection Number
                   fldate                  " Flight Date
                   seatsmax                " Max Seats
                   seatsocc                " Occupied Seats
              FROM sflight
              INTO TABLE t_sflight1
             WHERE carrid EQ fs_spfli-carrid
               AND connid EQ fs_spfli-connid.
            IF sy-subrc EQ 0.
              APPEND LINES OF t_sflight1 TO t_sflight.
            ENDIF.                         " IF sy-subrc EQ 0.
          ENDIF.                           " IF lw_checkbox EQ 'X'
        ENDIF.                             " IF sy-subrc EQ 0.
      ENDDO.                               " DO w_lines TIMES
    ENDFORM.                               " GET_DATA_SFLIGHT1
    *&      Form  select_all
    * This subroutine selects all the records of SPFLI
    * This subroutine does not have interface parameters to pass
    FORM select_all .
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_currentline = sy-index + 3.
        READ LINE w_currentline FIELD VALUE
        w_checkbox INTO w_checkbox.
        IF sy-subrc = 0.
          MODIFY LINE w_currentline FIELD VALUE
          w_checkbox FROM 'X'.
        ENDIF.                             " IF sy-subrc = 0.
      ENDDO.                               " DO lw_line TIMES.
    ENDFORM.                               " SELECT_ALL
    *&      Form  deselect_all
    * This subroutine deselects all the records of SPFLI
    * This subroutine does not have interface parameters to pass
    FORM deselect_all .
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_currentline = sy-index + 3.
        READ LINE w_currentline FIELD VALUE
        w_checkbox INTO w_checkbox.
        IF sy-subrc = 0.
          MODIFY LINE w_currentline FIELD VALUE
          w_checkbox FROM ' '.
        ENDIF.                             " IF sy-subrc = 0.
      ENDDO.                               " DO lw_line TIMES.
    ENDFORM.                               " DESELECT_ALL
    *&      Form  flag_line
    * This subroutine flags the line which has been read
    * This subroutine does not have interface parameters to pass
    FORM flag_line .
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_checkbox = 'X'.
        READ LINE sy-lilli FIELD VALUE
          w_read INTO w_read
          w_checkbox INTO w_checkbox.
        IF sy-subrc EQ 0.
          MODIFY CURRENT LINE
          FIELD FORMAT w_checkbox INPUT OFF
          FIELD VALUE w_read FROM '*'.
        ENDIF.                             " IF sy-subrc EQ 0
      ENDDO.                               " DO w_lines TIMES
    ENDFORM.                               " FLAG_LINE
    Regards
    Abhijeet

  • How To Print Field Value in TOP-OF-PAGE During Line Selection.

    How To Print Field Value in TOP-OF-PAGE During Line Selection when double click on field.

    (If my memory serves me well (not used for long time ago)
    Assign values to system fields sy-tvar0 - sy-tvar9, they will replace the placeholders "&0" through "&9" in the list headers and column headers.
    TOP-OF-PAGE DURING LINE-SELECTION.
         WRITE: / 'Interactive Report &3'.
      WRITE record-vbeln TO sy-tvar3.
    Regards,
    Raymond

  • How to use AT LINE-SELECTION and AT USER-COMMAND in one report????

    Dear all,
    I have a problem in reports I want to use AT USER-COMMAND.and AT LINE-SELECTION.both in the one report.
    But as soon as I use SET PF-STATUS my AT LINE-SELECTION event stop workingand only AT USER-COMMAND is working.
    How can I use both of them in one report for your reference I am giving my test program below.
    REPORT ZTEST111 .
    SET PF-STATUS '100'.
    DO 10 TIMES.
    WRITE:/ SY-INDEX.
    HIDE SY-INDEX.
    ENDDO.
    START-OF-SELECTION.
    AT LINE-SELECTION.
    MESSAGE I002(SY) WITH SY-INDEX.
    AT USER-COMMAND.
    MESSAGE I002(SY) WITH 'USER COMMAND'.
    END-OF-SELECTION.
    Thanks in advance
    Sachin Gautam

    hi
    Syntax
    AT USER-COMMAND.
    Effect
    This statement defines an event block whose event is triggered by the ABAP runtime environment if, during the display of a screen list, a function with a self-defined function code was chosen.
    Note
    Self-defined function codes are all those that include character combinations, except for the following:
    The function codes PICK and PF## ("##" stands for 01 to 24) do not cause the event AT USER-COMMAND, but the events AT LINE-SELECTION and AT PF##.
    All function codes that start with the character "%" are interpreted as system functions and do not cause the event AT USER-COMMAND. The system functions for lists are listed in the following table 1.
    The function codes in the following table 2, likewise, do not cause the event AT USER-COMMAND, but are handled by the list processor.
    Table 1
    Function code Function
    %CTX Call a context menu
    %EX Exit
    %PC Save to file
    %PRI Print
    %SC Search for ...
    %SC+ Find next
    %SL Search in office
    %ST Save to report tree
    Table 2
    Function code Function
    BACK Back
    P- Scroll to previous page
    P-- Scroll to first page
    P+ Scroll to next page
    P++ Scroll to last page
    PFILE name Store list lines in a text file named abap.lst in standard character representation in the standard directory of the application server. If a name is entered using name, this is converted to lowercase letters and used as the file name.
    PL- Scroll to first line of the page
    PL-n Scroll n lines back
    PL+ Scroll to last line of the page
    PL+n Scroll n lines up
    PNOP No effect
    PP- Scroll back one page
    PP-n Scroll n pages back
    PP+ Scroll one page forward
    PP+n Scroll n pages forwad
    PPn Scroll to beginning of page n
    PRI, PRINT Print
    PS-- Scroll to first column
    PS++ Scroll to last column
    PS- Scroll one column to the left
    PS-n Scroll n columns to the left
    PS+ Scroll one column to the right
    PS+n Scroll n columns to the right
    PSn Scroll to column n
    PZn Scroll to line n
    RW Cancel

Maybe you are looking for

  • STRANGE: single clip missing in export! (but still in the timeline)

    Strangest thing: I exported a project... and a SINGLE clip is missing. BUT... the "key" over that clip shows up (over "black.") Hmmm... So I went back to the timeline... the clip is STILL THERE! So, I re-rendered, exported again... SAME THING. That o

  • How to add increment number to file name properly

    Hi, all: I have a simple question. As shown in the attached code, I need to add an increment number to file name and save the file. The problem is, if you run the code and put something like ".dat" in the extension name, you will see a blank space be

  • Multifunction E series DAQmx AI and DO problem

    Using PCI 6024E board I would like to use DAQmx to: Continuously acquire and stream to disk AI channels, and trigger a DO channel on and off using an analog input. For the DO, I need a user-adjustable delay from when the trigger is activated by AI un

  • Want to use Logic 8 Pro for Podcasting, help needed

    I have a few problems. I just switched over to Logic after using ProTools for 4 years so I'm a newbie. I'm about to start a podcast soon and I want to use Logic 8 Pro to do so. Is there a book that someone can recommend me for getting familiar with L

  • Merging clips after splitting

    Hello, I have a video which has been filmed horizontally and moved vertically within the same piece of filming. I have split the video into three parts in order to rotate a section of the video to make it all look horizontal. This is in iMovie Projec