YPRACTICE_502

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > ABAP Source Code >

YPRACTICE_502

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

*& Report  YPRACTICE_502                                               *

*&                                                                     *

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

*&                                                                     *

*&                                                                     *

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

 

REPORT  ypractice_502                           .

 

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

* Tables

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

TABLES : mara, makt, t006a.

 

INCLUDE ypractice_502_alv.

*INCLUDE ypractice_501_alv.

 

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

*GLOBAL VARIABLE DECRALATION

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

TYPES: BEGIN OF ty_header,

        matkl LIKE mara-matkl,  " Material Group

        matnr LIKE mara-matnr,  " Material Number

        maktx LIKE makt-maktx,  " Material Description

        bismt LIKE mara-bismt,  " Old material number

        meins LIKE mara-meins,  " Base Unit of Measure

        mseht LIKE t006a-mseht, " Unit of Measurement Text

      END OF ty_header.

 

DATA: gi_header TYPE STANDARD TABLE OF ty_header WITH HEADER LINE,

      gi_makt  LIKE STANDARD TABLE OF makt WITH HEADER LINE,

      gi_t006a LIKE STANDARD TABLE OF t006a WITH HEADER LINE.

 

DATA: gv_width TYPE i.  " Width of list

 

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

*Input Screen/Selection

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

SELECTION-SCREEN BEGIN OF BLOCK groupbox1 WITH FRAME TITLE text_101. "Declare Group Box 1

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_102 FOR FIELD so_matkl.

SELECT-OPTIONS so_matkl FOR mara-matkl.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_103 FOR FIELD so_matnr.

SELECT-OPTIONS so_matnr FOR mara-matnr.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN END OF BLOCK groupbox1.                              "End Group Box 1

 

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

*EVENT

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

AT SELECTION-SCREEN OUTPUT.

  text_101 = 'Selection Parameter'.

  text_102 = 'Material Group'.

  text_103 = 'Material Number'.

 

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

*INITIALIZATION

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

INITIALIZATION.

 

*======================================================================*

*MAIN PROGRAM

*Execute after Input Screen

*======================================================================*

START-OF-SELECTION.

  gv_width = 113.

  PERFORM fm_collect_data.

  PERFORM fm_process_data.

  PERFORM fm_display_data.

 

END-OF-SELECTION.

 

 

*======================================================================*

*SUB PROGRAM / SUB ROUTINE

*======================================================================*

 

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

*&      Form  fm_collect_data

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

*       text

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

FORM fm_collect_data.

*  Collect Master Material

  SELECT matnr matkl bismt meins

    INTO CORRESPONDING FIELDS OF TABLE gi_header

  FROM mara

  WHERE

    matkl IN so_matkl AND

    matnr IN so_matnr.

 

*  "For SAP 4.6C

*  DATA : lv_total_data type i.

*  DESCRIBE TABLE gi_header LINES lv_total_data.

*  IF lv_total_data > 0.

 

  IF LINES( gi_header ) > 0." For SAP 4.7 above

*  Collect Material Decription

    SELECT matnr maktx

      INTO CORRESPONDING FIELDS OF TABLE gi_makt

    FROM makt

      FOR ALL ENTRIES IN gi_header

    WHERE

      matnr = gi_header-matnr AND

      spras = sy-langu.

 

*  Collect Measurement Text

    SELECT msehi mseht

      INTO CORRESPONDING FIELDS OF TABLE gi_t006a

    FROM t006a

      FOR ALL ENTRIES IN gi_header

    WHERE

      msehi = gi_header-meins AND

      spras = sy-langu.

  ENDIF.

 

* Notes :

*  Avoid using inner join

 

ENDFORM.                    "FM_COLLECT_DATA

 

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

*&      Form  FM_PROCESS_DATA

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

*       text

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

FORM fm_process_data.

*Get other requirement information

  LOOP AT gi_header.

*    Get Material Description

    READ TABLE gi_makt WITH KEY matnr = gi_header-matnr.

    IF sy-subrc = 0.

      gi_header-maktx = gi_makt-maktx.

    ENDIF.

 

*    Get Measurement Text

    READ TABLE gi_t006a WITH KEY msehi = gi_header-meins.

    IF sy-subrc = 0.

      gi_header-mseht = gi_t006a-mseht.

    ENDIF.

 

    MODIFY gi_header.

  ENDLOOP.

 

ENDFORM.                    "FM_PROCESS_DATA

 

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

*&      Form  fm_display_data

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

*       text

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

FORM fm_display_data.

  PERFORM fm_alv_reset_data.

 

*  Set ALV Parameters and Data

  PERFORM fm_alv_set_layout USING 'Display List of Master Material'.

  PERFORM fm_alv_set_print.

  PERFORM fm_alv_set_column.

 

  gv_i_default = 'X'.

  gv_i_save = 'A'.

 

  PERFORM fm_alv_show TABLES gi_header.

 

 

ENDFORM.                    "fm_display_data

 

*======================================================================

*Set ALV

*======================================================================

 

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

*&      Form  fm_alv_set_column

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

*       text

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

FORM fm_alv_set_column.

*        matkl LIKE mara-matkl,  " Material Group

*        matnr LIKE mara-matnr,  " Material Number

*        maktx LIKE makt-maktx,  " Material Description

*        bismt LIKE mara-bismt,  " Old material number

*        meins LIKE mara-meins,  " Base Unit of Measure

*        mseht LIKE t006a-mseht, " Unit of Measurement Text

 

*  Displaying Column by Fieldname

 

 

  PERFORM fm_alv_add_fieldcat USING :

    'MATKL' 'MARA'  'MATKL' '' '' 'Mat. Group'    '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',

    'MATNR' 'MARA'  'MATNR' '' '' 'Mat. Number'   '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',

    'MAKTX' 'MAKT'  'MAKTX' '' '' 'Decription'    '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',

    'BISMT' 'MARA'  'BISMT' '' '' 'Old Mat. No'   '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',

    'MEINS' 'MARA'  'MEINS' '' '' 'Base Unit'     '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',

    'MSEHT' 'T006A' 'MSEHT' '' '' 'Measure'       '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.

 

 

 

*  Sort and Group by Field

*  CLEAR gi_it_sort.

*  gi_it_sort-fieldname = 'WERKS'. ">> Filled by Fieldname

*  gi_it_sort-up        = 'X'.     ">> 'X' = Ascending ; ' ' = Descending

*  gi_it_sort-subtot    = 'X'.

*  gi_it_sort-group     = '*'.     ">> '*' = Grouped by field ; ' ' = Not grouped by this field

*  APPEND gi_it_sort.

 

 

ENDFORM.                    "fm_alv_set_column