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.

Similar Messages

  • Using key strokes as command in AT LINE SELECTION section.

    Hi all,
    I created a small report which do a refresh every X seconds. In every refresh, the form "print_panel" is performed. In this form I used some icons as buttons of my user interface in this way:
    ..."skipping code that's not relevant w.r.t to the question.
    SKIP TO LINE myline.
    WRITE AT mycolumn(2) ICON_COLUMN_LEFT AS ICON NO-GAP.
    This allows in my report to use such an expression to associate a dbl click on that icon to a certain block of code:
    AT LINE-SELECTION.
        DATA: FIELD(30).
        GET CURSOR FIELD FIELD.
        IF FIELD = 'ICON_COLUMN_LEFT'.      
           PERFORM myformthatdoessomething.
    I'm wondering if there's a way to associate this behaviour also to a key stroke. For example, pressing the "A" key is equivalent to do a double click on that icon. How can i manage this  ?
    Thanks in advance

    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.

  • 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
    ----

  • At line-selection and user command

    hi,
    is it possible to use both at line selecion and at user command at a time.

    Hi Kiran,
      Yes, it is possible to use both at line selecion and at
      user command at a time.
    AT LINE-SELECTION.
    Event in interactive reporting
    This event is processed whenever the user chooses a valid line in the list (i.e. a line generated by statements such as WRITE,ULINE, or SKIP) with the cursor and presses the function key which has the function PICK in the interface definition. This should normally be the function key F2, because it has the same effect as double-clicking the mouse, or clicking once in the case of a hotspot.
    The processing for the event AT LINE-SELECTION usually generates further list output (the details list) which completely covers the current list display. If you want the current list display to remain visible (to aid user orientation), you can do this with the key word WINDOW.
    AT USER-COMMAND.
    Event in interactive reporting
    This event is executed whenever the user presses a function key in the list or makes an entry in the command field.
    DATA: NUMBER1 TYPE I VALUE 20,
          NUMBER2 TYPE I VALUE  5,
          RESULT  TYPE I.
    START-OF-SELECTION.
      WRITE: / NUMBER1, '?', NUMBER2.
    AT USER-COMMAND.
      CASE SY-UCOMM.
        WHEN 'ADD'.
          RESULT = NUMBER1 + NUMBER2.
        WHEN 'SUBT'.
          RESULT = NUMBER1 - NUMBER2.
        WHEN 'MULT'.
          RESULT = NUMBER1 * NUMBER2.
        WHEN 'DIVI'.
          RESULT = NUMBER1 / NUMBER2.
        WHEN OTHERS.
          WRITE 'Unknown function code'.
          EXIT.
      ENDCASE.
      WRITE: / 'Result:', RESULT.
    After entry of a function code, the appropriate processing is performed under the event AT USER-COMMAND and the result is displayed in the details list.
    Reward points if helpful,
    Rgds,
    Sumana

  • At line Selection & get cursor field

    Hi friends,
    Could any one of u please explain about<b> at line selection</b> and <b>GET CURSOR FIELD</b> ( GET CURSOR FIELD FNAM VALUE FVAL) with sample program.
    Jai.

    Hello,
    AT - Events in lists
    Variants:
    1. AT LINE-SELECTION.
    2. AT USER-COMMAND.
    3. AT PFn.
    Variant 1
    AT LINE-SELECTION.
    Effect
    Event in interactive reporting
    This event is processed whenever the user chooses a valid line in the list (i.e. a line generated by statements such as WRITE,ULINE, or SKIP) with the cursor and presses the function key which has the function PICK in the interface definition. This should normally be the function key F2, because it has the same effect as double-clicking the mouse, or clicking once in the case of a hotspot.
    The processing for the event AT LINE-SELECTION usually generates further list output (the details list) which completely covers the current list display. If you want the current list display to remain visible (to aid user orientation), you can do this with the key word WINDOW.
    In most cases, the information from the selected line is used to retrieve more comprehensive information by direct reading. When displaying the original list, you store the key terms needed for this in the HIDE area of the output line.
    Note
    You can choose a line and start new processing even in the details lists.
    The following system fields are useful for orientation purposes, since their values change with each interactive event executed.
    SY-LSIND
    Index of list created by current event (basic list = 0, 1st details list = 1, ...)
    SY-PFKEY
    Status of displayed list (SET PF-STATUS)
    SY-LISEL
    Contents of selected line
    SY-LILLI
    Absolute number of this line in the displayed list
    SY-LISTI
    Index of this list - usually SY-LSIND - 1 (READ LINE)
    SY-CUROW
    Last cursor position: Line in window
    SY-CUCOL
    Last cursor position: Column in window (GET CURSOR)
    SY-CPAGE
    1st displayed page of displayed list
    SY-STARO
    1st displayed line of this page of displayed list
    SY-STACO
    1st displayed column of displayed list (SCROLL LIST)
    The system field SY-LSIND defines the line selection level (basic list: SY-LSIND = 0).
    System field for interactive reporting are also contained in the System Fields for Lists documentation.
    Example
    DATA TEXT(20).
    START-OF-SELECTION.
      PERFORM WRITE_AND_HIDE USING SPACE SPACE.
    AT LINE-SELECTION.
      CASE TEXT.
        WHEN 'List index'.
          PERFORM WRITE_AND_HIDE USING 'X' SPACE.
        WHEN 'User command'.
          PERFORM WRITE_AND_HIDE USING SPACE 'X'.
        WHEN OTHERS.
          SUBTRACT 2 FROM SY-LSIND.
          PERFORM WRITE_AND_HIDE USING SPACE SPACE.
      ENDCASE.
      CLEAR TEXT.
    FORM WRITE_AND_HIDE USING P_FLAG_LSIND P_FLAG_UCOMM.
      WRITE / 'SY-LSIND:'.
      PERFORM WRITE_WITH_COLOR USING SY-LSIND P_FLAG_LSIND.
      TEXT = 'List index'.
      HIDE TEXT.
      WRITE / 'SY-UCOMM:'.
      PERFORM WRITE_WITH_COLOR USING SY-UCOMM P_FLAG_UCOMM.
      TEXT = 'User command'.
      HIDE TEXT.
      IF SY-LSIND > 0.
        WRITE / 'PICK here to go back one list level'.
      ENDIF.
    ENDFORM.
    FORM WRITE_WITH_COLOR USING P_VALUE
                                P_FLAG_POSITIVE.
      IF P_FLAG_POSITIVE = SPACE.
        WRITE P_VALUE COLOR COL_NORMAL.
      ELSE.
        WRITE P_VALUE COLOR COL_POSITIVE.
      ENDIF.
    ENDFORM.
    Depending on whether you choose the line at SY-LSIND or SY-UCOMM, the next details list contains the corresponding value with the color "positive". If the line is chosen without HIDE information, the list level is reduced.
    Variant 2
    AT USER-COMMAND.
    Effect
    Event in interactive reporting
    This event is executed whenever the user presses a function key in the list or makes an entry in the command field.
    Some functions are executed directly by the system and thus cannot be processed by programs. These include:
    PICK
    See variant AT LINE-SELECTION
    PFn
    See variant AT PFn
    System command
    System command
    PRI
    Print
    BACK
    Back
    RW
    Cancel
    P...
    Scroll function (e.g.: P+ , P- , PP+3, PS-- etc.)
    Instead of this functions, you can use the SCROLL statement in programs.
    Since many of these system functions begin with "P", you should avoid using this letter to start your own function codes.
    Otherwise, the effect is as for AT LINE-SELECTION; also, the current function code is stored in the system field SY-UCOMM.
    Example
    DATA: NUMBER1 TYPE I VALUE 20,
          NUMBER2 TYPE I VALUE  5,
          RESULT  TYPE I.
    START-OF-SELECTION.
      WRITE: / NUMBER1, '?', NUMBER2.
    AT USER-COMMAND.
      CASE SY-UCOMM.
        WHEN 'ADD'.
          RESULT = NUMBER1 + NUMBER2.
        WHEN 'SUBT'.
          RESULT = NUMBER1 - NUMBER2.
        WHEN 'MULT'.
          RESULT = NUMBER1 * NUMBER2.
        WHEN 'DIVI'.
          RESULT = NUMBER1 / NUMBER2.
        WHEN OTHERS.
          WRITE 'Unknown function code'.
          EXIT.
      ENDCASE.
      WRITE: / 'Result:', RESULT.
    After entry of a function code, the appropriate processing is performed under the event AT USER-COMMAND and the result is displayed in the details list.
    Variant 3
    AT PFn.
    Effect
    Event in interactive reporting
    Here, n stands for a numeric value between 0 and 99.
    This event is executed whenever the user presses a function key that contains the function code PFn in the interface definition. The default status for lists contains some of these functions.
    Otherwise, the effect is as for the variant AT LINE-SELECTION. The cursor can be on any line.
    Notes
    To ensure that the chosen function is executed only for valid lines, you can check the current HIDE information.
    This variant should be used only for test or prototyping purposes, since the default status is not normally used. Instead, you should set a program-specific status with SET PF-STATUS. This should not contain any function codes beginning with "PF".
    Example
    DATA NUMBER LIKE SY-INDEX.
    START-OF-SELECTION.
      DO 9 TIMES.
        WRITE: / 'Row', (2) SY-INDEX.
        NUMBER = SY-INDEX.
        HIDE NUMBER.
      ENDDO.
    AT PF8.
      CHECK NOT NUMBER IS INITIAL.
      WRITE: / 'Cursor was in row', (2) NUMBER.
      CLEAR NUMBER.
    Additional help
    User Action on Detail Lists
    GET
    Basic form 2 GET CURSOR. ...
    Variants:
    1. GET CURSOR FIELD f.
    2. GET CURSOR LINE line.
    Variant 1
    GET CURSOR FIELD f.
    Additions:
    1. ... OFFSET off
    2. ... LINE line
    3. ... VALUE g
    4. ... LENGTH len
    5. ... AREA
    Effect
    Transfers the name of the field at the cursor position to the field f.
    The return code is set as follows:
    SY-SUBRC = 0:
    Cursor was positioned on a field.
    SY-SUBRC = 4:
    Cursor was not positioned on a field.
    Note
    Unlike screen processing, list processing allows you to output literals, field symbols, parameters and local variables of subroutines. Literals, local variables and VALUE parameters of subroutines are treated like fields without names (field name SPACE, return value 0).
    Otherwise, GET CURSOR FIELD returns only names of global fields, regardless of whether they are addressed directly (i.e. by "WRITE"), by field symbols or by reference parameters.
    Example
    DATA: CURSORFIELD(20),
          GLOB_FIELD(20)    VALUE 'global field',
          REF_PARAMETER(30) VALUE 'parameter by reference',
          VAL_PARAMETER(30) VALUE 'parameter by value',
          FIELD_SYMBOL(20)  VALUE 'field symbol'.
    FIELD-SYMBOLS: <F> TYPE ANY.
    PERFORM WRITE_LIST USING REF_PARAMETER VAL_PARAMETER.
    ASSIGN GLOB_FIELD TO <F>.
    AT LINE-SELECTION.
      GET CURSOR FIELD CURSORFIELD.
      WRITE: /   CURSORFIELD, SY-SUBRC.
    FORM WRITE_LIST USING RP VALUE(VP).
      DATA: LOK_FIELD(20)  VALUE 'local field'.
      ASSIGN FIELD_SYMBOL TO <F>.
      WRITE: /  GLOB_FIELD,  /  LOC_FIELD,
             /  RP,          /  VP,
             /  'literal',   /  FIELD_SYMBOL.
    ENDFORM.
    When you double-click the word " global field", CURSORFIELD contains the field name GLOB_FIELD, on "parameter by reference" the field name REF_PARAMETER, on " field symbol" the field name FIELD_SYMBOL, and on "local field", "parameter by value" and "literal" the value SPACE.
    Addition 1
    ... OFFSET off
    Effect
    Copies the position of the cursor within the field to the field off (1st column = 0).
    If the cursor is not somewhere within a field (SY-SUBRC = 4), the offset value is set to 0.
    Addition 2
    ... LINE line
    Effect
    With step loops, lin contains the number of the loop line where the cursor stands. In list processing, this is the absolute line number (as stored in the system field SY-LILLI).
    Addition 3
    ... VALUE g
    Effect
    g contains the value of the field where the cursor stands, always in output format (character display).
    Addition 4
    ... LENGTH len
    Effect
    len contains the output length of the field where the cursor stands.
    Addition 5
    ... AREA a
    Effect
    If the cursor is positioned on the field of a table view control, the name of the control is placed in the field a.
    Variant 2
    GET CURSOR LINE line.
    Additions:
    1. ... OFFSET off
    2. ... VALUE  g
    3. ... LENGTH len
    Effect
    As for variant 1 with addition LINE, except that there are differences with the return code and the effect of the additions.
    The return code is set as follows:
    SY-SUBRC = 0:
    The cursor is on one of the list lines (list processing) or on a loop line (step loop).
    SY-SUBRC = 4:
    The cursor is not on one of the list or loop lines.
    Addition 1
    ... OFFSET off
    Effect
    Applies to list processing only. The field off contains the position of the cursor relative to the beginning of the list line (1st column = 0). With horizontally shifted lists, the offset value can thus be greater than 0, even if the cursor is positioned on the extreme left of the window.
    Addition 2
    ... VALUE g
    Effect
    List processing only. The field g contains the list line where the cursor is positioned.
    Addition 3
    ... LENGTH len
    Effect
    List processing only. len contains the length of the line (LINE-SIZE).
    Related
    SET CURSOR
    Additional help
    Setting the Cursor Position
    Reading Lists at the Cursor Position
    Vasanth

  • How do I execute some code when a line of a table control is selected?

    Hi,
    I would like to execute some code when a line of a table control is selected.  At the moment I have to select one or multiple rows and then press enter, this forces a screen refresh and my code is executed but I would like the code to be executed as soon as any line is selected.
    I've done something like this using ALV grids and object orientated code but is there a way of doing this in a normal non-OO table control?
    Thanks in advance.
    Gill

    Hi,
    U need to declare a char1 field for marking (mark field).  This will reflect with value 'X' in your tcontrol internal table for all the selected rows. 
    Now u need to handle the okcode for enter in your PAI.
    There u need to loop through the table for all marked fields.
    There after u can do what ever u want.
    Venkat.

  • At line-selection in SAP Query ( Infoset ) code

    Hi all ,
    Here is one for you :  can I put somehow the following code in a Sap Query ( at infoset level of course ) :
       at line-selection.
      set parameter id 'BUK' field XXX-bukrs.
      set parameter id 'BLN' field XXX-belnr.
      set parameter id 'GJR' field XXX-gjahr.
      call transaction 'FB03' and skip first screen.
    (In other words I would like to see the documents behind a line in the list)
    Some explains : my query's output would be ABAP list , the bukrs, belnr, gjahr fields are on the lines of my resulting list, and my problem is with those XXX 's - I don't know where are stored the lines of my ABAP list.
    I'm pretty new at ABAP so any idea and explains about the generated SAP Query code
    is appreciated . I looked at the final code but seemed very complex for my level.
    Please guide me in this area ( I know the basic things like writing pretty simple reports )
    Thanks !
    Best of all
    Zoli

    Hi,
    You need to add extra piece of code as below:
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                I_callback_user_command = 'USER_COMMAND'   "see FORM
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
    *       FORM USER_COMMAND                                          *
    *       --> R_UCOMM                                                *
    *       --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    * Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
    *   Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
    *     Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
    *     Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
    *     Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    "For further information please refer the link below :
    http://www.sapdev.co.uk/reporting/alv/alvgrid_ucomm.htm
    Thanks,
    Sriram Ponna.

  • 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

  • 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'.

  • "AT LINE-SELECTION" event in a Query (SQ01 or SQ02)

    Hi there
    I want to know if it's possible to put "AT LINE-SELECTION" event in an ABAP Query? I'm trying that in SQ02 - the infoset - but nothing happens when I double-click on the output lines. I cannot find any place to type codes in SQ01.
    The purpose is to call a transaction VA03 when people double-click on the output field "sales order number" and here is the code I put in "Free coding" section of SQ02.
    AT LINE-SELECTION.
      DATA: w_cucol TYPE sy-cucol.
      w_cucol = sy-cucol + sy-staco.
      w_cucol = w_cucol - 2.
      IF w_cucol BETWEEN 103 AND 119.
        SET PARAMETER ID 'AUN' FIELD vbkd-vbeln.
        CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
      ENDIF.
    yu

    Hi ,
    You must create infoset based on join VBKD with VBAK and LIPS.
    Also you must put VBAK-VBELN and LIPS-VBELN as a column output.
    There is no problem to use 2 report assignment ( there is no loss ).
    There is no necessity to use " some ABAP code at line-selection ".
    This works.
    By the way is more correct from the beginning to formulate the issue including all the data about your problem and not include them by adding a little at a time.
    Regards.

  • 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 in ALV for more than one field.

    How to use At Line-selection in ALV Basic Report where there are more than one field for displaying Secondary Lists.
    Ex: In Basic List there are 3 fields Volume_m Volume_y and Volume_i.When i click on any of the field i need to display the secondary list for that particular field.

    Hi Pavan,
                  Use User-command event of ALV.
    Refer this code :
    form BUILD_EVENTCAT  using    p_i_eventcat TYPE SLIS_T_EVENT.
    DATA: I_EVENT TYPE SLIS_ALV_EVENT.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = P_I_EVENTCAT
    EXCEPTIONS
      LIST_TYPE_WRONG       = 1
      OTHERS                = 2
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
      clear I_event.
      read table p_i_eventcat with key name = slis_ev_user_command into I_event.
      if sy-subrc = 0.
        move 'USER_COMMAND' to I_event-form.
        append I_event to p_i_eventcat.
      endif.
    form USER_COMMAND' using p_ucomm type sy-ucomm
                               p_selfield type slis_selfield.
      case p_ucomm.
      WHEN '&IC1'.                       "&IC1 is the Fcode for double click
    Use  P_ELFIELD-VALUE  for further processing . this  will contain the value on which u will double click
    endcase.
    Reward points if helpful.
    Regards,
    Hemant

  • Problem in triggering at line selection event in ooabap

    hi ppl,
              Below is the code i did so far using interactive reports,but its showing error "statement END METHOD is missing".
    REPORT  y_program_on_ooabap1.
          CLASS CL DEFINITION
    DATA: lf_matnr TYPE matnr.
      INITIALIZATION.
      PARAMETERS: pa_matnr TYPE matnr.
      SELECT-OPTIONS: so_matnr FOR lf_matnr.
          CLASS cl DEFINITION
    CLASS cl DEFINITION.
      PUBLIC SECTION.
        TYPES: BEGIN OF tw,
               matnr TYPE matnr,
               ernam TYPE ernam,
               END OF tw,
               tt TYPE STANDARD TABLE OF tw.
        TYPES: BEGIN OF tw1,
               matnr TYPE matnr,
               maktx TYPE maktx,
               END OF tw1.
        DATA: itab TYPE tt,
              wa TYPE tw,
              wa1 TYPE tw1.
        METHODS: retrive_data,
                 display_data.
    ENDCLASS.                    "CL DEFINITION
          CLASS CL IMPLEMENTATION
        CLASS cl IMPLEMENTATION.
        METHOD: retrive_data.
        SELECT matnr ernam INTO TABLE itab FROM mara
        WHERE matnr IN so_matnr.
        "RETRIVE_DATA
        ENDMETHOD.                    "retrive_data
        METHOD: display_data.
        LOOP AT itab INTO wa.
        WRITE:/ wa-matnr,
                  wa-ernam.
        ENDLOOP.
        AT line-selecion.
        CASE: sy-lsind.
        WHEN 1.
        SELECT SINGLE matnr maktx INTO CORRESPONDING FIELDS OF wa FROM makt WHERE matnr = wa-matnr.
        WRITE:/ wa-matnr,
                wa-maktx.
            ENDMETHOD.                    "display_data
            "DISPLAY_DATA
          ENDCLASS.                    "CL IMPLEMENTATION
       DATA: obj TYPE REF TO cl.
       START-OF-SELECTION.
      CREATE OBJECT: obj.
      END-OF-SELECTION.
      CALL METHOD obj->retrive_data.
      CALL METHOD obj->display_data.

    hi,
    you cannot put Events in methods. instead do as call the method in the event you want like below, or create a new method and call it in the At line selection Event.
    CLASS cl IMPLEMENTATION.
    METHOD: retrive_data.
    SELECT matnr ernam INTO TABLE itab FROM mara
    WHERE matnr IN so_matnr.
    "RETRIVE_DATA
    ENDMETHOD. "retrive_data
    METHOD: display_data.
    LOOP AT itab INTO wa.
    WRITE:/ wa-matnr,
    wa-ernam.
    ENDLOOP.
    ENDMETHOD. "display_data
    METHOD: Drilldown
    SELECT SINGLE matnr maktx INTO CORRESPONDING FIELDS OF wa FROM makt WHERE matnr = wa-matnr.
    WRITE:/ wa-matnr,
    wa-maktx.
    ENDMETHOD. "Drilldown
    ENDCLASS. "CL IMPLEMENTATION
    DATA: obj TYPE REF TO cl.
    START-OF-SELECTION.
    CREATE OBJECT: obj.
    END-OF-SELECTION.
    CALL METHOD obj->retrive_data.
    CALL METHOD obj->display_data.
    AT line-selecion.
    CASE: sy-lsind.
    WHEN 1.
    CALL METHOD obj->drilldown.
    ENDCASE.
    Hope this helps you
    Raj
    Edited by: Raj on Dec 5, 2008 9:57 AM

  • How do I find an event which is triggered on line selection for ALV grid?

    Hi,
    I'm trying to find an event which is triggered when a user selects a row in the ALV grid. I want to add my own code in to add up the total values of selected lines, but can't find any event which will trigger my method.
    I found CLICK_ROW_COL but it's protected so when I try and add a method for it:
      PROTECTED SECTION.
        METHODS:
        select_row
            FOR EVENT click_row_col OF cl_gui_alv_grid.
    I get the syntax error:
    Access to protected event "CLICK_ROW_COL" is not allowed.
    Am I using the right event? Am I implementing it correctly?
    Any help appreciated. Thanks in advance.
    Gill

    I chose to solve this by removing the line select buttons from the ALV and replacing them with a checkbox defined as a hotspot.  I then used EVENT hotspot_click FROM cl_gui_alv_grid to highlight the line and change my totals on a single click.

  • 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

Maybe you are looking for