Using PF_STATUS and USER_COMMAND in ALV

Hi,
I have a requirement to place two buttons on the application toolbar of the output ALV list display screen.
I have to assign functionality for the two buttons.
How do we do it in ALV?
Is there any thing in ALV which performs the functionality of  set pf_status and at user_command?

Hi Sandeep,
Following code might be useful for you to achieve your goal.
REPORT  ZSPRENH062.
TYPE-POOLS : SLIS.                            "Global Type for ALV      
*    D A T A                                                           *
* Types declarations
*ALV Header table type
TYPES: BEGIN OF TY_HFINAL,
         WERKS TYPE EWERK,                      "Plant
         MATKL TYPE MATKL,                      "Material Group
       END OF TY_HFINAL,
*ALV Item table type
       BEGIN OF TY_IFINAL,
         WERKS        TYPE EWERK,               "Plant
         MATKL        TYPE MATKL,               "Material Group
         SELECT(1)    TYPE C,                   "Check Box
         MATNR        TYPE MATNR,               "Material No
         LIFNR        TYPE LIFNR,               "Vendor Account No.
         MAKTX        TYPE MAKTX,               "Material Desp.
         BISMT        TYPE BISMT,               "Old material ID
         CPRICE       TYPE KBETR_KOND,          "Contract Price
         FINCONPRI(20) TYPE C,
         INFOREC      TYPE KBETR_KOND,          "Purchase info rec.
         FININFPRI(20) TYPE C,
         MPRICE       TYPE KBETR_KOND,          "Market price
         NREPCOST     TYPE KBETR_KOND,          "Total repl. cost
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
         PRUOM        TYPE BSTME,               "Purchase Unit of Measure
         TRC_BUOM     TYPE KBETR_KOND,          "Total Repl. Cost in Base UOM
         BSUOM        TYPE MEINS,               "Base Unit of Measure
*-----           End   of Changes  EXT-SAP-180  13APR2007            ------*
         PREPCOST     TYPE KBETR_KOND,          "Previous repl cost
         VALCHG       TYPE KBETR_KOND,          "Total value change
         PERCHG       TYPE P LENGTH 5 DECIMALS 2,    "Percentage Change
       END OF TY_IFINAL.
* Internal Table Declarations
*ALV Header Internal Table
DATA: T_HFINAL TYPE STANDARD TABLE OF TY_HFINAL INITIAL SIZE 0,
*ALV Item Internal Table
      T_IFINAL TYPE STANDARD TABLE OF TY_IFINAL INITIAL SIZE 0,
      T_FIELDCATALOG  TYPE SLIS_T_FIELDCAT_ALV,      "Fieldcatalog IT
      T_EVENTS        TYPE SLIS_T_EVENT,             "Event IT
      T_HEADER        TYPE SLIS_T_LISTHEADER,        "Header IT
* Work area Declarations
*ALV Header Work Area
      W_HFINAL TYPE TY_HFINAL,
*ALV Item Work Area
      W_IFINAL TYPE TY_IFINAL,
      W_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV,         "Fieldcatalog WA
      W_EVENT        TYPE SLIS_ALV_EVENT,            "Event WA
      W_HEADER       TYPE SLIS_LISTHEADER,           "Header WA
      W_LAYOUT       TYPE SLIS_LAYOUT_ALV,           "Layout WA
      W_KEYINFO      TYPE SLIS_KEYINFO_ALV,          "Key Information WA
* Variable declarations
      G_REPID  TYPE SY-REPID,                        "Program Name
      G_ANSWER TYPE C,                               "Optional Button
      G_WERKS TYPE EWERK,
      G_MATKL TYPE MATKL,
      G_MATNR TYPE MATNR,
      G_MTART TYPE MTART,
      G_LIFNR TYPE ELIFN,
      L_CPRICE_C(20) TYPE C,
      L_CPRICE_I(20) TYPE C,
      L_UNITPRICE_C(20) TYPE C,
      L_UNITPRICE_I(20) TYPE C.
* Constant declarations
CONSTANTS: C_A(1) TYPE C VALUE 'A',                     "Constant Value A
           C_E(1) TYPE C VALUE 'E',                     "Constant Value E
           C_H(1) TYPE C VALUE 'H',                     "Constant Value H
           C_M(1) TYPE C VALUE 'M',                     "Constant Value M
           C_S(1) TYPE C VALUE 'S',                     "Constant Value S
           C_X(1) TYPE C VALUE 'X',                     "Constant Value X
           C_0(1) TYPE C VALUE '0',                     "Constant Value 0
           C_R(1) TYPE C VALUE 'R',                     "Constant Value R
           C_2(1) TYPE C VALUE '2',                     "Constant Value 2
           C_LANG(2) TYPE C VALUE 'EN',                 "Language English
           C_ZQTE(4) TYPE C VALUE 'ZQTE',               "Condtion type ZQTE
           C_HTNAME(10) TYPE C VALUE 'T_HFINAL',        "Header table name
           C_ITNAME(10) TYPE C VALUE 'T_IFINAL'.        "Item table name
*    S E L E C T   O P T I O N S  &  P A R A M E T E R S               *
* Selection-screen Block 1
SELECTION-SCREEN BEGIN OF BLOCK BLK1
               WITH FRAME TITLE TEXT-001.         "Begin of Block1
PARAMETERS : P_EKORG TYPE EKORG OBLIGATORY.       "Pur.Organization
SELECT-OPTIONS : S_WERKS  FOR G_WERKS OBLIGATORY, "Plant
                 S_MATKL  FOR G_MATKL,            "Material Group
                 S_MATNR  FOR G_MATNR,            "Material No.
                 S_MTART  FOR G_MTART,            "Material Type
                 S_LIFNR  FOR G_LIFNR.            "Vendor
PARAMETERS : P_PERCHG(3)  TYPE C.                 "Percentage Change
SELECTION-SCREEN END OF BLOCK BLK1.               "End of Block 1
* Selection-screen Block 2
SELECTION-SCREEN BEGIN OF BLOCK BLK2
               WITH FRAME TITLE TEXT-002.         "Begin of Block2
PARAMETERS: P_VDATE TYPE DATAM DEFAULT SY-DATUM,  "Valid on date
            P_HDATE TYPE DATAM DEFAULT '29991231'."Horizon date
SELECTION-SCREEN END OF BLOCK BLK2.               "End of Block 2
*   I N I T I A L I Z A T I O N                                        *
INITIALIZATION.
  CLEAR : G_REPID.                                   "Program Name
  G_REPID = SY-REPID.                                "Program Name
*   A T   S E L E C T I O N   S C R E E N                              *
AT SELECTION-SCREEN.
* Validation for Change of Percentage
  IF P_PERCHG LT 0 OR P_PERCHG GT 100.
    MESSAGE E000(ZS) WITH  TEXT-E01.
  ENDIF.
* Validation for Horizon Date
  IF P_HDATE LE P_VDATE.
    MESSAGE E000(ZS) WITH  TEXT-E02.
  ENDIF.
*   S T A R T   O F   S E L E C T I O N                                *
START-OF-SELECTION.
* Data Selection
  PERFORM DATA_RETRIEVAL.
* Build Field Catalog
  PERFORM BUILD_FIELDCATALOG.
* Bulid layout
  PERFORM BUILD_LAYOUT.
* Build Events
  PERFORM BUILD_EVENTS.
*   E N D   O F   S E L E C T I O N                                    *
END-OF-SELECTION.
* Build Header for Top-Of-Page
  PERFORM BUILD_TOPOFPAGE.
* Display List
  PERFORM DISPLAY_ALV_REPORT.
*   F O R M S                                                          *
*&      Form  data_retrieval
*   To fetch data from Database table into ALV final Internal table
FORM DATA_RETRIEVAL.
* Local Types declarations
*Types of EORD & EKPO table
  TYPES : BEGIN OF TY_MAIN,
            MATNR TYPE MATNR,               "Material No.
            WERKS TYPE EWERK,               "Plant
            ZEORD TYPE DZEORD,               "No.Source List Rec
            LIFNR TYPE ELIFN,               "Vendor Account No.
            EBELN TYPE EVRTN,               "Agreement Number
            EBELP TYPE EVRTP,               "Agreement Item
            EKORG TYPE EKORG,               "Pur. Organization
            AUTET TYPE AUTET,               "S.L. in Mat.Planning
            MATKL TYPE MATKL,               "Material Group
            MTART TYPE MTART,               "Material Type
            INFNR TYPE INFNR,               "No.Pur.Info Record
*  Begin of Changes  CON-SAP-99  16/01/2007                            *
            NETPR TYPE BPREI,               "Net Price
*  End of Changes  CON-SAP-99  16/01/2007                              *
*-----  Begin of Changes  EXT-SAP-180  13APR2007  ------               *
            MEINS TYPE BSTME,               "Purchase Order Unit of Measure
*-----  End of Changes    EXT-SAP-180  13APR2007  ------               *
*           begin 23APR2007  ------
            PEINH TYPE EPEIN,               "Price Unit
*           end   23APR2007  ------
            PSTYP TYPE PSTYP,               "Item Category
            KONNR TYPE KONNR,               "No.Principal P.A.
            KTPNR TYPE KTPNR,               "Item No.Principal P.A.
          END OF TY_MAIN,
*Types of MARA table
          BEGIN OF TY_MARA,
            MATNR TYPE MATNR,               "Material No.
            MEINS TYPE MEINS,               "Base Unit of Measure " ext-sap-180  13APR2007
          END OF TY_MARA,
*Types of MAKT table
          BEGIN OF TY_MAKT,
            MATNR TYPE MATNR,               "Material No.
            MAKTX TYPE MAKTX,               "Material Desp.
          END OF TY_MAKT,
*Types of MBEW table
          BEGIN OF TY_MBEW,
            MATNR TYPE MATNR,               "Material No.
            BWKEY TYPE BWKEY,               "Valuation Area
*-----  Begin of Changes  EXT-SAP-180  13APR2007  ------               *
            PEINH TYPE PEINH,                    "Price Unit
*-----  End of Changes    EXT-SAP-180  13APR2007  ------               *
            ZPLP3 TYPE DZPLP3,               "Future Planned Price
          END OF TY_MBEW,
*Types of A016_C table
          BEGIN OF TY_A016_C,
            EVRTN  TYPE EBELN,              "Purchasing Doc. No.
            EVRTP  TYPE EBELP,              "Item No.of Pur. Doc.
            KNUMH  TYPE KNUMH,              "Condition rec.no.
          END OF TY_A016_C,
*Types of A017_P table
          BEGIN OF TY_A017_P,
            LIFNR TYPE ELIFN,               "Vendor Account No.
            MATNR TYPE MATNR,               "Material No.
            EKORG TYPE EKORG,               "Pur. Organization
            WERKS TYPE WERKS_D,               "Plant
            KNUMH TYPE KNUMH,               "Condition rec.no.
          END OF TY_A017_P,
*Types of A054_M table
          BEGIN OF TY_A054_M,
            KSCHL TYPE KSCHA,               "Condition type
            EKORG TYPE EKORG,               "Pur. Organization
            MATKL TYPE MATKL,               "Material Group
*    Begin of Changes      EXT-SAP-180    02APR2007          *
            MATNR TYPE MATNR,               "Material Number
            DATBI TYPE KODATBI,              " Validity end date of the condition record  04APR07
            DATAB TYPE KODATAB,              " Validity start date of the condition record 04APR0
*    End of Changes        EXT-SAP-180    02APR2007          *
            KNUMH TYPE KNUMH,               "Condition rec.no.
          END OF TY_A054_M,
*Types of KONP_P table
          BEGIN OF TY_KONP_P,
            KNUMH TYPE KNUMH,               "Condition rec.no.
            KBETR TYPE KBETR_KOND,          "Rate
            KONWA TYPE KONWA,               "Rate unit
            KPEIN TYPE KPEIN,               "Condition pricing unit
            KMEIN TYPE KMEIN,               "Condition Unit
          END OF TY_KONP_P,
*    Begin of Changes      EXT-SAP-180    02APR2007          *
* Types of A049 table
          BEGIN OF TY_A049,
            KSCHL TYPE KSCHA,              " Condition Type
            EKORG TYPE EKORG,              " Purchasing Organization
            MATKL TYPE MATKL,              " Material Group
            MATNR TYPE MATNR,              " Material Number
            DATBI TYPE KODATBI,              " Validity end date of the condition record  04APR07
            DATAB TYPE KODATAB,              " Validity start date of the condition record 04APR07
            KNUMH TYPE KNUMH,              " Condition Record Number
          END OF TY_A049,
* Types of KONP_C table
          BEGIN OF TY_KONP_C,
            KNUMH TYPE KNUMH,               "Condition rec.no.
            KOPOS TYPE KOPOS,
            KSCHL TYPE KSCHA,               "Condition type
            KBETR TYPE KBETR_KOND,               "Rate
            KONWA TYPE KONWA,               "Rate unit
          END OF TY_KONP_C,
*Types of KONM_C table
         BEGIN OF TY_KONM_C,
            KNUMH TYPE KNUMH,               "Condition rec.no.
            KOPOS TYPE KOPOS,               "Seq. no. of the condition
            KSTBM TYPE KSTBM,               "Condition scale quan.
            KBETR TYPE KBETR,               "Rate
          END OF TY_KONM_C,
*Types of KONM_P table
          BEGIN OF TY_KONM_P,
            KNUMH TYPE KNUMH,               "Condition rec.no.
            KSTBM TYPE KSTBM,               "Condition scale quan.
            KBETR TYPE KBETR,               "Rate
          END OF TY_KONM_P,
*    End of Changes        EXT-SAP-180    02APR2007          *
*-----  Begin of Changes  EXT-SAP-180  13APR2007  ------*
*Types of EINE table
           BEGIN OF TY_EINE,
             INFNR TYPE INFNR,                     " Number of Purchase Info Record
             EKORG TYPE EKORG,                     " Purchasing Organization
             WERKS TYPE EWERK,                     " Plant
             PEINH TYPE EPEIN,                     " Price Unit
             BPRME TYPE BBPRM,                     " Order Price Unit (Purchasing)
           END   OF TY_EINE,
*Types of MARM table
         BEGIN OF TY_MARM,
             MATNR TYPE MATNR,                     " Material Number
             MEINH TYPE LRMEI,                     " Alternative Unit of Measure
             UMREZ TYPE UMREZ,                     " Numerator for Conversion to Base UOM
             UMREN TYPE UMREN,                     " Denominator for Conversion to Base UOM
          END   OF TY_MARM,
*-----  End   of Changes  EXT-SAP-180  13APR2007  ------*
*Types of EKAB table
          BEGIN OF TY_EKAB,
            KONNR TYPE KONNR,               "No of Principal P.A
            KTPNR TYPE KTPNR,               "Item of Principal P.A
            EBELN TYPE EBELN,               "Purchasing Doc. No.
            MENGE TYPE BSTMG,               "P.O. Quantity
          END OF TY_EKAB,
*Types of EKPO table
         BEGIN OF TY_EKPO,
            INFNR TYPE INFNR,               "No of Pur.Info Rec.
            EBELN TYPE EBELN,               "Purchasing Doc. No.
            MENGE TYPE MENGE_D,             "P.O. Quantity
          END OF TY_EKPO.
* Local Internal table declarations
  DATA: T_MAIN    TYPE STANDARD TABLE OF TY_MAIN,
        T_MAIN1   TYPE STANDARD TABLE OF TY_MAIN,
        T_MARA    TYPE STANDARD TABLE OF TY_MARA,
        T_MBEW    TYPE STANDARD TABLE OF TY_MBEW,
        T_MAKT    TYPE STANDARD TABLE OF TY_MAKT,
        T_A016_C  TYPE STANDARD TABLE OF TY_A016_C,
        T_A017_P  TYPE STANDARD TABLE OF TY_A017_P,
        T_A054_M  TYPE STANDARD TABLE OF TY_A054_M,
*    Begin of Changes      EXT-SAP-180    02APR2007          *
        T_KONP_C  TYPE STANDARD TABLE OF TY_KONP_C,
        T_A049    TYPE STANDARD TABLE OF TY_A049,
*    End of Changes        EXT-SAP-180    02APR2007          *
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
        T_EINE    TYPE STANDARD TABLE OF TY_EINE,
        T_MARM    TYPE STANDARD TABLE OF TY_MARM,
*-----           End   of Changes  EXT-SAP-180  13APR2007            ------*
        T_KONP_P  TYPE STANDARD TABLE OF TY_KONP_P,
        T_KONP_M  TYPE STANDARD TABLE OF TY_KONP_P,
*    Begin of Changes      EXT-SAP-180    02APR2007          *
        T_KONM_C  TYPE STANDARD TABLE OF TY_KONM_C,
        T_KONM_P  TYPE STANDARD TABLE OF TY_KONM_P,
