YPRACTICE_602

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > ABAP Source Code >

YPRACTICE_602

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

*& Report  YPRACTICE_602

*&

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

*&

*&

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

 

REPORT  ypractice_602.

 

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

* Tables

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

TABLES : mara, makt, t006a.

 

 

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

*GLOBAL VARIABLE DECRALATION

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

DATA: gi_header LIKE STANDARD TABLE OF yst_header_101 WITH HEADER LINE,

      gi_makt  LIKE STANDARD TABLE OF makt WITH HEADER LINE,

      gi_t006a LIKE STANDARD TABLE OF t006a WITH HEADER LINE.

 

 

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

*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

 

SELECTION-SCREEN BEGIN OF BLOCK groupbox2 WITH FRAME TITLE text_201. "Declare Group Box 2

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_202 FOR FIELD p_mrow.

PARAMETERS p_mrow TYPE i DEFAULT 1000 LENGTH 5.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN END OF BLOCK groupbox2.                              "End Group Box 2

 

SELECTION-SCREEN BEGIN OF BLOCK groupbox3 WITH FRAME TITLE text_301.  "Declare Group Box 3 - Print Parameter

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_311.

PARAMETERS: p_pdest LIKE pri_params-pdest DEFAULT 'LOCL'.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_312.

PARAMETERS p_ncops TYPE tdsfcopies DEFAULT '1'.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_313.

PARAMETERS p_dialog TYPE c AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN COMMENT 23(25) text_314 FOR FIELD p_dialog.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN ULINE.

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_321.

 

PARAMETERS p_prv RADIOBUTTON GROUP rad1 VISIBLE LENGTH 20.

SELECTION-SCREEN COMMENT 23(8) text_322 FOR FIELD p_prv.

 

PARAMETERS p_prt RADIOBUTTON GROUP rad1 DEFAULT 'X'.

SELECTION-SCREEN COMMENT 34(8) text_323 FOR FIELD p_prt.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN END OF BLOCK groupbox3.                              "End Group Box 3

 

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

*EVENT

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

AT SELECTION-SCREEN OUTPUT.

  text_101 = 'Selection Parameter'.

  text_102 = 'Material Group'.

  text_103 = 'Material Number'.

 

  text_201 = 'Page Setup'.

  text_202 = 'Max. Row'.

 

  text_301 = 'Print Setup'.

  text_311 = 'Output Device'.

  text_312 = 'Number of Copies'.

  text_313 = ' '.

  text_314 = 'Show Printer Dialog'.

 

  text_321 = 'Print Option'.

  text_322 = 'Preview'.

  text_323 = 'Print'.

 

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

*INITIALIZATION

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

INITIALIZATION.

 

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

*MAIN PROGRAM

*Execute after Input Screen

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

START-OF-SELECTION.

  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.

 

  DATA: lv_fmname TYPE rs38l_fnam,

        lw_options TYPE ssfcompop,

        lw_control TYPE ssfctrlop,

        lw_tdbool TYPE tdbool.

 

*  Get Function Module name base on SmartForms name

  lv_fmname = 'YFO_PRACTICE_101'.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

    EXPORTING

      formname           = lv_fmname

    IMPORTING

      fm_name            = lv_fmname

    EXCEPTIONS

      no_form            = 1

      no_function_module = 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.

 

*  Set Properties of Printer

  lw_tdbool = space.

 

  IF p_dialog = 'X'.

    lw_control-no_dialog = ' '.

  ELSE.

    lw_control-no_dialog = 'X'.

  ENDIF.

  lw_control-preview = p_prv.

 

  lw_options-tddest = p_pdest.

  lw_options-tdimmed = 'X'.

  lw_options-tddelete = 'X'.

  lw_options-tdcopies = p_ncops.

 

*  Call and Run SmartForms

  CALL FUNCTION lv_fmname

    EXPORTING

      control_parameters = lw_control

      output_options     = lw_options

      user_settings      = lw_tdbool

      gv_max_row         = p_mrow    "--User Define Form Interface

    TABLES

      gi_header          = gi_header "--User Define Form Interface

      gr_matkl           = so_matkl  "--User Define Form Interface

      gr_matnr           = so_matnr  "--User Define Form Interface

    EXCEPTIONS

      formatting_error   = 1

      internal_error     = 2

      send_error         = 3

      user_canceled      = 4

      OTHERS             = 5.

 

  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.                    "fm_display_data