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

Similar Messages

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

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

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

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

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

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

  • At line selection in alv report

    hi,
    i had developed a code in which at 1st execution the normal output is displayed and if i click on a purticular Itemid it displays the whole of items  and i want to display only that item's data which i had clicked on.
    following is the code which i am using for the at line-selection.
    **BEGIN - TEST CODE FOR LINE SELECTION**
    data: fld LIKE ITAB-ITEMID,
          val LIKE ITAB-ITEMID.
    at line-selection.
      get cursor field fld value val.
      IF fld = 'ITAB-ITEMID'.
            SET PARAMETER ID 'ANR' FIELD val.
            CLEAR ITAB-ITEMID.
      ENDIF.
        PERFORM PRN_SMSTOCK_ALV USING VAL.
        IF SY-SUBRC <> 0.
          MESSAGE 'NO RECORD FOUND' TYPE 'W'.
        ENDIF.
      FORM PRN_SMSTOCK_ALV USING VAL.
    *****END OF TEST CODE FOR LINE SELECTION******
    plzz help me out by providing the solution for this problem.

    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.

  • At Line Selection on ALV Grid

    Hi guys: I need to double click on a field in the ALV report that should bring up another structure (which I have created) called s_det
    s_det has only document number & company code.
    Please provide the code for doing this in ALV. I know I cant use At Line Selection. Please give me simple code.
    thanks so much
    Brian

    Hi
    take this as an example for ur solution.
    In this if we double click on first level display then it opens second level display.Just have a look on the following code.
    This is Interactive ALV report of displaying each row with colours and Headers.
    TYPE-POOLS SLIS.
    TYPES: BEGIN OF I_EKKO,
           EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           BUKRS LIKE EKKO-BUKRS,
           BSART LIKE EKKO-BSART,
           LIFNR LIKE EKKO-LIFNR,
           L_COLOR(4) TYPE C,
           END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
          WA_EKKO TYPE I_EKKO.
    TYPES: BEGIN OF I_EKPO,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MATNR LIKE EKPO-MATNR,
           MENGE LIKE EKPO-MENGE,
           MEINS LIKE EKPO-MEINS,
           NETPR LIKE EKPO-NETPR,
           L_COLOR1(4) TYPE C,
           END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE I_EKPO.
    DATA: V_REPID TYPE SY-REPID,
          I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
          I_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENT TYPE SLIS_ALV_EVENT,
          GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
          GD_LAYOUT1 TYPE SLIS_LAYOUT_ALV.
    DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST ALV REPORT',
          I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDARY ALV REPORT'.
    INITIALIZATION.
    V_REPID = SY-REPID.
    PERFORM FLDCATALOG.
    PERFORM CALL_EVENTS.
    PERFORM POPULATE_EVENT.
    PERFORM BLD_LAYOUT.
    PERFORM BLD_LAYOUT1.
    START-OF-SELECTION.
    PERFORM DATA_RETRIEVAL.
    PERFORM DISPLAY_ALV_REPORT.
    FORM FLDCATALOG.
    WA_FLDCAT-TABNAME = 'IT_EKKO'.
    WA_FLDCAT-FIELDNAME = 'EBELN'.
    WA_FLDCAT-SELTEXT_M = 'PO NUMBER'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    WA_FLDCAT-TABNAME = 'IT_EKKO'.
    WA_FLDCAT-FIELDNAME = 'AEDAT'.
    WA_FLDCAT-SELTEXT_M = 'DATE'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    WA_FLDCAT-TABNAME = 'IT_EKKO'.
    WA_FLDCAT-FIELDNAME = 'BUKRS'.
    WA_FLDCAT-SELTEXT_M = 'DOCUMENT TYPE'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    WA_FLDCAT-TABNAME = 'IT_EKKO'.
    WA_FLDCAT-FIELDNAME = 'LIFNR'.
    WA_FLDCAT-SELTEXT_M = 'VENDOR CODE'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    ENDFORM.
    FORM CALL_EVENTS.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = I_EVENTS
    EXCEPTIONS
      LIST_TYPE_WRONG       = 1
      OTHERS                = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.
    FORM POPULATE_EVENT.
    *READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    *IF SY-SUBRC = 0.
    WA_EVENT-FORM = 'TOP_OF_PAGE'.
    MODIFY I_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM.
    *ENDIF.
    READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
    IF SY-SUBRC = 0.
      WA_EVENT-FORM = 'USER_COMMAND'.
      MODIFY I_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-NAME.
    ENDIF.
    ENDFORM.
    FORM BLD_LAYOUT.
    GD_LAYOUT-INFO_FIELDNAME = 'L_COLOR'.
    ENDFORM.
    FORM DATA_RETRIEVAL.
    DATA LN_COLOR(1) TYPE C.
    SELECT EBELN AEDAT BUKRS BSART LIFNR
    FROM EKKO INTO TABLE IT_EKKO.
    LOOP AT IT_EKKO INTO WA_EKKO.
    LN_COLOR = LN_COLOR + 1.
    IF LN_COLOR = 8.
      LN_COLOR = 1.
    ENDIF.
    CONCATENATE 'C' LN_COLOR '11' INTO WA_EKKO-L_COLOR.
    MODIFY IT_EKKO FROM WA_EKKO.
    ENDLOOP.
    ENDFORM.
    FORM DISPLAY_ALV_REPORT.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
       I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = I_TITLE_EKKO
      I_GRID_SETTINGS                   =
       IS_LAYOUT                         = GD_LAYOUT
       IT_FIELDCAT                       = I_FLDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
       I_SAVE                            = 'A'
      IS_VARIANT                        =
       IT_EVENTS                         = I_EVENTS
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = IT_EKKO
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.
    FORM TOP_OF_PAGE.
    DATA: T_HEADER TYPE SLIS_T_LISTHEADER,
          WA_HEADER TYPE SLIS_LISTHEADER.
    WA_HEADER-TYP = 'H'.
    WA_HEADER-INFO = 'THIS IS MY FIRST ALV'.
    APPEND WA_HEADER TO T_HEADER.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = T_HEADER
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    ENDFORM.
    FORM USER_COMMAND USING R_COMM TYPE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_COMM.
        WHEN '&IC1'.
          READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
          PERFORM FLDCAT_EKPO.
          PERFORM CALL_EVENT_EKPO.
         PERFORM POPULATE_EVENT_EKPO.
          PERFORM DATA_RETRIEVAL_EKPO.
          PERFORM DISPLAY_ALV_REPORT_EKPO.
      ENDCASE.
    ENDFORM.
    FORM FLDCAT_EKPO.
    WA_FLDCAT-TABNAME = 'IT_EKPO'.
    WA_FLDCAT-FIELDNAME = 'EBELN'.
    WA_FLDCAT-SELTEXT_M = 'PO NUMBER'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_EKPO.
    WA_FLDCAT-TABNAME = 'IT_EKPO'.
    WA_FLDCAT-FIELDNAME = 'EBELP'.
    WA_FLDCAT-SELTEXT_M = 'LINE NO'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_EKPO.
    WA_FLDCAT-TABNAME = 'IT_EKPO'.
    WA_FLDCAT-FIELDNAME = 'MATNR'.
    WA_FLDCAT-SELTEXT_M = 'MATERIAL NUMBER'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    WA_FLDCAT-TABNAME = 'IT_EKPO'.
    WA_FLDCAT-FIELDNAME = 'MENGE'.
    WA_FLDCAT-SELTEXT_M = 'QUANTITY'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    WA_FLDCAT-TABNAME = 'IT_EKPO'.
    WA_FLDCAT-FIELDNAME = 'MEINS'.
    WA_FLDCAT-SELTEXT_M = 'BASE UNIT OF MEASURE'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    WA_FLDCAT-TABNAME = 'IT_EKPO'.
    WA_FLDCAT-FIELDNAME = 'NETPR'.
    WA_FLDCAT-SELTEXT_M = 'PRICE'.
    APPEND WA_FLDCAT TO I_FLDCAT.
    CLEAR WA_FLDCAT.
    ENDFORM.
    FORM CALL_EVENT_EKPO.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = I_EVENTS
    EXCEPTIONS
      LIST_TYPE_WRONG       = 1
      OTHERS                = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.
    *FORM POPULATE_EVENT_EKPO.
    *READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
    *IF SY-SUBRC = 0.
    WA_EVENT-FORM = 'TOP_OF_PAGE'.
    MODIFY I_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM.
    *ENDIF.
    *ENDFORM.
    FORM BLD_LAYOUT1.
    GD_LAYOUT1-INFO_FIELDNAME = 'L_COLOR1'.
    ENDFORM.
    FORM DATA_RETRIEVAL_EKPO.
    DATA LN_COLOR1(1) TYPE C.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR
    INTO TABLE IT_EKPO
    FROM EKPO.
    LOOP AT IT_EKPO INTO WA_EKPO.
    LN_COLOR1 = LN_COLOR1 + 1.
    IF LN_COLOR1 = 8.
      LN_COLOR1 = 1.
    ENDIF.
    CONCATENATE 'C' LN_COLOR1 '11' INTO WA_EKPO-L_COLOR1.
    MODIFY IT_EKPO FROM WA_EKPO.
    ENDLOOP.
    ENDFORM.
    FORM DISPLAY_ALV_REPORT_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE1'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = I_TITLE_EKPO
      I_GRID_SETTINGS                   =
       IS_LAYOUT                         = GD_LAYOUT1
       IT_FIELDCAT                       = I_FLDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
       I_SAVE                            = 'A'
      IS_VARIANT                        =
       IT_EVENTS                         = I_EVENTS
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = IT_EKPO
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.
    FORM TOP_OF_PAGE1.
    DATA: T_HEADER1 TYPE SLIS_T_LISTHEADER,
          WA_HEADER1 TYPE SLIS_LISTHEADER.
    WA_HEADER1-TYP = 'H'.
    WA_HEADER1-INFO = 'SECONDARY ALV LEVEL'.
    APPEND WA_HEADER1 TO T_HEADER1.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = T_HEADER1
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               = .
    ENDFORM.
    reward points,if it is useful.
    Thanks,
    chandu.

  • How the Pop UP window got closed on line select

    Hi All,
    at BP_ADDR component we are calling component BP_SEARCH_HELPS by cross component usage on F4,
    then we are doing bank details search, then on single line select at View BP_SEARCH_HELPS/BankKeySearchHelpResult
    then it goes to event handler method EH_ONSELECT then.
    inside this method we have code for to call window outbound plug RETURNRESULT'
    METHOD eh_onselect.
    via viewmanager:
      DATA: lr_window          TYPE REF TO cl_bsp_wd_window.
      lr_window ?= me->view_manager->get_window_controller( ).
      lr_window->call_outbound_plug( iv_outbound_plug   = 'RETURNRESULT' ).
    endmethod.
    but at Window out bound plug there is no code for cross comp Window navigation (like Fire_outbound_plug with navigation link)
    then also popup is closing and it gets navigating to BP_ADDR component, how it happenning...?
    code at window BP_SEARCH_HELPS/BankKeySearchHelpW outbound plug is
    method OP_RETURNRESULT.
    endmethod.
    there is no navigation link also defined for window BP_SEARCH_HELPS/BankKeySearchHelpW at Runtime repository.
    one more question is how the event handler method EH_ONSELECT is executed for line select (we r not define any server event for any field of table's context node), is it property of Table context node?
    Thanks,
    VjMhyd

    Hi VJ,
    I hope you are able to find the answer to your question that "how pop up is closing and navigation is done to BP_ADDR component" if not here is the answer.
    Go to your window class and search for method call_outbound_plug ( remove the filter check box ). inside that method firstly your outbound plug method RETURNRESULT will be called and then you will find another method fire_outbound_plug. inside this method there is code to navigate back and close the pop up. this code is only triggered for pop up cases and that's how navigations takes places.
      check if this is a popup rep. view
        if ME->IS_TOPLEVEL_WINDOW = ABAP_TRUE.
        We ignore the navigation for popups but save the outbound plug if given
        and tell the current popup to get closed
          data: LV_VIEW_MANAGER    type ref to LCL_VIEW_MANAGER,
                LV_APPL_CONTROLLER type ref to CL_BSP_WD_APPL_CONTROLLER.
          try.
              LV_VIEW_MANAGER ?= ME->VIEW_MANAGER.
              LV_APPL_CONTROLLER ?= LV_VIEW_MANAGER->GET_APPLICATION_CONTROLLER( ).
              LV_APPL_CONTROLLER->POPUP_MANAGER->CLOSE_POPUP( IV_OUTBOUND_PLUG ).
            catch CX_SY_MOVE_CAST_ERROR.                    "#EC NO_HANDLER
          endtry.
    I hope this clarifies your issue.
    Thanks
    Sudhir Grover

  • DYNP_VALUES_READ Limitations for multiple lines select options

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

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

  • How can I see the numbers of lines selected in a Multiple Selection Box?

    Hi everybody,
    what I want to do is to get in an array of numbers all the lines selected.
    For instance, if I select the rows 1,4 and 7 from a Multiple Selection Box
    of 10 rows in total, how can I see that array when the rows 1,4 and 7 are
    selected?
    Because I want to connect this numbers to Case Structure and if the only
    rows selected are 1,4 and 7, the Case Structure will only realize this cases,
    and the rest will be ignored.
    I'm sure there is some way to get what I want.
    Thank you for your helpful.

    THANK YOU VERY MUCH. IT WORKS PERFECTLY!!!
    "Dennis Knutson" wrote:
    >>If you just wire the list box to an array indicator, you will see that
    the>output is an array of the selected items. Auto index the array through
    a>for loop that has your case statement inside.>>Dennis Knutson>>"Carlos
    Jorge" wrote>>Hi everybody,>>what I want to do is to
    get in an array of numbers all the>lines selected.>For instance, if I select
    the rows 1,4 and 7 from a Multiple>Selection Box>of 10 rows in total, how
    can I see that array when the rows>1,4 and 7 are>selected?>>Because I want
    to connect this numbers to Case Structure>and if the only>rows selected are
    1,4 and 7, the Case Structure will only>realize this cases,>and
    the rest
    will be ignored.>>I'm sure there is some>way to get what I want.>>Thank you
    for your helpful.>>

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

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

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

  • TOP-OF-PAGE During line-selection in alv report

    Hi Expart
    In intractive Alv report u using top-of-page during line-selection . If u using so u give me one example with codeing .
    Regards
    Bhabani

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

  • Page number in Top of page during line selection

    Hi All,
    I am generating an interactive report.
    I want to display the same header at each page break.
    How to restrict the page size in At line-selection?
    I want to display page in format Page X of Y for each page break?How to handle it?
    Thanks in advance.
    Regards,
    Sandy

    Hi,
    Try the code:
    REPORT ZPAGETEST NO STANDARD PAGE HEADING LINE-SIZE 40
    LINE-COUNT 20.
    DATA:COUNT(6) TYPE N.
    DATA: LAST_PAGE_NO LIKE SY-PAGNO.
    DATA: TOTPAGE(6) TYPE C .
    TOP-OF-PAGE.
    WRITE:20 SY-PAGNO ,'of', '££££££'.
    START-OF-SELECTION.
    DO 100 TIMES.
    WRITE: / COUNT.
    COUNT = COUNT + 1.
    ENDDO.
    LAST_PAGE_NO = SY-PAGNO.
    TOTPAGE = SY-PAGNO.
    DO LAST_PAGE_NO TIMES.
    READ LINE 1 OF PAGE SY-INDEX .
    REPLACE '££££££' WITH TOTPAGE INTO SY-LISEL.
    MODIFY CURRENT LINE.
    ENDDO.
    Regards,
    Sesh

  • Error in at line-selection event...

    Hello experts,
    In my report, I am hiding the values of BUKRS, ANLN1 and ANLN2 during my loop.
    I am using field symbols as my work area for my itab which is it_output. The problem
    is, when I try to do this in my at line-selection event:
    at line-selection.
    data: cursorfield(20) type c.
        get cursor field cursorfield.
        case cursorfield.
         when '<FS_OUTPUT>-ASSET_SUBNUM'.
         SET PARAMETER ID 'BUK' FIELD <FS_OUTPUT>-bukrs.
         SET PARAMETER ID 'AN1' FIELD <FS_OUTPUT>-asset.
         SET PARAMETER ID 'AN2' FIELD <FS_OUTPUT>-anln2.
        endcase.
    It says that it can't recognize the fields. What am I doing wrong? By the way, I am using
    ABAP Objects in my report. Help would be greatly appreciated. Thanks again guys and take care!

    Hi Viraylab,
    Have you assigned the fieldsymbols ?
    ASSIGN IT_OUTPUT to <FS_OUTPUT>.
    Cheers
    VJ
    Message was edited by: Vijayendra  Rao

  • How to use both At USER-COMMAND and AT LINE-SELECTION in one abap program

    I am trying out a program where I need to use both line selection and user command events in one program. Suggest me how to do it.

    USE the okcode 'PICK'. (I mean add a 'PICK' in the GUI staus or the menu.) When ever u use both the events u have to use PICK to trigger the at line selection.
    U just need to add the PICK in the GUI status and ofcourse write code in the program.
    AT LINE-SELECTION.
    CASE sy-ucomm.
    WHEN 'PICK'.
    write:/ 'HELLO WORLD'.
    ENDCASE.

  • At user-command & At Line-selection

    Hi,
    I am using ECC5 ver. of ABAP.
    Can I use AT USER-COMMAND and AT LINE-SELECTION
    in the same report?
    I have used it but only At user command works, not At line selection.
    When I remove Set pf-Status, At line selection works.
    Here is my code.
    REPORT PF&ATLINE.
    AT LINE-SELECTION.
      MESSAGE 'Line Selected' TYPE 'I'.
    AT USER-COMMAND.
      IF sy-ucomm = 'PUSH'.
        MESSAGE 'Button Pushed' type 'I'.
      elseif sy-ucomm = 'EXIT'.
        LEAVE PROGRAM.
      ENDIF.
    START-OF-SELECTION.
      SET PF-STATUS 'ZRND3'.
      DO 10 TIMES.
        WRITE:/01 SY-INDEX HOTSPOT.
      ENDDO.
    END-OF-SELECTION.

    Hi Rajiv,
    Setting the PICK function code to F2 will definitely solve it..
    and it triggers the at user-command and at line-selection event as per user interaction...
    If it is not working properly... then there might me something wrong in your code...
    can you place the code... so that we can know the exact problem
    regards
    padma

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

  • How to use at-line selection in ALV

    Can someone help me about how to use at-line selection in an ALV

    u can try in user_command
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
             I_CALLBACK_PROGRAM = G_REPID
             IT_FIELDCAT = GT_FIELDCATALOG
             I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
             I_CALLBACK_HTML_END_OF_LIST = G_HTML_END_OF_LIST
             I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
             I_GRID_SETTINGS = GS_SETTINGS
             IS_LAYOUT = GS_LAYOUT
             I_SAVE = G_SAVE
             IS_VARIANT = GS_VARIANT
             IT_EVENTS = GT_EVENTS[]
    *      I_SCREEN_START_COLUMN = 0 "Use coordinates for
    *      I_SCREEN_START_LINE = 0 "display as dialog box
    *      I_SCREEN_END_COLUMN = 0
    *      I_SCREEN_END_LINE = 0
        IMPORTING
             E_EXIT_CAUSED_BY_CALLER = G_EXIT_CAUSED_BY_CALLER
             ES_EXIT_CAUSED_BY_USER = GS_EXIT_CAUSED_BY_USER
        TABLES
             T_OUTTAB = I_REP
        EXCEPTIONS
             PROGRAM_ERROR = 1
             OTHERS = 2.
    FORM USER_COMMAND USING R_UCOMM TYPE SY-UCOMM
                            RS_SELFIELD TYPE SLIS_SELFIELD.
    CASE R_UCOMM.
        WHEN '&IC1'.
          CASE RS_SELFIELD-FIELDNAME.
            WHEN 'XXXXX'.
              READ TABLE I_xxx INTO V_xxx
                WITH KEY XXX = RS_SELFIELD-VALUE.
              IF SY-SUBRC = 0.
              ENDIF.
            WHEN OTHERS
          ENDCASE.
      ENDCASE.
    ENDFORM.

Maybe you are looking for