Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV

former_member778253
Active Participant
0 Likes
285

Hi,

How to develop a purchase order report using ALV function modules.

Bye...

Hi,

How to develop a purchase order report using ALV function modules.

Bye...

1 REPLY 1
Read only

Former Member
0 Likes
261

Hi

We cant give the complete your requirement but here u can have a smaple code plz check it out

paste this code in ur report and execute it is also related to PO

tables: ekko , ekpo ,EKKN .
TYPE-POOLS: SLIS.
DATA: val1  like konh-vakey.
DATA : ED(15) TYPE N .


Data:GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
     G_REPID LIKE SY-REPID,
     G_GRID_TITLE TYPE LVC_TITLE.

Data:G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.

DATA:G_TABNAME TYPE SLIS_TABNAME VALUE 'ITAB3',
G_SAVE .

DATA:GS_VARIANT LIKE DISVARIANT.
DATA:LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA:GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
     G_SAVE = 'A'.


*
*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
*SELECTION-SCREEN SKIP 2.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 25(23) text-002.
*SELECT-OPTIONS: S_ebelp FOR eKPO-ebelp.
**PARAMETERS:p_lifnr LIKE ekko-lifnr .
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN END OF BLOCK b1.
*

DATA: BEGIN OF itab OCCURS 0,

        EBELN LIKE EKKO-EBELN,
        KNUMV LIKE EKKO-KNUMV,
        LIFNR LIKE EKKO-LIFNR,
        EBELP LIKE KONV-KPOSN,
        NETWR LIKE EKPO-NETWR,
        NETPR LIKE EKPO-NETPR,
        NAME1 LIKE LFA1-NAME1,
        NAME2 LIKE LFA1-NAME2,
        WERKS LIKE EKPO-WERKS,
        MATNR LIKE EKPO-MATNR,
        PS_PSP_PNR LIKE EKKN-PS_PSP_PNR,

     END OF itab.


DATA: BEGIN OF ITAB3 OCCURS 0,

        LIFNR LIKE EKKO-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        EBELN LIKE EKKO-EBELN,
        EBELP LIKE EKPO-EBELP,
        NETWR LIKE EKPO-NETWR,
        NETPR LIKE EKPO-NETPR,
        KSCHL LIKE KONV-KSCHL,
        KBETR LIKE KONV-KBETR,
        KWERT LIKE KONV-KWERT,
        KWERT2 LIKE KONV-KWERT,
       TOTAL TYPE p decimals 2,
       PS_PSP_PNR LIKE EKKN-PS_PSP_PNR,

        ED1  TYPE p decimals 2,

        NAME2 LIKE LFA1-NAME2,
        KNUMV LIKE EKKO-KNUMV,




     END OF ITAB3.



DATA: BEGIN OF ITAB1 OCCURS 0,

        KPOSN LIKE KONV-KPOSN,
        KNUMV LIKE KONV-KNUMV,
        KSCHL LIKE KONV-KSCHL,
        KBETR LIKE KONV-KBETR,
        KWERT LIKE KONV-KWERT, " THIS IS FOR FREIGHT
*        KWERT2 LIKE KONV-KWERT,"THIS FOR OTHER CONDITION

    END OF ITAB1.


data: begin of int_konh occurs 0,
        KNUMH LIKE KONH-KNUMH,
        KSCHL LIKE KONH-KSCHL,
     end of int_konh.

DATA: BEGIN OF INT_KONP OCCURS 0,
         KNUMH LIKE KONP-KNUMH,
         KBETR LIKE KONP-KBETR,
      END OF INT_KONP.

DATA: BEGIN OF INT_EKKN OCCURS 0,
         EBELN LIKE EKKN-EBELN,
         EBELP LIKE EKKN-EBELP,
         PS_PSP_PNR LIKE EKKN-PS_PSP_PNR,

      END OF INT_EKKN.




PERFORM GET_DATA.
PERFORM CALL_ALV_GRID.


FORM GET_DATA.


*SELECT B~EBELN B~LIFNR B~KNUMV A~EBELP A~NETWR A~NETPR A~WERKS A~MATNR
*        L~NAME1 L~NAME2
*    FROM EKPO  AS A
*       INNER JOIN  EKKO AS B ON B~EBELN = A~EBELN
*       INNER JOIN  LFA1 AS L ON L~LIFNR = B~LIFNR
*       INNER JOIN  EKKN AS C ON C~EBELN = A~EBELN
*       INTO CORRESPONDING FIELDS OF TABLE itab
*       WHERE B~BUKRS = 'GSPL'       .
*