*    End of Changes        EXT-SAP-180    02APR2007          *
        T_EKAB    TYPE STANDARD TABLE OF TY_EKAB,
        T_EKPO    TYPE STANDARD TABLE OF TY_EKPO,
* Local Work Area declarations
         W_MAIN    TYPE TY_MAIN,
         W_MARA    TYPE TY_MARA,
         W_MBEW    TYPE TY_MBEW,
         W_A016_C  TYPE TY_A016_C,
         W_A017_P  TYPE TY_A017_P,
         W_A054_M  TYPE TY_A054_M,
*    Begin of Changes      EXT-SAP-180    02APR2007          *
         W_KONP_C  TYPE TY_KONP_C,
         W_MAIN1_T TYPE TY_MAIN,
         W_A049_T  TYPE TY_A049,
*    End of Changes        EXT-SAP-180    02APR2007          *
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
         W_EINE    TYPE TY_EINE,
         W_MARM    TYPE TY_MARM,
*-----           End   of Changes  EXT-SAP-180  13APR2007            ------*
         W_KONP_P  TYPE TY_KONP_P,
         W_KONP_M  TYPE TY_KONP_P,
*    Begin of Changes      EXT-SAP-180    02APR2007          *
         W_KONM_C  TYPE TY_KONM_C,
         W_KONM_P  TYPE TY_KONM_P,
         W_KONM1   TYPE TY_KONM_C,
         W_KONM2   TYPE TY_KONM_P,
*    End of Changes        EXT-SAP-180    02APR2007          *
         W_EKAB    TYPE TY_EKAB,
         W_EKPO    TYPE TY_EKPO,
         W_MAKT    TYPE TY_MAKT,
* Local Variable declarations
         L_PERPRICE TYPE KBETR_KOND,             "Local Percentage price
         L_PERUNIT  TYPE KPEIN,             "Condition Pricing Unit
         L_MARPRICE TYPE KBETR_KOND,             "Local Market price
*    Begin of Changes      EXT-SAP-180    02APR2007          *
         L_KBETR    TYPE KBETR,
         L_INDEX    TYPE SY-TABIX,               "Tab Index
*    End of Changes        EXT-SAP-180    02APR2007          *
*  Begin of Changes  CON-SAP-99  11/12/2006                            *
         L_STR TYPE STRING.
*  End of Changes  CON-SAP-99  11/12/2006                              *
* GET SOURCE LIST
  SELECT  A~MATNR                                "Material No.
          A~WERKS                                "Plant
          A~ZEORD                                "No.Source List Rec
          A~LIFNR                                "Vendor Account No.
          A~EBELN                                "Agreement Number
          A~EBELP                                "Agreement Item
          A~EKORG                                "Pur. Organization
          A~AUTET                                "S.L. in Mat.Planning
          B~MATKL                                "Material Group
          B~MTART                                "Material Type
          B~INFNR                                "No.Pur.Info Record
*  Begin of Changes  CON-SAP-99  16/01/2007                            *
          B~NETPR                                "Net price
*  End of Changes  CON-SAP-99  16/01/2007                              *
*-----  Begin of Changes  EXT-SAP-180  13APR2007  ------               *
          B~MEINS                                "Purchase Order Unit of Measure
*-----  End of Changes    EXT-SAP-180  13APR2007  ------               *
*           begin 23APR2007  ------
          B~PEINH                                "Price Unit
*           end   23APR2007  ------
          B~PSTYP                                "Pur. Doc. Category
          B~KONNR                                "No.Principal P.A.
          B~KTPNR                                "Item No.Principal P.A.
             INTO TABLE T_MAIN
             FROM  EORD AS A INNER JOIN EKPO AS B
             ON  ( A~EBELN EQ B~EBELN
             AND   A~EBELP EQ B~EBELP )
             WHERE A~MATNR IN S_MATNR
             AND   A~LIFNR IN S_LIFNR
             AND   A~WERKS IN S_WERKS
             AND   B~MATKL IN S_MATKL
             AND   B~MTART IN S_MTART
             AND   A~EKORG EQ P_EKORG
             AND   A~VDATU LE P_VDATE
             AND   A~BDATU GE P_VDATE
             AND ( A~AUTET EQ 1
             OR    A~AUTET EQ 2 ).
  IF SY-SUBRC = 0.
    SORT T_MAIN BY MATNR WERKS.
    DELETE ADJACENT DUPLICATES FROM T_MAIN
                          COMPARING MATNR
                                    WERKS.
    T_MAIN1[] = T_MAIN[].
    DELETE ADJACENT DUPLICATES FROM T_MAIN1
                          COMPARING MATNR.
* GET MATERIAL DESCRIPTION
    SELECT MATNR                                 "Material No
           MAKTX                                 "Material Desp.
             FROM MAKT
             INTO TABLE T_MAKT
             FOR ALL ENTRIES IN T_MAIN1
             WHERE MATNR EQ T_MAIN1-MATNR
             AND   SPRAS EQ C_LANG.
    IF SY-SUBRC = 0.
      SORT T_MAKT BY MATNR.
    ENDIF.
*-----  Begin of Changes  EXT-SAP-180  13APR2007  ------               *
* GET PURCHASE ORDER UNIT OF MEASURE FOR INFO RECORDS FROM EINE
    SELECT INFNR                            " Number of Purchase Info Record
           EKORG                            " Purchasing Organization
           WERKS                            " Plant
           PEINH                            " Price Unit
           BPRME                            " Order Price Unit
             FROM EINE
             INTO TABLE T_EINE
             FOR ALL ENTRIES IN T_MAIN1
             WHERE INFNR EQ T_MAIN1-INFNR
               AND EKORG EQ T_MAIN1-EKORG
               AND ( ESOKZ EQ C_0 OR ESOKZ EQ C_2 )            "Purchasing Info Record Category = Standard
               AND WERKS EQ T_MAIN1-WERKS.
    IF SY-SUBRC = 0.
      SORT T_EINE BY INFNR EKORG WERKS.
    ENDIF.
    SELECT MATNR                          " Material Number
           MEINH                          " Alternate UOM
           UMREZ                          " Numerator for conversion
           UMREN                          " Denominator for conversion
             FROM MARM
             INTO TABLE T_MARM
             FOR ALL ENTRIES IN T_MAIN1
             WHERE MATNR EQ T_MAIN1-MATNR.
    IF SY-SUBRC = 0.
      SORT T_MARM BY MATNR MEINH.
    ENDIF.
*-----  End of Changes    EXT-SAP-180  13APR2007  ------               *
* GET BASE UNIT OF MEASURE
    SELECT MATNR                                 "Material No.
           MEINS                                 "Base unit of measure " ext-sap-180 13APR2007
             INTO  TABLE T_MARA
             FROM  MARA
             FOR ALL ENTRIES IN T_MAIN1
             WHERE MATNR EQ T_MAIN1-MATNR.
    IF SY-SUBRC = 0.
      SORT T_MARA BY MATNR.
    ENDIF.
* GET CONTRACT PRICE
    REFRESH T_MAIN1[].
    T_MAIN1[] = T_MAIN[].
    SORT T_MAIN1 BY PSTYP.
    DELETE T_MAIN1 WHERE PSTYP = 2.
    IF T_MAIN1 IS NOT INITIAL.
      SORT T_MAIN1 BY EBELN EBELP.
* Get Condition Record Number based on Purchasing Document Number
      SELECT EVRTN                               "Purchasing Doc. No.
             EVRTP                               "Item No.of Pur. Doc.
             KNUMH                               "Condition rec.no.
               FROM A016
               INTO TABLE T_A016_C
               FOR ALL ENTRIES IN  T_MAIN1
               WHERE KAPPL EQ C_M
               AND   EVRTN EQ T_MAIN1-EBELN
               AND   EVRTP EQ T_MAIN1-EBELP
               AND   DATBI GE P_VDATE
               AND   DATAB LE P_VDATE.
      IF SY-SUBRC = 0.
        SORT T_A016_C BY EVRTN EVRTP.
      ENDIF.
      SORT T_MAIN1 BY KONNR KTPNR.
*Get Condition Record No. based on Principal Purchasing Document No
      SELECT EVRTN                               "Purchasing Doc. No.
             EVRTP                               "Item No.of Pur. Doc.
             KNUMH                               "Condition rec.no.
               FROM A016
               APPENDING TABLE T_A016_C
               FOR ALL ENTRIES IN  T_MAIN1
               WHERE KAPPL EQ C_M
               AND   EVRTN EQ T_MAIN1-KONNR
               AND   EVRTP EQ T_MAIN1-KTPNR
               AND   DATBI GE P_VDATE
               AND   DATAB LE P_VDATE.
      IF T_A016_C IS NOT INITIAL.
        SORT T_A016_C BY EVRTN EVRTP.
*Get Rate & unit for all the Condition Record No.(Contract Price)
        SELECT KNUMH                             "Condition rec.no.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
               KOPOS                             "Seq. No. of the condition
               KSCHL                             "Condition Type
*    End of Changes        EXT-SAP-180    02APR2007          *
               KBETR                             "Rate
               KONWA                             "Rate unit
                 FROM KONP
                 INTO TABLE T_KONP_C
                 FOR ALL ENTRIES IN T_A016_C
                 WHERE KNUMH EQ T_A016_C-KNUMH
*    Begin of Changes      EXT-SAP-180    02APR2007          *
                 AND LOEVM_KO EQ SPACE.
*    End of Changes        EXT-SAP-180    02APR2007          *
        IF SY-SUBRC = 0.
          SORT T_KONP_C BY KNUMH.
        ENDIF.
* Get Condition scale quantity & Rate for all the Condition Record No.
        SELECT KNUMH                             "Condition rec.no.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
               KOPOS                             "Seq. No. of the condition
*    End of Changes        EXT-SAP-180    02APR2007          *
               KSTBM                             "Condition scale quan.
               KBETR                             "Rate
                 FROM KONM
                 INTO TABLE T_KONM_C
                 FOR ALL ENTRIES IN T_A016_C
                 WHERE KNUMH EQ T_A016_C-KNUMH.
        IF SY-SUBRC = 0.
          SORT T_KONM_C BY KNUMH
*    Begin of Changes      EXT-SAP-180    02APR2007          *
                           KOPOS
*    End of Changes        EXT-SAP-180    02APR2007          *
                           KSTBM
                           DESCENDING.
        ENDIF.
* Get PO Doc. No. & Quantity based on Principal Purchasing Doc. No
        SELECT KONNR                             "No of Principal P.A
               KTPNR                             "Item of Principal P.A
               EBELN                             "Purchasing Doc. No.
               MENGE                             "P.O. Quantity
                 FROM EKAB
                 INTO TABLE T_EKAB
                 FOR ALL ENTRIES IN T_A016_C
                 WHERE KONNR EQ T_A016_C-EVRTN
                 AND   KTPNR EQ T_A016_C-EVRTP.
        IF SY-SUBRC = 0.
          SORT T_EKAB BY KONNR KTPNR EBELN DESCENDING.
        ENDIF.
      ENDIF.
    ENDIF.
* GET PURCHASING INFO RECORDS PRICE
    REFRESH T_MAIN1[].
    T_MAIN1[] = T_MAIN[].
    DELETE T_MAIN1 WHERE PSTYP <> 2.
    IF T_MAIN1 IS NOT INITIAL.
      SORT T_MAIN1 BY LIFNR MATNR EKORG WERKS.
* Get Condition Record No based on Vendor,Material,Pur.org & Plant
      SELECT LIFNR                               "Vendor Account No.
             MATNR                               "Material No.
             EKORG                               "Pur. Organization
             WERKS                               "Plant
             KNUMH                               "Condition rec.no.
               FROM A017
               INTO TABLE T_A017_P
               FOR ALL ENTRIES IN  T_MAIN1
               WHERE LIFNR EQ T_MAIN1-LIFNR
               AND   MATNR EQ T_MAIN1-MATNR
               AND   EKORG EQ T_MAIN1-EKORG
               AND   WERKS EQ T_MAIN1-WERKS
               AND   DATBI GE P_VDATE
               AND   DATAB LE P_VDATE.
      IF SY-SUBRC = 0.
        SORT T_A017_P BY LIFNR MATNR EKORG WERKS.
*Get Rate & unit for all the Condition Rec.No.(Pur. info Rec Price)
        SELECT KNUMH                             "Condition rec.no.
               KBETR                             "Rate
               KONWA                             "Rate unit
               KPEIN                             "Condition pricing unit
               KMEIN                             "Condition Unit
                 FROM KONP
                 INTO TABLE T_KONP_P
                 FOR ALL ENTRIES IN T_A017_P
                 WHERE KNUMH EQ T_A017_P-KNUMH.
        IF SY-SUBRC = 0.
          SORT T_KONP_P BY KNUMH.
        ENDIF.
* Get Condition scale quantity & Rate for all the Condition Record No.
        SELECT KNUMH                             "Condition rec.no.
               KSTBM                             "Condition scale quan.
               KBETR                             "Rate
                 FROM KONM
                 INTO TABLE T_KONM_P
                 FOR ALL ENTRIES IN T_A017_P
                 WHERE KNUMH EQ T_A017_P-KNUMH.
        IF SY-SUBRC = 0.
          SORT T_KONM_P BY KNUMH KSTBM DESCENDING.
        ENDIF.
      ENDIF.
* Get PO Doc. No. & Quantity based on Principal Purchasing Doc. No
      SORT T_MAIN1 BY INFNR.
      SELECT INFNR                             "No of Pur.Info Rec.
             EBELN                             "Purchasing Doc. No.
             MENGE                             "P.O. Quantity
               FROM EKPO
               INTO TABLE T_EKPO
               FOR ALL ENTRIES IN T_MAIN1
               WHERE INFNR EQ T_MAIN1-INFNR
               AND   WERKS EQ T_MAIN1-WERKS
               AND   BSTYP EQ 'F'.
      IF SY-SUBRC = 0.
        SORT T_EKPO BY INFNR EBELN DESCENDING.
      ENDIF.
    ENDIF.
* GET MARKET PRICE
    REFRESH T_MAIN1[].
    T_MAIN1[] = T_MAIN[].
    DELETE ADJACENT DUPLICATES FROM T_MAIN1 COMPARING EKORG MATKL.
    P_VDATE = P_VDATE + 1.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
* Get Condition Record No based on Material Number
    SELECT KSCHL
           EKORG
           MATNR
           DATBI    "EXT-SAP-180 04Apr07
           DATAB    "EXT-SAP-180 04Apr07
           KNUMH
     FROM  A049
     INTO CORRESPONDING FIELDS OF TABLE T_A049
     FOR ALL ENTRIES IN T_MAIN
     WHERE KSCHL EQ C_ZQTE
       AND EKORG EQ T_MAIN-EKORG
       AND MATNR EQ T_MAIN-MATNR
       AND ESOKZ EQ C_0.
    IF SY-SUBRC EQ 0.                               " if entries exists in t_a049
      SORT T_A049 BY EKORG MATNR
                     DATBI DATAB.                   " EXT-SAP-180 04Apr07
      CLEAR L_INDEX.
      LOOP AT T_A049 INTO W_A049_T.
        L_INDEX = SY-TABIX.
        READ TABLE T_MAIN INTO W_MAIN1_T
                   WITH KEY EKORG = W_A049_T-EKORG
                            MATNR = W_A049_T-MATNR
                   BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          W_A049_T-MATKL = W_MAIN1_T-MATKL.
          MODIFY T_A049 FROM W_A049_T
                        INDEX L_INDEX
                        TRANSPORTING MATKL.
        ENDIF.
        CLEAR: W_A049_T,
               W_MAIN1_T,
               L_INDEX.
      ENDLOOP.
* Get Rate & unit for all the Condition Record No. (Market price)
      SELECT KNUMH                               "Condition rec.no.
             KBETR                               "Rate
             KONWA                               "Rate unit
             KPEIN                               "Condition Pricing Unit
             KMEIN                               "Condition Unit
             FROM KONP
             INTO TABLE T_KONP_M
             FOR ALL ENTRIES IN T_A049
             WHERE KNUMH EQ T_A049-KNUMH.
      IF SY-SUBRC = 0.
        SORT T_KONP_C BY KNUMH.
      ENDIF.
    ENDIF.
