Structure declaration

Can i put an include(of a SAP table) during my structure definition ? I know that is possible in an internal table definition, but something got me wrong when i try to insert a include into a structure, see bellow :
BEGIN OF E_COMP,
  INCLUDE ZM098, "other SAP table
  SOMA(5) TYPE P,
  DATA    TYPE D,
END OF E_COMP.

HI Andre.
REPORT zarun_2.
DATA   : BEGIN OF e_comp <b>OCCURS 0</b>. "Internal table with header line
        INCLUDE STRUCTURE emara. <b>"Include Structure in MARA table</b>
DATA  :  soma(5) TYPE p,
         data    TYPE d,
         END  OF  e_comp.
Regards,
Arun Sambargi.

Similar Messages

  • Error while defining afield in Structure

    Hi All..
    I want to define a field MENGE ( Quantity and the lenght should be 8 and should hold 3 Decimals).
    Hence i opted for a Data element CATSXT_DEFLT which is having QUAN, Length-8 and Decimal-3.
    But while activating the structure, the system is prompting Error message as follow...
    Diagnosis
    You must specify reference tables and reference fields for fields containing currency amounts or quantity data. You have specified either only the reference field or the reference table and have not maintained either entry.
    Procedure
    Add the missing entry. You can do this with the single field maintenance function of the table.
    Please Help me, as it is very urgent....

    hi,
    try to find out a field in table
    having this 'CATSXT_DEFLT' type.
    then in the structure.
    declare like this.
    <b>tables : table_name
    MENGE like table_name-field_name.</b>
    do this.
    <b>tables : TCATX_COMPONENTS.
    data : begin of ..
    MENGE like TCATX_COMPONENTS-DEFLT,
    endof ..</b>
    rgds
    anver
    pls mark hlpful answers
    Message was edited by: Anversha s

  • Structure mapping is incorrect....urgent

    Hi Folks,
    in the below code itab  and itab1 structures are diffetenr. I need to move itab1 data into itab from that itab i suppose to pass data to ztable. when i am chk below code i am getting error as structure is not mapping. Can u plz change the code according to my requiremt.
    TABLES: ZCRM_DM_VBRP.
    TYPES: BEGIN OF TS_ZCRM_DM_VBRP.
           INCLUDE STRUCTURE ZCRM_DM_VBRP.
    TYPES: END OF TS_ZCRM_DM_VBRP,
           TT_ZCRM_DM_VBRP TYPE STANDARD TABLE OF TS_ZCRM_DM_VBRP .
    DATA:  WA_ZCRM_DM_VBRP TYPE TS_ZCRM_DM_VBRP,
           ITAB TYPE  TS_ZCRM_DM_VBRP OCCURS 0 WITH HEADER LINE.
    DATA: T_OPTIONS  TYPE TABLE OF  RFC_DB_OPT INITIAL SIZE 10,
          T_FIELDS   TYPE TABLE OF  RFC_DB_FLD INITIAL SIZE 10.
    STRUCTURE DECLARATION
    TYPES: BEGIN OF TS_DATA.   "OCCURS 0,
           INCLUDE STRUCTURE TAB512.
    TYPES: END OF TS_DATA,
           TT_DATA   TYPE STANDARD TABLE OF TS_DATA .
    **WORK AREA DECLARATION
    DATA:  WA_T_DATA TYPE TS_DATA.
    INTERNAL TABLE DECLARATION
    DATA: ITAB1 TYPE TS_DATA OCCURS 0 wIth header line.
                      START-OF-SELECTION                                         *
    START-OF-SELECTION.
    *CALLING FUNCTION MODULE TO READ TABLE FROM REMOTE CLIENT.
    CALL FUNCTION 'RFC_READ_TABLE' DESTINATION  'DAACLNT060'
      EXPORTING
       QUERY_TABLE                =  'ZCRM_DM_VBRP'
       DELIMITER                  =  '   '
       NO_DATA                    =  '   '
       ROWSKIPS                   =  0
       ROWCOUNT                   =  0
      TABLES
        OPTIONS                   = T_OPTIONS
        FIELDS                    = T_FIELDS
        DATA                      = ITAB1
    EXCEPTIONS
       TABLE_NOT_AVAILABLE        = 1
       TABLE_WITHOUT_DATA         = 2
       OPTION_NOT_VALID           = 3
       FIELD_NOT_VALID            = 4
       NOT_AUTHORIZED             = 5
       DATA_BUFFER_EXCEEDED       = 6
       OTHERS                     = 7          .
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP THE INTERNAL TABLE
    LOOP AT ITAB1 INTO WA_T_DATA.
    move-corresponding WA_T_DATA TO ITAB.
    append itab.
    ENDLOOP.

    Ur correct code is here.
    TABLES: ZCRM_DM_VBRP.
    TYPES: BEGIN OF TS_ZCRM_DM_VBRP.
    INCLUDE STRUCTURE ZCRM_DM_VBRP.
    TYPES: END OF TS_ZCRM_DM_VBRP,
    TT_ZCRM_DM_VBRP TYPE STANDARD TABLE OF TS_ZCRM_DM_VBRP .
    DATA: WA_ZCRM_DM_VBRP TYPE TS_ZCRM_DM_VBRP,
    ITAB TYPE standard table of TS_ZCRM_DM_VBRP OCCURS 0 WITH HEADER LINE.
    DATA: T_OPTIONS TYPE TABLE OF RFC_DB_OPT INITIAL SIZE 10,
    T_FIELDS TYPE TABLE OF RFC_DB_FLD INITIAL SIZE 10.
    STRUCTURE DECLARATION
    TYPES: BEGIN OF TS_DATA. "OCCURS 0,
    INCLUDE STRUCTURE TAB512.
    TYPES: END OF TS_DATA,
    TT_DATA TYPE STANDARD TABLE OF TS_DATA .
    **WORK AREA DECLARATION
    DATA: WA_T_DATA TYPE TS_DATA.
    INTERNAL TABLE DECLARATION
    DATA: ITAB1 TYPE TS_DATA OCCURS 0 wIth header line.
    START-OF-SELECTION *
    START-OF-SELECTION.
    *CALLING FUNCTION MODULE TO READ TABLE FROM REMOTE CLIENT.
    CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'DAACLNT060'
    EXPORTING
    QUERY_TABLE = 'ZCRM_DM_VBRP'
    DELIMITER = ' '
    NO_DATA = ' '
    ROWSKIPS = 0
    ROWCOUNT = 0
    TABLES
    OPTIONS = T_OPTIONS
    FIELDS = T_FIELDS
    DATA = ITAB1
    EXCEPTIONS
    TABLE_NOT_AVAILABLE = 1
    TABLE_WITHOUT_DATA = 2
    OPTION_NOT_VALID = 3
    FIELD_NOT_VALID = 4
    NOT_AUTHORIZED = 5
    DATA_BUFFER_EXCEEDED = 6
    OTHERS = 7 .
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP THE INTERNAL TABLE
    LOOP AT ITAB1 INTO WA_T_DATA.
    move-corresponding WA_T_DATA TO ITAB.
    append itab.
    ENDLOOP.
    reward if useful.
    Amit Singla

  • Structure of abap code in fi module

    Hi all
    I joined like fresher could you help me how to write the abap code
    structure of the abap code

    CHECK THIS
    I HOPE IT WILL HELP YOU.
    *& Report  ZDTK_FI_CRDB
    *& DESCRIPTION : CREDIT DEBIT NOTE FOR CUSTOMER OR VENDOR.
    REPORT  ZDTK_FI_CRDB NO STANDARD PAGE HEADING
                                LINE-COUNT 65(5)
                                LINE-SIZE 80
                                MESSAGE-ID ZTAR_FI
    *&       STRUCTURE DECLARATION
    TYPES : BEGIN OF TY_ADDR,
                    BUKRS TYPE BUKRS,          "COMPANY CODE
                    LIFNR TYPE LIFNR,          "VENDOR NO
                    KUNNR TYPE KUNNR,          "CUSTOMJER NO
                    NAME1 TYPE NAME1,          "NAME1
                    NAME2 TYPE NAME2,          "NAME2
                    ORT01 TYPE ORT01,          "CITY
                    ORT02 TYPE ORT02,
                    PSTLZ TYPE PSTLZ,          "POSTAL CODE
                    STRAS TYPE STRAS,          "STREET
                    ADRNR TYPE ADRNR,          "ADDRESS NO
                    TELF1 TYPE TELF1,          "TELEFHONE NO
                    TELF2 TYPE TELF2,          "TELEFHONE NO 2
                    TELFX TYPE TELFX,          "FAX
             END OF TY_ADDR,
          BEGIN OF TY_LFA1,
                   KUNNR TYPE KUNNR,          "CUSTOMJER NO
                   NAME1 TYPE NAME1,          "NAME1
                   NAME2 TYPE NAME2,          "NAME2
                   ORT01 TYPE ORT01,          "CITY
                   ORT02 TYPE ORT02,
                   PSTLZ TYPE PSTLZ,          "POSTAL CODE
                   STRAS TYPE STRAS,          "STREET
                   ADRNR TYPE ADRNR,          "ADDRESS NO
                   TELF1 TYPE TELF1,          "TELEFHONE NO
                   TELF2 TYPE TELF2,          "TELEFHONE NO 2
                   TELFX TYPE TELFX,          "FAX
            END OF TY_LFA1,
           BEGIN OF TY_DOCM,
                    GJAHR TYPE GJAHR,
                    BELNR TYPE BELNR_D,
                    BUDAT TYPE BUDAT,
                    BLDAT TYPE BLDAT,
                    BLART TYPE BLART,
                    BSCHL TYPE BSCHL,
                    SHKZG TYPE SHKZG,
                    XBLNR TYPE XBLNR,
                    DMBTR TYPE DMBTR,
                    SGTXT TYPE SGTXT,
                    REBZG TYPE REBZG,
                    REBZJ TYPE REBZJ,
                    KUNNR TYPE KUNNR,
                    LIFNR TYPE LIFNR,
             END OF TY_DOCM.
    *&       TABLE DECLARATION
    DATA : T_ADDR TYPE STANDARD TABLE OF TY_ADDR,
    *&       WORK AREA  DECLARATION
           W_ADDR TYPE TY_ADDR,
           W_DOCM TYPE TY_DOCM,
          W_LFA1 TYPE TY_LFA1,
    *&       GLOBLE VARIABLE DECLARATION
           G_KUNNR TYPE KUNNR,
           G_LIFNR TYPE LIFNR,
           DCAMT TYPE DMBTR.
    *&       INITIALIZATION
    INITIALIZATION.
    CLEAR :
    *REFRESH :
    *&       SELECTION SCREEN DECLARATION
    SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN SKIP 1.
    PARAMETERS : S_BUKRS TYPE BSID-BUKRS OBLIGATORY DEFAULT '1000'.
    PARAMETERS : S_BELNR TYPE BELNR_D OBLIGATORY DEFAULT '1600000070'.
    PARAMETERS : S_GJAHR TYPE GJAHR OBLIGATORY DEFAULT '2008'.
    PARAMETERS : ASON TYPE BUDAT OBLIGATORY DEFAULT SY-DATUM.
    PARAMETERS : S_KUNNR TYPE KUNNR MODIF ID GP1.
    PARAMETERS : S_LIFNR TYPE LIFNR MODIF ID GP2.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN : END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS R1  RADIOBUTTON GROUP RAO DEFAULT 'X' USER-COMMAND hit.
    SELECTION-SCREEN COMMENT (50) TEXT-003 FOR FIELD R1.
    PARAMETERS R2  RADIOBUTTON GROUP RAO.
    SELECTION-SCREEN COMMENT (50) TEXT-004 FOR FIELD R2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN END OF BLOCK B2.
    *SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-005.
    *SELECTION-SCREEN SKIP 1.
    *SELECTION-SCREEN BEGIN OF LINE.
    *PARAMETERS R3  RADIOBUTTON GROUP RAJ DEFAULT 'X' USER-COMMAND hit.
    *SELECTION-SCREEN COMMENT (50) TEXT-006 FOR FIELD R1.
    *PARAMETERS R4  RADIOBUTTON GROUP RAJ.
    *SELECTION-SCREEN COMMENT (50) TEXT-007 FOR FIELD R2.
    *SELECTION-SCREEN END OF LINE.
    *SELECTION-SCREEN SKIP 1.
    *SELECTION-SCREEN : END OF BLOCK B3.
    *&       AT SELECTION SCREEN
    AT SELECTION-SCREEN.
           PERFORM VALIDATE_SELECTION.
    *&       AT SELECTION SCREEN OUTPUT
    AT SELECTION-SCREEN OUTPUT.
           PERFORM SCREEN_OUTPUT.
    *&       START OF SELECTION
    START-OF-SELECTION.
    IF R1 = 'X'.
            PERFORM GET_DOCUMENT_L.
    ELSEIF R2 = 'X'.
            PERFORM GET_DOCUMENT_K.
    ENDIF.
    *&       END OF SELECTION
    END-OF-SELECTION.
    PERFORM DISPLAY.
    *&       TOP OF PAGE
    *TOP-OF-PAGE.
          PERFORM PAGE_HEADER.
    *&      Form  VALIDATE_SELECTION
          text
    form VALIDATE_SELECTION .
    DATA : L_BUKRS TYPE BSID-BUKRS.
    SELECT SINGLE BUKRS FROM KNB1
                        INTO L_BUKRS
                       WHERE BUKRS = S_BUKRS.
    *IF SY-SUBRC <> 0.
    *MESSAGE E001.
    *LEAVE LIST-PROCESSING.
    *ENDIF.
    DATA : L_KUNNR TYPE BSID-KUNNR.
    SELECT SINGLE KUNNR FROM BSID
                        INTO L_KUNNR
                       WHERE KUNNR = S_KUNNR.
    *IF SY-SUBRC <> 0.
    *MESSAGE E002.
    *LEAVE LIST-PROCESSING.
    *ENDIF.
    endform.                    " VALIDATE_SELECTION
    *&      Form  SCREEN_OUTPUT
          text
    form SCREEN_OUTPUT .
        IF R1 = 'X'.
          LOOP AT SCREEN.
            if screen-group1 = 'GP1'.
              SCREEN-active = '0'.
    *SCREEN-INTENSIFIED = '0'.
              MODIFY SCREEN.
            ENDIF.
          ENDLOOP.
        ELSE.
          LOOP AT SCREEN.
            IF SCREEN-group1 = 'GP2'.
              SCREEN-active = '0'.
    *SCREEN-INTENSIFIED = '1'.
              MODIFY SCREEN.
            ENDIF.
          ENDLOOP.
        ENDIF.
    endform.                    " SCREEN_OUTPUT
    *&      Form  GET_DOCUMENT_L
          text
    FORM GET_DOCUMENT_L .
    DATA : MESSG(60).
    SELECT SINGLE BUKRS
                  LIFNR
                  GJAHR
                  BELNR
                  BUDAT
                  BLDAT
                  BLART
                  BSCHL
                  SHKZG
                  DMBTR
                  SGTXT
                  REBZG
                  REBZJ FROM BSIK
                        INTO CORRESPONDING FIELDS OF W_DOCM
                       WHERE BUKRS = S_BUKRS AND
                             GJAHR = S_GJAHR AND
                             BELNR = S_BELNR.
    SELECT SINGLE DMBTR FROM BSIK INTO DCAMT
                       WHERE BELNR = W_DOCM-REBZG AND
                             GJAHR = W_DOCM-REBZJ.
    IF NOT W_DOCM IS INITIAL.
            PERFORM GET_LFA1.
    ELSE.
    SELECT SINGLE BUKRS
                  LIFNR
                  GJAHR
                  BELNR
                  BUDAT
                  BLDAT
                  BLART
                  BSCHL
                  SHKZG
                  DMBTR
                  SGTXT
                  REBZG
                  REBZJ FROM BSAK
                        INTO CORRESPONDING FIELDS OF W_DOCM
                       WHERE BUKRS = S_BUKRS AND
                             GJAHR = S_GJAHR AND
                             BELNR = S_BELNR.
    SELECT SINGLE DMBTR FROM BSAK INTO DCAMT
                       WHERE BELNR = W_DOCM-REBZG AND
                             GJAHR = W_DOCM-REBZJ.
          IF NOT W_DOCM IS INITIAL.
                  PERFORM GET_LFA1.
          ELSE.
          CONCATENATE 'THERE IS NO DOCUMENT NO' S_BELNR S_GJAHR 'FOR VENDOR' INTO  MESSG
                       SEPARATED BY SPACE.
          MESSAGE I011 WITH MESSG.
          LEAVE LIST-PROCESSING.
          ENDIF.
    ENDIF.
    ENDFORM.                    " GET_DOCUMENT_L
    *&      Form  GET_LFA1
          text
    FORM GET_LFA1 .
    SELECT SINGLE LIFNR
                  NAME1
                  NAME2
                  ORT01
                  ORT02
                  PSTLZ
                  STRAS
                  ADRNR
                  TELF1
                  TELF2
                  TELFX FROM LFA1 INTO CORRESPONDING FIELDS OF W_ADDR
                          WHERE LIFNR = W_DOCM-LIFNR.
    ENDFORM.                    " GET_LFA1
    *&      Form  GET_DOCUMENT_K
          text
    FORM GET_DOCUMENT_K .
    DATA : MESSG(60).
    SELECT SINGLE BUKRS
                  KUNNR
                 LIFNR
                  GJAHR
                  BELNR
                  BUDAT
                  BLDAT
                  BLART
                  BSCHL
                  SHKZG
                  DMBTR
                  SGTXT
                  REBZG
                  REBZJ FROM BSID
                        INTO CORRESPONDING FIELDS OF W_DOCM
                       WHERE  BUKRS = S_BUKRS AND
                              GJAHR = S_GJAHR AND
                              BELNR = S_BELNR.
    SELECT SINGLE DMBTR FROM BSID INTO DCAMT
                       WHERE BELNR = W_DOCM-REBZG AND
                             GJAHR = W_DOCM-REBZJ.
    IF NOT W_DOCM IS INITIAL.
            PERFORM GET_KNA1.
    ELSE.
    SELECT SINGLE BUKRS
                  KUNNR
                 LIFNR
                  GJAHR
                  BELNR
                  BUDAT
                  BLDAT
                  BLART
                  BSCHL
                  SHKZG
                  DMBTR
                  SGTXT
                  REBZG
                  REBZJ FROM BSAD
                        INTO CORRESPONDING FIELDS OF W_DOCM
                       WHERE  BUKRS = S_BUKRS AND
                              GJAHR = S_GJAHR AND
                              BELNR = S_BELNR.
    SELECT SINGLE DMBTR FROM BSAD INTO DCAMT
                       WHERE BELNR = W_DOCM-REBZG AND
                             GJAHR = W_DOCM-REBZJ.
          IF NOT W_DOCM IS INITIAL.
                  PERFORM GET_KNA1.
          ELSE.
          CONCATENATE 'THERE IS NO DOCUMENT NO' S_BELNR S_GJAHR 'FOR CUSTOMER' INTO  MESSG
                       SEPARATED BY SPACE.
          MESSAGE I011 WITH MESSG.
          LEAVE LIST-PROCESSING.
          ENDIF.
    ENDIF.
    ENDFORM.                    " GET_DOCUMENT_K
    *&      Form  GET_KNA1
          text
    FORM GET_KNA1 .
    SELECT SINGLE KUNNR
                  NAME1
                  NAME2
                  ORT01
                  ORT02
                  PSTLZ
                  STRAS
                  ADRNR
                  TELF1
                  TELF2
                  TELFX FROM KNA1 INTO CORRESPONDING FIELDS OF W_ADDR
                          WHERE KUNNR = W_DOCM-KUNNR.
    ENDFORM.                    " GET_KNA1
    *&      Form  DISPLAY
          text
    FORM DISPLAY .
    LONG TEXT *************************
    *DATA : BEGIN OF inline OCCURS 0,
    *END OF inline.
    *TYPES: BEGIN OF TY_LONGT,
                   tdformat TYPE tdformat,
                   tdline TYPE tdline,
          END OF TY_LONGT.
    *DATA : TLONGT TYPE STANDARD TABLE OF TY_LONGT,
          WLONGT TYPE TY_LONGT.
    DATA: BEGIN OF DTEXT OCCURS 50.
    *DATA: MATNR LIKE PBIM-MATNR.
    INCLUDE STRUCTURE TLINE.
    DATA: END OF DTEXT.
    DATA: BEGIN OF HTEXT.
    INCLUDE STRUCTURE THEAD.
    DATA: END OF HTEXT.
    DATA: BEGIN OF LTEXT OCCURS 50.
    INCLUDE STRUCTURE TLINE.
    DATA: END OF LTEXT.
    DATA: TNAME LIKE THEAD-TDNAME.
    CONCATENATE S_BUKRS W_DOCM-BELNR S_GJAHR '002' INTO  TNAME.
    *SEPARATED BY SPACE.
    DATA : W_STXL TYPE STXL.
    SELECT SINGLE * FROM STXL INTO W_STXL
                             WHERE TDNAME = TNAME.
    IF NOT W_STXL IS INITIAL.
    *SELECT * FROM PBIM WHERE WERKS IN S_WERKS.
    *MOVE PBIM-BDZEI TO TNAME.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        CLIENT                        = SY-MANDT
        ID                            = W_STXL-TDID
        LANGUAGE                      = W_STXL-TDSPRAS
        NAME                          = TNAME
        OBJECT                        = W_STXL-TDOBJECT
      ARCHIVE_HANDLE                = 0
      LOCAL_CAT                     = ' '
    IMPORTING
        HEADER                        = HTEXT
      TABLES
        LINES                         = LTEXT
    EXCEPTIONS
      ID                            = 1
      LANGUAGE                      = 2
      NAME                          = 3
      NOT_FOUND                     = 4
      OBJECT                        = 5
      REFERENCE_CHECK               = 6
      WRONG_ACCESS_TO_ARCHIVE       = 7
      OTHERS                        = 8
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT LTEXT.
    IF LTEXT-TDLINE NE ''.
    MOVE LTEXT-TDLINE TO DTEXT-TDLINE.
    APPEND DTEXT.
    ENDIF.
    ENDLOOP.
    ENDIF.
    LONG TEXT *************************
    CUSTOMER / VENDOR NO *************************
    DATA : CUVE(10).
    IF R1 = 'X'.
    CUVE = W_ADDR-LIFNR.
    ELSEIF R2 = 'X'.
    CUVE = W_ADDR-KUNNR.
    ENDIF.
    CUSTOMER / VENDOR NO *************************
    CR / DR DATA *************************
    IF DCAMT IS INITIAL.
    SELECT SINGLE DMBTR FROM BSIS INTO DCAMT
                       WHERE BELNR = W_DOCM-REBZG AND
                             GJAHR = W_DOCM-REBZJ .
                          ( KOART = 'D' OR KOART = 'K' ).
    ENDIF.
    CR / DR DATA *************************
    DATA: CNAME TYPE BUTXT.
    SELECT SINGLE BUTXT FROM T001 INTO CNAME
                       WHERE BUKRS = S_BUKRS.
    DATA : NAME(60),
           STREET(60),
           TELFX(60).
    CONCATENATE W_ADDR-NAME1 W_ADDR-NAME2 INTO  NAME
    SEPARATED BY SPACE.
    CONCATENATE W_ADDR-ORT01 W_ADDR-ORT02 'POSTAL CODE :' W_ADDR-PSTLZ INTO  STREET
    SEPARATED BY SPACE.
    CONCATENATE 'Tel No.:' W_ADDR-TELF1 W_ADDR-TELF2 'FAX :' W_ADDR-TELFX INTO  TELFX
    SEPARATED BY SPACE.
    DATA : CRDB(20),
           CRDBA(16),
           BALC TYPE DMBTR.
    IF W_DOCM-SHKZG = 'S'.
    CRDB = 'Debit Note No. :'.
    CRDBA = 'DEBIT'.
    BALC = DCAMT + W_DOCM-DMBTR.
    ELSEIF W_DOCM-SHKZG = 'H'.
    CRDB = 'Credit Note No. :'.
    CRDBA = 'CREDIT'.
    BALC = DCAMT - W_DOCM-DMBTR.
    ENDIF.
    SKIP 5.
    *FORMAT INVERSE.
                ULINE 03(77).
    WRITE : 03 SY-VLINE, 80 '|',
            /03 SY-VLINE, NAME, 54 'Party No.:' COLOR 7, CUVE COLOR 7, 80 '|',
            /03 SY-VLINE, W_ADDR-STRAS, 80 '|',
            /03 SY-VLINE, STREET, 80 '|',
            /03 SY-VLINE, TELFX, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 05 CNAME COLOR 2,  80 '|',
            /03 SY-VLINE, 36 CRDB RIGHT-JUSTIFIED, 59 W_DOCM-BELNR, 71 W_DOCM-GJAHR, 80 '|',
            /03 SY-VLINE, 58 'DATE :', W_DOCM-BUDAT, 80 '|',
            /03 SY-VLINE, 80 '|'. ULINE 03(77).
    WRITE : /03 SY-VLINE, 80 '|'.
    IF NOT DTEXT IS INITIAL.
    LOOP AT DTEXT.
    WRITE : /03 SY-VLINE, 05 DTEXT-TDLINE COLOR 1, 80 '|'.
    ENDLOOP.
    ELSEIF W_DOCM-SGTXT NE ''.
    WRITE : /03 SY-VLINE, 05 W_DOCM-SGTXT COLOR 1, 80 '|'.
    ELSE.
    WRITE : /03 SY-VLINE, 80 '|'.
    ENDIF.
    WRITE : /03 SY-VLINE, 80 '|',
    *WRITE : /03 SY-VLINE, TNAME, 80 '|',
           /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 08 'WORKING OF INTEREST CALCULATION AS ON                                   ' COLOR 4,
             47 ASON COLOR 4, '  [ 360 DAYS BASIS ]' COLOR 4, 80 '|',
            /03 SY-VLINE, 80 '|'. ULINE 03(77).
    WRITE : /03 SY-VLINE, 11 'DATE', 23 'INVOICE', 41 CRDBA, 55 'BALANCE', 64 'DAYS', 70 'INTEREST', 80 '|',
            /03 SY-VLINE, 23 ' AMOUNT', 41 'AMOUNT', 55' AMOUNT', 70 ' @ 8.00% ', 80 '|',
            /03 SY-VLINE, 80 '|'. ULINE 03(77).
    WRITE : /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 06 W_DOCM-BUDAT, 15 DCAMT, 32 W_DOCM-DMBTR, 47 BALC, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|'. ULINE 03(77).
    WRITE : /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 10 'PREPARED BY', 35 'ACCOUNTANT', 60 'MANAGER', 80 '|',
            /03 SY-VLINE, 80 '|',
            /03 SY-VLINE, 80 '|'. ULINE 03(77).
    ENDFORM.                    " DISPLAY

  • How to include all the fields of a Table into a Structure.

    How to include a Complete Table into a Structure.
    I want to include all the fields of KNA1 into a structure say W_KNA1(A local structure declared within a program)....How this can b acheived.
    Thanks in Advance.

    if i want to use INCLUDE STRUCTURE.....how will it work.
    TYPES : begin of ty_kna1,
                      INCLUDE STRUCTURE KNA1,
                  end of ty_kna1.
    tell me this is correct stmt.

  • Different structure types in itab

    hello experts,
    how can i fill the itab with different structure types.
    if i give the componenttype/domain to  'any' in my structure declaration, then its not saving and showing the error.
    how to solve this problem
    thanks
    Tim

    Hi,
    I think there is no general structure which accepts data of any types. I have the doubt why you need one internal table for storing data of different structure. You can declare multiple internal tables and store corresponding structure to that itab.
    If you are looking for some internal table type whose structure can be dynamic then you can go for Field symbols table which is of form
    field-symbols <itab> type standard table.
    this can hold data of any structure.
    but not rows of different structure ( which i think have no reason to be so )
    Cheers
    Kothand

  • Pointer of structure

    Can I get the pointer of a structure. e.g getting pointer of any integer etc maybe I need Marshal class.
    Allow time to reverse.

    With Marshal.StructureToPtr you can copy your structure to a memory block
    (see the VB example in the documentation) and then access the data via pointer represented as an
    IntPtr (for example, using Marshal.Copy). If you make some parts in C#, then you will be able to deal with pointers via
    unsafe and fixed, which are not available in VB.
    Thanks Viorel,
    I found my answer that I cannot get the pointer of a structure declared in .net environment. In order to deal with unmanaged structure I made this code:
    Imports System.Runtime.InteropServices
    Namespace Unmanaged
    Public Structure [Object](Of Struct As Structure)
    Implements IDisposable, ICloneable, IObject
    Private _Pointer As IntPtr
    ''' <summary>
    ''' Returns the pointer of structure
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public ReadOnly Property Pointer As IntPtr Implements IObject.Pointer
    Get
    Return _Pointer
    End Get
    End Property
    ''' <summary>
    ''' Returns the total size of object.
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public ReadOnly Property Size As Integer Implements IObject.Size
    Get
    Return Marshal.SizeOf(GetType(Struct))
    End Get
    End Property
    ''' <summary>
    ''' Return the type of structure.
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public ReadOnly Property Type As Type
    Get
    Return GetType(Struct)
    End Get
    End Property
    ''' <summary>
    ''' Accepts or returns the managed array of bytes.
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property ManagedBytes As Byte()
    Get
    Dim bytes(Size - 1) As Byte
    Marshal.Copy(_Pointer, bytes, 0, Size)
    Return bytes
    End Get
    Set(value As Byte())
    Marshal.Copy(value, 0, _Pointer, Size)
    End Set
    End Property
    ''' <summary>
    ''' Returns the managed value of structure.
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Value As Struct
    Get
    Return Marshal.PtrToStructure(_Pointer, GetType(Struct))
    End Get
    Set(value As Struct)
    Marshal.StructureToPtr(value, _Pointer, True)
    End Set
    End Property
    ''' <summary>
    ''' Returns a copy of unmanaged object. Similar to Clone.
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Copy() As [Object](Of Struct)
    Dim bytes(Size - 1) As Byte
    Marshal.Copy(_Pointer, bytes, 0, Size)
    Dim pointer = Marshal.AllocHGlobal(Size)
    Marshal.Copy(bytes, 0, pointer, Size)
    Erase bytes
    Return New [Object](Of Struct)(Intptr:=pointer)
    End Function
    ''' <summary>
    ''' Copy structure from current pointer to a specific pointer.
    ''' </summary>
    ''' <param name="Pointer"></param>
    ''' <remarks></remarks>
    Public Sub CopyTo(Pointer As IntPtr)
    Marshal.StructureToPtr(Value, Pointer, True)
    End Sub
    ''' <summary>
    ''' Copy structure from current pointer to a pointer of specific unmanaged object.
    ''' </summary>
    ''' <param name="Obj"></param>
    ''' <remarks></remarks>
    Public Sub CopyTo(Obj As [Object](Of Struct))
    Obj.Value = Me.Value
    End Sub
    ''' <summary>
    ''' Create new unmanaged object that has value of specific managed structure.
    ''' </summary>
    ''' <param name="Value"></param>
    ''' <remarks></remarks>
    Sub New(Value As Struct)
    _Pointer = Marshal.AllocHGlobal(Marshal.SizeOf(GetType(Struct)))
    Marshal.StructureToPtr(Value, _Pointer, True)
    End Sub
    ''' <summary>
    ''' Converts pointer of structure to unmanaged object.
    ''' </summary>
    ''' <param name="Intptr"></param>
    ''' <remarks></remarks>
    Sub New(Intptr As IntPtr)
    Me._Pointer = Intptr
    End Sub
    ''' <summary>
    ''' Creates an unmanaged object at specific pointer having specific value.
    ''' </summary>
    ''' <param name="Pointer"></param>
    ''' <param name="Value"></param>
    ''' <remarks></remarks>
    Sub New(Pointer As IntPtr, Value As Struct)
    _Pointer = Pointer
    Marshal.StructureToPtr(_Pointer, Pointer, True)
    End Sub
    Public Shared Narrowing Operator CType(Value As [Object](Of Struct)) As Struct
    Return Value.Value
    End Operator
    Public Shared Narrowing Operator CType(Value As Struct) As [Object](Of Struct)
    Return New [Object](Of Struct)(Value)
    End Operator
    Public Shared Narrowing Operator CType(Obj As [Object](Of Struct)) As IntPtr
    Return Obj.Pointer
    End Operator
    Public Shared Narrowing Operator CType(Pointer As IntPtr) As [Object](Of Struct)
    Return New [Object](Of Struct)(Intptr:=Pointer)
    End Operator
    ''' <summary>
    ''' Create a copy of unmanaged object.
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function Clone() As Object Implements ICloneable.Clone
    Return New [Object](Of Struct)(Me.Value)
    End Function
    ''' <summary>
    ''' Destroy unmanaged object.
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Dispose() Implements IDisposable.Dispose
    Marshal.FreeHGlobal(_Pointer)
    _Pointer = Nothing
    End Sub
    End Structure
    Public Structure Array(Of Struct As Structure)
    Implements IDisposable, ICloneable, IObject, IEnumerable
    Private _Pointer As IntPtr
    Private Property _Count As Integer
    Get
    Return Marshal.ReadInt32(_Pointer)
    End Get
    Set(value As Integer)
    Marshal.WriteInt32(_Pointer, value)
    End Set
    End Property
    Public ReadOnly Property Count As Integer
    Get
    Return _Count
    End Get
    End Property
    Public ReadOnly Property Pointer As IntPtr Implements IObject.Pointer
    Get
    Return _Pointer
    End Get
    End Property
    Public ReadOnly Property Size As Integer Implements IObject.Size
    Get
    Return 4 + (Count * StructureSize)
    End Get
    End Property
    Public Property Value As Struct()
    Get
    Dim array(Count - 1) As Struct
    For i = 0 To Count - 1
    array(i) = Me(i)
    Next
    Return array
    End Get
    Set(value As Struct())
    For i = 0 To value.Count - 1
    Me(i) = value(i)
    Next
    End Set
    End Property
    Public ReadOnly Property StructureType As Type
    Get
    Return GetType(Struct)
    End Get
    End Property
    Public ReadOnly Property StructureSize As Integer
    Get
    Return Marshal.SizeOf(StructureType)
    End Get
    End Property
    Public ReadOnly Property ArrayPointer As IntPtr
    Get
    Return _Pointer + 4
    End Get
    End Property
    Public ReadOnly Property MemberPointer(ID As Integer) As IntPtr
    Get
    If ID >= Count Then Throw New System.IndexOutOfRangeException()
    Return _Pointer + 4 + (Size * ID)
    End Get
    End Property
    Public Property Member(ID As Integer) As [Object](Of Struct)
    Get
    Return New [Object](Of Struct)(Intptr:=MemberPointer(ID))
    End Get
    Set(value As [Object](Of Struct))
    Dim obj = Member(ID)
    obj.Value = value.Value
    End Set
    End Property
    Default Public Property ManagedMember(ID As Integer) As Struct
    Get
    Dim pointer = MemberPointer(ID)
    Return Marshal.PtrToStructure(pointer, GetType(Struct))
    End Get
    Set(value As Struct)
    Dim pointer = MemberPointer(ID)
    Marshal.StructureToPtr(value, pointer, True)
    End Set
    End Property
    Public Function Copy() As Array(Of Struct)
    Dim bytes(Size - 1) As Byte
    Marshal.Copy(_Pointer, bytes, 0, Size)
    Dim pointer = Marshal.AllocHGlobal(Size)
    Marshal.Copy(bytes, 0, pointer, Size)
    Erase bytes
    Return New Array(Of Struct)(Pointer:=pointer)
    End Function
    Sub New(Pointer As IntPtr)
    Me._Pointer = Pointer
    End Sub
    Sub New(Count As Integer)
    _Pointer = Marshal.AllocHGlobal(4 + (Count * Marshal.SizeOf(GetType(Struct))))
    Me._Count = Count
    End Sub
    Sub New(Array() As Struct)
    Me.New(Array.Count)
    Me.Value = Array
    End Sub
    Public Function Clone() As Object Implements ICloneable.Clone
    Return New Array(Of Struct)(Me.Value)
    End Function
    Public Sub Dispose() Implements IDisposable.Dispose
    Marshal.FreeHGlobal(_Pointer)
    _Pointer = 0
    End Sub
    Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
    Return New Enumerator(Me)
    End Function
    Private Structure Enumerator
    Implements IEnumerator
    Private _current As Integer
    Private _array As Array(Of Struct)
    Sub New(Array As Array(Of Struct))
    Me._array = Array
    _current = 0
    End Sub
    Public ReadOnly Property Current As Object Implements IEnumerator.Current
    Get
    Return _array(_current)
    End Get
    End Property
    Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
    _current = _current + 1
    Return (_current < _array.Count)
    End Function
    Public Sub Reset() Implements IEnumerator.Reset
    _current = 0
    End Sub
    End Structure
    End Structure
    Public Interface IObject
    ''' <summary>
    ''' Returns the pointer of structure
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    ReadOnly Property Pointer As IntPtr
    ''' <summary>
    ''' Returns the total size of object.
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    ReadOnly Property Size As Integer
    End Interface
    End Namespace
    I think I am doing right. Does my array matches the native array?
    Allow time to reverse.
    I would say NO!
    La vida loca

  • Assigning structures using types

    Hi all,
               There is a structure declared in the program as follows
               TYPES : BEGIN OF TY_CUMM .
           INCLUDE STRUCTURE ZHRCUMWTMAP.
    TYPES : END OF TY_CUMM.
    but its giving extended check error as "  Within classes and interfaces, you can only use "TYPE" to refer to ABAP Dictionary
    types (not "LIKE" or "STRUCTURE")."
    So frnds any suggestions.
    regards,
    sahakla

    Hi!
    Yes, the coding, you wrote is obsolete. It is working, but a newver version of SAP, this coding will cause problems.
    You might try out this style.
    TYPES : BEGIN OF TY_CUMM .
      hrcum TYPE ZHRCUMWTMAP.
    TYPES : END OF TY_CUMM.
    DATA: gt_hrcum TYPE STANDARD TABLE OF TY_CUMM,
         wa_hrcum LIKE LINE OF gt_hrcum.
    * access fields in the work area
      wa_hrcum-hrcum-field1 = wa_hrcum-hrcum-field2.
    Regards
    Tamá

  • Mass creation of Material Master Records

    Hi all,
    I have to create 50.000 materials the first time and then, once a month, I have to manage the update of 50/100 materials.
    What do you suggest ?
    Direct input the first time and Idoc (Matmas) to manage the updating?
    Thanks in advance
    Bye

    Hi
    Use LSMW Direct Input Method/Manually code it to imitate LSMW Direct Input Method .
    or
    Use BAPI to Create Materials .
    if u are going for BAPI u can use the following code.
    REPORT Z_NEW_PROGRAM2 .
    *TO CREATE MATERIAL USING BAPI.
                   STRUCTURE  DECLARATIONS                             *
    TABLES: BAPIMATHEAD,  "Headerdata
            BAPI_MARA,    "Clientdata
            BAPI_MARAX,   "Clientdatax
            BAPI_MARC,    "Plantdata
            BAPI_MARCX,   "Plantdatax
            BAPI_MAKT,    "Material description
            BAPI_MBEW,    "VALUATION DATA
            BAPI_MBEWX,
            BAPI_MARM,
            BAPI_MARMX,
            bapi_mean,
            BAPIRET2.     "Return messages
    DATA:V_FILE TYPE STRING.   "input data file
    DATA:
      BEGIN OF LSMW_MATERIAL_MASTER,
        MATNR(018) TYPE C,  "Material number
        MTART(004) TYPE C,  "Material type
        MBRSH(001) TYPE C,  "Industry sector
        WERKS(004) TYPE C,  "Plant
        MAKTX(040) TYPE C,  "Material description
        DISMM(002) TYPE C,  "Extra Field Added In the Program as itsrequired
        MEINS(003) TYPE C,  "Base unit of measure
        MATKL(009) TYPE C,  "Material group
        SPART(002) TYPE C,  "Division
        LABOR(003) TYPE C,  "Lab/office
        PRDHA(018) TYPE C,  "Product hierarchy
        MSTAE(002) TYPE C,  "X-plant matl status
        MTPOS_MARA(004) TYPE C,  "Gen item cat group
        BRGEW(017) TYPE C,  "Gross weight
        GEWEI(003) TYPE C,  "Weight unit
        NTGEW(017) TYPE C,  "Net weight
        GROES(032) TYPE C,  "Size/Dimensions
        MAGRV(004) TYPE C,  "Matl grp pack matls
        BISMT(018) TYPE C,  "Old material number
        WRKST(048) TYPE C,  "Basic material
        PROFL(003) TYPE C,  "DG indicator profile
        KZUMW(001) TYPE C,  "Environmentally rlvt
        BSTME(003) TYPE C,  "Order unit
        VABME(001) TYPE C,
        EKGRP(003) TYPE C,  "Purchasing group
        XCHPF(001) TYPE C,  "Batch management
        EKWSL(004) TYPE C,  "Purchasing key value
        WEBAZ(003) TYPE C,  "GR processing time
        MFRPN(040) TYPE C,  "Manufacturer part number
        MFRNR(010) TYPE C,  "Manufacturer number
        VPRSV(001) TYPE C,  "Price control indicator
        STPRS(015) TYPE C,  "Standard price
        BWPRH(014) TYPE C,  "Commercial price1
        BKLAS(004) TYPE C,  "Valuation class
        bwkey(004) type c,
      END OF LSMW_MATERIAL_MASTER.
                   INTERNAL TABLE DECLARATIONS                         *
    *to store the input data
    DATA:
      BEGIN OF it_matmaster OCCURS 0.
            INCLUDE STRUCTURE LSMW_MATERIAL_MASTER.
    DATA:
      END OF it_matmaster.
    *for material description
    DATA:BEGIN OF IT_MATERIALDESC OCCURS 0.
         INCLUDE STRUCTURE BAPI_MAKT .
    DATA:END OF IT_MATERIALDESC.
    *FOR gross wt
    data: begin of it_uom occurs 0.
          include structure BAPI_MARM.
    data:end of it_uom.
    DATA: BEGIN OF IT_UOMX OCCURS 0.
          INCLUDE STRUCTURE BAPI_MARMX.
    DATA:END OF IT_UOMX.
    data:begin of it_mean occurs 0.
         include structure bapi_mean.
    data:end of it_mean.
    DATA:BEGIN OF IT_MLTX OCCURS 0.
         INCLUDE STRUCTURE BAPI_MLTX.
    DATA:END OF IT_MLTX.
    *to return messages
    DATA:BEGIN OF IT_RETURN OCCURS 0.
         INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF IT_RETURN.
    SELECTION SCREEN                                                    *
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.
    PARAMETERS:P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B1 .
    AT SELECTION SCREEN                                                  *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
          FIELD_NAME    = 'P_FILE'
        IMPORTING
          FILE_NAME     = P_FILE.
                   TO UPLOAD THE DATA                                  *
    START-OF-SELECTION.
    V_FILE = P_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = V_FILE
       FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      tables
        data_tab                      =  IT_MATMASTER
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *ELSE.
    *DELETE IT_MATMASTER INDEX 1.
    ENDIF.
                   DATA POPULATIONS                                    *
    LOOP AT  IT_MATMASTER.
    *HEADER DATA
      BAPIMATHEAD-MATERIAL = IT_MATMASTER-MATNR.
      BAPIMATHEAD-IND_SECTOR = IT_MATMASTER-Mbrsh.
      BAPIMATHEAD-MATL_TYPE = IT_MATMASTER-Mtart.
      BAPIMATHEAD-BASIC_VIEW = 'X'.
      BAPIMATHEAD-PURCHASE_VIEW = 'X'.
      BAPIMATHEAD-ACCOUNT_VIEW = 'X'.
    *CLIENTDATA
      BAPI_MARA-MATL_GROUP = IT_MATMASTER-MATKL.
      BAPI_MARA-DIVISION = IT_MATMASTER-SPART.
      BAPI_MARA-DSN_OFFICE = IT_MATMASTER-LABOR.
      BAPI_MARA-PROD_HIER = IT_MATMASTER-PRDHA.
      BAPI_MARA-PUR_STATUS = IT_MATMASTER-MSTAE.
      BAPI_MARA-ITEM_CAT = IT_MATMASTER-MTPOS_MARA.
      BAPI_MARA-NET_WEIGHT = IT_MATMASTER-NTGEW.
    BAPI_MARA-PO_UNIT = 'KG'.
    BAPI_MARA-UNIT_OF_WT_ISO = 'KG'.
      BAPI_MARA-UNIT_OF_WT = 'KG'.
    BAPI_MARA-PACK_VO_UN = 'KG'.
    BAPI_MARA-BASE_UOM_ISO = 'KG'.
      bapi_mara-size_dim = it_matmaster-groes.
      BAPI_MARA-MAT_GRP_SM = IT_MATMASTER-MAGRV.
      BAPI_MARA-OLD_MAT_NO = IT_MATMASTER-BISMT.
      BAPI_MARA-BASE_UOM = IT_MATMASTER-MEINS.
      BAPI_MARA-BASIC_MATL = IT_MATMASTER-WRKST.
      BAPI_MARA-HAZMATPROF = IT_MATMASTER-PROFL.
      BAPI_MARA-ENVT_RLVT = IT_MATMASTER-KZUMW.
      BAPI_MARA-PO_UNIT = IT_MATMASTER-BSTME.
      BAPI_MARA-VAR_ORD_UN = IT_MATMASTER-VABME.
      BAPI_MARA-PUR_VALKEY = IT_MATMASTER-EKWSL.
      BAPI_MARA-MANU_MAT = IT_MATMASTER-MFRPN.
      BAPI_MARA-MFR_NO = IT_MATMASTER-MFRNR.
      BAPI_MARAX-MATL_GROUP = 'X'.
      BAPI_MARAX-DIVISION = 'X'.
      BAPI_MARAX-DSN_OFFICE = 'X'.
      BAPI_MARAX-PROD_HIER = 'X'.
      BAPI_MARAX-PUR_STATUS = 'X'.
      BAPI_MARAX-ITEM_CAT = 'X'.
      BAPI_MARAX-NET_WEIGHT = 'X'.
      BAPI_MARAX-UNIT_OF_WT = 'X'.
    BAPI_MARAX-UNIT_OF_WT_ISO = 'X'.
      bapi_maraX-size_dim = 'X'.
      BAPI_MARAX-MAT_GRP_SM = 'X'.
      BAPI_MARAX-OLD_MAT_NO = 'X'.
      BAPI_MARAX-BASE_UOM = 'X'.
      BAPI_MARAX-BASE_UOM_ISO = 'X'.
      BAPI_MARAX-BASIC_MATL = 'X'.
      BAPI_MARAX-MFR_NO = 'X'.
      BAPI_MARAX-HAZMATPROF = 'X'.
      BAPI_MARAX-ENVT_RLVT = 'X'.
      BAPI_MARAX-PO_UNIT = 'X'.
    BAPI_MARAX-PACK_VO_UN = 'X'.
      BAPI_MARAX-VAR_ORD_UN = 'X'.
      BAPI_MARAX-PUR_VALKEY = 'X'.
      BAPI_MARAX-MANU_MAT = 'X'.
      BAPI_MARAX-MFR_NO = 'X'.
    *PLANT DATA
      BAPI_MARC-PLANT = IT_MATMASTER-WERKS.
      BAPI_MARC-PUR_GROUP = IT_MATMASTER-EKGRP.
      BAPI_MARC-BATCH_MGMT = IT_MATMASTER-XCHPF.
      BAPI_MARC-GR_PR_TIME = IT_MATMASTER-WEBAZ.
      BAPI_MARCX-PLANT = IT_MATMASTER-WERKS.
      BAPI_MARCX-PUR_GROUP = 'X'.
      BAPI_MARCX-BATCH_MGMT = 'X'.
      BAPI_MARCX-GR_PR_TIME = 'X'.
    *VALUATION DATA
      BAPI_MBEW-PRICE_CTRL = IT_MATMASTER-VPRSV.
      BAPI_MBEW-STD_PRICE = IT_MATMASTER-STPRS.
      BAPI_MBEW-COMMPRICE1 = IT_MATMASTER-BWPRH.
      BAPI_MBEW-VAL_AREA = IT_MATMASTER-BWKEY.
      BAPI_MBEW-VAL_CLASS = IT_MATMASTER-BKLAS.
      BAPI_MBEWX-PRICE_CTRL = 'X'.
      BAPI_MBEWX-STD_PRICE = 'X'.
      BAPI_MBEWX-COMMPRICE1 = 'X'.
      BAPI_MBEWX-VAL_AREA = IT_MATMASTER-BWKEY.
      BAPI_MBEWX-VAL_CLASS = 'X'.
      IT_MATERIALDESC-LANGU = 'EN'.
      IT_MATERIALDESC-MATL_DESC = IT_MATMASTER-MAKTX.
      append IT_materialdesc.
      IT_UOM-GROSS_WT = IT_MATMASTER-BRGEW.
      IT_UOM-ALT_UNIT = 'KG'.
      IT_UOM-ALT_UNIT_ISO = 'KG'.
        IT_UOM-UNIT_OF_WT = IT_MATMASTER-GEWEI.
        APPEND IT_UOM.
      IT_UOMX-GROSS_WT = 'X'.
      IT_UOMX-ALT_UNIT = 'KG'.
      IT_UOMX-ALT_UNIT_ISO = 'KG'.
      IT_UOMX-UNIT_OF_WT = 'X'.
      APPEND IT_UOMX.
      it_mean-unit = 'KD3'.
      append it_mean.
      it_mltx-langu = 'E'.
      it_mltx-text_name = it_matmaster-matnr.
      APPEND IT_MLTX.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
          headdata                   = BAPIMATHEAD
          CLIENTDATA                 = BAPI_MARA
          CLIENTDATAX                = BAPI_MARAx
         PLANTDATA                  =  BAPI_MARc
         PLANTDATAX                 =  BAPI_MARcx
        FORECASTPARAMETERS         =
        FORECASTPARAMETERSX        =
        PLANNINGDATA               =
        PLANNINGDATAX              =
        STORAGELOCATIONDATA        =
        STORAGELOCATIONDATAX       =
         VALUATIONDATA              = BAPI_MBEW
         VALUATIONDATAX             = BAPI_MBEWX
        WAREHOUSENUMBERDATA        =
        WAREHOUSENUMBERDATAX       =
        SALESDATA                  =
        SALESDATAX                 =
        STORAGETYPEDATA            =
        STORAGETYPEDATAX           =
        FLAG_ONLINE                = ' '
        FLAG_CAD_CALL              = ' '
       IMPORTING
         RETURN                     = IT_RETURN
       TABLES
         MATERIALDESCRIPTION        = IT_MATERIALDESC
         UNITSOFMEASURE             = IT_UOM
         UNITSOFMEASUREX            = IT_UOMX
         INTERNATIONALARTNOS        = it_mean
        MATERIALLONGTEXT           = IT_MLTX
        TAXCLASSIFICATIONS         =
        RETURNMESSAGES             =
        PRTDATA                    =
        PRTDATAX                   =
        EXTENSIONIN                =
        EXTENSIONINX               =
    read table it_return with key TYPE = 'S'.
    if sy-subrc = 0.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT          =
      IMPORTING
        RETURN        =
    *else.
    *CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
    IMPORTING
      RETURN        =
    endif.
    WRITE:/    IT_RETURN-TYPE,
            2   IT_RETURN-ID,
            22  IT_RETURN-NUMBER,
            25  IT_RETURN-MESSAGE.
               IT_RETURN-LOG_NO,
               IT_RETURN-LOG_MSG_NO,
               IT_RETURN-MESSAGE_V1,
               IT_RETURN-MESSAGE_V2,
               IT_RETURN-MESSAGE_V3,
               IT_RETURN-MESSAGE_V4,
               IT_RETURN-PARAMETER,
               IT_RETURN-ROW,
               IT_RETURN-FIELD,
               IT_RETURN-SYSTEM.
    ENDLOOP.
    This will Create Mass .

  • Problem :ALV:Deletion Flags not showing in output

    hi all !
    I have a alv program which displays customer data.there are three deletion flags columns in the output.
    First deletion flag will be: KNA1-LOEVM
    Second deletion flag will be: KNB1-LOEVM
    Third deletion flag will be: KNVV-LOEVM
    earlier all three were showing.but now no one is showing.i'm pasting my code here if any expert can have a look and find out the BUG.
    CODE STARTS----
    report zqsdcap_cust.
    INCLUDE DECLARATIONS
    include:
      ziabapcapph_macros.                   "Holcim Useful Macros
    TABLE DECLARATIONS
    tables:
      tvko,                                "Org. Unit: Sales Organizations
      t001,                                "Company codes
      kna1,                                "Customer Master
      knvv,                                "Customer master sales
      knvi,                                "Customer tax classificat'n
      knb1,                                "Customer master company code
         <<CR003-DEVK949538 start ins
      adr6.                                "SMTP numbers
         <<CR003-DEVK949538 end ins
    TYPE DECLARATIONS
    type-pools:
      slis.
    STRUCTURE DECLARATIONS
    Define structure for keep data in ALV list
    data: begin of gs_output_list,
            vkorg   like  knvv-vkorg,                "Sales organization
            ktokd   like  kna1-ktokd,                "Customer A/C grp
            kunnr   like  kna1-kunnr,                "Customer number
            vtweg   like  knvv-vtweg,                "Distribution channel
            name1   like  kna1-name1,                           "Name1
            name3   like  kna1-name3,                           "Name3
            name4   like  kna1-name4,                           "Name4
            stras   like  kna1-stras,                "Street
            cityc   like  kna1-cityc,                "City
            bezei1  like  t005h-bezei,               "Sales office
            land1   like  kna1-land1,                "Country
            regio   like  kna1-regio,                "Region
            bezei2  like  t005u-bezei,               "Region decription
            kdgrp   like  knvv-kdgrp,                "Customer group
            ktext   like  t151t-ktext,               "Cust grp name
            bzirk   like  knvv-bzirk,                "Sales district
            bztxt   like  t171t-bztxt,               "Description
            zterm   like  knvv-zterm,                "Payment term
            lzone   like  kna1-lzone,                "Transport zone
            vtext   like  tzont-vtext,               "Description
            erdat   like  kna1-erdat,                "Creation date
          end of gs_output_list.
    Internal table for customer tax data
    data: begin of gs_output_tax,
            vkorg  like  knvv-vkorg,                 "Sales organization
            kunnr  like  kna1-kunnr,                 "Customer number
            vtweg  like  knvv-vtweg,                 "Distribution channel
            name1  like  kna1-name1,                            "Name1
            name3  like  kna1-name3,                            "Name3
            name4  like  kna1-name4,                            "Name4
            ort01  like  kna1-ort01,                 "City
            stcd1  like  kna1-stcd1,                 "STD code
            spart  like  knvv-spart,                 "Division
            taxkd  like  knvi-taxkd,                 "Tax classific'n
            tatyp  like  knvi-tatyp,                 "Tax category
            vtext  like  tskdt-vtext,                "Tax description
          end of gs_output_tax.
    Internal table for HVL customer master
    data: begin of gs_output_hvl,
            kunnr  like  kna1-kunnr,                 "Customer number
            stceg  like  kna1-stceg,                 "VAT registration no
            telfx  like  kna1-telfx,                 "Fax number
            telf1  like  kna1-telf1,                 "First telephone number
            stras  like  kna1-stras,                 "House number and stret
            ort02  like  kna1-ort02,                 "District
            cityc  like  kna1-cityc,                 "City code
            bezei  like  t005h-bezei,                "City description
            regio  like  kna1-regio,                 "Region
            ort01  like  kna1-ort01,                 "City
            name2  like  kna1-name2,                            "Name2
            name1  like  kna1-name1,                            "Name1
            bzirk  like  knvv-bzirk,                 "Sales district
            spart  like  knvv-spart,                 "Division
            vtweg  like  knvv-vtweg,                 "Distribution channel
            vkorg  like  knvv-vkorg,                 "Sales organization
          end of gs_output_hvl.
    Internal table for customer database CRM
    data: begin of gs_output_crm,
            vkorg      like  knvv-vkorg,             "Sales organization
            vtweg      like  knvv-vtweg,             "Distribution channel
            bzirk      like  knvv-bzirk,             "Sales district
            kunnr      like  kna1-kunnr,             "Customer number
            name1      like  kna1-name1,                        "Name1
            name2      like  kna1-name2,                        "Name2
            stras      like  kna1-stras,             "House number street
            ort01      like  kna1-ort01,             "City
            ort02      like  kna1-ort02,             "District
            pstlz      like  kna1-pstlz,             "Postal code
            cityc      like  kna1-cityc,             "City code
            telf1      like  kna1-telf1,             "First telephone number
            telfx      like  kna1-telfx,             "Fax number
            vkbur      like  knvv-vkbur,             "Sales office
            regio      like  kna1-regio,             "Region
            vkgrp      like  knvv-vkgrp,             "Sales group
            kdgrp      like  knvv-kdgrp,             "Customer group
            kvgr3      like  knvv-kvgr3,             "Customer group 3
            altkn      like  knb1-altkn,             "Previous record number
            erdat      like  knvv-erdat,             "Creation date
            found_dat  like  zcrm_bp_ext-found_dat,  "Found date
          <<CR000-DEVK943142 start del
          versg      like  knvv-versg,             "Customer statistic grp
          bukrs      like  knb1-bukrs,             "Company code
          <<CR000-DEVK943142 end del
          end of gs_output_crm.
    Internal table for customer information
    data: begin of gs_output_info,
            kunnr           like  kna1-kunnr,        "Customer number
            vkorg           like  knvv-vkorg,        "Sales organization
            vtweg           like  knvv-vtweg,        "Distribution channel
            stcd2           like  kna1-stcd2,        "Tax code
            name1           like  kna1-name1,        "Name1
            name2           like  kna1-name2,        "Name2
          <<CR002-DEVK944835 start ins
            name3           like  kna1-name3,        "Name3
          <<CR002-DEVK944835 end ins
            stras           like  kna1-stras,        "House number street
            ort01           like  kna1-ort01,        "City
            ort02           like  kna1-ort02,        "District
            pstlz           like  kna1-pstlz,        "Postal code
            regio           like  kna1-regio,        "Region
            land1           like  kna1-land1,        "Country code
            cityc           like  kna1-cityc,        "City code
            telf1           like  kna1-telf1,        "First telephone number
            telfx           like  kna1-telfx,        "Fax number
          <<CR001-DEVK944239 start ins
            bzirk           like  knvv-bzirk,        "Sales District
            vkbur           like  knvv-vkbur,        "Sales Office
            kdgrp           like  knvv-kdgrp,        "Customer group
          <<CR001-DEVK944239 end ins
            vkgrp           like  knvv-vkgrp,        "Sales group
            kvgr3           like  knvv-kvgr3,        "Customer group 3
            versg           like  knvv-versg,        "Customer stat grp
            kdkg2           like  kna1-kdkg2,        "Customer condition gp2
            kdkg1           like  kna1-kdkg1,        "Customer condition gp1
          <<CR001-DEVK944239 start del
          kdgrp           like  knvv-kdgrp,        "Customer group
          <<CR001-DEVK944239 end del
            altkn           like  knb1-altkn,        "Previous record#
            erdat           like  knvv-erdat,        "Creation date
            note_text(200)  type  c,                 "<<CR003-DEVK949538 ins
            smtp_addr       like  adr6-smtp_addr,    "<<CR003-DEVK949538 ins
            loevm1          like  kna1-loevm,        "Deletion flag all
            loevm2          like  knb1-loevm,        "Deletion flag Cd
            loevm3          like  knvv-loevm,        "Deletion flag sal
          end of gs_output_info.
    ALV Grid Declaration
    data:
      gs_fieldcat             type  slis_fieldcat_alv,
      gs_layout               type  slis_layout_alv,
      gs_event                type  slis_t_event,
      gs_variant              like  disvariant,
      gs_sort_info            type  slis_sortinfo_alv,
      gs_exit_caused_by_user  type  slis_exit_by_user,
      gs_tabname              type  slis_tabname,
      gs_header               type  slis_entry.
    INTERNAL TABLE DECLARATIONS
    Define internal table for keep data in ALV list
    data:
      gt_output_list       like  table of gs_output_list,
      gt_output_tax        like  table of gs_output_tax,
      gt_output_hvl        like  table of gs_output_hvl,
      gt_output_crm        like  table of gs_output_crm,
      gt_output_info       like  table of gs_output_info,
    <<CR003-DEVK949538 start ins
      gv_text              like  tline occurs 0 with header line,
    <<CR003-DEVK949538 start ins
    ALV Grid Declaration
      gt_fieldcat           type  slis_t_fieldcat_alv,
      gt_list_top_of_page   type  slis_t_listheader,
      gt_list_top_of_page2  type  slis_t_listheader,
      gt_sort_info          type  slis_t_sortinfo_alv.
    VARIABLE DECLARATIONS
    data:
    ALV Grid Declaration
      gv_save,
      gv_exit_caused_by_caller,
      gv_repid         type  sy-repid,
      gv_user_command  type  slis_formname value 'USER_COMMAND',
      gv_top_of_page   type  slis_formname value 'TOP_OF_PAGE',
      gv_top_of_list   type  slis_formname value 'TOP_OF_LIST',
      gv_end_of_list   type  slis_formname value 'END_OF_LIST',
      lv_store         like  thead-tdname,           "<<CR003-DEVK949538 ins
      lv_id            like  thead-tdid,             "<<CR003-DEVK949538 ins
      lv_lines         type  i.                      "<<CR003-DEVK949538 ins
    SELECTION SCREEN DECLARATIONS
    Define selection-screen of query
    selection-screen: begin of block blk with frame title text-001.
    select-options:   s_vkorg  for   knvv-vkorg           "Sales org
                                     obligatory
                                     memory id vko,
                      s_bzirk  for   knvv-bzirk,          "Sales district
                      s_vtweg  for   knvv-vtweg,          "Dist channel
                      s_spart  for   knvv-spart           "Division
                                     default 'CM',
                      s_taxkd  for   knvi-taxkd,          "Tax classific'n
                      s_kunnr  for   kna1-kunnr,          "Customer number
                      s_regio  for   kna1-regio,          "Region
                      s_kdgrp  for   knvv-kdgrp,          "Customer group
                      s_vkgrp  for   knvv-vkgrp,          "Sales group
                      s_vkbur  for   knvv-vkbur,          "Sales office
                      s_lzone  for   kna1-lzone,          "Zone
                      s_erdat  for   kna1-erdat,          "Creation date
                      s_zuawa  for   knb1-zuawa,          "Key for sorting
                      s_ktokd  for   kna1-ktokd,          "Customer A/C grp
                      s_altkn  for   knb1-altkn,          "Previous rec no
                      s_bukrs  for   knb1-bukrs           "Company code
                                     obligatory
                                     memory id buk,
                     s_loevm1 for   kna1-loevm,          "Deletion flag all
                     s_loevm2 for   knb1-loevm,          "Deletion flag Cd
                     s_loevm3 for   knvv-loevm.          "Deletion flag sal
    selection-screen: end of block blk.
    selection-screen: begin of block b2 with frame title text-002.
    parameters:       pr_cust1  radiobutton group a1
                                default 'X'
                                user-command bkg,
                      pr_cust2  radiobutton group a1,
                      pr_cust3  radiobutton group a1,
                      pr_cust4  radiobutton group a1,
                      pr_cust5  radiobutton group a1.
    selection-screen: end of block b2.
    AT SELECTION-SCREEN ON S_VKORG
    at selection-screen on s_vkorg.
      select  vkorg
        into  tvko-vkorg
        from  tvko
       where  vkorg in s_vkorg.
      authorization check for sales org.
        authority-check object 'V_VBRK_VKO'
                            id 'VKORG' field tvko-vkorg
                            id 'ACTVT' field '03'.
        check sy-subrc ne 0.
        message e002(zgen) with 'No authorization for sales org.'
                                 tvko-vkorg.
      endselect.
    AT SELECTION-SCREEN ON S_BUKRS
    at selection-screen on s_bukrs.
      if pr_cust4 eq 'X' or
         pr_cust5 eq 'X'.
        select  bukrs
          into  t001-bukrs
          from  t001
         where  bukrs in s_bukrs.
        authorization check for plant and company code
          authority-check object 'A_S_WERK'
                              id 'BUKRS' field t001-bukrs
                              id 'WERKS' dummy.
          check sy-subrc ne 0.
          message e002(zgen) with 'No authorization for this company code.'
                                   t001-bukrs.
        endselect.
      endif.
    AT SELECTION-SCREEN OUTPUT
    at selection-screen output.
      loop at screen .
        if pr_cust1 eq 'X'.
          if screen-name = 'S_VTWEG-LOW'   or
             screen-name = 'S_VTWEG-HIGH'  or
             screen-name = 'S_SPART-LOW'   or
             screen-name = 'S_SPART-HIGH'  or
             screen-name = 'S_TAXKD-LOW'   or
             screen-name = 'S_TAXKD-HIGH'  or
             screen-name = 'S_BUKRS-LOW'   or
             screen-name = 'S_BUKRS-HIGH'  or
             screen-name = 'S_ERDAT-LOW'   or
             screen-name = 'S_ERDAT-HIGH'  or
             screen-name = 'S_ALTKN-LOW'   or
             screen-name = 'S_ALTKN-HIGH'  or
             screen-name = 'S_VKBUR-LOW'   or
             screen-name = 'S_VKBUR-HIGH'  or
             screen-name = 'S_LOEVM1-LOW'  or
             screen-name = 'S_LOEVM1-HIGH' or
             screen-name = 'S_LOEVM2-LOW'  or
             screen-name = 'S_LOEVM2-HIGH' or
             screen-name = 'S_LOEVM3-LOW'  or
             screen-name = 'S_LOEVM3-HIGH'.
            screen-input = 0.
          endif.
        elseif pr_cust2 eq 'X'.
          if screen-name = 'S_BZIRK-LOW'    or
             screen-name = 'S_BZIRK-HIGH'   or
             screen-name = 'S_KDGRP-LOW'    or
             screen-name = 'S_KDGRP-HIGH'   or
             screen-name = 'S_LZONE-LOW'    or
             screen-name = 'S_LZONE-HIGH'   or
             screen-name = 'S_KTOKD-LOW'    or
             screen-name = 'S_KTOKD-HIGH'   or
             screen-name = 'S_ERDAT-LOW'    or
             screen-name = 'S_ERDAT-HIGH'   or
             screen-name = 'S_KTOKD-LOW'    or
             screen-name = 'S_KTOKD-HIGH'   or
             screen-name = 'S_ALTKN-LOW'    or
             screen-name = 'S_ALTKN-HIGH'   or
             screen-name = 'S_VKBUR-LOW'    or
             screen-name = 'S_VKBUR-HIGH'   or
             screen-name = 'S_LOEVM1-LOW'   or
             screen-name = 'S_LOEVM1-HIGH'  or
             screen-name = 'S_LOEVM2-LOW'   or
             screen-name = 'S_LOEVM2-HIGH'  or
             screen-name = 'S_LOEVM3-LOW'   or
             screen-name = 'S_LOEVM3-HIGH'  or
             screen-name = 'S_BUKRS-LOW'    or
             screen-name = 'S_BUKRS-HIGH'   or
             screen-name = 'S_VKGRP-LOW'    or
             screen-name = 'S_VKGRP-HIGH'.
            screen-input = 0.
          endif.
        elseif pr_cust3 eq 'X'.
          if screen-name = 'S_BZIRK-LOW'   or
             screen-name = 'S_BZIRK-HIGH'  or
             screen-name = 'S_KDGRP-LOW'   or
             screen-name = 'S_KDGRP-HIGH'  or
             screen-name = 'S_LZONE-LOW'   or
             screen-name = 'S_LZONE-HIGH'  or
             screen-name = 'S_ERDAT-LOW'   or
             screen-name = 'S_ERDAT-HIGH'  or
             screen-name = 'S_KTOKD-LOW'   or
             screen-name = 'S_KTOKD-HIGH'  or
             screen-name = 'S_SPART-LOW'   or
             screen-name = 'S_SPART-HIGH'  or
             screen-name = 'S_TAXKD-LOW'   or
             screen-name = 'S_TAXKD-HIGH'  or
             screen-name = 'S_REGIO-LOW'   or
             screen-name = 'S_REGIO-HIGH'  or
             screen-name = 'S_ALTKN-LOW'   or
             screen-name = 'S_ALTKN-HIGH'  or
             screen-name = 'S_VKBUR-LOW'   or
             screen-name = 'S_VKBUR-HIGH'  or
             screen-name = 'S_LOEVM1-LOW'  or
             screen-name = 'S_LOEVM1-HIGH' or
             screen-name = 'S_LOEVM2-LOW'  or
             screen-name = 'S_LOEVM2-HIGH' or
             screen-name = 'S_LOEVM3-LOW'  or
             screen-name = 'S_LOEVM3-HIGH' or
             screen-name = 'S_BUKRS-LOW'   or
             screen-name = 'S_BUKRS-HIGH'  or
             screen-name = 'S_VKGRP-LOW'   or
             screen-name = 'S_VKGRP-HIGH'  or
             screen-name = 'S_VTWEG-LOW'   or
             screen-name = 'S_VTWEG-HIGH'.
            screen-input = 0.
          endif.
        elseif pr_cust4 eq 'X'.
          if screen-name = 'S_LZONE-LOW'  or
             screen-name = 'S_LZONE-HIGH' or
             screen-name = 'S_TAXKD-LOW'  or
             screen-name = 'S_TAXKD-HIGH' or
             screen-name = 'S_REGIO-LOW'  or
             screen-name = 'S_REGIO-HIGH' or
             screen-name = 'S_ZUAWA-LOW'  or
             screen-name = 'S_ZUAWA-HIGH'.
            screen-input = 0.
          endif.
        else.
          if screen-name = 'S_LZONE-LOW'   or
             screen-name = 'S_LZONE-HIGH'  or
             screen-name = 'S_TAXKD-LOW'   or
             screen-name = 'S_TAXKD-HIGH'.
            screen-input = 0.
          endif.
        endif.
        modify screen.
      endloop.
    INITIALIZATION
    initialization.
      perform deactivate_program using sy-cprog.
    START OF SELECTION
    start-of-selection.
    Customized function to get data from database table
      perform get_data.
    <<CR003-DEVK949538 start ins
      perform get_internal_note_text tables gt_output_info.
    <<CR003-DEVK949538 end ins
    Create sort of ALV list
      perform build_sort.
    Send data to ALV list to display
      if pr_cust1 eq 'X'.
        gs_tabname = text-003.
        gs_header  = text-004.
        perform write_alv_report tables gt_output_list
                                        gt_sort_info.
      elseif pr_cust2 eq 'X'.
        gs_tabname = text-005.
        gs_header  = text-006.
        perform write_alv_report tables gt_output_tax
                                        gt_sort_info.
      elseif pr_cust3 eq 'X'.
        gs_tabname = text-007.
        gs_header  = text-008.
        perform write_alv_report tables gt_output_hvl
                                        gt_sort_info.
      elseif pr_cust4 eq 'X'.
        gs_tabname = text-009.
        gs_header  = text-010.
        perform write_alv_report tables gt_output_crm
                                        gt_sort_info.
      else.
        gs_tabname = text-011.
        gs_header  = text-012.
        perform write_alv_report tables gt_output_info
                                        gt_sort_info .
      endif.
    FORM EVENTTAB_FIELD
    Fill Event tab, for ALV Grid Display
    form eventtab_field using gs_events type slis_t_event.
      data:
        ls_event  type  slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = gs_events.
      read table gs_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move gv_top_of_page to ls_event-form.
        append ls_event     to gs_events.
      endif.
    endform.                    " eventtab_field
    FORM TOP_OF_PAGE
    Write at Top of Page of ALV grid
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = gt_list_top_of_page.
    endform.                    "top_of_page
    FORM COMMENT_BUILD
    Write header of ALV grid
    form comment_build using lt_top_of_page type slis_t_listheader
                             gs_header.
      data:
        lv_tdate(10),
        lv_fdate(10),
        ls_line   type  slis_listheader.
      clear: ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = gs_header.
      append ls_line to lt_top_of_page.
    endform.                    "comment_build
    FORM INIT_FIELDCAT
    Fill Field Catalog for ALV Grid
    form init_fieldcat using gs_tabname.
      refresh: gt_fieldcat.
    use this function to get the all fields in the structure.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name     = gv_repid
                i_internal_tabname = gs_tabname
                i_inclname         = gv_repid
           changing
                ct_fieldcat        = gt_fieldcat.
      if sy-subrc eq 0.
      clear mark for key field to set color of key column
        gs_fieldcat-key = ''.
        modify gt_fieldcat from gs_fieldcat transporting key
                          where fieldname ne space.
        read table gt_fieldcat with key fieldname = 'FOUND_DAT'
                                   into gs_fieldcat.
        gs_fieldcat-seltext_l = text-013.
        modify gt_fieldcat from gs_fieldcat
                   transporting seltext_l
                          where fieldname = 'FOUND_DAT'.
      <<CR003-DEVK949538 start ins
        read table gt_fieldcat with key fieldname = 'NOTE_TEXT'
                                   into gs_fieldcat.
        gs_fieldcat-seltext_l = text-014.
        modify gt_fieldcat from gs_fieldcat
                   transporting seltext_l
                          where fieldname = 'NOTE_TEXT'.
      <<CR003-DEVK949538 start ins
      endif.
    endform.                    "init_fieldcat
    FORM INIT_LAYOUT
    Layout initial
    form init_layout using gs_layout type slis_layout_alv.
      gs_layout-info_fieldname    = 'LINECOLOR'.
      gs_layout-colwidth_optimize = 'X'.
      gs_layout-zebra             = 'X'.
    endform.                    " init_layout
    FORM WRITE_ALV_REPORT
    form write_alv_report tables gt_output
                                 gt_sort_info.
    ALV Grid display
      clear: gv_repid,
             gv_save.
      gv_repid          = sy-repid.
      gs_variant-report = gv_repid.
      gv_save           = 'A'.
    Build fieldcatalog
      perform init_fieldcat using gs_tabname.
    Build list events
      perform eventtab_field using gs_event.
    Show in ALV Grid form
      perform init_layout using gs_layout.
    Build comments
      perform comment_build using gt_list_top_of_page[]
                                  gs_header.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_buffer_active         = ' '
                i_callback_program      = gv_repid
                is_layout               = gs_layout
                i_save                  = gv_save
                is_variant              = gs_variant
                it_events               = gs_event[]
                it_sort                 = gt_sort_info[]
                it_fieldcat             = gt_fieldcat[]
           importing
                e_exit_caused_by_caller = gv_exit_caused_by_caller
                es_exit_caused_by_user  = gs_exit_caused_by_user
           tables
                t_outtab                = gt_output
           exceptions
                program_error           = 1
                others                  = 2.
    endform.                    "write_alv_report
    FORM GET_DATA
    form get_data.
    Get customer list
      if pr_cust1 eq 'X'.
        select  knvv~vkorg
                kna1~ktokd
                kna1~kunnr
                knvv~vtweg
                kna1~name1
                kna1~name3
                kna1~name4
                kna1~stras
                kna1~cityc
                kna1~regio
                kna1~land1
                knvv~kdgrp
                knvv~bzirk
                knvv~zterm
                kna1~lzone
                kna1~erdat
          from  kna1 join  knvv
            on  kna1kunnr = knvvkunnr
          into  corresponding fields of table gt_output_list
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~bzirk in s_bzirk
           and  kna1~regio in s_regio
           and  knvv~kdgrp in s_kdgrp
           and  kna1~lzone in s_lzone
           and  kna1~erdat in s_erdat
           and  kna1~ktokd in s_ktokd.
        loop at gt_output_list into gs_output_list.
        Get City decsription
          perform get_city_description using gs_output_list-cityc
                                    changing gs_output_list-bezei1.
        Get Region description
          select single  bezei
                   from  t005u
                   into  gs_output_list-bezei2
                  where  bland = gs_output_list-regio
                    and  land1 = gs_output_list-land1"<<CR000-DEVK942345 ins
                    and  spras = sy-langu.
        Get customer group description
          select single  ktext
                   from  t151t
                   into  gs_output_list-ktext
                  where  kdgrp = gs_output_list-kdgrp
                    and  spras = sy-langu.
        Get sales district description
          select single  bztxt
                   from  t171t
                   into  gs_output_list-bztxt
                  where  bzirk = gs_output_list-bzirk
                    and  spras = sy-langu.
        Get zone decription
          select single  vtext
                   from  tzont
                   into  gs_output_list-vtext
                  where  zone1 = gs_output_list-lzone
                    and  spras = sy-langu.
          modify gt_output_list from gs_output_list index sy-tabix
                                             transporting bezei1
                                                          bezei2
                                                          ktext
                                                          bztxt
                                                          vtext.
          clear gs_output_list.
        endloop.
    Get customer tax data
      elseif pr_cust2 eq 'X'.
        select  kna1~kunnr
                kna1~name1
                kna1~name3
                kna1~name4
                kna1~ort01
                kna1~stcd1
                knvv~vkorg
                knvv~spart
                knvv~vtweg
                knvi~taxkd
                knvi~tatyp
          from  kna1 join  knvv
            on  kna1kunnr = knvvkunnr
                join  knvi
            on  kna1kunnr = knvikunnr
          into  corresponding fields of table gt_output_tax
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~vtweg in s_vtweg
           and  knvv~spart in s_spart
           and  kna1~regio in s_regio
           and  knvi~taxkd in s_taxkd.
      Get customer tax description
        loop at gt_output_tax into gs_output_tax.
          select single  vtext
                   from  tskdt
                   into  gs_output_tax-vtext
                  where  tatyp = gs_output_tax-tatyp
                    and  taxkd = gs_output_tax-taxkd
                    and  spras = sy-langu.
          if sy-subrc eq 0.
            modify gt_output_tax from gs_output_tax index sy-tabix
                                             transporting vtext.
            clear gs_output_tax.
          endif.
        endloop.
    Get customer HVL data
      elseif pr_cust3 eq 'X'.
        select  kna1~kunnr
                kna1~stceg
                kna1~telfx
                kna1~telf1
                kna1~stras
                kna1~ort02
                kna1~cityc
                kna1~regio
                kna1~ort01
                kna1~name2
                kna1~name1
                knvv~bzirk
                knvv~spart
                knvv~vtweg
                knvv~vkorg
          from  kna1 join  knvv
            on  kna1kunnr = knvvkunnr
          into  corresponding fields of table gt_output_hvl
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg.
        loop at gt_output_hvl into gs_output_hvl.
        Get city description.
          perform get_city_description using gs_output_hvl-cityc
                                    changing gs_output_hvl-bezei.
          if sy-subrc eq 0.
            modify gt_output_hvl from gs_output_hvl index sy-tabix
                                             transporting bezei.
            clear gs_output_hvl.
          endif.
        endloop.
    Get cust CRM data
      elseif pr_cust4 eq 'X'.
        select  kna1~kunnr
              knvv~versg                           "<<CR000-DEVK943142 del
                knvv~vkorg
                knvv~vtweg
                knvv~bzirk
                knvv~vkgrp
                knvv~kdgrp
                knvv~vkbur
                kna1~name1
                kna1~name2
                kna1~ort01
                kna1~pstlz
                kna1~regio
                kna1~stras
                kna1~telf1
                kna1~telfx
                kna1~ort02
                kna1~cityc
                knvv~kvgr3
                knb1~altkn
              knb1~bukrs                           "<<CR000-DEVK943142 del
                knvv~erdat
                zcrm_bp_ext~found_dat
          from  kna1 join knvv
            on  kna1kunnr = knvvkunnr
          join  knb1
            on  knvvkunnr = knb1kunnr
          join  zcrm_bp_ext
            on  knb1kunnr = zcrm_bp_extkunnr
          into  corresponding fields of table gt_output_crm
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~vtweg in s_vtweg
           and  knvv~spart in s_spart
           and  knvv~bzirk in s_bzirk
           and  knvv~kdgrp in s_kdgrp
           and  knvv~vkgrp in s_vkgrp
           and  knvv~vkbur in s_vkbur
           and  knvv~erdat in s_erdat
           and  kna1~ktokd in s_ktokd
           and  kna1~loevm in s_loevm1
           and  knb1~loevm in s_loevm2
           and  knvv~loevm in s_loevm3
           and  knb1~bukrs in s_bukrs
           and  knb1~altkn in s_altkn.
      else.
      Get customer information
       <<CR001-DEVK944342 start del
       select  kna1~kunnr
               knvv~vkorg
               knvv~vtweg
               kna1~stcd2
               kna1~name1
               kna1~name2
               kna1~ort01
               kna1~land1
               kna1~pstlz
               kna1~regio
               kna1~stras
               kna1~telf1
               kna1~telfx
               knvv~bzirk                          "<<CR001-DEVK944239 ins
               knvv~vkbur                          "<<CR001-DEVK944239 ins
               kna1~ort02
               kna1~cityc
               knvv~vkgrp
               knvv~kvgr3
               knvv~versg
               kna1~kdkg2
               kna1~kdkg1
               knvv~kdgrp
               knb1~altkn
               knvv~erdat
               kna1~loevm
               knb1~loevm
               knvv~loevm
       <<CR001-DEVK944342 end del
      <<CR001-DEVK944342 start ins
        select  kna1~kunnr
                knvv~vkorg
                knvv~vtweg
                kna1~stcd2
                kna1~name1
                kna1~name2
                kna1~name3                           "<<CR002-DEVK944835 ins
                kna1~stras
                kna1~ort01
                kna1~ort02
                kna1~pstlz
                kna1~regio
                kna1~land1
                kna1~cityc
                kna1~telf1
                kna1~telfx
                knvv~bzirk
                knvv~vkbur
                knvv~kdgrp
                knvv~vkgrp
                knvv~kvgr3
                knvv~versg
                kna1~kdkg2
                kna1~kdkg1
                knb1~altkn
                knvv~erdat
                kna1~loevm
                knb1~loevm
                knvv~loevm
      <<CR001-DEVK944342 end ins
          from  kna1 join knvv
            on  kna1kunnr = knvvkunnr
                join knb1
            on  kna1kunnr = knb1kunnr
        <<CR001-DEVK944252 start del
        into  corresponding fields of table gt_output_info
        <<CR001-DEVK944252 end del
        <<CR003-DEVK949538 start del
          into  table gt_output_info                "<<CR001-DEVK944342 ins
        <<CR003-DEVK949538 end del
        <<CR003-DEVK949538 start ins
          into  corresponding fields of table gt_output_info
        <<CR003-DEVK949538 end ins
         where  kna1~kunnr in s_kunnr
           and  knvv~vkorg in s_vkorg
           and  knvv~vtweg in s_vtweg
           and  knvv~spart in s_spart
           and  knvv~bzirk in s_bzirk
           and  knvv~kdgrp in s_kdgrp
           and  knvv~vkgrp in s_vkgrp
           and  knvv~vkbur in s_vkbur
           and  knvv~erdat in s_erdat
           and  kna1~ktokd in s_ktokd
           and  kna1~regio in s_regio
         <<CR001-DEVK944252 start del
         and  kna1~loevm in s_loevm1
         and  knb1~loevm in s_loevm2
         and  knvv~loevm in s_loevm3
         <<CR001-DEVK944252 end del
         <<CR001-DEVK944252 start ins
           and ( kna1~loevm in s_loevm1
            or   knb1~loevm in s_loevm2
            or   knvv~loevm in s_loevm3 )
         <<CR001-DEVK944252 end ins
           and  knb1~zuawa in s_zuawa
           and  knb1~bukrs in s_bukrs
           and  knb1~altkn in s_altkn.
         <<CR003-DEVK949538 start ins
           loop at gt_output_info into gs_output_info.
          select single  adrnr
                   into  kna1-adrnr
                   from  kna1
                  where  kunnr = gs_output_info-kunnr.
          check sy-subrc eq 0.
          select single  smtp_addr
                   into  adr6-smtp_addr
                   from  adr6
                  where  addrnumber = kna1-adrnr.
          check sy-subrc eq 0.
          gs_output_info-smtp_addr = adr6-smtp_addr.
          modify gt_output_info from gs_output_info.
        endloop.
         <<CR003-DEVK949538 end ins
      endif.
    <<CR003-DEVK949538 start ins
      loop at gt_output_info into gs_output_info.
        lv_store = gs_output_info-loevm1.
      endloop.
    <<CR003-DEVK949538 end ins
    endform.
    FORM BUILD_SORT
    form build_sort.
      if pr_cust1 eq 'X' or
         pr_cust2 eq 'X'.
        clear gs_sort_info.
        gs_sort_info-fieldname = 'VKORG'.
        gs_sort_info-spos      = 1.
        gs_sort_info-up        = 'X'.
        append gs_sort_info to gt_sort_info.
      endif.
      clear gs_sort_info.
      gs_sort_info-fieldname = 'KUNNR'.
      gs_sor

    hi shivaji!
    thx for the reply.
    can u chk whether there is any problem with the queries or not.
    regards
    sachin

  • How to use the alv function module

    hi all,
            can  any one help me out how to use reuse_alv_block_list_append function module, what parameters shall i pass  to it, so that i get top of page and end of page events and report data in two blocks, can any one tell how can i didvide the data into block, at a particular line

    hi,
    this is  my simple alv blockedlist programme.go through it.it will definrtley help u.
    REPORT  z50870alv_blocked.
    TYPE-POOLS : slis.
    *&      structure declaration
    TYPES : BEGIN OF st_ekko,
              ebeln TYPE ekko-ebeln,    "Purchasing Document Number
              bstyp TYPE ekko-bstyp,    "Purchasing Document Category
              bsart TYPE ekko-bsart,    "Purchasing Document Type
              aedat TYPE ekko-aedat,    "record created on
              ernam TYPE ekko-ernam,    "Person who Created the Object
            END OF st_ekko.
    TYPES : BEGIN OF st_ekpo,
              ebeln TYPE ekko-ebeln,
              ebelp TYPE ekpo-ebelp,    "Item Number of Purchasing Document
              ematn TYPE ekpo-ematn,    "Material number
              matkl TYPE ekpo-matkl,    "Material group
              netpr TYPE ekpo-netpr,    "Net price in purchasing document
            END OF st_ekpo.
    *&      internal table and work area declaration
    DATA : it_ekpo       TYPE STANDARD TABLE OF st_ekpo,
           it_ekko       TYPE STANDARD TABLE OF st_ekko,
           it_fieldcat1  TYPE slis_t_fieldcat_alv,
           wa_fieldcat1  TYPE slis_fieldcat_alv,
           it_fieldcat2  TYPE slis_t_fieldcat_alv,
           wa_fieldcat2  TYPE slis_fieldcat_alv,
           it_events     Type slis_t_event,
           wa_layout     TYPE slis_layout_alv.
    *&      data declaration
    DATA : v_ebeln TYPE ekko-ebeln.
    *&      selection-screen
      SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-000.
      SELECT-OPTIONS : so_ebeln FOR v_ebeln.
      SELECTION-SCREEN END OF BLOCK a.
    *&      At-selection-screen
    at selection-screen on so_ebeln.
    perform validate_ebeln.
    *&      start-of-selection
    START-OF-SELECTION.
      PERFORM data_retrieval.
    *&      end-of-selection
    END-OF-SELECTION.
      PERFORM initialize_alv_block.
      PERFORM build_fieldcatalog1.
      PERFORM build_fieldcatalog2.
      PERFORM build_layout.
      PERFORM get_events .
      PERFORM append_ekkodata_to_alv_block.
      PERFORM append_ekpodata_to_alv_block.
      PERFORM display_blocked_alv.
    *&     FORM initialize_alv_block
    FORM initialize_alv_block.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
      EXPORTING
        i_callback_program             = sy-repid.
    endform.
    *&     FORM validate_ebeln
    form validate_ebeln.
    select ebeln
       from ekko
       into table it_ekko
       where ebeln in so_ebeln.
      if sy-subrc ne 0.
        message text-003 type 'W'.
      endif.
    endform.
    *&     FORM data_retrieval
    FORM data_retrieval.
    SELECT ebeln bstyp bsart aedat ernam
        FROM ekko
        INTO TABLE it_ekko
        WHERE ebeln IN so_ebeln.
      if sy-subrc ne 0.
       message text-001 type 'I'.
      endif.
    SELECT ebeln ebelp ematn matkl netpr
        FROM ekpo
        INTO TABLE it_ekpo
        WHERE ebeln IN so_ebeln.
      if sy-subrc ne 0.
       message text-002 type 'I'.
      endif.
    endform.
    *&      Form  build_fieldcatalog1
    FORM  build_fieldcatalog1.
      wa_fieldcat1-fieldname   = 'EBELN'.
      wa_fieldcat1-seltext_l   = 'PURCHASE ORDER'.
      wa_fieldcat1-col_pos     = 0.
      APPEND wa_fieldcat1 TO it_fieldcat1.
      wa_fieldcat1-fieldname   = 'BSTYP'.
      wa_fieldcat1-seltext_l   = 'DOCUMENT CATEGORY'.
      wa_fieldcat1-col_pos     = 1.
      APPEND wa_fieldcat1 TO it_fieldcat1.
      wa_fieldcat1-fieldname   = 'BSART'.
      wa_fieldcat1-seltext_l   = 'DOCUMENT TYPE'.
      wa_fieldcat1-col_pos     = 2.
      APPEND wa_fieldcat1 TO it_fieldcat1.
      wa_fieldcat1-fieldname   = 'AEDAT'.
      wa_fieldcat1-seltext_l   = 'DATE'.
      wa_fieldcat1-col_pos     = 3.
      APPEND wa_fieldcat1 TO it_fieldcat1.
      wa_fieldcat1-fieldname   = 'ERNAM'.
      wa_fieldcat1-seltext_l   = 'NAME'.
      wa_fieldcat1-col_pos     = 4.
      APPEND wa_fieldcat1 TO it_fieldcat1.
    ENDFORM.                    "build_fieldcatalog
    *&      Form  build_fieldcatalog2
    FORM  build_fieldcatalog2.
      wa_fieldcat2-fieldname   = 'EBELN'.
      wa_fieldcat2-seltext_l   = 'PURCHASE ORDER'.
      wa_fieldcat2-col_pos     = 0.
      APPEND wa_fieldcat2 TO it_fieldcat2.
      wa_fieldcat2-fieldname   = 'EBELP'.
      wa_fieldcat2-seltext_l   = 'ITEM NUMBER'.
      wa_fieldcat2-col_pos     = 1.
      APPEND wa_fieldcat2 TO it_fieldcat2.
      wa_fieldcat2-fieldname   = 'EMATN'.
      wa_fieldcat2-seltext_l   = 'MATERIAL TYPE'.
      wa_fieldcat2-col_pos     = 2.
      APPEND wa_fieldcat2 TO it_fieldcat2.
      wa_fieldcat2-fieldname   = 'MATKL'.
      wa_fieldcat2-seltext_l   = 'MATERIAL GROUP'.
      wa_fieldcat2-col_pos     = 3.
      APPEND wa_fieldcat2 TO it_fieldcat2.
      wa_fieldcat2-fieldname   = 'NETPR'.
      wa_fieldcat2-seltext_l   = 'NET PRICE'.
      wa_fieldcat2-col_pos     = 4.
      wa_fieldcat2-do_sum      = 'X'.
      APPEND wa_fieldcat2 TO it_fieldcat2.
    ENDFORM.                    "build_fieldcatalog
    *&      form build_layout.
    FORM build_layout.
      wa_layout-zebra ='X'.
      wa_layout-no_vline = 'X'.
      wa_layout-no_hline = 'X'.
      wa_layout-colwidth_optimize = 'X'.
      wa_layout-window_titlebar = 'PURCHASE ORDER HEADER AND ITEM DETAILS'.
    ENDFORM.                    "build_layout
    *&      form append_ekkodata_to_alv_block
    FORM append_ekkodata_to_alv_block.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        is_layout                        = wa_layout
        it_fieldcat                      = it_fieldcat1
        i_tabname                        ='it_ekko'
        it_events                        = it_events[]
      IT_SORT                          = IT_SORT
      I_TEXT                           = ' '
      TABLES
        t_outtab                         = it_ekko
    EXCEPTIONS
       PROGRAM_ERROR                    = 1
       MAXIMUM_OF_APPENDS_REACHED       = 2
       OTHERS                           = 3.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endform.
    *&      form append_ekpodata_to_alv_block
    FORM append_ekpodata_to_alv_block.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        is_layout                        = wa_layout
        it_fieldcat                      = it_fieldcat2
        i_tabname                        ='it_ekpo'
        it_events                        = it_events[]
      IT_SORT                          = IT_SORT
      I_TEXT                           = ' '
      TABLES
        t_outtab                         = it_ekpo
    EXCEPTIONS
       PROGRAM_ERROR                    = 1
       MAXIMUM_OF_APPENDS_REACHED       = 2
       OTHERS                           = 3.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endform.
    *&      FORM display_blocked_alv.
    FORM display_blocked_alv.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
    endform.
    *&      Form  GET_EVENTS
    FORM get_events .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 2
        IMPORTING
          et_events       = it_events[]
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " GET_EVENTS\
    regards,
    pavan t.

  • Dynamic value assignment to a particular column in a vertical ALV

    Hi Friends,
    In the present program ALV has 44 fields and output row is only one(with some field editable).
    My requirement is to change present output to vertical ALV and editable field should be available
    as editable.
    Now I have changed this to transposed ALV manually(not dynamically) with required fields editable.
    Now there is 44 rows and two column "FIELD and "VALUE'.Some values in the second column is editable.
    Previously output was like this:
    field1   field2  field3 ...
    val1     val2    val3   ...
    Now output is like:
    FIELD   VALUE
    field1  value1(type INT)
    field2  value2(type char5) Editable(need F4 help)
    field3  value3(type date)
    My present structure declaration is:
    types: begin of ty_itab,
            field type char 50,
            value type char70,
            celltab type lvc_t_styl,(for editing some values in VALUE column).
           end of ty_itab.
    data: itab type standard table of ty_itab.
    Now the second column i have declared as CHAR70 which contains only char
    values because to put all differt types of values to one single column named
    'VALUE'.
    But as field1 field2 field3... had differnt type of value like integer char date...I need to validate some values
    (specially those which are editable) before saving to custom DB table.
    So I need dynamic value assignment to VALUE column when preparing internal table for display.
    What I want to say is that VALUE column should be able to contain different type of values like INT, DATE, CHAR...etc
    Is the requirement is feasible?
    If yes then How should I declare the structure and populate different type of values within single column 'VALUE'.
    Also is it possible to have F4 helps in the second column (VALUE)???

    Hi Manab,
    I did something comparable: We have a very complex transaction with several subscreens with multiple fields to be filled with complex logic to create a very special contract. The requirement was to create a method to create a copy of this contract being able to apply some changes.
    I created a wizard (transaction SBPT_WIZARD_BUILDER - Wizard-Builder) to accomplish that. I grouped all the fields to just 3 logical groups and thius created 3 stesp where the user gets an ALV as you describe, but we have the rows like FIELD  with the new value editable. Additionally I have hidden fields with table name and field name so that I can determine the characteristics (datatype) at run time.
    The value fields are just strings (every ALV field is a text field on the surface).
    For editable fields, you have an event DATA_CHANGED. I used this method as a handler for the event:
    (I will leave out the wizard part here - maybe a good idea for a blog to explain that)
    METHOD handle_data_changed.
        CALL FUNCTION 'RS_CONV_EX_2_IN'
          EXPORTING
             input_external                     = <mod>-value
             table_field                        = ls_tabfield
    I also created handlers for F1 and F4
    Handler for CL_GUI_ALV_GRID->ONF1
    METHOD handle_f1.
        CALL FUNCTION 'HELP_OBJECT_SHOW_FOR_FIELD'
          EXPORTING
            called_for_tab   = lv_tabname
            called_for_field = lv_fieldname
          EXCEPTIONS
            object_not_found = 1
            sapscript_error  = 2
            OTHERS           = 3.
    Handler for CL_GUI_ALV_GRID->HANDLE_F4
    METHOD handle_f4.
      CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
        EXPORTING
          tabname    = lv_tabname
          fieldname  = lv_fieldname
        TABLES
          return_tab = lt_return_tab
        EXCEPTIONS
          OTHERS     = 5.
        er_event_data->m_event_handled = abap_true.
    * if er_event_data->m_event_handled is not set to abap_true, system will handle it.
    * In this context the message 'Keine Eingabehilfe verfügbar' will be displayed
    ENDMETHOD.
    This is just an excerpt from my project. It shows that you can do more in ALV as you knew.
    I tried to post a little more but the formatting break down, possibly a result of the character limit
    Regards,
    Clemens

  • Triggerring ALV-pop up

    Hi all,
             How to trigger a pop-up alv report upono double click  on a row  in a report developed using OO ALV.
    Do i need to trigger any method and call fm REUSE ALV POP UP? Please help!
    Helpful answers will be rewarded.
    Thanks,
    Sandeep

    Hi Sandeep,
                      This might help:
    User selects infotypes from a pop up alv .The details of
    *infotypes selected are displayed in a ALV dialog box.
    REPORT ZALV_POPDIALOG.
    *Type pools for ALV declarations
    TYPE-POOLS : slis.
    *Internal table and wa declarations for T582A.
    DATA : it_t582a TYPE STANDARD TABLE OF t582a INITIAL SIZE 0,
           wa_t582a TYPE t582a.
    *Internal table and wa declarations for T582S.
    DATA : it_text TYPE STANDARD TABLE OF t582s,
           wa_text TYPE t582s.
    *Structure declaration for output
    TYPES : BEGIN OF ty_output,
            infty TYPE infty,
            zeitb TYPE dzeitb,
            itext TYPE intxt,
            pnnnn TYPE pnnnn_d,
            dname TYPE dianm,
            namst TYPE namst,
            edynr TYPE edynp,
            ldynr TYPE ldynp,
            stypt TYPE stypt,
            sytxt TYPE sytxt,
            zbtab TYPE dzbtab,
            checkbox(1),
            END OF ty_output.
    *Internal table and work area declaration for output in pop up
    DATA : it_output TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
           wa_output TYPE ty_output.
    *Internal table and workarea declaration for alv dialog display
    DATA : it_display TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
           wa_display TYPE ty_output.
    *data declarations for ALV
    DATA:ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        ls_fieldcatlog TYPE slis_fieldcat_alv,
        lt_fieldcatlog TYPE slis_t_fieldcat_alv,
        lt_layout TYPE slis_layout_alv.
    *Initialization event
    INITIALIZATION.
    *Start of selection event
    START-OF-SELECTION.
    *Select to fetch all the infotypes and details in sap system
      SELECT *
             FROM t582a
             INTO CORRESPONDING FIELDS OF TABLE it_t582a.
    *Select to fetch the infotypes text
      IF it_t582a[] IS NOT INITIAL.
        SELECT * FROM t582s INTO CORRESPONDING FIELDS OF TABLE it_text
        FOR ALL ENTRIES IN it_t582a WHERE infty = it_t582a-infty
        AND sprsl = 'E'.
      ENDIF.
    *Appending the selected values to the output table
      LOOP AT it_t582a INTO wa_t582a.
        wa_output-infty = wa_t582a-infty.
        wa_output-zeitb = wa_t582a-zeitb.
        wa_output-pnnnn = wa_t582a-pnnnn.
        wa_output-dname = wa_t582a-dname.
        wa_output-namst = wa_t582a-namst.
        wa_output-edynr = wa_t582a-edynr.
        wa_output-ldynr = wa_t582a-ldynr.
        wa_output-stypt = wa_t582a-stypt.
        wa_output-sytxt = wa_t582a-sytxt.
        wa_output-zbtab = wa_t582a-zbtab.
        READ TABLE it_text INTO wa_text WITH KEY infty = wa_t582a-infty.
        wa_output-itext = wa_text-itext.
        APPEND wa_output TO it_output.
        CLEAR wa_output.
      ENDLOOP.
    *Subroutine to display the pop up values.
      PERFORM popup_display.
    *Subroutine to display the ALV dialog display
      PERFORM alv_output.
         Form  popup_display
    FORM popup_display.
    *field catalogue for pop up
      CLEAR ls_fieldcat.
      ls_fieldcat-row_pos   = '1'.
      ls_fieldcat-col_pos   = '1'.
      ls_fieldcat-fieldname = 'CHECKBOX'.
      ls_fieldcat-tabname   = 'IT_OUTPUT'.
      ls_fieldcat-seltext_m = 'SELECT'.
      APPEND ls_fieldcat TO lt_fieldcat.
      CLEAR ls_fieldcat.
      ls_fieldcat-row_pos   = '1'.
      ls_fieldcat-col_pos   = '2'.
      ls_fieldcat-fieldname = 'ITEXT'.
      ls_fieldcat-tabname   = 'IT_OUTPUT'.
      ls_fieldcat-seltext_m = 'DESCRIPTION'.
      ls_fieldcat-outputlen = 50.
      APPEND ls_fieldcat TO lt_fieldcat.
    Display data in a POPUP
      CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
        EXPORTING
          i_zebra              = 'X'
          it_fieldcat          = lt_fieldcat
          i_tabname            = 'IT_OUTPUT'
          i_checkbox_fieldname = 'CHECKBOX'
        TABLES
          t_outtab             = it_output.
    *Appending the selected infotypes only to internal table
      LOOP AT it_output INTO wa_output WHERE checkbox = 'X'.
        wa_display-itext = wa_output-itext.
        wa_display-infty = wa_output-infty.
        wa_display-zeitb = wa_output-zeitb.
        wa_display-pnnnn = wa_output-pnnnn.
        wa_display-dname = wa_output-dname.
        wa_display-namst = wa_output-namst.
        wa_display-edynr = wa_output-edynr.
        wa_display-ldynr = wa_output-ldynr.
        wa_display-sytxt = wa_output-sytxt.
        wa_display-stypt = wa_output-stypt.
        wa_display-zbtab = wa_output-zbtab.
        APPEND wa_display TO it_display.
        CLEAR wa_display.
      ENDLOOP.
    ENDFORM.                               " popup_display
    *&      Form  alv_output
    FORM alv_output .
    *fieldcatalogue for ALV dialog
      PERFORM build_fieldcat.
    *Layout for ALV dialog
      PERFORM build_layout.
    **ALV dialog output
      PERFORM alv.
    ENDFORM.                    " alv_output
    *&      Form  build_fieldcat
    FORM build_fieldcat .
    *fieldcatalogue for alv dialog
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '1'.
      ls_fieldcatlog-fieldname = 'INFTY'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Infotype'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '2'.
      ls_fieldcatlog-fieldname = 'ITEXT'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Description'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '3'.
      ls_fieldcatlog-fieldname = 'ZEITB'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'TimeConstraint'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '4'.
      ls_fieldcatlog-fieldname = 'PNNNN'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Structure'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '5'.
      ls_fieldcatlog-fieldname = 'DNAME'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'DialogModule'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '6'.
      ls_fieldcatlog-fieldname = 'NAMST'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Subtypefield'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '7'.
      ls_fieldcatlog-fieldname = 'EDYNR'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Singlescreenno'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '8'.
      ls_fieldcatlog-fieldname = 'LDYNR'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Listscreenno'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '9'.
      ls_fieldcatlog-fieldname = 'STYPT'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'SubtypTable'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '10'.
      ls_fieldcatlog-fieldname = 'SYTXT'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'Subtyptexttable'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
      CLEAR ls_fieldcatlog.
      ls_fieldcatlog-row_pos   = '1'.
      ls_fieldcatlog-col_pos   = '11'.
      ls_fieldcatlog-fieldname = 'ZBTAB'.
      ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
      ls_fieldcatlog-seltext_m = 'SubtypeTCTable'.
      APPEND ls_fieldcatlog TO lt_fieldcatlog.
    ENDFORM.                    " build_fieldcat
    *&      Form  build_layout
    *Layout for ALV dialog
    FORM build_layout .
      lt_layout-zebra = 'X'.
      lt_layout-colwidth_optimize = 'X'.
    ENDFORM.                    " build_layout
    *&      Form  alv
    *Alv dialog output.
    FORM alv .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program    = sy-repid
          i_grid_title          = 'INFOTYPE DETAILS'
          is_layout             = lt_layout
          it_fieldcat           = lt_fieldcatlog
          i_screen_start_column = 10
          i_screen_start_line   = 20
          i_screen_end_column   = 100
          i_screen_end_line     = 40
        TABLES
          t_outtab              = it_display
        EXCEPTIONS
          program_error         = 1
          OTHERS                = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " alv

  • Menu Button in ALV toolbar (multiple choices for a button)

    Hi abapers,
    I would like to have a button with multiple choices in the toolbar;
    at the moment I have created a menu button with just one function.
    Here is my code:
    CLASS lcl_event_receiver (Definition)
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
        handle_toolbar
            FOR EVENT toolbar OF cl_gui_alv_grid
                IMPORTING e_object e_interactive.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    CLASS lcl_event_receiver (Implementation)
    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD handle_toolbar.
        DATA: ls_toolbar  TYPE stb_button.
    *Separator
        CLEAR ls_toolbar.
        MOVE 3 TO ls_toolbar-butn_type.
        APPEND ls_toolbar TO e_object->mt_toolbar.
    *Button
        CLEAR ls_toolbar.
        MOVE 1 TO ls_toolbar-butn_type.
        MOVE 'EDIT' TO ls_toolbar-function.
        MOVE icon_change TO ls_toolbar-icon.
        MOVE ' Modifica'(l02) TO ls_toolbar-text.
        MOVE ' ' TO ls_toolbar-disabled.
        MOVE 'Modifica' TO ls_toolbar-quickinfo.
        APPEND ls_toolbar TO e_object->mt_toolbar.
      ENDMETHOD.                    "handle_toolbar
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION

    hi,
    check this code and reward me if it helps you..
    TYPE-POOLS : slis,icon.
    *Structure declaration for tcodes
    TYPES : BEGIN OF ty_table,
            tcode TYPE tcode,
            pgmna TYPE progname,
            END OF ty_table.
    *Structure for tocde text
    TYPES : BEGIN OF ty_itext,
            tcode TYPE tcode,
            ttext TYPE ttext_stct,
            sprsl TYPE sprsl,
            END OF ty_itext.
    *Structure for output display
    TYPES : BEGIN OF ty_output,
            tcode TYPE tcode,
            pgmna TYPE progname,
            ttext TYPE ttext_stct,
           END OF ty_output.
    *internal table and work area declarations
    DATA : it_table TYPE STANDARD TABLE OF ty_table INITIAL SIZE 0,
           it_output TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
           it_ittext TYPE STANDARD TABLE OF ty_itext INITIAL SIZE 0,
           wa_table TYPE ty_table,
           wa_output TYPE ty_output,
           wa_ittext TYPE ty_itext.
    *Class definition for ALV toolbar
    CLASS:      lcl_alv_toolbar   DEFINITION DEFERRED.
    *Declaration for toolbar buttons
    DATA : ty_toolbar TYPE stb_button.
    Data declarations for ALV
    DATA: c_ccont TYPE REF TO cl_gui_custom_container,   "Custom container object
          c_alvgd         TYPE REF TO cl_gui_alv_grid,   "ALV grid object
          it_fcat            TYPE lvc_t_fcat,            "Field catalogue
          it_layout          TYPE lvc_s_layo,            "Layout
          c_alv_toolbar    TYPE REF TO lcl_alv_toolbar,           "Alv toolbar
          c_alv_toolbarmanager TYPE REF TO cl_alv_grid_toolbar_manager.  "Toolbar manager
    *Initialization event
    INITIALIZATION.
    *Start of selection event
    START-OF-SELECTION.
    *Subroutine to get values from tstc table
      PERFORM fetch_data.
    *subroutine for alv display
      PERFORM alv_output.
          CLASS lcl_alv_toolbar DEFINITION
          ALV event handler
    CLASS lcl_alv_toolbar DEFINITION.
      PUBLIC SECTION.
    *Constructor
        METHODS: constructor
                   IMPORTING
                     io_alv_grid TYPE REF TO cl_gui_alv_grid,
    *Event for toolbar
        on_toolbar
           FOR EVENT toolbar
           OF  cl_gui_alv_grid
           IMPORTING
             e_object.
    ENDCLASS.                    "lcl_alv_toolbar DEFINITION
          CLASS lcl_alv_toolbar IMPLEMENTATION
          ALV event handler
    CLASS lcl_alv_toolbar IMPLEMENTATION.
      METHOD constructor.
      Create ALV toolbar manager instance
        CREATE OBJECT c_alv_toolbarmanager
          EXPORTING
            io_alv_grid      = io_alv_grid.
       ENDMETHOD.                    "constructor
      METHOD on_toolbar.
      Add customized toolbar buttons.
      variable for Toolbar Button
          ty_toolbar-icon      =  icon_generate.
        ty_toolbar-butn_type = 0.
        ty_toolbar-text = 'Button1'.
          APPEND ty_toolbar TO e_object->mt_toolbar.
          ty_toolbar-icon      =  icon_voice_output.
        ty_toolbar-butn_type = 0.
        ty_toolbar-text = 'Button2'.
           APPEND ty_toolbar TO e_object->mt_toolbar.
         ty_toolbar-icon      =  icon_phone.
        ty_toolbar-butn_type = 0.
        ty_toolbar-text = 'Button3'.
           APPEND ty_toolbar TO e_object->mt_toolbar.
         ty_toolbar-icon      =  icon_mail.
        ty_toolbar-butn_type = 0.
        ty_toolbar-text = 'Button4'.
           APPEND ty_toolbar TO e_object->mt_toolbar.
       ty_toolbar-icon      =  icon_voice_input.
        ty_toolbar-butn_type = 0.
        ty_toolbar-text = 'Button5'.
         APPEND ty_toolbar TO e_object->mt_toolbar.
      Call reorganize method of toolbar manager to
      display the toolbar
         CALL METHOD c_alv_toolbarmanager->reorganize
          EXPORTING
            io_alv_toolbar = e_object.
       ENDMETHOD.                    "on_toolbar
    ENDCLASS.                    "lcl_alv_toolbar IMPLEMENTATION
    *&      Form  fetch_data
          text
    -->  p1        text
    <--  p2        text
    FORM fetch_data .
    Select the tcodes upto 200 rows from TSTC
       SELECT   tcode
               pgmna
               FROM tstc
               INTO CORRESPONDING FIELDS OF TABLE it_table
               UP TO 200 ROWS
               WHERE dypno NE '0000'.
    *Select the tcode textx
       IF it_table[] IS NOT INITIAL.
         SELECT ttext
               tcode
               sprsl
               FROM tstct
               INTO CORRESPONDING FIELDS OF TABLE it_ittext
               FOR ALL ENTRIES IN it_table
               WHERE tcode = it_table-tcode
               AND sprsl = 'E'.
       ENDIF.
    Apppending the data to the internal table of ALV output
       LOOP AT it_table INTO wa_table.
        wa_output-tcode = wa_table-tcode.
        wa_output-pgmna = wa_table-pgmna.
       For texts
        READ TABLE it_ittext INTO wa_ittext WITH KEY tcode = wa_table-tcode.
        wa_output-ttext = wa_ittext-ttext.
         APPEND wa_output TO it_output.
        CLEAR wa_output.
       ENDLOOP.
       ENDFORM.                    " fetch_data
    *&      Form  alv_output
          text
    -->  p1        text
    <--  p2        text
    FORM alv_output .
    *Calling the ALV
      CALL SCREEN 0600.
      ENDFORM.                    " alv_output
    Calling the ALV screen with custom container
    On this statement double click  it takes you to the screen painter SE51.Enter the attributes
    *Create a Custom container and name it CC_CONT and OK code as OK_CODE.
    *Save check and Activate the screen painter.
    Now a normal screen with number 600 is created which holds the ALV grid. PBO of the actual screen , Here we can give a title and *customized menus
    *&      Module  STATUS_0600  OUTPUT
          text
    MODULE status_0600 OUTPUT.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0600  OUTPUT
    calling the PBO module ALV_GRID.
    *&      Module  ALV_GRID  OUTPUT
          text
    MODULE alv_grid OUTPUT.
    *create object for custom container
      CREATE OBJECT c_ccont
           EXPORTING
              container_name = 'CC_CONT'.
    *create object of alv grid
      CREATE OBJECT c_alvgd
          EXPORTING
              i_parent = c_ccont.
    create ALV event handler
      CREATE OBJECT c_alv_toolbar
        EXPORTING
          io_alv_grid = c_alvgd.
    Register event handler
      SET HANDLER c_alv_toolbar->on_toolbar FOR c_alvgd.
    Fieldcatalogue for ALV
       PERFORM alv_build_fieldcat.
    ALV attributes FOR LAYOUT
      PERFORM alv_report_layout.
       CHECK NOT c_alvgd IS INITIAL.
    Call ALV GRID
       CALL METHOD c_alvgd->set_table_for_first_display
        EXPORTING
          is_layout                     = it_layout
        CHANGING
          it_outtab                     = it_output
          it_fieldcatalog               = it_fcat
        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.
      ENDIF.
    ENDMODULE.                 " ALV_GRID  OUTPUT
    *&      Form  alv_build_fieldcat
          text
         <--P_IT_FCAT  text
    FORM alv_build_fieldcat.
       DATA lv_fldcat TYPE lvc_s_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '1'.
      lv_fldcat-fieldname = 'TCODE'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 8.
      lv_fldcat-scrtext_m = 'TCODE'.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
       lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '2'.
      lv_fldcat-fieldname = 'PGMNA'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 15.
      lv_fldcat-scrtext_m = 'PROGNAME'.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '3'.
      lv_fldcat-fieldname = 'TTEXT'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 60.
      lv_fldcat-scrtext_m = 'Description'.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
    ENDFORM.                    " alv_build_fieldcat
    *&      Form  alv_report_layout
          text
         <--P_IT_LAYOUT  text
    FORM alv_report_layout.
       it_layout-cwidth_opt = 'X'.
       it_layout-zebra = 'X'.
    ENDFORM.                    " alv_report_layout
    PAI module of the screen created. In case we use an interactive ALV or
    *for additional functionalities we can create OK codes
    *and based on the user command we can do the coding.
    *&      Module  USER_COMMAND_0600  INPUT
          text
    MODULE user_command_0600 INPUT.
    ENDMODULE.                 " USER_COMMAND_0600  INPUT
    thanks,
    gupta

  • SD Flow program using For all entries.

    using simple ALV grid: I have the urgent requirement of changing the following program using 'For all entries' instead of joins and I should not use 'TABLES' -- For top-of-page I need to get dynamic fields like if I select company code in the selection screen then I need to get 'This report is base on COMPANY CODE'.
    This program is about sales flow where i shud get only those records that have ebeln in vbak, delivery, invoice.
    The original program is as follows:
    *& Report  ZSD_DOCU_FLOW                                               *
    REPORT  zsd_docu_flow  NO STANDARD PAGE HEADING                    .
    * Program     : ZCOS_SALES                                           *
    * Dev. Class  :  ZSD
    * Functional  :
    * Created on  :                                                        *
    * Project     :
    * CR Number   :
    * Transaction :  ZSDCSUT                                               *
    * Description :   * Sales document life cylce for given customer
    *                  to declaired period displaying the sales document
    *                  details ,with relevant del details and corresponding
    *                  Invocie Details
    *-----------     Tables Declaration      -----------*
    TABLES: vbak,vbap,vbfa,kna1,vbrk,vbrp,likp,lips,t001.
    TYPE-POOLS : slis.
    *-----------    Internal Tables Declaration      -----------*
    *      Internal Table for Sales Order data                   *
    DATA: BEGIN OF it_so OCCURS 0,
            vbeln LIKE vbak-vbeln,
            kunnr LIKE vbak-kunnr,
            posnr LIKE vbap-posnr,
            matnr LIKE vbap-matnr,
            kwmeng LIKE vbap-kwmeng,
            netwr LIKE vbap-netwr,
         END OF it_so.
    *      Internal Table for Delivery Order data                   *
    DATA: BEGIN OF it_del OCCURS 0,
            delnum  LIKE likp-vbeln,
            lfdat LIKE likp-lfdat,
            delitem LIKE lips-posnr,
            lfimg LIKE lips-lfimg,
          END OF it_del.
    *      Internal Table for Invoice data                          *
    DATA: BEGIN OF  it_inv OCCURS 0,
            invnum LIKE vbrk-vbeln,
            invitem LIKE vbrp-posnr,
            fkimg LIKE vbrp-fkimg,
            amount LIKE vbrp-netwr,
         END OF it_inv.
    *      Internal Table for Final data                            *
    DATA: BEGIN OF it_final OCCURS 0,
            vbeln LIKE vbak-vbeln,
            posnr LIKE vbap-posnr,
            kunnr LIKE vbak-kunnr,
            name LIKE kna1-name1,
            matnr LIKE vbap-matnr,
            kwmeng LIKE vbap-kwmeng,
            netwr LIKE vbap-netwr,
            delnum  LIKE likp-vbeln,
            lfdat LIKE likp-lfdat,
            delitem LIKE lips-posnr,
            lfimg LIKE lips-lfimg,
            invnum LIKE vbrk-vbeln,
            invitem LIKE vbrp-posnr,
            fkimg LIKE vbrp-fkimg,
            amount LIKE vbrp-netwr,
         END OF it_final.
    *-----------    Variables Declaration      -----------*
    DATA: v_name LIKE kna1-kunnr," variable for customer name
          v_delnum LIKE likp-vbeln," variable for delivery number
          v_invnum LIKE vbrk-vbeln." variable for invoce number
    DATA : ls_layout TYPE slis_layout_alv,
           it_fcat TYPE slis_t_fieldcat_alv ,
           wa_fcat TYPE slis_fieldcat_alv,
           lh TYPE slis_t_listheader,
           ls TYPE slis_listheader,
           it_events TYPE slis_t_event  ,
           ls_event TYPE slis_alv_event ,
           i_sort     TYPE slis_t_sortinfo_alv,
           w_var TYPE i.
    DATA : l_date(10).
    DATA : l_date1(20).
    DATA : l_repid LIKE trdir-name.
    l_repid = 'ZSD_DOCU_FLOW1'.
    *-----------    Select-options & parameters Declaration  ---*
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_bukrs LIKE vbak-bukrs_vf,
                 p_vkorg LIKE vbak-vkorg,
                p_vtweg LIKE vbak-vtweg,
                p_spart LIKE vbak-spart.
    SELECT-OPTIONS: s_kunnr FOR vbak-kunnr,
                    s_audat FOR vbak-audat.
    SELECTION-SCREEN END OF BLOCK b1.
    *----------- AT SELECTION-SCREEN  --------------------------*
    AT SELECTION-SCREEN.
      SELECT SINGLE * FROM  t001 INTO t001
                                WHERE bukrs = p_bukrs.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Company Code'.
      ENDIF.
      SELECT SINGLE * FROM vbak INTO vbak
                              WHERE vkorg = p_vkorg.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Sales Organization'.
      ENDIF.
      SELECT SINGLE * FROM vbak INTO vbak
                                WHERE vtweg = p_vtweg.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid distribution channel'.
      ENDIF.
      SELECT SINGLE * FROM vbak INTO vbak
                                WHERE spart = p_spart.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Division'.
      ENDIF.
      SELECT SINGLE * FROM kna1 INTO kna1
                                WHERE kunnr IN s_kunnr.
      IF sy-subrc <> 0.
        MESSAGE e000(8i) WITH 'Enter a Valid Customer Number'.
      ENDIF.
    *----------- START-OF-SELECTION-----------------------------*
    START-OF-SELECTION.
      ls-typ = 'H'.
      ls-info = 'Sales Document Flow'.
      APPEND ls TO lh.
      ls-typ = 'S'.
      WRITE: sy-datum TO l_date USING EDIT MASK '__/__/____'.
      CONCATENATE 'DATE :' l_date INTO l_date1 SEPARATED BY space.
      ls-info = l_date1.
      APPEND ls TO lh.
      PERFORM field_cat.
      PERFORM t_sort_build USING i_sort.
      PERFORM get-data.
    *----------- END-OF-SELECTION-----------------------------*
    END-OF-SELECTION.
    IF it_final[] IS INITIAL.
        MESSAGE i000(8i) WITH 'No data Found'.
        EXIT.
      ENDIF.
    PERFORM print-data.
    *&      Form  get-data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get-data .
    *  Accesing Sales Data
      SELECT a~vbeln a~kunnr b~posnr b~matnr b~kwmeng b~netwr
       INTO CORRESPONDING FIELDS OF TABLE it_so
       FROM vbak AS a INNER JOIN vbap AS b
                             ON a~vbeln = b~vbeln
                              WHERE a~bukrs_vf = p_bukrs
                                 AND a~vkorg = p_vkorg
                                 AND  a~vtweg = p_vtweg
                                    AND a~spart = p_spart
                                     AND a~kunnr IN s_kunnr
                                          AND a~audat IN s_audat.
      LOOP AT it_so.
        SELECT SINGLE name1 FROM kna1 INTO v_name
                                         WHERE kunnr = it_so-kunnr.
        SELECT SINGLE vbeln FROM vbfa INTO v_delnum
                                          WHERE vbelv = it_so-vbeln
                                            AND  vbtyp_n = 'J'.
        IF sy-subrc = 0.
          SELECT SINGLE  vbeln FROM vbfa INTO v_invnum
                                WHERE vbelv = v_delnum
                                  AND  vbtyp_n = 'M'.
        ENDIF.
        MOVE-CORRESPONDING it_so TO it_final.
        it_final-name = v_name.
        it_final-delnum = v_delnum.
        it_final-invnum = v_invnum.
        APPEND it_final.
        CLEAR it_final.
        CLEAR v_delnum.
        CLEAR v_invnum.
      ENDLOOP.
      LOOP AT it_final.
        IF it_final-delnum NE ' '.
    * Reading Del Data.
          SELECT SINGLE  a~vbeln  a~lfdat b~posnr b~lfimg   INTO
                    (it_del-delnum, it_del-lfdat, it_del-delitem,
                     it_del-lfimg ) FROM
                        likp AS a INNER JOIN lips AS b ON a~vbeln = b~vbeln
                                   WHERE a~vbeln = it_final-delnum
                                   AND b~posnr = it_final-posnr.
          MOVE-CORRESPONDING it_del TO it_final.
          MODIFY it_final.
        ENDIF.
        IF it_final-invnum NE ' '.
    * Reading Invoice Data.
          SELECT SINGLE vbeln posnr fkimg netwr INTO
         (it_inv-invnum, it_inv-invitem, it_inv-fkimg, it_inv-amount )
                       FROM vbrp  WHERE vbeln = it_final-invnum
                                  AND   posnr = it_final-posnr.
          MOVE-CORRESPONDING it_inv TO it_final.
          MODIFY it_final.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " get-data
    *&      Form  print-data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM print-data .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
    *     I_BYPASSING_BUFFER                = ' '
    *     I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = l_repid
    *     I_CALLBACK_PF_STATUS_SET          = ' '
    *     I_CALLBACK_USER_COMMAND           = ' '
         i_callback_top_of_page            = 'TOP'
    *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *     I_CALLBACK_HTML_END_OF_LIST       = ' '
    *     I_STRUCTURE_NAME                  =
    *     I_BACKGROUND_ID                   = ' '
    *     I_GRID_TITLE                      =
    *     I_GRID_SETTINGS                   =
    *     IS_LAYOUT                         =
         it_fieldcat                       = it_fcat
    *     IT_EXCLUDING                      =
    *     IT_SPECIAL_GROUPS                 =
         IT_SORT                           = i_sort[]
    *     IT_FILTER                         =
    *     IS_SEL_HIDE                       =
    *     I_DEFAULT                         = 'X'
    *     I_SAVE                            = ' '
    *     IS_VARIANT                        =
    *     IT_EVENTS                         =
    *     IT_EVENT_EXIT                     =
    *     IS_PRINT                          =
    *     IS_REPREP_ID                      =
    *     I_SCREEN_START_COLUMN             = 0
    *     I_SCREEN_START_LINE               = 0
    *     I_SCREEN_END_COLUMN               = 0
    *     I_SCREEN_END_LINE                 = 0
    *     IT_ALV_GRAPHICS                   =
    *     IT_HYPERLINK                      =
    *     IT_ADD_FIELDCAT                   =
    *     IT_EXCEPT_QINFO                   =
    *     I_HTML_HEIGHT_TOP                 =
    *     I_HTML_HEIGHT_END                 =
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER           =
    *     ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_final.
    *   EXCEPTIONS
    *     PROGRAM_ERROR                     = 1
    *     OTHERS                            = 2
    *  IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *  ENDIF.
    ENDFORM.                    " print-data
    *&      Form  field_cat
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM field_cat .
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'VBELN'.
      wa_fcat-key = 'X'.
      wa_fcat-ref_fieldname = 'VBELN'.
      wa_fcat-ref_tabname = 'VBAK'.
      wa_fcat-seltext_m = 'Sales Order NO'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'POSNR'.
      wa_fcat-ref_fieldname = 'POSNR'.
      wa_fcat-ref_tabname = 'VBAP'.
      wa_fcat-seltext_m = 'SalesItemNO'.
      wa_fcat-fix_column = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'KUNNR'.
      wa_fcat-seltext_m = 'CUSTNUM'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'NAME'.
      wa_fcat-seltext_m = 'CUSTNAME'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-seltext_m = 'MATNUM'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'KWMENG'.
      wa_fcat-seltext_m = 'Sales Quantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'NETWR'.
      wa_fcat-seltext_m = 'Value'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'DELNUM'.
      wa_fcat-seltext_m = 'DeloveryNum'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'DELITEM'.
      wa_fcat-seltext_m = 'DelItemNO'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'LFDAT'.
      wa_fcat-seltext_m = 'DelDate'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'LFIMG'.
      wa_fcat-seltext_m = 'DelQuantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'INVNUM'.
      wa_fcat-seltext_m = 'InvoiceNum'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'INVITEM'.
      wa_fcat-seltext_m = 'InvoiceItem'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'FKIMG'.
      wa_fcat-seltext_m = 'INVQuantity'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
      wa_fcat-col_pos = w_var.
      wa_fcat-tabname = 'IT_FINAL'.
      wa_fcat-fieldname = 'AMOUNT'.
      wa_fcat-seltext_m = 'INVvalue'.
      wa_fcat-do_sum = 'X'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
      ADD 1 TO w_var.
    ENDFORM.     " field_cat
    *&      Form  top
    *       text
    FORM t_sort_build USING l_sort TYPE slis_t_sortinfo_alv.
      DATA: ls_sort TYPE slis_sortinfo_alv.
      ls_sort-fieldname = 'VBELN'.
      ls_sort-spos      = 1.
      ls_sort-up        = 'X'.
      ls_sort-subtot    = 'X'.
      APPEND ls_sort TO l_sort.
      ls_sort-fieldname = 'KUNNR'.
      ls_sort-spos      = 2.
      ls_sort-up        = 'X'.
      APPEND ls_sort TO l_sort.
    ENDFORM.                    "t_sort_bui
    FORM top.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = lh
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP
    ===========================================================================
    I have started the new program but i have trouble with the final internal table. Since i'm using For all entries I have declared internal tables for each table. My incomplete new program is as follows(not sure if the logic is correct till what I have coded):
    *& Report  Z_SDFLOW                                                    *
    REPORT  Z_SDFLOW  NO STANDARD PAGE HEADING.
    ********* TABLES TO BE USED ***********************
    **** VBAK - SALES DOCUMENT HEADER
    * VBAP - SALES ITEM
    * VBFA - SALES DOCUMENT FLOW
    * KNA1- CUSTOMER MASTER
    * VBRK - BILLING DOCUMENT HEADER
    * VBRP - BLLING DOCUMENT ITEM
    * LIKP - DELIVERY HEADER
    * LIPS - DELIVERY ITEM
    * TOO1 - COMPANY CODES
    * SLIS.
    TYPE-POOLS: SLIS.
    ** STRUCTURE DECLARATIONS ********
    **STRUCTURE FOR ENQUIRY.
    **STRUCTURE FOR QUOTATION.
    **STRUCTURE FOR SALES ORDER HEADER- VBAK.
    TYPES: BEGIN OF XT_VBAK,
    VBELN TYPE VBAK-VBELN,     "SALES DOCUMENT NUMBER
    KUNNR TYPE VBAK-KUNNR,     " SOLD-TO-PARTY
    END OF XT_VBAK.
    **STRUCTURE FOR SALES ORDER  ITEM-VBAP
    TYPES: BEGIN OF XT_VBAP,
    POSNR TYPE VBAP-POSNR,     " SALES ITEM NUMBER
    MATNR TYPE VBAP-MATNR,     " MATERIAL NUMBER
    KWMENG TYPE VBAP-KWMENG,   " CUMMULATIVE ORDER QUANTITY IN SALES UNITS
    NETWR TYPE VBAP-NETWR,     " NET VALUE OF THE ORDER ITEM
    END OF XT_VBAP.
    ** STRUCTURE FOR DELIVERY HEADER -LIKP
    TYPES: BEGIN OF XT_LIKP,
    DELVBELN TYPE LIKP-VBELN,           "DELIVERY DOCUMENT NUMBER
    LFDAT TYPE LIKP-LFDAT,           " DELIVERY DATE
    END OF XT_LIKP.
    **STRUCTURE FOR DELIVERY ITEM - LIPS
    TYPES: BEGIN OF XT_LIPS,
    DELPOSNR TYPE LIPS-POSNR,           " DELIVERY ITEM NUMBER
    LFIMG TYPE LIPS-LFIMG,           " ACTUAL QUANTITY DELIVERED
    END OF XT_LIPS.
    **STRUCTURE FOR BILLING DOCUMENT HEADER -VBRK
    TYPES: BEGIN OF XT_VBRK,
    INVVBELN TYPE VBRK-VBELN,          "BILLING DOCUMENT NUMBER
    END OF XT_VBRK.
    **STRUCTURE FOR BILLING DOCUMENT ITEM - VBRP
    TYPES: BEGIN OF XT_VBRP,
    INVPOSNR TYPE VBRP-POSNR,          "BILLING ITEM NUMBER
    FKIMG TYPE VBRP-FKIMG,          "ACTUAL INVOICED QUANTITY
    INVNETWR TYPE VBRP-NETWR,          "NET VALUE OF THE BILLING ITEM
    END OF XT_VBRP.
    **STRUCTURE FOR FINAL INTERNAL TABLE.
    TYPES: BEGIN OF XT_FINAL,
    VBELN TYPE VBAK-VBELN,
    DELVBELN TYPE LIKP-VBELN,
    INVBELN TYPE VBRK-VBELN,
    KUNNR TYPE VBAK-KUNNR,
    POSNR TYPE VBAP-POSNR,
    DELPOSNT TYPE LIPS-POSNR,
    INVPOSNR TYPE VBRP-POSNR,
    MATNR TYPE VBAP-MATNR,
    KWMENG TYPE VBAP-KWMENG,
    NETWR TYPE VBAP-NETWR,
    INVNETWR TYPE VBRP-NETWR,
    LFDAT TYPE LIKP-LFDAT,
    LFIMG TYPE LIPS-LFIMG,
    FKIMG TYPE VBRP-FKIMG,
    NAME1 TYPE KNA1-NAME1,
    END OF XT_FINAL.
    **DATA DECLARATIONS
    DATA: V_NAME1 TYPE KNA1-NAME1,  "#EC *
          V_DELVBELN TYPE LIKP-VBELN,
          V_INVVBELN TYPE VBRK-VBELN,
          V_BUKRS TYPE T001-BUKRS,    "COMPANY CODE "#EC *
          V_AUDAT TYPE VBAK-AUDAT,
          V_VKORG TYPE VBAK-VKORG,
          V_VKGRP TYPE VBAK-VKGRP,
          V_SPART TYPE VBAK-SPART.
    **INTERNAL TABLE DECLARATIONS
    DATA: IT_VBAK TYPE STANDARD TABLE OF XT_VBAK,
          WA_VBAK TYPE XT_VBAK,
          IT_VBAP TYPE STANDARD TABLE OF XT_VBAP,
          WA_VBAP TYPE XT_VBAP,
          IT_LIKP TYPE STANDARD TABLE OF XT_LIKP,
          WA_LIKP TYPE XT_LIKP,
          IT_LIPS TYPE STANDARD TABLE OF XT_LIPS,
          WA_LIPS TYPE XT_LIPS,
          IT_VBRK TYPE STANDARD TABLE OF XT_VBRK,
          WA_VBRK TYPE XT_VBRK,
          IT_VBRP TYPE STANDARD TABLE OF XT_VBRP,
          WA_VBRP TYPE XT_VBRP,
          IT_FINAL TYPE STANDARD TABLE OF XT_FINAL,
          WA_FINAL TYPE XT_FINAL.
    **ALV DECLARATIONS
    DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
          IT_LSTHDR TYPE SLIS_T_LISTHEADER,
          WA_LSTHDR TYPE SLIS_LISTHEADER,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: S_BUKRS FOR V_BUKRS NO INTERVALS NO-EXTENSION,
                    S_VBELN FOR WA_VBAK-VBELN,  "SALES DOCUMENT NUMBER
                    S_KUNNR FOR WA_VBAK-KUNNR,  "SOLD-TO-PARTY
                    S_AUDAT FOR V_AUDAT,      "SALES DOCUMENT DATE
                    S_VKORG FOR V_VKORG,      "SALES ORGANISATION
                    S_VKGRP FOR V_VKGRP,      "SALES GROUP
                    S_SPART FOR V_SPART.      "DIVISION
    SELECTION-SCREEN END OF BLOCK b1.
    *****************SCREEN VALIDATION***************
    AT SELECTION-SCREEN.
    SELECT SINGLE BUKRS FROM T001 INTO V_BUKRS WHERE BUKRS IN S_BUKRS."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID COMPANY CODE'.
    ENDIF.
    SELECT SINGLE VBELN FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE VBELN IN S_VBELN.
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER VALID SALES DOCUMENT NUMBER'.
    ENDIF.
    SELECT SINGLE KUNNR FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE KUNNR IN S_KUNNR. "EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID CUSTOMER NUMBER'.
    ENDIF.
    SELECT SINGLE AUDAT FROM VBAK INTO V_AUDAT WHERE AUDAT IN S_AUDAT."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DOCUMENT DATE'.
    ENDIF.
    SELECT SINGLE VKORG FROM VBAK INTO V_VKORG WHERE VKORG IN S_VKORG."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES ORGANISATION'.
    ENDIF.
    SELECT SINGLE VKGRP FROM VBAK INTO V_VKGRP WHERE VKGRP IN S_VKGRP."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES GROUP'.
    ENDIF.
    SELECT SINGLE SPART FROM VBAK INTO V_SPART WHERE SPART IN S_SPART."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DIVISION'.
    ENDIF.
    PERFORM GET_DATA.
    *&      Form  GET_DATA
    FORM GET_DATA .
    SELECT VBELN KUNNR
            INTO TABLE IT_VBAK
            FROM VBAK
            WHERE VBELN IN S_VBELN.
    *        BUKRS_VF IN S_BUKRS AND
    *        VKORG IN S_VKORG AND
    *        VKGRP IN S_VKGRP AND
    *        SPART IN S_SPART AND
    *        KUNNR IN S_KUNNR AND
    *        AUDAT IN S_AUDAT.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT POSNR MATNR KWMENG NETWR
            INTO TABLE IT_VBAP
            FROM VBAP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT VBELN LFDAT
            INTO TABLE IT_LIKP
            FROM LIKP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAP[] IS NOT INITIAL.
    SELECT POSNR LFIMG
            INTO TABLE IT_LIPS
            FROM LIPS
            FOR ALL ENTRIES IN IT_VBAP
            WHERE POSNR = IT_VBAP-POSNR.
    ENDIF.
    IF IT_LIKP[] IS NOT INITIAL.
    SELECT VBELN
            INTO TABLE IT_VBRK
            FROM VBRK
            FOR ALL ENTRIES IN IT_LIKP
            WHERE VBELN = IT_LIKP-DELVBELN.
    ENDIF.
    IF IT_LIPS[] IS NOT INITIAL.
    SELECT POSNR FKIMG NETWR
            INTO TABLE IT_VBRP
            FROM VBRP
            FOR ALL ENTRIES IN IT_LIPS
            WHERE POSNR = IT_LIPS-DELPOSNR.
    ENDIF.
    ENDFORM.                    " GET_DATA
    Edited by: srk s on Jan 29, 2008 7:33 PM
    Edited by: Alvaro Tejada Galindo on Jan 29, 2008 9:49 AM

    Hi Satish,
    I have started the new program but i have trouble with the final internal table. Since i'm using For all entries, I have declared internal tables for each table. My incomplete new program is as follows(not sure if the logic is correct till what I have coded):
    *& Report  Z_SDFLOW                                                    *
    REPORT  Z_SDFLOW  NO STANDARD PAGE HEADING.
    ********* TABLES TO BE USED ***********************
    **** VBAK - SALES DOCUMENT HEADER
    * VBAP - SALES ITEM
    * VBFA - SALES DOCUMENT FLOW
    * KNA1- CUSTOMER MASTER
    * VBRK - BILLING DOCUMENT HEADER
    * VBRP - BLLING DOCUMENT ITEM
    * LIKP - DELIVERY HEADER
    * LIPS - DELIVERY ITEM
    * TOO1 - COMPANY CODES
    * SLIS.
    TYPE-POOLS: SLIS.
    ** STRUCTURE DECLARATIONS ********
    **STRUCTURE FOR ENQUIRY.
    **STRUCTURE FOR QUOTATION.
    **STRUCTURE FOR SALES ORDER HEADER- VBAK.
    TYPES: BEGIN OF XT_VBAK,
    VBELN TYPE VBAK-VBELN,     "SALES DOCUMENT NUMBER
    KUNNR TYPE VBAK-KUNNR,     " SOLD-TO-PARTY
    END OF XT_VBAK.
    **STRUCTURE FOR SALES ORDER  ITEM-VBAP
    TYPES: BEGIN OF XT_VBAP,
    POSNR TYPE VBAP-POSNR,     " SALES ITEM NUMBER
    MATNR TYPE VBAP-MATNR,     " MATERIAL NUMBER
    KWMENG TYPE VBAP-KWMENG,   " CUMMULATIVE ORDER QUANTITY IN SALES UNITS
    NETWR TYPE VBAP-NETWR,     " NET VALUE OF THE ORDER ITEM
    END OF XT_VBAP.
    ** STRUCTURE FOR DELIVERY HEADER -LIKP
    TYPES: BEGIN OF XT_LIKP,
    DELVBELN TYPE LIKP-VBELN,           "DELIVERY DOCUMENT NUMBER
    LFDAT TYPE LIKP-LFDAT,           " DELIVERY DATE
    END OF XT_LIKP.
    **STRUCTURE FOR DELIVERY ITEM - LIPS
    TYPES: BEGIN OF XT_LIPS,
    DELPOSNR TYPE LIPS-POSNR,           " DELIVERY ITEM NUMBER
    LFIMG TYPE LIPS-LFIMG,           " ACTUAL QUANTITY DELIVERED
    END OF XT_LIPS.
    **STRUCTURE FOR BILLING DOCUMENT HEADER -VBRK
    TYPES: BEGIN OF XT_VBRK,
    INVVBELN TYPE VBRK-VBELN,          "BILLING DOCUMENT NUMBER
    END OF XT_VBRK.
    **STRUCTURE FOR BILLING DOCUMENT ITEM - VBRP
    TYPES: BEGIN OF XT_VBRP,
    INVPOSNR TYPE VBRP-POSNR,          "BILLING ITEM NUMBER
    FKIMG TYPE VBRP-FKIMG,          "ACTUAL INVOICED QUANTITY
    INVNETWR TYPE VBRP-NETWR,          "NET VALUE OF THE BILLING ITEM
    END OF XT_VBRP.
    **STRUCTURE FOR FINAL INTERNAL TABLE.
    TYPES: BEGIN OF XT_FINAL,
    VBELN TYPE VBAK-VBELN,
    DELVBELN TYPE LIKP-VBELN,
    INVBELN TYPE VBRK-VBELN,
    KUNNR TYPE VBAK-KUNNR,
    POSNR TYPE VBAP-POSNR,
    DELPOSNT TYPE LIPS-POSNR,
    INVPOSNR TYPE VBRP-POSNR,
    MATNR TYPE VBAP-MATNR,
    KWMENG TYPE VBAP-KWMENG,
    NETWR TYPE VBAP-NETWR,
    INVNETWR TYPE VBRP-NETWR,
    LFDAT TYPE LIKP-LFDAT,
    LFIMG TYPE LIPS-LFIMG,
    FKIMG TYPE VBRP-FKIMG,
    NAME1 TYPE KNA1-NAME1,
    END OF XT_FINAL.
    **DATA DECLARATIONS
    DATA: V_NAME1 TYPE KNA1-NAME1,  "#EC *
          V_DELVBELN TYPE LIKP-VBELN,
          V_INVVBELN TYPE VBRK-VBELN,
          V_BUKRS TYPE T001-BUKRS,    "COMPANY CODE "#EC *
          V_AUDAT TYPE VBAK-AUDAT,
          V_VKORG TYPE VBAK-VKORG,
          V_VKGRP TYPE VBAK-VKGRP,
          V_SPART TYPE VBAK-SPART.
    **INTERNAL TABLE DECLARATIONS
    DATA: IT_VBAK TYPE STANDARD TABLE OF XT_VBAK,
          WA_VBAK TYPE XT_VBAK,
          IT_VBAP TYPE STANDARD TABLE OF XT_VBAP,
          WA_VBAP TYPE XT_VBAP,
          IT_LIKP TYPE STANDARD TABLE OF XT_LIKP,
          WA_LIKP TYPE XT_LIKP,
          IT_LIPS TYPE STANDARD TABLE OF XT_LIPS,
          WA_LIPS TYPE XT_LIPS,
          IT_VBRK TYPE STANDARD TABLE OF XT_VBRK,
          WA_VBRK TYPE XT_VBRK,
          IT_VBRP TYPE STANDARD TABLE OF XT_VBRP,
          WA_VBRP TYPE XT_VBRP,
          IT_FINAL TYPE STANDARD TABLE OF XT_FINAL,
          WA_FINAL TYPE XT_FINAL.
    **ALV DECLARATIONS
    DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
          IT_LSTHDR TYPE SLIS_T_LISTHEADER,
          WA_LSTHDR TYPE SLIS_LISTHEADER,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: S_BUKRS FOR V_BUKRS NO INTERVALS NO-EXTENSION,
                    S_VBELN FOR WA_VBAK-VBELN,  "SALES DOCUMENT NUMBER
                    S_KUNNR FOR WA_VBAK-KUNNR,  "SOLD-TO-PARTY
                    S_AUDAT FOR V_AUDAT,      "SALES DOCUMENT DATE
                    S_VKORG FOR V_VKORG,      "SALES ORGANISATION
                    S_VKGRP FOR V_VKGRP,      "SALES GROUP
                    S_SPART FOR V_SPART.      "DIVISION
    SELECTION-SCREEN END OF BLOCK b1.
    *****************SCREEN VALIDATION***************
    AT SELECTION-SCREEN.
    SELECT SINGLE BUKRS FROM T001 INTO V_BUKRS WHERE BUKRS IN S_BUKRS."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID COMPANY CODE'.
    ENDIF.
    SELECT SINGLE VBELN FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE VBELN IN S_VBELN.
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER VALID SALES DOCUMENT NUMBER'.
    ENDIF.
    SELECT SINGLE KUNNR FROM VBAK INTO
              CORRESPONDING FIELDS OF WA_VBAK WHERE KUNNR IN S_KUNNR. "EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID CUSTOMER NUMBER'.
    ENDIF.
    SELECT SINGLE AUDAT FROM VBAK INTO V_AUDAT WHERE AUDAT IN S_AUDAT."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DOCUMENT DATE'.
    ENDIF.
    SELECT SINGLE VKORG FROM VBAK INTO V_VKORG WHERE VKORG IN S_VKORG."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES ORGANISATION'.
    ENDIF.
    SELECT SINGLE VKGRP FROM VBAK INTO V_VKGRP WHERE VKGRP IN S_VKGRP."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES GROUP'.
    ENDIF.
    SELECT SINGLE SPART FROM VBAK INTO V_SPART WHERE SPART IN S_SPART."#EC *
    IF SY-SUBRC <> 0.
    MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DIVISION'.
    ENDIF.
    PERFORM GET_DATA.
    *&      Form  GET_DATA
    FORM GET_DATA .
    SELECT VBELN KUNNR
            INTO TABLE IT_VBAK
            FROM VBAK
            WHERE VBELN IN S_VBELN.
    *        BUKRS_VF IN S_BUKRS AND
    *        VKORG IN S_VKORG AND
    *        VKGRP IN S_VKGRP AND
    *        SPART IN S_SPART AND
    *        KUNNR IN S_KUNNR AND
    *        AUDAT IN S_AUDAT.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT POSNR MATNR KWMENG NETWR
            INTO TABLE IT_VBAP
            FROM VBAP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAK[] IS NOT INITIAL.
    SELECT VBELN LFDAT
            INTO TABLE IT_LIKP
            FROM LIKP
            FOR ALL ENTRIES IN IT_VBAK
            WHERE VBELN = IT_VBAK-VBELN.
    ENDIF.
    IF IT_VBAP[] IS NOT INITIAL.
    SELECT POSNR LFIMG
            INTO TABLE IT_LIPS
            FROM LIPS
            FOR ALL ENTRIES IN IT_VBAP
            WHERE POSNR = IT_VBAP-POSNR.
    ENDIF.
    IF IT_LIKP[] IS NOT INITIAL.
    SELECT VBELN
            INTO TABLE IT_VBRK
            FROM VBRK
            FOR ALL ENTRIES IN IT_LIKP
            WHERE VBELN = IT_LIKP-DELVBELN.
    ENDIF.
    IF IT_LIPS[] IS NOT INITIAL.
    SELECT POSNR FKIMG NETWR
            INTO TABLE IT_VBRP
            FROM VBRP
            FOR ALL ENTRIES IN IT_LIPS
            WHERE POSNR = IT_LIPS-DELPOSNR.
    ENDIF.
    ENDFORM.                    " GET_DATA
    Code Formatted by: Alvaro Tejada Galindo on Jan 29, 2008 9:48 AM

Maybe you are looking for

  • Return Delivery For PMO

    Hi, Is it possible to do a return delivery for a Plant Maintenence Order using movement type 262 using MIGO? Thanks Regards Raj

  • Aperture photo book vs iPhoto quality

    Hi, will photo books printed from Aperture give me better quality than photo books from iPhoto 6? This will help me decide if I should buy Aperture or not. Is it true that Aperture prints books at 300 dpi and iPHoto at 150 dpi? Any advantages to prin

  • Draw Line With Arrow between containers in flex

    I need to connect multiple containers by drawing arrow . can any one provide me the idea how to do? Thanks in Advance, senthil [email protected]

  • Printing problem in Windows 7

    Dear All, When we take the printing from SAP, in Windows XP  system prints perfectly font size, font type etc. are ok.  But from windows 7 system prints very small size.  I have chacked with various possibility by changing device type and access meth

  • Creating new Component - Adding Arguments

    Hi! First of all hello to everybody as i am new to this forums and also to flex. I have been doing the Flex Lessons, and then i tried to do an "mp3 Player" component. I was thinking in using the SoundEffect efect. What i want to know, is how can i ad