SELECT A~EBELN A~LIFNR A~KNUMV B~EBELP B~NETWR B~NETPR B~WERKS B~MATNR
        L~NAME1 L~NAME2
    FROM EKKO  AS A
       INNER JOIN  EKPO AS B ON A~EBELN = B~EBELN
       INNER JOIN  LFA1 AS L ON L~LIFNR = A~LIFNR
*       INNER JOIN  EKKN AS C ON C~EBELN = A~EBELN

       INTO CORRESPONDING FIELDS OF TABLE itab
       WHERE B~BUKRS = 'GSPL'       .


*SELECT PS_PSP_PNR EBELN EBELP FROM
*            EKKN INTO CORRESPONDING FIELDS OF TABLE INT_EKKN
*              FOR ALL ENTRIES IN ITAB
*              WHERE EKKN~EBELN = ITAB-EBELN EKKN~EBELP = ITAB-EBELP.





if not itab[] is initial.

      select * from KONV into CORRESPONDING FIELDS OF TABLE  ITAB1
      for all entries in itab
      where knumv = itab-knumv and
      kposn = ITAB-EBELP.



endif.


      loop at itab.



              ITAB3-EBELN = ITAB-EBELN.
              ITAB3-EBELP = ITAB-EBELP.
              ITAB3-KNUMV = ITAB-KNUMV.
              ITAB3-LIFNR = ITAB-LIFNR.
              ITAB3-name1 = ITAB-name1.
              ITAB3-NETWR = ITAB-NETWR.
              ITAB3-NETPR = ITAB-NETPR.
              ITAB3-PS_PSP_PNR = ITAB-PS_PSP_PNR.



sort itab by ebeln ebelp.


        read table itab1 with key knumv = itab-knumv
        kposn = ITAB-EBELP.



        if sy-subrc = 0.

        loop at itab1 where knumv = itab-knumv   and kposn = itab-ebelp.
                itab3-kschl = itab1-kschl.

*         ITAB3-KSCHL = ITAB1-KSCHL.


          IF ITAB3-KSCHL = 'NAVS' OR ITAB3-KSCHL = 'NAVM'.

            ITAB3-KBETR = ITAB1-KBETR.

            modify  ITAB3 transporting KBETR
            where  KNUMV =  ITAB3-KNUMV AND EBELP = ITAB3-EBELP .
            clear: itab1-kbetr.



           ELSEIF ITAB3-KSCHL = 'FRA1' OR ITAB3-KSCHL = 'FRC1' OR
                ITAB3-KSCHL = 'FRB1'.

                    ITAB3-KWERT = ITAB1-KWERT.

                   modify  ITAB3 transporting KWERT
                   where  KNUMV =  ITAB3-KNUMV AND EBELP = ITAB3-EBELP .
                  clear: itab1-kwert.


           ELSEIF ITAB3-KSCHL = 'RL01' OR ITAB3-KSCHL = 'ZA00' OR
                 ITAB3-KSCHL = 'ZA01' OR ITAB3-KSCHL = 'ZAE1' OR
                 ITAB3-KSCHL = 'ZAED' OR

                 ITAB3-KSCHL = 'ZAFR' OR ITAB3-KSCHL = 'ZB00' OR
                 ITAB3-KSCHL = 'ZBCH' OR ITAB3-KSCHL = 'ZBED' OR
                 ITAB3-KSCHL = 'ZC00' OR

                 ITAB3-KSCHL = 'ZCEX' OR ITAB3-KSCHL = 'ZCIF' OR
                 ITAB3-KSCHL = 'ZHC1' OR ITAB3-KSCHL = 'ZHC2' OR
                 ITAB3-KSCHL = 'ZHCT' OR

                 ITAB3-KSCHL = 'ZHCV' OR ITAB3-KSCHL = 'ZJOC' OR
                 ITAB3-KSCHL = 'ZOTH' OR ITAB3-KSCHL = 'ZOTP' OR
                 ITAB3-KSCHL = 'ZOTT' OR

                 ITAB3-KSCHL = 'ZPK1' OR ITAB3-KSCHL = 'ZPK2' OR
                 ITAB3-KSCHL = 'ZPK3' OR ITAB3-KSCHL = 'ZPK4' OR
                 ITAB3-KSCHL = 'ZRPO' OR

                 ITAB3-KSCHL = 'ZSE1' OR ITAB3-KSCHL = 'ZSED' OR
                 ITAB3-KSCHL = 'ZSFR' OR ITAB3-KSCHL = 'ZSTX' OR
                 ITAB3-KSCHL = 'ZTPI' OR

                 ITAB3-KSCHL = 'ZTPV' OR ITAB3-KSCHL = 'ZTRD' OR
                 ITAB3-KSCHL = 'ZWCT'.

                   ITAB3-KWERT2 = ITAB1-KWERT.
                   modify  ITAB3 transporting KWERT2
                   where  KNUMV =  ITAB-KNUMV AND EBELP = ITAB-EBELP .
                   CLEAR: ITAB1-KWERT.




          ENDIF.

         endloop.

 ITAB3-TOTAL = ITAB3-NETWR + ITAB3-KWERT2 + ITAB3-KWERT + ITAB3-KBETR.