*    End of Changes        EXT-SAP-180    02APR2007           *
*Get Condition Record No based on Condition type, Pur.Org.,Mat. group
    SELECT KSCHL                                 "Condition type
           EKORG                                 "Pur. Organization
           MATKL                                 "Material Group
           DATBI                                 "Valid to date   EXT-SAP-180 04Apr07
           DATAB                                 "Valid from date EXT-SAP-180 04Apr07
           KNUMH                                 "Condition rec.no.
             FROM A054
             INTO CORRESPONDING FIELDS OF TABLE T_A054_M
             FOR ALL ENTRIES IN  T_MAIN
             WHERE KSCHL EQ  C_ZQTE
             AND   EKORG EQ  T_MAIN-EKORG
             AND   MATKL EQ  T_MAIN-MATKL
             AND   ESOKZ EQ C_0.
    IF SY-SUBRC = 0.
      SORT T_A054_M BY EKORG MATKL
                       DATBI DATAB. " added by SAP-EXT-180 04Apr07
* Get Rate & unit for all the Condition Record No. (Market price)
      SELECT KNUMH                               "Condition rec.no.
             KBETR                               "Rate
             KONWA                               "Rate unit
             KPEIN                               "Condition Pricing Unit
             KMEIN                               "Condition Unit
             FROM KONP
             APPENDING TABLE T_KONP_M
             FOR ALL ENTRIES IN T_A054_M
             WHERE KNUMH EQ T_A054_M-KNUMH.
      IF SY-SUBRC = 0.
        SORT T_KONP_C BY KNUMH KOPOS KSCHL.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
        SORT T_KONP_M BY KNUMH.
*    End of Changes        EXT-SAP-180    02APR2007          *
      ENDIF.
    ENDIF.
* GET PREVIOUS REPLACEMENT COST
    SELECT MATNR                                 "Material No.
           BWKEY                                 "Valuation Area
*-----  Begin of Changes  EXT-SAP-180  13APR2007  ------               *
           PEINH                                 "Price Unit
*-----  End of Changes    EXT-SAP-180  13APR2007  ------               *
           ZPLP3                                 "Future Planned Price
             FROM MBEW
             INTO TABLE T_MBEW
             FOR ALL ENTRIES IN  T_MAIN
             WHERE MATNR EQ T_MAIN-MATNR
             AND   BWKEY EQ T_MAIN-WERKS.
    IF SY-SUBRC = 0.
      SORT  T_MBEW BY MATNR BWKEY.
    ENDIF.
* TRANSFERING DATA INTO FINAL INTERNAL TABLE
    CLEAR : W_MAIN.
    LOOP AT T_MAIN INTO W_MAIN.
* Clear the Work area
      CLEAR : W_MAKT,
              W_MARA,
              W_MBEW,
              W_A016_C,
              W_A017_P,
              W_A054_M,
              W_KONP_C,
              W_KONP_P,
              W_KONP_M,
              W_KONM_C,
              W_KONM_P,
              W_KONM1,
*    Begin of Changes      EXT-SAP-180    02APR2007          *
              W_KONM2,
              W_A049_T,
*    End of Changes        EXT-SAP-180    02APR2007          *
              W_EKAB,
              W_EKPO.
      CLEAR : W_HFINAL,
              W_IFINAL.
* PLANT, MATERIAL GROUP
      W_HFINAL-WERKS = W_MAIN-WERKS.             "Plant(H)
      W_HFINAL-MATKL = W_MAIN-MATKL.             "Material Group(H)
      W_IFINAL-WERKS = W_MAIN-WERKS.             "Plant(I)
      W_IFINAL-MATKL = W_MAIN-MATKL.             "Material Group(I)
* MATERIAL NUMBER, VENDER NUMBER
      W_IFINAL-MATNR = W_MAIN-MATNR.             "Material No.
      W_IFINAL-LIFNR = W_MAIN-LIFNR.             "Vendor
* MATERIAL DESCRIPTION
      READ TABLE T_MAKT INTO W_MAKT
                        WITH KEY MATNR = W_MAIN-MATNR
                        BINARY SEARCH.
      IF SY-SUBRC = 0.
        W_IFINAL-MAKTX = W_MAKT-MAKTX.           "Material Desp.
      ENDIF.
* BASE UNIT OF MEASURE
      READ TABLE T_MARA INTO W_MARA
                        WITH KEY MATNR = W_MAIN-MATNR
                        BINARY SEARCH.
      IF SY-SUBRC = 0.
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
        W_IFINAL-BSUOM = W_MARA-MEINS.
*-----           End   of Changes  EXT-SAP-180  13APR2007            ------*
      ENDIF.
* CONTRACT PRICE
      IF W_MAIN-PSTYP <> 2.
* Assigning Scheduling agreement reference no. into agreement no.
        IF W_MAIN-AUTET EQ 2.
          W_MAIN-EBELN = W_MAIN-KONNR.
          W_MAIN-EBELP = W_MAIN-KTPNR.
        ENDIF.
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
* Assigning Purchase Order Unit of Measure
        W_IFINAL-PRUOM = W_MAIN-MEINS.
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
* Read conditon no. for agreement no.
        READ TABLE T_A016_C INTO W_A016_C
                            WITH KEY EVRTN = W_MAIN-EBELN
                                     EVRTP = W_MAIN-EBELP
                            BINARY SEARCH.
        IF SY-SUBRC = 0.
*    Begin of insertion    EXT-SAP-180    02APR2007          *
          LOOP AT T_KONP_C INTO W_KONP_C
                           WHERE KNUMH = W_A016_C-KNUMH.
*    End of insertion      EXT-SAP-180    02APR2007          *
* to check scales
            READ TABLE T_KONM_C INTO W_KONM_C
                              WITH KEY KNUMH = W_A016_C-KNUMH
*    Begin of Changes      EXT-SAP-180    02APR2007          *
                                       KOPOS = W_KONP_C-KOPOS
*    End of Changes        EXT-SAP-180    02APR2007          *
                              BINARY SEARCH.
            IF SY-SUBRC = 0.
* Check Purchase order for Contract Price with scales
              READ TABLE T_EKAB INTO W_EKAB
                                WITH KEY KONNR = W_A016_C-EVRTN
                                         KTPNR = W_A016_C-EVRTP
                                BINARY SEARCH.
              IF SY-SUBRC = 0.
                SORT T_KONM_C BY KNUMH KSTBM.
* Get the Contract price, if Purchase order exist
                LOOP AT T_KONM_C INTO W_KONM1
                               WHERE KNUMH EQ W_A016_C-KNUMH
                               AND   KSTBM LE W_EKAB-MENGE.
                  CLEAR L_KBETR.
                  IF SY-SUBRC = 0.
                    L_KBETR = W_KONM1-KBETR.
                    CONTINUE.
                  ENDIF.
                ENDLOOP.
* the above looping is done to get the right scale & stop, then add
* the scale amount to the existing contract price in the below step.
                W_IFINAL-CPRICE = W_IFINAL-CPRICE + L_KBETR.
                CLEAR : W_KONM1,
                        L_KBETR.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
                SORT T_KONM_C BY KNUMH
                   KOPOS
                   KSTBM
                   DESCENDING.
*    End of Changes        EXT-SAP-180    02APR2007          *
              ELSE.
* Get the Contract price, if doesnot Purchase order exist
                W_IFINAL-CPRICE = W_IFINAL-CPRICE + W_KONM_C-KBETR. "Changed EXT-SAP-180 02APR2007
              ENDIF.
              CLEAR W_EKAB.
            ELSE.
* Contract Price with out scales
*    Begin of Changes      EXT-SAP-180    02APR2007          *
              READ TABLE T_KONP_C INTO W_KONP_C
                                  WITH KEY KNUMH = W_A016_C-KNUMH
                                           KSCHL = W_KONP_C-KSCHL
                                  BINARY SEARCH.
              IF SY-SUBRC = 0.
                W_IFINAL-CPRICE = W_IFINAL-CPRICE + W_KONP_C-KBETR.
              ENDIF.
              CLEAR W_KONP_C.
*    End of Changes        EXT-SAP-180    02APR2007          *
            ENDIF.
            CLEAR W_KONM_C.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
          ENDLOOP.
*    End of Changes        EXT-SAP-180    02APR2007          *
*----BEGIN OF CHANGE EXT-SAP-180  23rd April 2007
          L_CPRICE_C = W_IFINAL-CPRICE.
          CONDENSE L_CPRICE_C. "NO-GAPS.
          IF W_MAIN-PEINH IS INITIAL.
            W_IFINAL-FINCONPRI = L_CPRICE_C.
          ELSE.
            L_UNITPRICE_C = W_MAIN-PEINH.
            CONDENSE L_UNITPRICE_C. " NO-GAPS.
            CONCATENATE L_CPRICE_C '/' L_UNITPRICE_C W_MAIN-MEINS INTO W_IFINAL-FINCONPRI.
          ENDIF.
          CLEAR: L_CPRICE_C,
                 L_UNITPRICE_C.
*----END   OF CHANGE EXT-SAP-180  23rd April 2007
        ENDIF.
        CLEAR W_A016_C.
      ENDIF.
* PURCHASE INFO RECORD
      IF W_MAIN-PSTYP = 2.
*-----           Begin of Changes  EXT-SAP-180  13APR2007            ------*
        READ TABLE T_EINE INTO W_EINE
                          WITH KEY INFNR = W_MAIN-INFNR
                                   EKORG = W_MAIN-EKORG
                                   WERKS = W_MAIN-WERKS
                          BINARY SEARCH.
        IF SY-SUBRC = 0.
          W_IFINAL-PRUOM = W_EINE-BPRME.
        ENDIF.
*-----           End   of Changes  EXT-SAP-180  13APR2007            ------*
        READ TABLE T_A017_P INTO W_A017_P
                            WITH  KEY LIFNR = W_MAIN-LIFNR
                                      MATNR = W_MAIN-MATNR
                                      EKORG = W_MAIN-EKORG
                                      WERKS = W_MAIN-WERKS
                            BINARY SEARCH.
        IF SY-SUBRC = 0.
* To check scales
          READ TABLE T_KONM_P INTO W_KONM_P
                            WITH KEY KNUMH = W_A017_P-KNUMH
                            BINARY SEARCH.
          IF SY-SUBRC = 0.
* Check Purchase order for Purchase info record Price with scales
            READ TABLE T_EKPO INTO W_EKPO
                              WITH KEY INFNR = W_MAIN-INFNR
                              BINARY SEARCH.
            IF SY-SUBRC = 0.
              SORT T_KONM_P BY KNUMH KSTBM.
* Get the Pur.info rec. , if Purchase order exist
              LOOP AT T_KONM_P INTO W_KONM2
                             WHERE KNUMH EQ W_A017_P-KNUMH
                             AND   KSTBM LE W_EKPO-MENGE.
                W_IFINAL-INFOREC =  W_KONM2-KBETR.       "Pur.Info rec.
              ENDLOOP.
            ELSE.
* Get the Pur.info rec. price, if doesnot Purchase order exist
              W_IFINAL-INFOREC = W_KONM_P-KBETR.         "Pur.Info rec.
            ENDIF.
          ELSE.
* Get Pur.info rec. price,with out scales
            READ TABLE T_KONP_P INTO W_KONP_P
                                WITH KEY KNUMH = W_A017_P-KNUMH
                                BINARY SEARCH.
            IF SY-SUBRC = 0.
              W_IFINAL-INFOREC = W_KONP_P-KBETR.         "Pur.Info rec.
            ENDIF.
          ENDIF.
        ENDIF.
*----BEGIN OF CHANGE EXT-SAP-180  23rd April 2007
        L_CPRICE_I = W_IFINAL-INFOREC.
        CONDENSE L_CPRICE_I.
        IF W_EINE-PEINH IS INITIAL.
          W_IFINAL-FININFPRI = L_CPRICE_I.
        ELSE.
          L_UNITPRICE_I = W_EINE-PEINH.
          CONDENSE L_UNITPRICE_I. " NO-GAPS.
          CONCATENATE L_CPRICE_I '/' L_UNITPRICE_I W_EINE-BPRME INTO W_IFINAL-FININFPRI.
        ENDIF.
        W_MAIN-PEINH = W_EINE-PEINH.
        CLEAR: L_CPRICE_I,
               L_UNITPRICE_I,
               W_EINE,
               W_KONM2,
               W_KONP_P,
               W_EKPO,
               W_KONM_P,
               W_A017_P.
*--------End of Change EXT-SAP-180 23rd April 2007
      ENDIF.
* MARKET PRICE
*  Begin of Changes  CON-SAP-99  11/12/2006                            *
*clear
      CLEAR : L_PERPRICE.
*  End of Changes  CON-SAP-99  11/12/2006                              *
      IF W_IFINAL-CPRICE IS NOT INITIAL.
        L_PERPRICE = W_IFINAL-CPRICE.
      ELSE.
        L_PERPRICE = W_IFINAL-INFOREC.
      ENDIF.
      L_PERUNIT  = W_MAIN-PEINH. " fetching the unit at contract/inforecord price level
*  Begin of Changes  CON-SAP-99  11/12/2006                            *
      W_IFINAL-MPRICE = L_PERPRICE.
*    Begin of Changes      EXT-SAP-180    02APR2007          *
      CLEAR W_A049_T.
      SORT T_A049 BY EKORG MATNR.
      READ TABLE T_A049 INTO W_A049_T
                     WITH KEY EKORG = W_MAIN-EKORG
                              MATNR = W_MAIN-MATNR
                     BINARY SEARCH.
      IF SY-SUBRC EQ 0.
        CLEAR: W_A049_T.
        SORT T_KONP_M BY KNUMH.
        LOOP AT T_A049 INTO W_A049_T                        "03APR07
                       WHERE EKORG = W_MAIN-EKORG
                       AND   MATNR = W_MAIN-MATNR.
