Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Login

Login to view more content!!!





Lost Password?
No account yet? Register

Registered Access

Home arrow Sample Code arrow ABAP Reports arrow Shell List Report off table - NAST
Shell List Report off table - NAST PDF Print E-mail
User Rating: / 0
PoorBest 
Written by Anon.   
Tuesday, 20 February 2007

Sample list report off Table NAST with Line selection option.

 

REPORT znast.

 

*** Table Definitions ***

TABLES: nast.

 

*** TYPE DEFINITIONS ***

TYPES: BEGIN OF itab_data_structure,

         kappl LIKE nast-kappl, "Application

         objky LIKE nast-objky, "Key

         kschl LIKE nast-kschl, "Output type

         parnr LIKE nast-parnr, "Partner

         erdat LIKE nast-erdat, "Creation date

         usnam LIKE nast-usnam, "User name

         vstat LIKE nast-vstat. "Status

TYPES: END OF itab_data_structure.

 

TYPES: BEGIN OF itab_data_structure2,

         objky  LIKE nast-objky, "Key

         docnum LIKE edidc-docnum, "Idoc Number

         mestyp LIKE edidc-mestyp. "Message type

TYPES: END OF itab_data_structure2.

 

 

*** INTERNAL TABLE DEFINITIONS ***

DATA: itab_data TYPE itab_data_structure OCCURS 0 WITH HEADER LINE,

      itab_data2 TYPE itab_data_structure2 OCCURS 0 WITH HEADER LINE,

      itab_linked_idocs LIKE sww_contob OCCURS 5 WITH HEADER LINE,

      t_roles LIKE relroles OCCURS 5 WITH HEADER LINE.

 

*** DATA DEFINITIONS

DATA: field_name(30),                "Check for line selection on field

      t_kschl(4),                    "Output type

      t_kunnr(10),                   "Customer number

      t_object LIKE borident.

 

 

*** Selection screen ***

SELECTION-SCREEN BEGIN OF BLOCK g1 WITH FRAME TITLE text-000.

SELECT-OPTIONS: s_kappl FOR nast-kappl, "Application

                s_objky FOR nast-objky, "Key

                s_kschl FOR nast-kschl, "Output type

                s_parnr FOR nast-parnr, "Partner

                s_erdat FOR nast-erdat, "Creation date

                s_usnam FOR nast-usnam, "User name

                s_vstat FOR nast-vstat. "Status

SELECTION-SCREEN END OF BLOCK g1.

 

SELECTION-SCREEN BEGIN OF BLOCK g2 WITH FRAME TITLE text-001.

PARAMETERS: r_kappl RADIOBUTTON GROUP r1,

            r_objky RADIOBUTTON GROUP r1,

            r_kschl RADIOBUTTON GROUP r1,

            r_parnr RADIOBUTTON GROUP r1,

            r_erdat RADIOBUTTON GROUP r1,

            r_usnam RADIOBUTTON GROUP r1,

            r_vstat RADIOBUTTON GROUP r1.

SELECTION-SCREEN END OF BLOCK g2.

 

SELECTION-SCREEN BEGIN OF BLOCK g3 WITH FRAME TITLE text-002.

PARAMETERS: c_idoc AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK g3.

 

*** Initialization ***

INITIALIZATION.

 

* Default dates

  MOVE 'I' TO s_erdat-sign.

  MOVE 'BT' TO s_erdat-option.

  MOVE sy-datum TO s_erdat-high.

  SUBTRACT 7 FROM sy-datum.

  MOVE sy-datum TO s_erdat-low.

  APPEND s_erdat.

 

* Default Status

  MOVE 'I' TO s_vstat-sign.

  MOVE 'NE' TO s_vstat-option.

  MOVE '1' TO s_vstat-low.

  APPEND s_vstat.

 

* Default Output

  MOVE 'I' TO s_kschl-sign.

  MOVE 'EQ' TO s_kschl-option.

  MOVE 'ZBA0' TO s_kschl-low.

  APPEND s_kschl.

  MOVE 'ZBA1' TO s_kschl-low.

  APPEND s_kschl.

  MOVE 'ZBA2' TO s_kschl-low.

  APPEND s_kschl.

  MOVE 'ZP00' TO s_kschl-low.

  APPEND s_kschl.

  MOVE 'ZAVA' TO s_kschl-low.

  APPEND s_kschl.

  MOVE 'ZD00' TO s_kschl-low.

  APPEND s_kschl.

 