append itab3.
       endif.

       clear: itab3-kbetr,
                         itab3-kwert,
                         itab1-kbetr,
                         itab1-kwert.
.
.

endloop.





ENDFORM.




FORM CALL_ALV_GRID.

PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM                = G_repid


      I_CALLBACK_USER_COMMAND           = G_USER_COMMAND
      I_GRID_TITLE                      = G_GRID_TITLE
      IT_FIELDCAT                       = GT_FIELDCAT[]
      I_DEFAULT                         = 'X'
      I_SAVE                            =  G_SAVE
      IS_VARIANT                        =  Gs_VARIANT
    TABLES
      T_OUTTAB                          = ITAB3.

ENDFORM.

FORM FIELDCAT_INIT
       USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.



 CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-seltext_l   = 'Vendor no'.
  LS_FIELDCAT-FIELDNAME     = 'LIFNR'.
  LS_FIELDCAT-REF_FIELDNAME = 'LIFNR'.
  LS_FIELDCAT-REF_TABNAME   = 'LFA1'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.


  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-seltext_l   = 'Vendor Name'.
  LS_FIELDCAT-FIELDNAME     = 'NAME1'.
  LS_FIELDCAT-REF_FIELDNAME = 'NAME1'.
  LS_FIELDCAT-REF_TABNAME   = 'LFA1'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.

 CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-seltext_l   = 'Purchase Document No'.
  LS_FIELDCAT-FIELDNAME     = 'EBELN'.
  LS_FIELDCAT-REF_FIELDNAME = 'EBELN'.
  LS_FIELDCAT-REF_TABNAME   = 'EKKO'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.


  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-SELTEXT_L     = 'Item No'.
  LS_FIELDCAT-FIELDNAME     = 'EBELP'.
  LS_FIELDCAT-REF_FIELDNAME = 'EBELP'.
  LS_FIELDCAT-REF_TABNAME   = 'EKPO'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.


   CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-FIELDNAME     = 'NETPR'.
  LS_FIELDCAT-REF_FIELDNAME = 'NETPR'.
  LS_FIELDCAT-REF_TABNAME   = 'EKPO'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.

  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-FIELDNAME     = 'NETWR'.
  LS_FIELDCAT-REF_FIELDNAME = 'NETWR'.
  LS_FIELDCAT-REF_TABNAME   = 'EKPO'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.





CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-SELTEXT_L     = 'NAVM/NAVS'.
  LS_FIELDCAT-FIELDNAME     = 'KBETR'.
  LS_FIELDCAT-REF_FIELDNAME = 'KBETR'.
  LS_FIELDCAT-REF_TABNAME   = 'KONV'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.



CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-SELTEXT_L     = 'Frieght'.
  LS_FIELDCAT-FIELDNAME     = 'KWERT'.
  LS_FIELDCAT-REF_FIELDNAME = 'KWERT'.
  LS_FIELDCAT-REF_TABNAME   = 'KONV'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.


  CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-SELTEXT_L     = 'Other Condition'.
  LS_FIELDCAT-FIELDNAME     = 'KWERT2'.
  LS_FIELDCAT-REF_FIELDNAME = 'KWERT2'.
  LS_FIELDCAT-REF_TABNAME   = 'ITAB3'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.




CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-SELTEXT_L     = 'Total'.
  LS_FIELDCAT-FIELDNAME     = 'TOTAL'.
  LS_FIELDCAT-REF_FIELDNAME = 'TOTAL'.
  LS_FIELDCAT-REF_TABNAME   = 'ITAB3'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.

CLEAR LS_FIELDCAT.
  LS_FIELDCAT-TABNAME       = G_TABNAME.
  LS_FIELDCAT-SELTEXT_L     = 'WBS-ELEMENT '.
  LS_FIELDCAT-FIELDNAME     = 'PS_PSP_PSPNR'.
  LS_FIELDCAT-REF_FIELDNAME = 'PS_PSP_PSPNR'.
  LS_FIELDCAT-REF_TABNAME   = 'ITAB3'.
  APPEND LS_FIELDCAT TO  RT_FIELDCAT.




ENDFORM.

reward all helpfull answers

Regards

Pavan