* Following IF condition is to check whether the dates given in the selection criteria
* are falling into the date ranges of the records of A049.
          IF ( W_A049_T-DATBI GE P_VDATE

Similar Messages

  • Difference between using FM and class in alv

    does anyone know what's the main difference between using FM to create alv  and using class to create alv?
    in what condition we usually use FM or class?

    using FM  we can create Classical and Interactive ALV Reports.
    The classes are used to create the ALV Reports with OOPS concept.
    Check this for basic concepts of OOPS
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b6cae890-0201-0010-ef8b-f970a9c41d47
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/1591ec90-0201-0010-3ba8-cdcd500b17cf
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20display%20data%20in%20alv%20grid%20using%20object%20oriented%20programming.doc
    Tabstrip
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/022ba607-0301-0010-e382-fdedca553f5f
    Editable ALV
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/ec31e990-0201-0010-f4b6-c02d876ce033
    Tree
    http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm
    General Tutorial for OOPS
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
    Reward Points if useful

  • List display for ALV using class and methods

    Hi friends
    I want the list display for the ALV using Class and methods
    which class and methods i can use.
    Here we can't use the REUSE_ALV_LIST_DISPLAY and also GRID
    I was done GRID display using class and methods but i want only list display for using class.
    plz Give me sample code of list display not for grid.
    Thanks
    Nani.

    hi
    please check with this code...
    declare grid and container.
    DATA : o_alvgrid TYPE REF TO cl_gui_alv_grid,
    o_dockingcontainer TYPE REF TO cl_gui_docking_container,
    i_fieldcat TYPE lvc_t_fcat,"fieldcatalogue
    w_layout TYPE lvc_s_layo."layout
    If any events like double click,etc., are needed we have to add additional functionality.
    call the screen in program.
    Then , create the container as follows
    IF cl_gui_alv_grid=>offline( ) IS INITIAL.
    CREATE OBJECT o_dockingcontainer
    EXPORTING
    ratio = '95'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6.
    ENDIF.
    CREATE OBJECT o_alvgrid
    EXPORTING
    i_parent = o_dockingcontainer.
    Build the fieldcatalog
    create a output structure in SEll for the ALV output
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
    i_structure_name = <alv output>
    CHANGING
    ct_fieldcat = i_fieldcat[]
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE i030."Error in building the field catalogue
    LEAVE LIST-PROCESSING.
    ENDIF.
    *If you need to modify the field catalog,modify it using field sysmbols
    *setting the layout
    w_layout-grid_title = title.
    w_layout-zebra = 'X'.
    then displaying the output
    CALL METHOD o_alvgrid->set_table_for_first_display
    EXPORTING
    i_save = 'A'
    is_layout = w_layout
    CHANGING
    it_outtab = i_output[]
    it_fieldcatalog = i_fieldcat[]
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc <> 0.
    MESSAGE i032 ."Error in Displaying
    LEAVE LIST-PROCESSING.
    ENDIF.
    *After that in PAI of the screen, you need to free the *object while going back from the screen(according to *your requirement)
    MODULE user_command_9001 INPUT.
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    PERFORM f9600_free_objects:
    USING o_alvgrid 'ALV' text-e02,
    USING o_dockingcontainer 'DOCKING'
    text-e01.
    LEAVE PROGRAM.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_9001 INPUT
    *in the program, write the follwoing code
    FORM f9600_free_objects USING pobject
    value(ptype)
    value(ptext).
    DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
    CASE ptype.
    WHEN 'ALV'.
    l_objectalv = pobject.
    IF NOT ( l_objectalv IS INITIAL ).
    CALL METHOD l_objectalv->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, l_objectalv.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'DOCKING'.
    DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
    lobjectdock = pobject.
    IF NOT ( lobjectdock IS INITIAL ).
    CALL METHOD lobjectdock->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectdock.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'CONTAINER'.
    DATA: lobjectcontainer TYPE REF TO cl_gui_container.
    lobjectcontainer = pobject.
    IF NOT ( lobjectcontainer IS INITIAL ).
    CALL METHOD lobjectcontainer->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectcontainer.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN OTHERS.
    sy-subrc = 1.
    PERFORM f9700_error_handle USING
    text-e04.
    ENDCASE.
    ENDFORM. " f9600_free_objects
    FORM f9700_error_handle USING value(ptext).
    IF sy-subrc NE 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
    EXPORTING
    titel = text-e03
    txt2 = sy-subrc
    txt1 = ptext.
    ENDIF.
    endform.
    also check with this
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
    Hope this helps
    if it helped, you can acknowledge the same by rewarding
    regards
    dinesh

  • User_command - Link ALV o/p with ME33K

    Good day Friends,
    I have to link my ALV o/p with ME23N OR ME53N OR ME33K according to user Selection ( Purchase Order, Purchase Requistion or Outline agreement)
    For ME23N & ME53N it's working successfully.
    For ME33K - It's linking with the o/p but not acception the i/p value.
    (Ex. I am clicking on ouline agreement value 25000013 or any other value, but it always shows the ME33K screen of outline agreement no. 25000025)
    Giving you the code for Reference ---
    In debugging for rs_selfield-value is giving the value as selected value (required value).
    I am unable to get where it get changed.
    FORM user_command USING r_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      READ TABLE it_final INDEX rs_selfield-tabindex.
      CASE r_ucomm.
        WHEN '&IC1'.   " Hotspot
          IF rs_selfield-fieldname EQ 'BANFN' AND
             rs_selfield-value EQ it_final-banfn.
            IF rs_selfield-value IS NOT INITIAL.
              SET PARAMETER ID : 'BAN' FIELD rs_selfield-value.
              CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.
            ENDIF.
          ELSEIF rs_selfield-fieldname EQ 'KONNR' AND
             rs_selfield-value EQ it_final-konnr.
            IF rs_selfield-value IS NOT INITIAL.                          
              SET PARAMETER ID : 'VRT' FIELD rs_selfield-value.   " Here Value is Correct in debugging
              CALL TRANSACTION 'ME33K' AND SKIP FIRST SCREEN.
            ENDIF.
          ELSEIF rs_selfield-fieldname EQ 'EBELN' AND
             rs_selfield-value EQ it_final-ebeln.
            IF rs_selfield-value IS NOT INITIAL.
              SET PARAMETER ID : 'BES' FIELD rs_selfield-value.
              CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
            ENDIF.
          ENDIF.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: it_final.
    ENDFORM.                    "USER_COMMAND

    Hi,
    Based on the Requirement you need to use the one of the Following 3  Parameter IDs
          " Check the parameter ids  CTR  SAG VRT
    In Your Code
    ELSEIF rs_selfield-fieldname EQ 'KONNR' AND
             rs_selfield-value EQ it_final-konnr.
            IF rs_selfield-value IS NOT INITIAL.                          
              SET PARAMETER ID : 'VRT' FIELD rs_selfield-value.   " Here Use CTR and SAG as Parameter IDs and check
    "SET PARAMETER ID : 'CTR' FIELD rs_selfield-value.
    "SET PARAMETER ID : 'SAG' FIELD rs_selfield-value.
              CALL TRANSACTION 'ME33K' AND SKIP FIRST SCREEN.
            ENDIF.
    Cheerz
    Ram

  • How can I trigger a USER_COMMAND for alv grid "toolbar" ???

    Hi,
    i have the standard ALV Grid "toolbar" and if i click to the Button "&LOCAL&COPY_ROW" than i want try to make a Refresh to my ALV Table in the Event "afteruser_command"_!!!!
    Here is the implementation of my Event *"afteruser_command":*_
    METHOD on_after_user_command.
    ........DATA: ls_stable TYPE lvc_s_stbl.
    .....CASE e_ucomm.
    .....WHEN '&LOCAL&COPY_ROW'.
    ........MESSAGE 'LOCAL_COPY_ROW' TYPE 'S' DISPLAY LIKE 'E'.
    ........ls_stable-row = 'X'.
    ........ls_stable-col = 'X'.
    ........CALL METHOD gr_grid_d0100->refresh_table_display
    ..............EXPORTING
    .......................is_stable      = ls_stable
    ..............EXCEPTIONS
    .......................finished       = 1
    .......................OTHERS         = 2.
    ......ENDCASE.
      ENDMETHOD.   
    But it doesnt work.
    Is there another function code for the Copy Button????
    Thanks
    Ersin

    Hello Ersin,
    the events "after_user_command", "before_user_command" and "user_command" will not be fired when selecting this command!
    In my opinion, there is no solution, to fire these events, using this alv-function!
    But there is a trick:
    1. Register on the event "toolbar" with an own method:
          toolbar_own          for event toolbar of cl_gui_alv_grid
                                       importing e_object
                                              e_interactive,
    In this method change the function code of "&LOCAL&COPY_ROW", but don´t change the row of the entry, because the button should appear on the same place in the toolbar:
        field-symbols: <ls_toolbar>  type stb_button.
        read table e_object->mt_toolbar with key function = '&LOCAL&COPY_ROW'
                                        assigning <ls_toolbar>.
        if sy-subrc = 0.
          <ls_toolbar>-function = 'COPYROW_OWN'.
        endif.
    2. Register on the event "user_command" ( I think, that´s clear ):
          user_cmd_own           for event user_command
                                              of cl_gui_alv_grid
                                              importing e_ucomm,
    ( don´t forget the set handler-commands for both events:
      set handler po_alv_own->user_cmd_own              for po_alv_own.
      set handler po_alv_own->toolbar_own               for po_alv_own.     )
    3. Now you can react in the method "user_command" on your own function code:
        case e_ucomm.
          when 'COPYROW_OWN'.
            perform copy_row using    me
                             changing gt_bis_cf_out.
    Sample code for copying the current line:
    FORM COPY_ROW  using    po_alv_own          type ref to gcl_alv_own
                   changing pt_table_alv      type gt_table_alv_t.
      data: l_index         type i,
            ls_table_alv   type gs_table_alvt_t.
      call method po_alv_own->get_current_cell
         importing
           e_row     = l_index.
    *      e_value   =
    *      e_col     =
    *      es_row_id =
    *      es_col_id =
    *      es_row_no =
      "read the current line:
      read table pt_table_alv index l_index
                               into ls_table_alv_out.
      "some changes for the new row:
      clear: ls_table_alv-style,
             ls_table_alv-tabix.
      "insert the new line:
      add 1 to l_index.
      insert ls_table_alv into pt_table_alv index l_index.
      po_alv_own->refresh( ).
    ENDFORM.                    " COPY_ROW
    In this manner the events "after_user_command", "before_user_command" are fired, too!
    For information: My problem was, that the ALV-function copied the style-information too, so in the new line, some fields are not editable. At least his field must be cleared!
    Best regard
    Thomas Scheuermann

  • Creating Header and Footer in ALV

    hi,
    can anyone please tell how will you create Header and Footer in ALv and Classical Report.

    Hi,
    In classical report use events 'top-of-page' for header and 'end-of-page' for footer.
    in ALV
    follow this link
    http://www.sap-img.com/abap/test-alv-display-with-header-footer.htm
    http://sap.ittoolbox.com/groups/technical-functional/sap-dev/header-footer-display-in-alv-grid-for-layout-description-344391
    Regards and Best wishes.

  • Header and Footer in ALV.. URGENT

    Hi All,
    I want to print Header and Footer in ALV list/grid. Like in header, i want page no.( 1 of 10), UserName, Report Name etc.. and in Footer, I need selection screen criteria. For this I am using a function module (FM_SECECTOIN_CRITERIA_PRINT).
    Where exactly should i code this part in my program.
    Regards,
    Parvez.

    Check this link -
    http://www.sap-img.com/abap/test-alv-display-with-header-footer.htm
    http://www.sap-img.com/fu037.htm
    http://www.sap-img.com/abap-function.htm
    Regards,
    Amit

  • How to use pf-status u2018menuu2019  in ALV report ?

    Hi Friends,
    How to use pf-status u2018menuu2019  in ALV report ?
    I want to use back button ( F3). whenever press it should show
    another report.
    I used  subroutine
    form SUB_ERROR_OUTPUT USING RT_EXTAB TYPE SLIS_T_EXTAB .
    SET PF-STATUS 'ZMENU' EXCLUDING RT_EXTAB.  u201C( the button name is u201C back u201C)
    CASE SY-UCOMM.
    *WHEN '&F03'.
    WHEN 'BACK'
    ( my coding is there ).
    endcase.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PF_STATUS_SET          = 'SUB_ERROR_OUTPUT'
    but it is  executing, working the back button but not showing another report .
    any other procedure to use back button in alv report ?
    plz any idea .
    For correct answer  reword most.
    Thanking you.

    Purchase day Book .
    Data to be down loaded / printed for EDP dept. CGL.
    CGL - Requirement .
    WRITTEN  BY : ADI.****
    *CONSULTANT : SANJAY JAJOO..
    AS PER DP REQUIREMENT.
    -CHANGED BY    :    KRISHNA MOHAN  (15/01/2002)--
    -CHANGE REQ BY :    JAJU S--
    -DESCRIPTION   :    SUMMRY BY TAX CODE WISE & GL CODE WISE--
    ---MODIFIED LINES: -
    ---CHANGED BY    :    -
    ---CHANGE REQ BY :    -
    ---DESCRIPTION   :    -
    ---MODIFIED LINES: -
    *---changed by    :    sanjay jajoo on 23/08
    *---changed req by:    Ranka
    *---Description   :    Inserting Range of period as sel field
      changed by    :    krishna mohan
      func. consultant:  sanjay jajoo
    REPORT ZMMPURDB MESSAGE-ID 00
                    LINE-SIZE 255
                    LINE-COUNT 60
                    NO STANDARD PAGE HEADING .
    TABLES :   MKPF   ,  MSEG  ,SKAT,
               EKKO   ,  EKPO  , EKBE ,
               BSEG   ,  BKPF  , BSET ,
               T009B  ,  T001  , T007S ,
               T001W  ,  T001K ,LFA1.
    ******Table deactivated on 30/8/2000------jaju
    *tables : zcgltaxatn .
    DATA  : ZFILE1(65) VALUE '/DOWNLOAD/'.
    DATA  : ZFILE2(65) .
    DATA  : ZFILE(30) TYPE C VALUE '/DOWNLOAD/'.
    DATA   : ZMON(2).
    DATA : ZTOTAL(11) TYPE N.
    DATA: ZTOT1 TYPE P DECIMALS 2.
    DATA: ZTXT LIKE SKAT-TXT50.
    TYPES: BEGIN OF COMPANY ,
    HKONT LIKE BSEG-HKONT,
    TOTAL LIKE BSEG-DMBTR,
    END OF COMPANY.
    DATA: COMP TYPE COMPANY,
          COMPTAB TYPE HASHED TABLE OF COMPANY WITH UNIQUE KEY HKONT
          WITH HEADER LINE.
    DATA : NEXT LIKE BSEG-BUZEI.           "A.A. (28/03/2000)
    DATA : DOC LIKE BSEG-BELNR.            "A.A. (28/03/2000)
    DATA  S_GSBER.
    DATA: CTR TYPE I.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-B01.
    PARAMETERS : T_BUKRS LIKE T001-BUKRS OBLIGATORY MEMORY ID BUK .
    ***********CH--ID- ADI- 29 / 09 / 1999
    SELECT-OPTIONS : ZGL FOR BSEG-HKONT OBLIGATORY.
    ***********CH--ID- ADI- 29 / 09 / 1999
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(9) TEXT-C01 .
    PARAMETERS : POPER RADIOBUTTON GROUP RAD1 .
    SELECTION-SCREEN COMMENT 13(7) TEXT-C02 .
    PARAMETERS : MONTH RADIOBUTTON GROUP RAD1 .
    SELECTION-SCREEN COMMENT 23(8) TEXT-C03 .
    SELECTION-SCREEN POSITION 33 .
    commented on 22/08 sanjay jajoo
    *PARAMETERS :  T_MONAT LIKE BKPF-MONAT .
    SELECTION-SCREEN END OF LINE.
    PARAMETERS : T_GJAHR LIKE BKPF-GJAHR OBLIGATORY .
    SELECTION-SCREEN SKIP 1.
    SELECT-OPTIONS : S_DOCTYP FOR BKPF-BLART,
                     S_VENDOR FOR LFA1-LIFNR  MATCHCODE  OBJECT KRED,
                     S_MATNR FOR BSEG-MATNR NO-DISPLAY,
                    T_BUDAT FOR MKPF-BUDAT NO-EXTENSION MODIF ID DAT,
                    p_gsber FOR bseg-gsber  OBLIGATORY,
                     P_GSBER FOR BSEG-GSBER,
    mod starts for inserting range of period - sanjay jajoo
                     T_MONAT FOR BKPF-MONAT OBLIGATORY.
    mod ends
    *SELECT-OPTIONS: br_blart FOR mkpf-blart.
    *Select-options:  br_blart for bkpf-blart.
    SELECTION-SCREEN END OF BLOCK B1 .
    Start of Delete by B.Elan on 23/12/2005
    *PARAMETERS : errors AS CHECKBOX .
    *PARAMETERS : summary AS CHECKBOX .
    *PARAMETERS : nodetail AS CHECKBOX .
    **selection-screen skip 2.
    *SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-b03.   "<<<
    *Add
    *PARAMETER : stax_reg RADIOBUTTON GROUP rad2 .                   "<<<
    *Add
    *PARAMETER : pur_db RADIOBUTTON GROUP rad2 .                     "<<<
    *Add
    *SELECTION-SCREEN END OF BLOCK b3 .     "<<< Add
    *SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-b02.
    *PARAMETERS : display RADIOBUTTON GROUP grp1 ,
                dload RADIOBUTTON GROUP grp1.
    *PARAMETERS : fname1 LIKE rlgrap-filename .
    *DATA : zdoc LIKE bseg-belnr.
    *DATA : fname LIKE rlgrap-filename.
    *SELECTION-SCREEN END OF BLOCK b2 .
    End of Delete by B.Elan on 23/12/2005
    Start of Insert by B.Elan on 23/12/2005
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(5) TEXT-C01.
    PARAMETER : PUR_DB RADIOBUTTON GROUP RAD2.
    SELECTION-SCREEN COMMENT 10(25) TEXT-C06.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(5) TEXT-C01.
    PARAMETERS : MAT_SM RADIOBUTTON GROUP RAD2.
    SELECTION-SCREEN COMMENT 10(25) TEXT-C04.
    SELECTION-SCREEN COMMENT 35(5) TEXT-C01.
    PARAMETERS : VEN_SM RADIOBUTTON GROUP RAD2.
    SELECTION-SCREEN COMMENT 44(20) TEXT-C05.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(5) TEXT-C01.
    PARAMETERS : MAT_DT RADIOBUTTON GROUP RAD2.
    SELECTION-SCREEN COMMENT 10(25) TEXT-C07.
    SELECTION-SCREEN COMMENT 35(5) TEXT-C01.
    PARAMETERS : VEN_DT RADIOBUTTON GROUP RAD2.
    SELECTION-SCREEN COMMENT 44(20) TEXT-C08.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK B2.
    End of Insert by B.Elan on 23/12/2005
    Hard coded values used in the program
    added by krishna mohan on 09/02/02
    DATA : BEGIN OF IT_MSEG OCCURS 0,
            BELNR LIKE BSEG-BELNR,
            MBLNR LIKE MSEG-MBLNR,
            EBELN LIKE BSEG-EBELN,
            EBELP LIKE BSEG-EBELP,
          END OF IT_MSEG.
    mod ends
    Start of Insert by B.Elan on 23/12/2005
    *--vikky
    DATA : BEGIN OF IT_FINAL OCCURS 0,
             MATNR LIKE MARA-MATNR,
             BLART LIKE BKPF-BLART,         "  doctype
             BELNR LIKE BSEG-BELNR,         "sr - nO  10
             XBLNR LIKE BKPF-XBLNR ,        " Bill-no  16
             NAME1_VENDOR(25),
             "lfa1-name1,   " Vendor Name 35
             HKONT LIKE BSEG-HKONT ,        " Alloc-cd  10
             MWSKZ LIKE EKPO-MWSKZ ,        " St-cd     2
             BUDAT LIKE BKPF-BUDAT ,        " Bill-dt  10
             DUE_DATE LIKE BSEG-ZFBDT ,     " Due date 10
             PON    LIKE EKKO-EBELN ,                           " PON 10
             MAKTX LIKE MAKT-MAKTX,         "Material text 40
             MBLNR LIKE MSEG-MBLNR,
             QTY(8) TYPE P DECIMALS 2  ,                        "Qty 11
             RATE(9) TYPE P DECIMALS 2  ,                       "Rate11
             DISCOUNT(7) TYPE P DECIMALS 2,  "DISCOUNT 11
             PROD-AMT(9) TYPE P DECIMALS 2,
                                                                "AMOUNT 13
             EXCISE(8) TYPE P DECIMALS 2 ,   "eXCISE TAX 11
             SALES(5) TYPE P DECIMALS 2 ,    "SALES TAX   11
             FREIGHT(9) TYPE P DECIMALS 2,   "FREIGHT     11
             OTHERS(11) TYPE P DECIMALS 2,    " OTHERS     11
             TOTAL(9) TYPE P DECIMALS 2,     "TOTAL       17
           END OF IT_FINAL.
    *DATA : BEGIN OF IT_FINAL OCCURS 0,
            MATNR LIKE MARA-MATNR,
            BLART LIKE BKPF-BLART,         "  doctype
            BELNR LIKE BSEG-BELNR,         "sr - nO  10
            XBLNR LIKE BKPF-XBLNR ,        " Bill-no  16
            NAME1_VENDOR(25),
            "lfa1-name1,   " Vendor Name 35
            HKONT LIKE BSEG-HKONT ,        " Alloc-cd  10
            MWSKZ LIKE EKPO-MWSKZ ,        " St-cd     2
            BUDAT LIKE BKPF-BUDAT ,        " Bill-dt  10
            DUE_DATE LIKE BSEG-ZFBDT ,     " Due date 10
            PON    LIKE EKKO-EBELN ,                           " PON  10
            MAKTX LIKE MAKT-MAKTX,         "Material text 40
            MBLNR LIKE MSEG-MBLNR,
            QTY(13) TYPE P DECIMALS 2  ,                       "Qty 11
            RATE(13) TYPE P DECIMALS 2  ,                      "Rate 11
            DISCOUNT(13) TYPE P DECIMALS 2,  "DISCOUNT 11
            PROD-AMT(13) TYPE P DECIMALS 2,
                                                               "AMOUNT 13
            EXCISE(13) TYPE P DECIMALS 2 ,   "eXCISE TAX 11
            SALES(13) TYPE P DECIMALS 2 ,    "SALES TAX   11
            FREIGHT(13) TYPE P DECIMALS 2,   "FREIGHT     11
            OTHERS(13) TYPE P DECIMALS 2,    " OTHERS     11
            TOTAL(13) TYPE P DECIMALS 2,     "TOTAL       17
          END OF IT_FINAL.
    *--vikky
    DATA : BEGIN OF IT_FINAL_VN OCCURS 0,
               NAME1_VENDOR(25),
               "lfa1-name1,   " Vendor Name 35
               MATNR LIKE MARA-MATNR,
               BLART LIKE BKPF-BLART,         "  doctype
               BELNR LIKE BSEG-BELNR,         "sr - nO  10
               XBLNR LIKE BKPF-XBLNR ,        " Bill-no  16
               HKONT LIKE BSEG-HKONT ,        " Alloc-cd  10
               MWSKZ LIKE EKPO-MWSKZ ,        " St-cd     2
               BUDAT LIKE BKPF-BUDAT ,        " Bill-dt  10
               DUE_DATE LIKE BSEG-ZFBDT ,     " Due date 10
               PON    LIKE EKKO-EBELN ,                         " PON  10
               MAKTX LIKE MAKT-MAKTX,         "Material text 40
               MBLNR LIKE MSEG-MBLNR,
               QTY(8) TYPE P DECIMALS 2  ,                      "Qty 11
               RATE(9) TYPE P DECIMALS 2  ,                     "Rate 11
               DISCOUNT(7) TYPE P DECIMALS 2,  "DISCOUNT 11
               PROD-AMT(9) TYPE P DECIMALS 2,
                                                                "AMOUNT 13
               EXCISE(5) TYPE P DECIMALS 2 ,   "eXCISE TAX 11
               SALES(5) TYPE P DECIMALS 2 ,    "SALES TAX   11
               FREIGHT(5) TYPE P DECIMALS 2,   "FREIGHT     11
               OTHERS(9) TYPE P DECIMALS 2,    " OTHERS     11
               TOTAL(9) TYPE P DECIMALS 2,     "TOTAL       17
           END OF IT_FINAL_VN.
    End of Insert by B.Elan on 23/12/2005
    DATA: BEGIN OF ITAB_DISPLAY OCCURS 0,
            BLART LIKE BKPF-BLART,         "  doctype
            BELNR LIKE BSEG-BELNR,         "sr - nO  10
            XBLNR LIKE BKPF-XBLNR ,        " Bill-no  16
            NAME1_VENDOR(25),              "lfa1-name1,   " Vendor Name 35
            HKONT LIKE BSEG-HKONT ,        " Alloc-cd  10
            MWSKZ LIKE EKPO-MWSKZ ,        " St-cd     2
            BUDAT LIKE BKPF-BUDAT ,        " Bill-dt  10
            DUE_DATE LIKE BSEG-ZFBDT ,     " Due date 10
            PON    LIKE EKKO-EBELN ,                            " PON  10
            MAKTX LIKE MAKT-MAKTX,         "Material text 40
           QTY(8) TYPE P DECIMALS 2  ,                          "Qty 11
                                                                "qty 5
         RATE(5) TYPE P DECIMALS 2  ,                         "Rate 11
         mod starts on 21/08 for inc size to 7
           RATE(9) TYPE P DECIMALS 2  ,                         "Rate 11
                                                                "Rate 7
         mod ends -  sanjay jajoo 21/08
           DISCOUNT(7) TYPE P DECIMALS 2,  "DISCOUNT 11
           PROD-AMT(9) TYPE P DECIMALS 2,                       "AMOUNT 13
           EXCISE(5) TYPE P DECIMALS 2 ,   "eXCISE TAX 11
           SALES(5) TYPE P DECIMALS 2 ,    "SALES TAX   11
           FREIGHT(5) TYPE P DECIMALS 2,   "FREIGHT     11
           OTHERS(9) TYPE P DECIMALS 2,    " OTHERS     11 " added by vik on
    *21.08.2008
           TOTAL(9) TYPE P DECIMALS 2,     "TOTAL       17
           TOTAL1(9) TYPE P DECIMALS 2,
           MATNR LIKE MARA-MATNR,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
        END OF ITAB_DISPLAY.
    DATA: BEGIN  OF ITAB_TOTAL1 OCCURS 0,
          HKONT LIKE BSEG-HKONT,
          TOTAL TYPE P DECIMALS 2,
          TXT50 LIKE SKAT-TXT50,
          END OF ITAB_TOTAL1.
    DATA: BEGIN  OF ITAB_KONV OCCURS 0,
            KNUMV LIKE KONV-KNUMV,
            KPOSN LIKE KONV-KPOSN,
            STUNR LIKE KONV-STUNR,
            ZAEHK LIKE KONV-ZAEHK,
            KSCHL LIKE KONV-KSCHL,
            KWERT LIKE KONV-KWERT,
          END OF ITAB_KONV.
    DATA:BEGIN OF ITAB_RATE_MODVAT OCCURS 0,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MENGE LIKE EKPO-MENGE,
           BRTWR LIKE EKPO-BRTWR,
           KZWI5 LIKE EKPO-KZWI5,
           KNUMV LIKE EKKO-KNUMV,
           MATNR LIKE EKPO-MATNR,
           TXZ01 LIKE EKPO-TXZ01,
         END OF ITAB_RATE_MODVAT.
    DATA: BEGIN OF ITAB_PO OCCURS 0,
            EBELN LIKE EKPO-EBELN,
            EBELP LIKE EKPO-EBELP,
          END OF ITAB_PO.
    DATA: BEGIN OF ITAB_PO_ITEM OCCURS 0,
            BELNR LIKE BSEG-BELNR,
            EBELN LIKE BSEG-EBELN,
            BUZID LIKE BSEG-BUZID,
            XBLNR LIKE BKPF-XBLNR,
            MATNR LIKE BSEG-MATNR,
            EBELP LIKE BSEG-EBELP,
            MENGE LIKE BSEG-MENGE,
            WRBTR LIKE BSEG-WRBTR,
            EXCISE LIKE BSEG-DMBTR, " ADDED ON 21/01/02 FOR 27500 EXCISE
          SGTXT LIKE BSEG-SGTXT, " ADDED ON 24/01/02
            FLAG,
          END OF ITAB_PO_ITEM.
    DATA:BEGIN OF I_LFA1 OCCURS 0,
           LIFNR LIKE BSEG-LIFNR,
         END OF I_LFA1.
    DATA: BEGIN  OF I_VENDOR OCCURS 0,
            LIFNR LIKE LFA1-LIFNR,
            NAME1 LIKE LFA1-NAME1,
          END OF I_VENDOR.
    DATA: BEGIN OF ITAB_PO_OTHERS OCCURS  0,
            BELNR LIKE BSEG-BELNR,
            MATNR LIKE BSEG-MATNR,
            EBELN LIKE BSEG-EBELN,
            EBELP LIKE BSEG-EBELP,
            MENGE LIKE BSEG-MENGE,
            WRBTR LIKE BSEG-WRBTR,
          END OF ITAB_PO_OTHERS.
    DATA: BEGIN OF ITAB_FINAL OCCURS 0,
            BUKRS LIKE BSEG-BUKRS,
            BELNR LIKE BSEG-BELNR,
            GJAHR LIKE BSEG-GJAHR,
            BUZEI LIKE BSEG-BUZEI,
            BUZID LIKE BSEG-BUZID,
            SHKZG LIKE BSEG-SHKZG,
            EBELN LIKE BSEG-EBELN,
            EBELP LIKE BSEG-EBELP,
            MENGE LIKE BSEG-MENGE,
            WRBTR LIKE BSEG-WRBTR,
            MATNR LIKE BSEG-MATNR,
            HKONT LIKE BSEG-HKONT, " ADDED ON 21/01/02 FOR 27500 EXCISE
            SGTXT LIKE BSEG-SGTXT,         " ADDED ON 24/01/02 FOR SALES TAX
          END OF ITAB_FINAL.
    DATA : BEGIN OF ITAB OCCURS 100 ,
               MWSKZ LIKE EKPO-MWSKZ ,     " St-cd
               HKONT LIKE BSEG-HKONT ,     " Alloc-cd
               MBLNR LIKE MKPF-MBLNR ,     " Sr-No
               LIFNR LIKE LFA1-LIFNR ,     " Supp-cd
               XBLNR LIKE BKPF-XBLNR ,     " Bill-no
               BUDAT LIKE BKPF-BUDAT ,     " Bill-dt
               DUE_DATE LIKE BSEG-ZFBDT ,  " Due date
               PON    LIKE EKKO-EBELN ,    " PON
               BELNR LIKE BKPF-BELNR ,     " CCI no
               DMBTR LIKE BSEG-DMBTR ,     " Prod-amount
               EXCISE LIKE BSEG-DMBTR ,    " Excise / ModVAT
               ST_INV LIKE BSEG-DMBTR ,    " Sales Tax Loaded on Inv.
               ST_SET LIKE BSEG-DMBTR ,    " Sales Tax setoff .
               OCT_TOT LIKE BSEG-DMBTR ,   " A,A, (29/03/2000) Octroi chargs
               PT_PABLE LIKE BSEG-DMBTR ,  " Purchase tax payable
               ST_TOT LIKE BSEG-DMBTR ,    " Sales Tax total
               OTHR_CHRG LIKE BSEG-DMBTR , " Other chagres
               NEBTR LIKE BSEG-NEBTR,      " Total-amount
               NAME1_VENDOR LIKE LFA1-NAME1,   " Vendor Name
         END OF ITAB.
    DATA: BEGIN OF ITAB_DOC OCCURS 0,
            BELNR LIKE BKPF-BELNR,
            BLART LIKE BKPF-BLART,
          END OF ITAB_DOC.
    DATA : BEGIN OF DOCTAB OCCURS 100 ,
             MWSKZ LIKE BSEG-MWSKZ ,
             HKONT LIKE BSEG-HKONT ,
             BELNR LIKE BKPF-BELNR ,
    Changed By Pankaj              19.03.99
    Included field fiscal year
             GJAHR LIKE BKPF-GJAHR ,
             BUDAT LIKE BKPF-BUDAT ,
             XBLNR LIKE BKPF-XBLNR ,
             LIFNR LIKE LFA1-LIFNR ,
             ZTERM LIKE BSEG-ZTERM ,
             AMOUNT LIKE BSEG-DMBTR ,
             DMBTR  LIKE BSEG-DMBTR ,
             OTHR_CHRG LIKE BSEG-DMBTR ,
             MBLNR LIKE MKPF-MBLNR ,
             MJAHR LIKE MSEG-MJAHR ,
             DUE_DATE LIKE BSEG-ZFBDT ,
             PON    LIKE EKKO-EBELN ,
             JMO1  LIKE BSEG-DMBTR ,
             JMO2  LIKE BSEG-DMBTR ,
             JIP1  LIKE BSEG-DMBTR ,
             JIP2  LIKE BSEG-DMBTR ,
    ************CH-ID-ADI-START-28 / 09 / 1999
             JIP4 LIKE BSEG-DMBTR ,
             ZTUT LIKE BSEG-DMBTR ,
    *****************ABEY
             ZOCT LIKE BSEG-DMBTR ,
    *****************END
    ************CH-ID-ADI-START-28 / 09 / 1999
             ZSET  LIKE BSEG-DMBTR ,
             ZPTX  LIKE BSEG-DMBTR ,
             BLART LIKE BKPF-BLART ,
          END OF DOCTAB .
    Download for EDP    "EDP
    DATA : BEGIN OF DOWNLOAD OCCURS 100 ,
           SIGN1(1) ,
           TOT_VAL(11) TYPE N,
           SIGN2(1) ,
           TAXABLE(11) TYPE N ,
           SIGN3(1) ,
           TOT_TAX(11) TYPE N ,
           SIGN4(1) ,
           SURCHARG(9) TYPE N ,
           SIGN5(1) ,
           ST_AMT(9) TYPE N ,
           SIGN6(1) ,
           OTH_CHRG(9) TYPE N ,
    ******************************ch-adi-start-28 / 09 / 1999
           SIGN7(1),
           TOT(9) TYPE N,
    ******************************ch-adi-end-28 / 09 / 1999
           TYPE(1) TYPE N ,
           STKY1(1) TYPE N ,
           STBR(2) ,
           STDV(2) ,
           STCC(1) ,
           STKY(1) ,
           STDC(2) TYPE N ,
           STTYP(1) ,
           STCODE(2) ,
           STRATE(2) TYPE N ,
           STRTT(2) TYPE N ,
           SERIAL_NO(6) TYPE N ,
           STACP(9) ,
           BLANK1(3) ,
           STYRMN(6) ,
           BLANK2(7) TYPE C .
    DATA : END OF DOWNLOAD .
    DATA : BEGIN OF GLTAB OCCURS 5 ,
               MWSKZ LIKE BSEG-MWSKZ,      " << ADD A.A. (01.02.2000)
               HKONT LIKE BSEG-HKONT ,
               DMBTR LIKE BSEG-DMBTR ,     " Prod-amount
               EXCISE LIKE BSEG-DMBTR ,    " Excise / ModVAT
               ST_INV LIKE BSEG-DMBTR ,    " Sales Tax Loaded on Inv.
               ST_SET LIKE BSEG-DMBTR ,    " Sales Tax setoff .
               PT_PABLE LIKE BSEG-DMBTR ,  " Purchase tax payable
               ST_TOT LIKE BSEG-DMBTR ,    " Sales Tax total
               OTHR_CHRG LIKE BSEG-DMBTR , " Other Charges
               NEBTR LIKE BSEG-NEBTR.      " Total-amount
    DATA : END OF GLTAB .
    DATA : BEGIN OF ERRORTAB OCCURS 5 .
            INCLUDE STRUCTURE ITAB .
    DATA : END OF ERRORTAB .
    *- Start of change by Raj on 3-Spet-05
    DATA : V_TMPVAL TYPE P DECIMALS 2.
    *- End of change by Raj on 3-Spet-05
    DATA : STRING LIKE BKPF-AWKEY ,
           V_NO TYPE I,
           V_EBELN LIKE BSEG-EBELN,
           V_MATNR LIKE BSEG-MATNR. " ADDED ON 21/01/02 FOR BUZID = 'S'
    Start of Insert by B.Elan on 23/12/2005
    WORK AREA
    DATA : WA_DISPLAY LIKE ITAB_DISPLAY.
    DATA : V_UCOMM TYPE SY-UCOMM.
    CONSTANTS : C_X TYPE C VALUE 'X'.
    End of Insert by B.Elan on 23/12/2005
    AT SELECTION-SCREEN ON T_BUKRS.
      SELECT SINGLE * FROM T001 WHERE BUKRS = T_BUKRS .
      IF SY-SUBRC NE 0 .
        MESSAGE E368 WITH T_BUKRS TEXT-M01 .
      ENDIF .
    AT SELECTION-SCREEN ON T_MONAT.
    PERFORM check_period_year USING 'X'.   " COMMENTED
    AT SELECTION-SCREEN ON T_GJAHR.
    PERFORM check_period_year USING ' '.   "COMMENTED
    Start of Delete by B.Elan on 23/12/2005
    *AT SELECTION-SCREEN ON RADIOBUTTON GROUP grp1 .
    CLEAR fname .
    DATA : BEGIN OF xt247 OCCURS 12 .
             INCLUDE STRUCTURE t247 .
    DATA : END OF xt247 .
    CHECK dload EQ 'X' .
    REFRESH xt247 .
    IF poper EQ 'X' .
       MESSAGE e368 WITH text-m05 .
    ENDIF .
    CALL FUNCTION 'MONTH_NAMES_GET'
       TABLES
         month_names           = xt247
       EXCEPTIONS
         month_names_not_found = 1
         OTHERS                = 2.
    READ TABLE xt247 WITH KEY mnr = t_monat .
    CONCATENATE 'STAXSUMM.' xt247-ktx INTO fname .
    CONCATENATE  '
    DOWNLOAD\'   fname    INTO fname1.
    CONCATENATE  zfile1   fname    INTO   zfile2.
    CONDENSE fname1 NO-GAPS.
    CONDENSE zfile2 NO-GAPS.
    CONCATENATE 'STAXSUMM.' xt247-ktx INTO fname .
    End of Delete by B.Elan on 23/12/2005
    AT SELECTION-SCREEN OUTPUT .
      LOOP AT SCREEN .
        IF SCREEN-NAME EQ 'FNAME' .
          SCREEN-INPUT = 0.
          MODIFY SCREEN .
        ENDIF .
        IF SCREEN-GROUP2 EQ 'DBS' .
          SCREEN-ACTIVE = 0 .
          MODIFY SCREEN .
          IF SCREEN-NAME EQ 'BR_BLART-LOW' .
    Form the select option for the LDB .
            CLEAR BR_BLART . REFRESH BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
            BR_BLART-LOW = 'RE' .
            APPEND BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
            BR_BLART-LOW = 'SR' .
            APPEND BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
            BR_BLART-LOW = 'SP' .
            APPEND BR_BLART .       " ADD ON 11122003 JAJ
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
           br_blart-low = 'VI' .
            BR_BLART-LOW = 'ST'.
            APPEND BR_BLART .
            BR_BLART-LOW = 'S1'.
            APPEND BR_BLART .
            BR_BLART-LOW = 'P1'.
            APPEND BR_BLART .
            BR_BLART-LOW = 'PM'.
            APPEND BR_BLART .
            BR_BLART-LOW = 'R1'.
            APPEND BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
            BR_BLART-LOW = 'KR' .
            APPEND BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
    *************CH-ID-ADI---30 / 09 / 1999.
            BR_BLART-LOW = 'RA'.
            APPEND BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
            BR_BLART-LOW = 'EM'.
            APPEND BR_BLART .
            BR_BLART-SIGN = 'I' .
            BR_BLART-OPTION = 'EQ' .
            BR_BLART-LOW = 'EI' .
            APPEND BR_BLART .
          ENDIF .
        ENDIF .
        CHECK SCREEN-GROUP1 EQ 'DAT' .
        SCREEN-INPUT = 0.
        MODIFY SCREEN .
      ENDLOOP .
    START-OF-SELECTION .
    Block 1 - Selection of accounting documents in the posting period
    is done through the LDB
    GET BKPF .
    commented on 22/08
    CHECK BKPF-MONAT = T_MONAT.
      CHECK BKPF-MONAT IN T_MONAT.
      CHECK BKPF-GJAHR = T_GJAHR.
      CHECK BKPF-STBLG IS INITIAL .        "<<<< Reversed
    *CHECK bkpf-budat IN t_budat .
      CHECK BKPF-BUKRS EQ T_BUKRS .
      CHECK BKPF-BUKRS EQ T_BUKRS .
      CHECK BKPF-BSTAT EQ SPACE .          "<<< Sample docs
      CHECK BKPF-BLART EQ 'RE'             "MM-IV
        OR  BKPF-BLART EQ 'KR'             "FI-IV
      OR  bkpf-blart EQ 'VI'          "FI-IV Direct
    *************CH-ID-ADI-30 / 09  / 1999
      OR  bkpf-blart EQ 'RA'           "CASH CCI
      OR  bkpf-blart EQ 'EM'           "MAINTAINANCE
      OR  bkpf-blart EQ 'EI' .        "IDT
        OR BKPF-BLART EQ  'P1'
        OR BKPF-BLART EQ 'PM'
        OR  BKPF-BLART EQ 'R1'
        OR  BKPF-BLART EQ 'S1'
        OR  BKPF-BLART EQ 'ST'
        OR  BKPF-BLART EQ 'SR'      " ADD ON 101203 JAJ
        OR  BKPF-BLART EQ 'SP'.
    *************CH-ID-ADI-30 / 09  / 1999
      CLEAR DOCTAB .
      DOCTAB-BLART = BKPF-BLART .
      DOCTAB-BELNR = BKPF-BELNR .
      DOCTAB-BUDAT = BKPF-BUDAT .
      DOCTAB-XBLNR = BKPF-XBLNR .
    Added By Pankaj                   19.03.99
    Initializing fiscal year for document table
      DOCTAB-GJAHR = BKPF-GJAHR .
      APPEND DOCTAB.
    Tax details
    GET BSET .   " Commented because LDB gives wrong BSET entries
      " for some documents
      CASE BSET-KSCHL .
        WHEN 'JMO1' .
          DOCTAB-JMO1 = DOCTAB-JMO1 + BSET-HWSTE .
        WHEN 'JMO2' .
          DOCTAB-JMO2 = DOCTAB-JMO2 + BSET-HWSTE .
        WHEN 'JIP1' .
          DOCTAB-JIP1 = DOCTAB-JIP1 + BSET-HWSTE .
        WHEN 'JIP2' .
          DOCTAB-JIP2 = DOCTAB-JIP2 + BSET-HWSTE .
        WHEN 'ZSET' .
         break deven .
          DOCTAB-ZSET = DOCTAB-ZSET + BSET-HWSTE .
        WHEN 'ZPTX' .
          DOCTAB-ZPTX = DOCTAB-ZPTX + BSET-HWSTE .
      ENDCASE .
      DOCTAB-MWSKZ = BSET-MWSKZ.
      MODIFY DOCTAB INDEX SY-TABIX.
    Item details
    *changed by srinivas yerra.
    GET BSEG .
      IF BSEG-KOART = 'K' .              "<<< Vendor Line
    IF BSEG-KOART = 'K' .
    *end of chnages by srinivas yerra.
        DOCTAB-LIFNR = BSEG-LIFNR .
        IF NOT BSEG-ZTERM IS INITIAL .
          DOCTAB-ZTERM = BSEG-ZTERM .
          DOCTAB-DUE_DATE = BSEG-ZFBDT + BSEG-ZBD1T .
        ENDIF .
        IF BSEG-SHKZG EQ 'H' .             "<< Add credits
          DOCTAB-AMOUNT = DOCTAB-AMOUNT + BSEG-DMBTR .
        ELSE .                             "<< Subtr debits
          DOCTAB-AMOUNT = DOCTAB-AMOUNT - BSEG-DMBTR .
        ENDIF .
      ENDIF .
      CASE BSEG-KTOSL .
        WHEN 'WRX' .
          DOCTAB-PON = BSEG-EBELN .
          IF DOCTAB-MWSKZ IS INITIAL .
            DOCTAB-MWSKZ = BSEG-MWSKZ .
          ENDIF .
        WHEN 'BSX' .
    ***********ABEY
          IF NEXT = BSEG-BUZEI
             AND
             DOC = BSEG-BELNR
             AND
             ( BSEG-BUZID = 'M'
               OR
               BSEG-HKONT = 50765 ).
            DOCTAB-ZOCT = DOCTAB-ZOCT + BSEG-DMBTR.
            IF BSEG-SHKZG EQ 'H' .         "<< Subtr credits
              DOCTAB-OTHR_CHRG = DOCTAB-OTHR_CHRG - BSEG-DMBTR .
            ELSE .                         "<< Add debits
              DOCTAB-OTHR_CHRG = DOCTAB-OTHR_CHRG + BSEG-DMBTR .
            ENDIF .
          ENDIF .
    ************END
          IF BSEG-SHKZG EQ 'S' .
            DOCTAB-DMBTR = DOCTAB-DMBTR + BSEG-DMBTR .
          ELSE .
            DOCTAB-DMBTR = DOCTAB-DMBTR - BSEG-DMBTR .
          ENDIF .
        WHEN 'OCT' OR 'FRE' OR 'FR1' OR SPACE .
    *****CH-ID-ADI-30 / 09 /1999.
          IF ( ( BKPF-BLART = 'EM'  OR  BKPF-BLART = 'RA'  OR  BKPF-BLART =
          'EI')
           AND BSEG-KTOSL = SPACE ) OR  BSEG-MWSKZ = '9W' OR BSEG-MWSKZ =
           'K9' OR
                                                                BSEG-MWSKZ =
                                                                'X9'.
            DOCTAB-OTHR_CHRG = 0.
          ELSE.
    *********CH-ID-ADI--01 / 10 / 1999
         Other Charges only for accounts other than vendor acc.
            CHECK BSEG-BUZID NE 'T' .
            CHECK BSEG-BUZID NE 'P' .
            IF BSEG-KOART NE 'K' .
    *********ABEY (25/02/2000), (21/02/2000)
              IF BSEG-BUZID = 'F'
               OR BSEG-HKONT = 75461.
                NEXT = BSEG-BUZEI + 1.
                DOC = BSEG-BELNR.
                DOCTAB-ZOCT = DOCTAB-ZOCT + BSEG-DMBTR.
              ENDIF.
              IF BSEG-BUZEI = NEXT
                 AND
                 ( BSEG-BUZID = 'M'
                   OR
                   BSEG-HKONT = 50765 ).
                DOCTAB-ZOCT = DOCTAB-ZOCT + BSEG-DMBTR.
              ENDIF.
    *********END
              IF BSEG-SHKZG EQ 'H' .       "<< Subtr credits
                DOCTAB-OTHR_CHRG = DOCTAB-OTHR_CHRG - BSEG-DMBTR .
              ELSE .                       "<< Add debits
                DOCTAB-OTHR_CHRG = DOCTAB-OTHR_CHRG + BSEG-DMBTR .
              ENDIF .
            ENDIF .
    *****NEXT-LINE ADDED BY ADI
          ENDIF .
    *************END.
      ENDCASE .
    *CHANGED BY SRINIVAS YERRA
    *MODIFY DOCTAB INDEX SY-TABIX.
      APPEND DOCTAB.
    *END OF CHANGES.
    PO History
    GET EKBE .
      CHECK DOCTAB-BELNR EQ EKBE-BELNR .
      DOCTAB-MBLNR = EKBE-LFBNR .
      DOCTAB-MJAHR = EKBE-LFGJA .
      MODIFY DOCTAB INDEX SY-TABIX .
    PERFORM show_indicator USING text-m02 .
    *PERFORM convert_data.
    END-OF-SELECTION .
    Data read from LDB is converted into printable format.
      PERFORM SHOW_INDICATOR USING TEXT-M04 .
      PERFORM CONVERT_DATA .
    Start of Delete by B.Elan on 23/12/2005
    IF stax_reg EQ 'X' .                 "<<< Add
       SORT itab BY mwskz hkont belnr .
    ELSE .                               "<<< Add
       SORT itab BY belnr .               "<<< Add
        SORT itab BY pon.
    ENDIF .                              "<<< Add
    Perform further operation based on user input
    IF display EQ 'X' .
       PERFORM write_itab.
       PERFORM write_data .
    ELSE .
      PERFORM download_data .
    ENDIF .
    End of Delete by B.Elan on 23/12/2005
    Start of Insert by B.Elan on 23/12/2005
      SORT ITAB BY BELNR.
      PERFORM WRITE_DATA.
      IF MAT_SM = C_X.
        PERFORM WRITE_MATERIAL_SUMMARY.
      ELSEIF MAT_DT = C_X.
        PERFORM WRITE_MATERIAL_DETAILS.
      ELSEIF VEN_SM = C_X.
        PERFORM WRITE_VENDOR_SUMMARY.
      ELSEIF VEN_DT = C_X.
        PERFORM WRITE_VENDOR_DETAILS.
      ENDIF.
    End of Insert by B.Elan on 23/12/2005
    Start of Insert by B.Elan on 23/12/2005
    AT USER-COMMAND.
      V_UCOMM = SY-UCOMM.
      CASE V_UCOMM.
        WHEN 'DETLS'.
          NEW-PAGE.
          PUR_DB = C_X.
          PERFORM CLEAR_DETAILS.
          PERFORM WRITE_DATA.
        WHEN 'MSUMRY'.
          PERFORM WRITE_MATERIAL_SUMMARY.
        WHEN 'MDETL'.
          PERFORM WRITE_MATERIAL_DETAILS.
        WHEN 'VSUMRY'.
          PERFORM WRITE_VENDOR_SUMMARY.
        WHEN 'VDETL'.
          PERFORM WRITE_VENDOR_DETAILS.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
    End of Insert by B.Elan on 23/12/2005
    *- - - - - - - - - End Of Execution .- - - - - - - - - - - - - - - - - -
    TOP-OF-PAGE .
      IF PUR_DB = C_X.
        PERFORM TOP_OF_PAGE.
        PERFORM TOP_OF_PAGE_PUR_DB.
      ELSEIF MAT_SM = C_X.
        PERFORM TOP_OF_PAGE.
        PERFORM TOP_OF_PAGE_MAT_SM.
      ELSEIF MAT_DT = C_X.
        PERFORM TOP_OF_PAGE.
        PERFORM TOP_OF_PAGE_MAT_DT.
      ELSEIF VEN_SM = C_X.
        PERFORM TOP_OF_PAGE.
        PERFORM TOP_OF_PAGE_VEN_SM.
      ELSEIF VEN_DT = C_X.
        PERFORM TOP_OF_PAGE.
        PERFORM TOP_OF_PAGE_VEN_DT.
      ENDIF.
    TOP-OF-PAGE DURING LINE-SELECTION.
      CASE V_UCOMM.
        WHEN 'DETLS'.
          PERFORM TOP_OF_PAGE.
          PERFORM TOP_OF_PAGE_PUR_DB.
        WHEN 'MSUMRY'.
          PERFORM TOP_OF_PAGE.
          PERFORM TOP_OF_PAGE_MAT_SM.
        WHEN 'MDETL'.
          PERFORM TOP_OF_PAGE.
          PERFORM TOP_OF_PAGE_MAT_DT.
        WHEN 'VSUMRY'.
          PERFORM TOP_OF_PAGE.
          PERFORM TOP_OF_PAGE_VEN_SM.
        WHEN 'VDETL'.
          PERFORM TOP_OF_PAGE.
          PERFORM TOP_OF_PAGE_VEN_DT.
      ENDCASE.
    *&      Form  WRITE_DATA
          text                                                           *
    FORM WRITE_DATA.
      DATA:     V_SALES LIKE ITAB_DISPLAY-SALES,
                V_RATE LIKE ITAB_DISPLAY-RATE,
                V_DISCOUNT LIKE ITAB_DISPLAY-DISCOUNT,
                V_PROD-AMT LIKE ITAB_DISPLAY-PROD-AMT,
                V_EXCISE1 LIKE ITAB_DISPLAY-EXCISE,
                V_EXCISE LIKE ITAB_DISPLAY-EXCISE,
                V_PON LIKE ITAB_DISPLAY-PON,
                V_OTHERS LIKE ITAB_DISPLAY-OTHERS,
                V_FREIGHT LIKE ITAB_DISPLAY-FREIGHT.
      CLEAR ITAB .
    Write the correct data i.e. tax code and G/L code both available .
      LOOP AT ITAB .
    *************CH-ID-ADI-30 / 09 / 1999
        IF ( ITAB-MWSKZ = '9W' OR ITAB-MWSKZ = 'K9' OR ITAB-MWSKZ = 'X9' )
                                                   AND ITAB-OTHR_CHRG NE 0 .
          ITAB-DMBTR = ITAB-OTHR_CHRG.
          ITAB-OTHR_CHRG = 0.
          MODIFY ITAB.
        ENDIF.
      ENDLOOP.
      LOOP AT ITAB.
        I_LFA1-LIFNR = ITAB-LIFNR.
        APPEND I_LFA1.
        CLEAR I_LFA1.
      ENDLOOP.
      SORT I_LFA1.
      DELETE ADJACENT DUPLICATES FROM I_LFA1 COMPARING ALL FIELDS.
      SELECT LIFNR
             NAME1
        FROM LFA1 INTO TABLE I_VENDOR
        FOR ALL ENTRIES IN I_LFA1 WHERE
                                       LIFNR = I_LFA1-LIFNR.
      FREE I_LFA1.
      LOOP AT ITAB.
        READ TABLE I_VENDOR WITH KEY LIFNR = ITAB-LIFNR .
        IF SY-SUBRC EQ 0.
          ITAB-NAME1_VENDOR = I_VENDOR-NAME1.
          MODIFY ITAB  TRANSPORTING NAME1_VENDOR.
        ENDIF.
      ENDLOOP.
      LOOP AT ITAB.
        IF NOT  ITAB-LIFNR IN S_VENDOR.
          DELETE ITAB.
        ENDIF.
      ENDLOOP.
      SELECT BUKRS  BELNR GJAHR BUZEI BUZID SHKZG EBELN EBELP ERFMG WRBTR
       MATNR HKONT SGTXT " ERFMG for MENGE,HKONT,SGTXT Added by KrishnaMohan
             INTO TABLE ITAB_FINAL
            FROM BSEG FOR ALL ENTRIES IN ITAB
            WHERE BUKRS = T_BUKRS AND                           "'1000' AND
                  BELNR = ITAB-BELNR AND
    *added by srinivas
                 hkont in zgl and
    *end
                  GJAHR = T_GJAHR AND
    *- Start of change by Raj on 030905
                 buzid IN ('W', 'M', 'K', 'S', 'F' , 'P' ) AND
                   BUZID IN ('W', 'M', 'K', 'S', 'F' , 'P' , 'T', ' ') AND
                   " ADD T 090206  JAJ
                   KOART <> 'K'   AND    " mod by vik on 21.08.2008" sjaj si
    *- End of change by Raj on 030905
    BUZID = P Added on 21/01/02 by Krishna Mohan
                  GSBER IN P_GSBER AND
                 gsber IN p_gsber OR gsber = ' ' AND
                  MATNR IN S_MATNR.
      SELECT BELNR BLART INTO TABLE ITAB_DOC FROM BKPF
                FOR ALL ENTRIES IN ITAB_FINAL WHERE
                           BUKRS = T_BUKRS AND                  "'1000' AND
                           BELNR  = ITAB_FINAL-BELNR AND
                           GJAHR = T_GJAHR AND
                           BLART NOT IN ('WA' , 'WE').
      SORT ITAB_DOC BY BELNR BLART.
      LOOP AT ITAB_DOC.
        IF NOT ITAB_DOC-BLART IN S_DOCTYP .
          DELETE ITAB_DOC.
        ENDIF.
      ENDLOOP.
      LOOP AT ITAB_FINAL.
        READ TABLE ITAB_DOC WITH KEY BELNR = ITAB_FINAL-BELNR BINARY SEARCH.
        IF SY-SUBRC NE 0.
          DELETE ITAB_FINAL.
        ENDIF.
      ENDLOOP.
      DELETE ITAB_FINAL WHERE BUZID = 'K' AND BUZEI = '1'.
      LOOP AT ITAB_FINAL WHERE SHKZG = 'H'.
        ITAB_FINAL-WRBTR = ITAB_FINAL-WRBTR * ( -1 ).
        MODIFY ITAB_FINAL TRANSPORTING WRBTR.
      ENDLOOP.
      LOOP AT ITAB_FINAL WHERE BUZID = 'M'.
        IF ITAB_FINAL-SGTXT NE ' '.
          TRANSLATE ITAB_FINAL-SGTXT TO UPPER CASE.
          MODIFY ITAB_FINAL.
        ENDIF.
      ENDLOOP.
      LOOP AT ITAB_FINAL .
        IF ITAB_FINAL-BUZID = 'W'.
          CLEAR V_MATNR.
          V_EBELN = ITAB_FINAL-EBELN.
          V_MATNR = ITAB_FINAL-MATNR.
          ITAB_PO_ITEM-BELNR = ITAB_FINAL-BELNR.
          ITAB_PO_ITEM-BUZID = ITAB_FINAL-BUZID.
          ITAB_PO_ITEM-MATNR = ITAB_FINAL-MATNR.
          ITAB_PO_ITEM-EBELN = ITAB_FINAL-EBELN.
          ITAB_PO_ITEM-EBELP = ITAB_FINAL-EBELP.
          ITAB_PO_ITEM-MENGE = ITAB_FINAL-MENGE.
          ITAB_PO_ITEM-WRBTR = ITAB_FINAL-WRBTR.
          COLLECT ITAB_PO_ITEM.
          CLEAR ITAB_PO_ITEM.
        ELSEIF ITAB_FINAL-BUZID = 'M' OR ITAB_FINAL-BUZID = 'K' OR
                                          ITAB_FINAL-BUZID = 'S' OR
            ITAB_FINAL-BUZID = 'P' OR      " ADDED ON 21/01/02
    *- Start of change by Raj on 030905
            ITAB_FINAL-BUZID = ' ' OR
             ITAB_FINAL-BUZID = 'T' OR   " ADD BY JAJ ON 090206
    *- End of change by Raj on 030905
                                          ITAB_FINAL-BUZID = 'F'.
          IF ITAB_FINAL-MATNR IS INITIAL.
            ITAB_FINAL-MATNR = V_MATNR.
          ENDIF.
        CLEAR V_MATNR.
          ITAB_PO_OTHERS-BELNR = ITAB_FINAL-BELNR.
         ITAB_PO_OTHERS-MATNR = ITAB_FINAL-MATNR.
         ITAB_PO_OTHERS-EBELN = ITAB_FINAL-EBELN.
         ITAB_PO_OTHERS-EBELP = ITAB_FINAL-EBELP.
         ITAB_PO_OTHERS-MENGE = ITAB_FINAL-MENGE.
          ITAB_PO_OTHERS-WRBTR = ITAB_FINAL-WRBTR.
    IF CONDITION,ADDED ON 21/01/02 FOR GETTING EXCISE WHEN CONDITION MEETS
    ie TOTAL AMOUNT = EXCISE WHEN BUZID = S AND HKONT = 27500
    *IF itab_final-buzid = 'S' AND ( itab_final-hkont = '0000027500' OR  "
    *COMM BY JAJ ON 090206
          IF ITAB_FINAL-BUZID = 'S' OR ITAB_FINAL-BUZID = 'T' AND (
          ITAB_FINAL-HKONT = '0000027500' OR
                                        ITAB_FINAL-HKONT = '0000027515'
            OR  ITAB_FINAL-HKONT = '0000027550'       " jaj on 090206
           OR  ITAB_FINAL-HKONT = '0000027507' OR
            ITAB_FINAL-HKONT = '0000027508').  "Added on 050905 - Raj
            ITAB_FINAL-EBELN = V_EBELN.
    to get ebeln value into header so that when there are 2 po's
    and 2 W's excise can go into only one po which is v_ebeln
    Start of insert by B.Elan on 10/02/2006
            READ TABLE ITAB_PO_ITEM WITH KEY BELNR = ITAB_FINAL-BELNR
                                             EBELN = ITAB_FINAL-EBELN
                                             MATNR = ITAB_FINAL-MATNR.
            ITAB_PO_ITEM-EXCISE = ITAB_PO_ITEM-EXCISE + ITAB_FINAL-WRBTR.
    End of insert by B.Elan on 10/02/2006
    Start of delete by B.Elan on 10/02/2006
          itab_po_item-excise = itab_final-wrbtr.
    End of delete by B.Elan on 10/02/2006
            MODIFY ITAB_PO_ITEM TRANSPORTING EXCISE
                  WHERE BELNR EQ ITAB_FINAL-BELNR AND
                        EBELN EQ ITAB_FINAL-EBELN.
            CLEAR ITAB_PO_ITEM.
          ELSE.
            COLLECT ITAB_PO_OTHERS.
          ENDIF.
          CLEAR ITAB_PO_OTHERS.
        ENDIF.
      ENDLOOP.
    sateesh
      SORT ITAB_PO_ITEM BY BELNR EBELN.
      LOOP AT ITAB_PO_ITEM.
       AT NEW BELNR.
        AT NEW EBELN.
          READ TABLE ITAB_PO_ITEM INDEX SY-TABIX.
          ITAB_PO_ITEM-FLAG = 'X'.
          MODIFY ITAB_PO_ITEM INDEX SY-TABIX.
        ENDAT.
       ENDAT.
      ENDLOOP.
      LOOP AT ITAB_PO_ITEM.
        ITAB_PO_ITEM-EXCISE = 0.
        MODIFY ITAB_PO_ITEM TRANSPORTING EXCISE
         WHERE EXCISE > 0
           AND FLAG = SPACE.
      ENDLOOP.
    end
      LOOP AT ITAB_PO_ITEM.
        ITAB_PO-EBELN = ITAB_PO_ITEM-EBELN.
        ITAB_PO-EBELP = ITAB_PO_ITEM-EBELP.
        APPEND ITAB_PO.
        CLEAR ITAB_PO.
      ENDLOOP.
      LOOP AT ITAB_PO_OTHERS.
        ITAB_PO-EBELN = ITAB_PO_OTHERS-EBELN.
        ITAB_PO-EBELP = ITAB_PO_OTHERS-EBELP.
        APPEND ITAB_PO.
        CLEAR ITAB_PO.
      ENDLOOP.
      SORT ITAB_PO.
      DELETE ADJACENT DUPLICATES FROM  ITAB_PO COMPARING ALL FIELDS.
      SELECT EKPO~EBELN
             EBELP
             MENGE
             BRTWR
             KZWI5
             EKKO~KNUMV
             EKPO~MATNR
             EKPO~TXZ01
             INTO TABLE ITAB_RATE_MODVAT
             FROM EKPO INNER JOIN EKKO
                 ON EKPO~EBELN = EKKO~EBELN
        FOR ALL ENTRIES IN ITAB_PO WHERE
                        EKPO~EBELN = ITAB_PO-EBELN AND
                        EBELP = ITAB_PO-EBELP.
      SELECT KNUMV KPOSN STUNR ZAEHK KSCHL KWERT
        INTO TABLE ITAB_KONV
        FROM KONV
        FOR ALL ENTRIES IN ITAB_RATE_MODVAT
            WHERE KNUMV = ITAB_RATE_MODVAT-KNUMV AND
      KSCHL IN ('YT02', 'YF07', 'YOTH', 'YPF1', 'YD01', 'YD02', 'YD03' ) .
      SORT ITAB_KONV BY KNUMV KSCHL.
      SORT ITAB BY BELNR.
      SORT ITAB_RATE_MODVAT BY EBELN EBELP.
      SORT ITAB_PO_OTHERS BY BELNR MATNR.
      LOOP AT ITAB_PO_ITEM.
        ITAB_DISPLAY-BELNR = ITAB_PO_ITEM-BELNR.
        READ TABLE ITAB_DOC WITH KEY BELNR = ITAB_PO_ITEM-BELNR BINARY
        SEARCH.
        IF SY-SUBRC EQ 0.
          ITAB_DISPLAY-BLART = ITAB_DOC-BLART.
        ENDIF.
        READ TABLE ITAB WITH KEY BELNR = ITAB_PO_ITEM-BELNR BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          ITAB_DISPLAY-XBLNR = ITAB-XBLNR.
          ITAB_PO_ITEM-XBLNR = ITAB-XBLNR.
          ITAB_DISPLAY-NAME1_VENDOR = ITAB-NAME1_VENDOR.
          ITAB_DISPLAY-HKONT = ITAB-HKONT.
          ITAB_DISPLAY-MWSKZ = ITAB-MWSKZ.
          ITAB_DISPLAY-BUDAT = ITAB-BUDAT.
          ITAB_DISPLAY-DUE_DATE   = ITAB-DUE_DATE.
         ITAB_DISPLAY-PON    =  ITAB_PO_ITEM-EBELN.
        ENDIF.
        ITAB_DISPLAY-QTY  =    ITAB_PO_ITEM-MENGE.
        READ TABLE ITAB_RATE_MODVAT WITH KEY EBELN = ITAB_PO_ITEM-EBELN
                                             EBELP = ITAB_PO_ITEM-EBELP
                                             BINARY SEARCH.
        IF SY-SUBRC EQ 0.
          ITAB_DISPLAY-PON    =  ITAB_PO_ITEM-EBELN.
          ITAB_DISPLAY-MATNR = ITAB_RATE_MODVAT-MATNR.
          ITAB_DISPLAY-MAKTX  =  ITAB_RATE_MODVAT-TXZ01.
          ITAB_DISPLAY-RATE = ITAB_RATE_MODVAT-BRTWR /
          ITAB_RATE_MODVAT-MENGE.
          ITAB_DISPLAY-PROD-AMT = ITAB_DISPLAY-RATE * ITAB_PO_ITEM-MENGE.
          IF ITAB_PO_ITEM-EXCISE NE 0.
            ITAB_DISPLAY-EXCISE = ITAB_PO_ITEM-EXCISE.
        ELSE.
    *ITAB_DISPLAY-EXCISE = ( ITAB_PO_ITEM-MENGE * ITAB_RATE_MODVAT-KZWI5 ) /
                                      ITAB_RATE_MODVAT-MENGE.
    *commentedon 210102 to get excise directly from BSEG - IV
          ENDIF.
        ENDIF.
        READ TABLE ITAB_KONV WITH KEY KNUMV = ITAB_RATE_MODVAT-KNUMV
                                      KPOSN = ITAB_RATE_MODVAT-EBELP
                                      KSCHL = 'YT02' .
        IF SY-SUBRC EQ 0.
          ITAB_DISPLAY-SALES  = ( ITAB_PO_ITEM-MENGE * ITAB_KONV-KWERT ) /
                                 ITAB_RATE_MODVAT-MENGE.
          READ TABLE ITAB_FINAL WITH KEY BELNR = ITAB_PO_ITEM-BELNR
                                         BUZID = 'M'
                                        SGTXT(9) = 'SALES TAX'.
          IF SY-SUBRC EQ 0.
          IF ITAB_FINAL-SGTXT(9) EQ 'SALES TAX'
             OR ITAB_FINAL-SGTXT(9) EQ 'sales tax'.
            ITAB_DISPLAY-SALES = ITAB_DISPLAY-SALES + ITAB_FINAL-WRBTR.
          ENDIF.
          ENDIF.
        ENDIF.
        READ TABLE ITAB_KONV WITH KEY KNUMV = ITAB_RATE_MODVAT-KNUMV
                                      KPOSN = ITAB_RATE_MODVAT-EBELP
                                      KSCHL = 'YF07'.
        IF SY-SUBRC EQ 0.
          ITAB_DISPLAY-FREIGHT = ( ITAB_PO_ITEM-MENGE * ITAB_KONV-KWERT ) /
                                  ITAB_RATE_MODVAT-MENGE.
        ENDIF.
        READ TABLE ITAB_KONV WITH KEY KNUMV = ITAB_RATE_MODVAT-KNUMV
                                      KPOSN = ITAB_RATE_MODVAT-EBELP
                                      KSCHL = 'YD01' .
        IF SY-SUBRC EQ 0.
         ITAB_DISPLAY-DISCOUNT = ( ITAB_PO_ITEM-MENGE * ITAB_KONV-KWERT ) /
                                              ITAB_RATE_MODVAT-MENGE.
        ELSE.
          READ TABLE ITAB_KONV WITH KEY KNUMV = ITAB_RATE_MODVAT-KNUMV
                                        KPOSN = ITAB_RATE_MODVAT-EBELP
                                      KSCHL = 'YD02' .
          IF SY-SUBRC EQ 0.
           ITAB_DISPLAY-DISCOUNT = ( ITAB_PO_ITEM-MENGE * ITAB_KONV-KWERT )
    ITAB_RATE_MODVAT-MENGE.
          ELSE.
            READ TABLE ITAB_KONV WITH KEY KNUMV = ITAB_RATE_MODVAT-KNUMV
                                          KPOSN = ITAB_RATE_MODVAT-EBELP
                                          KSCHL = 'YD03' .
            IF SY-SUBRC EQ 0.
             ITAB_DISPLAY-DISCOUNT = ( ITAB_PO_ITEM-MENGE * ITAB_KONV-KWERT
    ITAB_RATE_MODVAT-MENGE.
            ENDIF.
          ENDIF.
        ENDIF.
        LOOP AT ITAB_KONV WHERE KNUMV = ITAB_RATE_MODVAT-KNUMV AND KPOSN =
                                 ITAB_RATE_MODVAT-EBELP AND
                       (  KSCHL = 'YPF1' OR KSCHL = 'YOTH' ) .
          ITAB_KONV-KWERT = ( ITAB_PO_ITEM-MENGE * ITAB_KONV-KWERT ) /
                                   ITAB_RATE_MODVAT-MENGE.
          ITAB_DISPLAY-OTHERS = ITAB_DISPLAY-OTHERS + ITAB_KONV-KWERT.
        ENDLOOP.
        READ TABLE ITAB_PO_OTHERS WITH KEY BELNR = ITAB_PO_ITEM-BELNR.
                                          EBELN = ITAB_PO_ITEM-EBELN.
                                          BINARY SEARCH.
    sateesh as on 10092003
        IF SY-SUBRC NE 0. CLEAR ITAB_PO_OTHERS. ENDIF.
    end
        IF NOT ITAB_PO_OTHERS-EBELN IS INITIAL.
          READ TABLE ITAB_PO_OTHERS WITH KEY EBELN = ITAB_PO_ITEM-EBELN
                                             EB

  • Help needed in using cl_gui_alv_grid  and cl_gui_custom_container.

    Hi experts,
       I have created a screen with custom control( cl_gui_custom_container ) and displayed a alv using cl_gui_alv_grid in the screen. I have to enter tha values into the alv displayed on screen.The problem here is i have to make 2 fields as mandatory on the alv displayed on  the screen.
    Is it possible to get screen name of these fields so that i can process it in the PBO or is their some way??
    Thanks in advance
    regards,
    Ashwin

    Anyway the fields that are getting displayed is from the structure u have created right?
    So in PBO,  u can use the field names like 'MATNR'.
    If u want to process after selecting u have to right in PAI like
    CASE sy-ucomm.
      WHEN 'MATNR'.
    In oops for selected row processing
       CASE e_ucomm.
          WHEN 'FCODE'.
            CALL METHOD o_alvgrid->get_selected_rows
              IMPORTING
                et_index_rows = i_selected_rows
    *            ET_ROW_NO     =
            IF i_selected_rows[] IS INITIAL.
              MESSAGE i153 WITH text-009.
              LEAVE LIST-PROCESSING.
            ENDIF.
            CLEAR: w_reviewed_mat.
    *        w_reviewed_mat-reviewed = c_x.
    *        w_reviewed_mat-reviewedby = sy-uname.
    *        w_reviewed_mat-reviewedon = sy-datum.
            LOOP AT i_selected_rows INTO w_selected_rows.
              READ TABLE i_output INTO w_output INDEX w_selected_rows-index.
              IF sy-subrc EQ 0.
                w_reviewed_mat-matnr = w_output-matnr.
              ENDIF.
              APPEND w_reviewed_mat TO i_reviewed_mat.
              CLEAR: w_reviewed_mat-matnr.
            ENDLOOP.
    *        MODIFY zzcs_mat FROM TABLE i_reviewed_mat.
          WHEN OTHERS.
        ENDCASE.

  • How to use betrg and sumbb in FM?

    Hi experts,
    The specification given is to get the personal_no(pernr),Complete name(CNAME) of the employees who are having active status i.e(STAT2 = 3) is the condition  from pa0000,and for that list of employees get the  basic pay(BETRG) using "HR_Read_Infotype" function module,and  gross salary(SUMBB) using "HR_GET_TOTAL_AMOUNT_P0008" and display all the output using ALV grid  display.I am getting so many errors in doing that report.I need some codings for that urgently.Kindly give me some ideas or codings if possible.
    Thanks in advance,
    Sakthi.
    Message was edited by:
            Sakthi saravanan

    Hi,
    Follow the below steps:
    1)Declare an internal table ITAB with all the fields which needs to be displayed in ALV Grid.
    2)Get PERNR, CNAME into internal table ITAB with appropriate condition in SELECT statment.
    3)Get all details into ITAB:
    Start DO<>TIMES loop.
    READ table ITAB into WA_TAB.
    Get BETRG and SUMBB using FMs into WA_TAB and then
    MODIFY ITAB FROM WA_TAB INDEX SY-INDEX.
    ENDDO.
    Now internal table has all data.
    4)Display it using proper coding in ALV GRID.
    *if you need help in ALV Grid then let me know.
    *Always reward points for helpful answers
    Regards,
    Amit

  • ALV OO and refreshing the ALV grid

    Hi,
    i have some problems with my ALV 00 program.
    On screen 1 i have to fill in a material number.
    For that material i'm getting some data and show in screen 2 in a ALV grid.
    Via BACK-button i'm getting back to screen 1 and can fill in another material number.
    But the 2nd (and 3rd, etc) time i fill a material, the ALV grid data from material 1 is shown. Even if the internal table I_ALV where the data is, is changed.
    What should i do ?
    I have initialized the customer container and the grid, but that didn't solved the problem.
    regards,
    Hans

    Hi,
    Try clearing and refreshing the alv grid data table in screen 2.
    Check with this code. this code is working fine. If we go back and change the input, it is showing the output corresponding to the second input only.
    Have you use this method?
    <b> GR_ALVGRID->REFRESH_TABLE_DISPLAY</b>
    TYPE-POOLS : SLIS.
    * Tables                                                              *
    TABLES:
      VBRK,
      VBRP.
    * Parameters and select options OR SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
                S_VBELN FOR VBRK-VBELN.
    SELECTION-SCREEN END OF BLOCK B1.
    * Internal Tables                                                     *
    * work areas
    DATA: BEGIN OF IT_VBRP OCCURS 0,
           VBELN LIKE VBRK-VBELN,
           POSNR LIKE VBRP-POSNR,
           UEPOS LIKE VBRP-UEPOS,
           FKIMG LIKE VBRP-FKIMG,
           NETWR LIKE VBRP-NETWR,
           MEINS LIKE VBRP-MEINS.
    DATA : END OF IT_VBRP.
    * Variables                                                           *
    DATA : GR_ALVGRID TYPE REF TO CL_GUI_ALV_GRID,
           GC_CUSTOM_CONTROL_NAME TYPE SCRFNAME VALUE 'CC_ALV',
           GR_CCONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           GT_FIELDCAT TYPE LVC_T_FCAT,
           GS_LAYOUT TYPE LVC_S_LAYO,
           V_FLAG VALUE 'X'.
    * Start of Program                                                    *
    *       INITIALIZATION.                                               *
    INITIALIZATION.
      S_VBELN-LOW = 1.
      S_VBELN-HIGH = 1000000000.
      S_VBELN-OPTION = 'EQ'.
      S_VBELN-SIGN = 'I'.
      APPEND S_VBELN.
    *       SELECTION-SCREEN                                              *
    AT SELECTION-SCREEN.
      PERFORM VALIDATION.
    *       START-OF-SELECTION                                            *
    START-OF-SELECTION.
      PERFORM GET_DATA.
      CALL SCREEN 0100.
    *       END-OF-SELECTION                                              *
    END-OF-SELECTION.
    *       TOP-OF-PAGE                                                   *
    TOP-OF-PAGE.
    *       END-OF-PAGE                                                   *
    END-OF-PAGE.
    *       AT USER-COMMAND                                               *
    *&      Form  VALIDATION
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM VALIDATION .
      SELECT SINGLE VBELN
      FROM VBRK
      INTO VBRK-VBELN
      WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no billing documents found'.
      ENDIF.
    ENDFORM.                    " VALIDATION
    *&      Form  GET_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM GET_DATA .
      SELECT VBELN
             POSNR
             UEPOS
             FKIMG
             NETWR
             MEINS
      FROM VBRP
      INTO TABLE IT_VBRP
      WHERE VBELN IN S_VBELN.
    ENDFORM.                    " GET_DATA
    *&      Module  DISPLAY_ALV  OUTPUT
    *       text
    MODULE DISPLAY_ALV OUTPUT.
      IF V_FLAG = 'X'.
        PERFORM DISPLAY_ALV.
        PERFORM PREPARE_FIELD_CATALOG CHANGING GT_FIELDCAT.
        PERFORM PREPARE_LAYOUT CHANGING GS_LAYOUT.
       CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY
            EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
    *      I_STRUCTURE_NAME              = 'VBRP'
    *      IS_VARIANT                    =
    *      I_SAVE                        =
    *      I_DEFAULT                     = 'X'
              IS_LAYOUT                     = GS_LAYOUT
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
            CHANGING
              IT_OUTTAB                     = IT_VBRP[]
              IT_FIELDCATALOG               = GT_FIELDCAT
    *      IT_SORT                       =
    *      IT_FILTER                     =
            EXCEPTIONS
              INVALID_PARAMETER_COMBINATION = 1
              PROGRAM_ERROR                 = 2
              TOO_MANY_LINES                = 3
              OTHERS                        = 4
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
            EXPORTING
              I_READY_FOR_INPUT = 1.
        ELSE.
          <b>CALL METHOD GR_ALVGRID->REFRESH_TABLE_DISPLAY
    *    EXPORTING
    *      IS_STABLE      =
    *      I_SOFT_REFRESH =
            EXCEPTIONS
              FINISHED       = 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.</b>
        ENDIF.
        CLEAR V_FLAG.
      ENDIF.
    ENDMODULE.                 " DISPLAY_ALV  OUTPUT
    *&      Form  DISPLAY_ALV
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM DISPLAY_ALV .
      IF GR_ALVGRID IS INITIAL.
        CREATE OBJECT GR_ALVGRID
          EXPORTING
    *    I_SHELLSTYLE      = 0
    *    I_LIFETIME        =
            I_PARENT          = GR_CCONTAINER
    *    I_APPL_EVENTS     = space
    *    I_PARENTDBG       =
    *    I_APPLOGPARENT    =
    *    I_GRAPHICSPARENT  =
    *    I_NAME            =
          EXCEPTIONS
            ERROR_CNTL_CREATE = 1
            ERROR_CNTL_INIT   = 2
            ERROR_CNTL_LINK   = 3
            ERROR_DP_CREATE   = 4
            OTHERS            = 5
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                     WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV
    *&      Form  PREPARE_FIELD_CATALOG
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM PREPARE_FIELD_CATALOG  CHANGING P_GT_FIELDCAT TYPE LVC_T_FCAT.
      DATA : LS_FCAT TYPE LVC_S_FCAT,
             L_POS TYPE I.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'VBELN'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Billing Document'.
      LS_FCAT-OUTPUTLEN = '10'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'POSNR'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Billing Item'.
      LS_FCAT-OUTPUTLEN = '6'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'UEPOS'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Higher Level Item'.
      LS_FCAT-OUTPUTLEN = '6'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'FKIMG'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Invoice Quantity'.
      LS_FCAT-OUTPUTLEN = '13'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'NETWR'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Net Value'.
      LS_FCAT-OUTPUTLEN = '15'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
      LS_FCAT-FIELDNAME = 'MEINS'.
      LS_FCAT-TABNAME = 'IT_VBRP'.
      LS_FCAT-COL_POS = L_POS.
      LS_FCAT-SCRTEXT_M = 'Unit of Measure'.
      LS_FCAT-OUTPUTLEN = '3'.
      APPEND LS_FCAT TO P_GT_FIELDCAT.
      CLEAR LS_FCAT.
      L_POS = L_POS + 1.
    ENDFORM.                    " PREPARE_FIELD_CATALOG
    *&      Form  PREPARE_LAYOUT
    *       text
    *      <--P_GS_LAYOUT  text
    FORM PREPARE_LAYOUT  CHANGING P_GS_LAYOUT TYPE LVC_S_LAYO.
      P_GS_LAYOUT-ZEBRA = 'X'.
      P_GS_LAYOUT-GRID_TITLE = 'INVOICE DETAILS'.
      P_GS_LAYOUT-SMALLTITLE = 'X'.
      P_GS_LAYOUT-EDIT = 'X'.
    ENDFORM.                    " PREPARE_LAYOUT
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'CANCEL'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'CANCEL'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          CALL TRANSACTION 'SE38'.
        WHEN 'CHANGE'.
          IF GR_ALVGRID->IS_READY_FOR_INPUT( ) = 0.
            CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
              EXPORTING
                I_READY_FOR_INPUT = 1.
          ELSE.
            CALL METHOD GR_ALVGRID->SET_READY_FOR_INPUT
              EXPORTING
                I_READY_FOR_INPUT = 0.
          ENDIF.
      ENDCASE.
    Regards,
    Aswin

  • How to use interactive internal report in alv

    hey expert i want to know who i will used interactive internal report in alv report by various tables in my one assingment.
    They have told us to do the various steps which i was giving down:
    1) In first step they have told me to use of call transaction 'XD03' in the report .I have got that problem solved.
    2)  In second they have told in this assingment to use of interactive internal report you have to prepare in alv format.
    a)I  want to know about this .They have told in assingment that in the customer details we have to click to the net value field record and go to the details of sales order detail in which it show the detail of all the details related net values .
    b) I want to know about this lines also from you:
    Qty field refers to the Target Qty field in the table VBAP.
    To get Price in the unit divide the price by Condition Pricing Unit.
    If SHKZG field is set, then multiply the amount by -1, making it negative. (understand why?).
    3) In the third step they have told to used of drill down which it is in the at line selection ,when i click to the list order of sales it go to  the next report and show me the detail of all the list order details. 
    But i have to use the  '2.b' condition there .
    cna u please send me reply for all this step.
    Edited by: AjaySAPmumbai on Nov 28, 2011 8:55 AM
    Moderator message : Spec / requirements dumping is not allowed, search for available information, read forum rules before posting.  Thread locked.
    Edited by: Vinod Kumar on Nov 28, 2011 1:26 PM

    hey expert i want to know who i will used interactive internal report in alv report by various tables in my one assingment.
    They have told us to do the various steps which i was giving down:
    1) In first step they have told me to use of call transaction 'XD03' in the report .I have got that problem solved.
    2)  In second they have told in this assingment to use of interactive internal report you have to prepare in alv format.
    a)I  want to know about this .They have told in assingment that in the customer details we have to click to the net value field record and go to the details of sales order detail in which it show the detail of all the details related net values .
    b) I want to know about this lines also from you:
    Qty field refers to the Target Qty field in the table VBAP.
    To get Price in the unit divide the price by Condition Pricing Unit.
    If SHKZG field is set, then multiply the amount by -1, making it negative. (understand why?).
    3) In the third step they have told to used of drill down which it is in the at line selection ,when i click to the list order of sales it go to  the next report and show me the detail of all the list order details. 
    But i have to use the  '2.b' condition there .
    cna u please send me reply for all this step.
    Edited by: AjaySAPmumbai on Nov 28, 2011 8:55 AM
    Moderator message : Spec / requirements dumping is not allowed, search for available information, read forum rules before posting.  Thread locked.
    Edited by: Vinod Kumar on Nov 28, 2011 1:26 PM

  • Export and import in alv grid

    Hi all,
            I am going thru a code in oops alv where when i click in any of the record in the output list then it shuld go to a transaction where it shuld dump all the field values with respect to the clicked field.
    frnds i have used EXPORT AND IMPORT memory concept to get my thing done but i m facing problem.
    please help what can be done to come up with a solution.
    if needed i will provide my codes.
    Thanks,
    satya

    Hi,
    Use the get_selected_rows or get_selected_field Methods
    Thanks,
    Muthu.

  • Drag And Drop in ALV Column Tree

    Hello All,
    Can anyone tell me the method used for  a drag and drop in a column tree....
    i found it for a simple tree but not for a column tree.....
    thanks in advance....
    Regards,
    Praveen

    Check the links -
    drag drop required for alv column!
    drag and drop in a tree
    Drag&Drop within the Tree
    Drag&Drop within a tree
    Drag and drop in ALV tree
    Regards,
    Amit
    Reward all helpful replies.

  • How we can use call transaction xd03 in alv report

    hey guys i want now that how we can use call transaction xd03 in alv report by using various tables in report or coding.
    can you tell me about that by the way of coding so that it can be easy for me to understand and help ful to make report by using alv report with many tables. so please send me .
    Moderator message: it seems to be XD03 day today, please search for available information/documentation/previous discussions.
    Edited by: Thomas Zloch on Nov 25, 2011 1:24 PM

    Where?
    Max

Maybe you are looking for