START-OF-SELECTION.

 

  REFRESH: itab_data, itab_data2.

  SELECT * FROM nast

    WHERE kappl IN s_kappl AND

          objky IN s_objky AND

          kschl IN s_kschl AND

          parnr IN s_parnr AND

          erdat IN s_erdat AND

          usnam IN s_usnam AND

          vstat IN s_vstat.

    itab_data-kappl = nast-kappl.

    itab_data-objky = nast-objky.

    itab_data-kschl = nast-kschl.

    itab_data-parnr = nast-parnr.

    itab_data-erdat = nast-erdat.

    itab_data-usnam = nast-usnam.

    itab_data-vstat = nast-vstat.

    APPEND itab_data.

 

  ENDSELECT.

 

  IF sy-subrc <> 0.

    MESSAGE i999(b1) WITH 'No records in that range!'.

  ELSE.

    IF c_idoc = 'X'.

      CLEAR: itab_data2.

      LOOP AT itab_data.

        itab_data2-objky = itab_data-objky.

 

        CASE itab_data-kschl.

          WHEN 'ZD00'.    "Invoice

            READ TABLE itab_data2 WITH KEY objky = itab_data-objky.

            CHECK sy-subrc <> 0.

 

            REFRESH: t_roles.

            t_object-objkey = itab_data-objky.

            t_object-objtype = 'VBRK'.

            CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'

                 EXPORTING

                      object         = t_object

                 TABLES

                      roles          = t_roles

                 EXCEPTIONS

                      internal_error = 1

                      no_logsys      = 2

                      OTHERS         = 3.

 

            IF sy-subrc <> 0.

              MESSAGE i999(b1) WITH 'Could not execute linked docs FM:'

                                    itab_data-objky.

            ELSE.

              LOOP AT t_roles WHERE objtype = 'IDOC'.

                itab_data2-docnum = t_roles-objkey.

                SELECT SINGLE mestyp FROM edidc

                  INTO itab_data2-mestyp

                  WHERE docnum = t_roles-objkey.

                APPEND itab_data2.

              ENDLOOP.

            ENDIF.

 

          WHEN 'ZAVA'.    "Delivery

            READ TABLE itab_data2 WITH KEY objky = itab_data-objky.

            CHECK sy-subrc <> 0.

 

            REFRESH: t_roles.

            t_object-objkey = itab_data-objky.

            t_object-objtype = 'LIKP'.

            CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'

                 EXPORTING

                      object         = t_object

                 TABLES

                      roles          = t_roles

                 EXCEPTIONS

                      internal_error = 1

                      no_logsys      = 2

                      OTHERS         = 3.

 

            IF sy-subrc <> 0.

              MESSAGE i999(b1) WITH 'Could not execute linked docs FM:'

                                    itab_data-objky.

            ELSE.

              LOOP AT t_roles WHERE objtype = 'IDOC'.

                itab_data2-docnum = t_roles-objkey.

                SELECT SINGLE mestyp FROM edidc

                  INTO itab_data2-mestyp

                  WHERE docnum = t_roles-objkey.

                APPEND itab_data2.

              ENDLOOP.

            ENDIF.

 

          WHEN 'ZBA0' OR 'ZBA1' OR 'ZBA2'.    "Orders

            READ TABLE itab_data2 WITH KEY objky = itab_data-objky.

            CHECK sy-subrc <> 0.

 

            REFRESH: t_roles.

            t_object-objkey = itab_data-objky.

            t_object-objtype = 'BUS2032'.

            CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'

                 EXPORTING

                      object         = t_object

                 TABLES

                      roles          = t_roles

                 EXCEPTIONS

                      internal_error = 1

                      no_logsys      = 2

                      OTHERS         = 3.

 

            IF sy-subrc <> 0.

              MESSAGE i999(b1) WITH 'Could not execute linked docs FM:'

                                    itab_data-objky.

            ELSE.

              LOOP AT t_roles WHERE objtype = 'IDOC'.

                itab_data2-docnum = t_roles-objkey.

                SELECT SINGLE mestyp FROM edidc

                  INTO itab_data2-mestyp

                  WHERE docnum = t_roles-objkey.

                COLLECT itab_data2.

              ENDLOOP.

            ENDIF.

 

          WHEN 'ZP00'.    "Scheduling Agreement

            READ TABLE itab_data2 WITH KEY objky = itab_data-objky.

            CHECK sy-subrc <> 0.

 

            REFRESH: t_roles.

            t_object-objkey = itab_data-objky.

            t_object-objtype = 'BUS2035'.

            CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'

                 EXPORTING

                      object         = t_object

                 TABLES

                      roles          = t_roles

                 EXCEPTIONS

                      internal_error = 1

                      no_logsys      = 2

                      OTHERS         = 3.

 

            IF sy-subrc <> 0.

              MESSAGE i999(b1) WITH 'Could not execute linked docs FM:'

                                    itab_data-objky.

            ELSE.

              LOOP AT t_roles WHERE objtype = 'IDOC'.

                itab_data2-docnum = t_roles-objkey.

                SELECT SINGLE mestyp FROM edidc

                  INTO itab_data2-mestyp

                  WHERE docnum = t_roles-objkey.

                APPEND itab_data2.

              ENDLOOP.

            ENDIF.

 

        ENDCASE.

 

      ENDLOOP.

    ENDIF.

  ENDIF.

 

