YPRACTICE_503

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > ABAP Source Code >

YPRACTICE_503

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

*& Report  YPRACTICE_503                                               *

*&                                                                     *

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

*&                                                                     *

*&                                                                     *

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

 

REPORT  ypractice_503                           .

 

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

* Tables

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

TABLES : t023t, mara, makt, t006a.

 

INCLUDE ypractice_503_alv.

*INCLUDE ypractice_501_alv.

 

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

*GLOBAL VARIABLE DECRALATION

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

 

 

TYPES : BEGIN OF ty_header,

          chbox,

          exp,

          matkl LIKE t023t-matkl,

          wgbez LIKE t023t-wgbez,

        END OF ty_header.

 

TYPES: BEGIN OF ty_detail,

        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_detail.

 

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

      gi_detail TYPE STANDARD TABLE OF ty_detail 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 Material Group

  SELECT matkl wgbez

    INTO CORRESPONDING FIELDS OF TABLE gi_header

  FROM t023t

  WHERE matkl IN so_matkl AND

        spras = sy-langu.

 

*  "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 Master Material

    SELECT matnr matkl bismt meins

      INTO CORRESPONDING FIELDS OF TABLE gi_detail

    FROM mara

      FOR ALL ENTRIES IN gi_header

    WHERE

      matkl = gi_header-matkl AND

      matnr IN so_matnr.

 

    IF LINES( gi_detail ) > 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_detail

      WHERE

        matnr = gi_detail-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_detail

      WHERE

        msehi = gi_detail-meins AND

        spras = sy-langu.

    ENDIF.

  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_detail.

*    Get Material Description

    READ TABLE gi_makt WITH KEY matnr = gi_detail-matnr.

    IF sy-subrc = 0.

      gi_detail-maktx = gi_makt-maktx.

    ENDIF.

 

*    Get Measurement Text

    READ TABLE gi_t006a WITH KEY msehi = gi_detail-meins.

    IF sy-subrc = 0.

      gi_detail-mseht = gi_t006a-mseht.

    ENDIF.

 

    MODIFY gi_detail.

  ENDLOOP.

 

ENDFORM.                    "FM_PROCESS_DATA

 

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

*&      Form  fm_display_data

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

*       text

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

FORM fm_display_data.

  PERFORM fm_alv_reset_data.

 

*  Mengatur Parameter dan Data ALV

  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_hier TABLES gi_header gi_detail.

 

 

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

 

*  Set Header Column

  PERFORM fm_alv_add_fieldcat USING 'GI_HEADER':

    'MATKL' 'T023T'  'MATKL' '' '' 'Mat. Group'    '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',

    'WGBEZ' 'T023T'  'WGBEZ' '' '' 'Mat. Number'   '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.

 

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

     EXPORTING

       i_internal_tabname           = 'GI_HEADER'

*     i_structure_name             = ''

     CHANGING

       ct_fieldcat                  = gi_it_fieldcat[]

     EXCEPTIONS

       inconsistent_interface       = 1

       program_error                = 2

       OTHERS                       = 3.

 

*  Set Detail Column

  PERFORM fm_alv_add_fieldcat USING 'GI_DETAIL':

    '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'       '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.

 

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

     EXPORTING

       i_internal_tabname           = 'GI_DETAIL'

*     i_structure_name             = ''

     CHANGING

       ct_fieldcat                  = gi_it_fieldcat[]

     EXCEPTIONS

       inconsistent_interface       = 1

       program_error                = 2

       OTHERS                       = 3.

 

 

*  Sort and Group by Field

*  CLEAR gi_it_sort.

*  gi_it_sort-fieldname = 'MATKL'. ">> 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

 

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

*&      Form  fm_build_keyinfo

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

*       text

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

*      -->FU_KEYINFO text

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

FORM fm_build_keyinfo  USING    fu_keyinfo TYPE slis_keyinfo_alv .

 

  fu_keyinfo-header01 = 'MATKL'.

*  fu_keyinfo-header02 = 'VKORG'.

*  fu_keyinfo-header03 = 'VTWEG'.

*  fu_keyinfo-header04 = 'NETWR'.

*  fu_keyinfo-header05 = 'WAERK'.

 

  fu_keyinfo-item01 = 'MATKL'.

*  fu_keyinfo-item02 = 'POSNR'.

*  fu_keyinfo-item03 = 'VTWEG'.

*  fu_keyinfo-item04 = 'SPART'.

*  fu_keyinfo-item05 = 'NORM'.

 

ENDFORM.                    "fm_build_keyinfo