END-OF-SELECTION.

 

  DESCRIBE TABLE itab_data.

 

  IF sy-tfill > 0.

    IF r_kappl = 'X'.

      SORT itab_data BY kappl.

    ELSEIF r_objky = 'X'.

      SORT itab_data BY objky.

    ELSEIF r_kschl = 'X'.

      SORT itab_data BY kschl.

    ELSEIF r_parnr = 'X'.

      SORT itab_data BY parnr.

    ELSEIF r_erdat = 'X'.

      SORT itab_data BY erdat.

    ELSEIF r_usnam = 'X'.

      SORT itab_data BY usnam.

    ELSEIF r_vstat = 'X'.

      SORT itab_data BY vstat.

    ENDIF.

    PERFORM print_itab_data

      TABLES itab_data

             itab_data2.

  ENDIF.

 

AT LINE-SELECTION.

  GET CURSOR FIELD field_name.

  CASE field_name.

    WHEN 'ITAB_DATA2-DOCNUM' OR 'ITAB_DATA2-MESTYP'.  "IDoc number

      CALL FUNCTION 'EDI_DOCUMENT_DATA_DISPLAY'

           EXPORTING

                docnum               = itab_data2-docnum

           EXCEPTIONS

                no_data_record_found = 1

                OTHERS               = 2.

      IF sy-subrc <> 0.

        MESSAGE i999(b1) WITH 'Could not display IDoc:'

                              itab_data2-docnum.

      ENDIF.

      CLEAR: itab_data2-docnum.

 

    WHEN 'ITAB_DATA-OBJKY'.   "Order number

      t_kschl = sy-lisel+34(4).

 

      CASE t_kschl.

        WHEN 'ZAVA'.   "Delivery

          SET PARAMETER ID 'VL' FIELD itab_data-objky.

          CALL TRANSACTION 'VL03' AND SKIP FIRST SCREEN.

 

        WHEN 'ZBA0' OR 'ZBA1' OR 'ZBA2'.   "Sales Order

          SET PARAMETER ID 'AUN' FIELD itab_data-objky.

          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

 

        WHEN 'ZP00'.   "Scheduling Agreement

          SET PARAMETER ID 'LPN' FIELD itab_data-objky.

          CALL TRANSACTION 'VA33' AND SKIP FIRST SCREEN.

 

        WHEN 'ZD00'.   "Invoice

          SET PARAMETER ID 'VF' FIELD itab_data-objky.

          CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

 

        WHEN OTHERS.

          MESSAGE i999(b1) WITH 'Unrecognized Output Type!'.

 

      ENDCASE.

 

    WHEN 'ITAB_DATA-PARNR'.   "Customer number

      t_kunnr = sy-lisel+39(10).

      SET PARAMETER ID 'KUN' FIELD itab_data-parnr.

      CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.

 

 

    WHEN OTHERS.

      MESSAGE i999(b1) WITH 'Please click the Doc or Partner #.'.

 

  ENDCASE.

 

  CLEAR: t_kunnr, t_kschl, field_name.

 

*&---------------------------------------------------------------------*

*&      Form  print_itab_data

*&---------------------------------------------------------------------*

*       Print out ITAB_DATA

*----------------------------------------------------------------------*

*      -->T_ITAB_DATA  Internal Table Data

*----------------------------------------------------------------------*

FORM print_itab_data

  TABLES t_itab_data STRUCTURE itab_data

         t_itab_data2 STRUCTURE itab_data2.

 

  FORMAT COLOR COL_HEADING.

  WRITE: /    'App',

           5  'Document Number',

           35 'Type',

           40 'Partner',

           51 'Created on',