YABAP_TOOLS_FIND_CUSTOMER_EXIT_01

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > ABAP Source Code >

YABAP_TOOLS_FIND_CUSTOMER_EXIT_01

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

*& Report  YABAP_TOOLS_FIND_CUST_EXIT_01                               *

*&                                                                     *

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

*& Created By : Albertus Reinandang                                    *

*& Date       : 17.07.2008                                             *

*&                                                                     *

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

 

REPORT  yabap_tools_find_cust_exit_01

        NO STANDARD PAGE HEADING.

 

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

* Tables

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

TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir,tstct.

TYPE-POOLS: kkblo, slis.

 

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

*GLOBAL VARIABLE DECRALATION

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

DEFINE macro_data_possition.

  if &1 = 'HEADER'.

    write :  /'|' no-gap,(15)  &2 centered,

              '|' no-gap,(40) &3 centered,

              '|' no-gap.

  else.

    write :  /'|' no-gap,(15)  &2 color 1 centered hotspot on,

              '|' no-gap,(40) &3 color 2,

              '|' no-gap.

  endif.

END-OF-DEFINITION.

 

TYPES: BEGIN OF ty_header,

        obj_name LIKE tadir-obj_name,

        modtext LIKE modsapt-modtext,

      END OF ty_header.

 

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

      gw_tstc LIKE tstc,

      gw_trdir LIKE trdir,

      gw_tfdir LIKE tfdir,

      gw_enlfdir LIKE enlfdir,

      gw_tadir LIKE tadir,

      gw_tstct LIKE tstct.

 

DATA: gw_pri_params TYPE pri_params,

      gv_valid TYPE c,

      gv_devclass LIKE tadir-devclass.

 

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

*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 p_tcode.

PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.

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

PARAMETERS p_mwidth TYPE n DEFAULT 60 LENGTH 4.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_203 FOR FIELD p_mline .

PARAMETERS p_mline TYPE n DEFAULT 30 LENGTH 4.

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_paart LIKE pri_params-paart DEFAULT 'X_44_120'.

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

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

 

PARAMETERS p_prt RADIOBUTTON GROUP rad1.

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

 

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

*INITIALIZATION

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

INITIALIZATION.

  text_101 = 'Selection Parameter'.

  text_102 = 'Transaction Code'.

 

  text_201 = 'Page Setup'.

  text_202 = 'Max. Width'.

  text_203 = 'Max. Line per Page'.

 

  text_301 = 'Print Setup'.

  text_311 = 'Output Device'.

  text_312 = 'Printer Layout'.

  text_313 = ' '.

  text_314 = 'Show Printer Dialog'.

 

  text_321 = 'Print Option'.

  text_322 = 'Preview'.

  text_323 = 'Print'.

 

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

*MAIN PROGRAM

*Execute after Input Screen

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

START-OF-SELECTION.

  FORMAT RESET.

 

  NEW-PAGE LINE-SIZE  p_mwidth.

  NEW-PAGE LINE-COUNT p_mline.

 

  PERFORM fm_collect_data.

  PERFORM fm_process_data.

 

  IF LINES( gi_header ) > 0.

    IF p_prt = 'X'.

      PERFORM fm_print_setup.

    ENDIF.

    PERFORM fm_display_data.

  ELSE.

    PERFORM fm_showmessage.

  ENDIF.

 

END-OF-SELECTION.

 

 

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

*SUB PROGRAM / SUB ROUTINE

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

 

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

*&      Form  fm_collect_data

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

*       text

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

FORM fm_collect_data.

  CLEAR : gw_tstc, gw_trdir, gw_tfdir, gw_enlfdir, gw_tadir, gw_tstct.

  REFRESH gi_header.

 

  SELECT SINGLE *

    INTO gw_tstc

  FROM tstc

  WHERE tcode = p_tcode.

  IF gw_tstc IS NOT INITIAL.

    SELECT SINGLE *

      INTO gw_tadir

    FROM tadir

    WHERE pgmid = 'R3TR' AND

          object = 'PROG' AND

          obj_name = gw_tstc-pgmna.

    gv_devclass = gw_tadir-devclass.

 

    IF gw_tadir IS NOT INITIAL.

      SELECT SINGLE *

        INTO gw_trdir

      FROM trdir WHERE name = gw_tstc-pgmna.

 

      IF gw_trdir-subc EQ 'F'.

 

        SELECT SINGLE *

          INTO gw_tfdir

        FROM tfdir WHERE pname = gw_tstc-pgmna.

 

        SELECT SINGLE *

          INTO gw_enlfdir

        FROM enlfdir WHERE funcname = gw_tfdir-funcname.

 

        SELECT SINGLE *

          INTO gw_tadir

        FROM tadir

        WHERE pgmid = 'R3TR' AND

              object = 'FUGR' AND

              obj_name EQ gw_enlfdir-area.

 

        gv_devclass = gw_tadir-devclass.

 

      ENDIF.

    ENDIF.

  ENDIF.

 

  SELECT obj_name FROM tadir

    INTO CORRESPONDING FIELDS OF TABLE gi_header

  WHERE pgmid = 'R3TR' AND

        object = 'SMOD' AND

        devclass = gv_devclass.

 

  SELECT SINGLE *

    INTO gw_tstct

  FROM tstct

  WHERE sprsl EQ sy-langu AND

        tcode EQ p_tcode.

 

ENDFORM.                    "FM_COLLECT_DATA

 

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

*&      Form  FM_PROCESS_DATA

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

*       text

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

FORM fm_process_data.

 

*Get other requirement information

  LOOP AT gi_header.

    SELECT SINGLE modtext

      INTO gi_header-modtext

    FROM modsapt

    WHERE sprsl = sy-langu AND

          name = gi_header-obj_name.

 

    MODIFY gi_header.

  ENDLOOP.

 

ENDFORM.                    "FM_PROCESS_DATA

 

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

*&      Form  fm_display_data

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

*       text

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

FORM fm_display_data.

  FORMAT RESET.

 

  DATA: lv_total_data TYPE i,

        lv_header_line TYPE i,

        lv_footer_line TYPE i,

        lv_max_content TYPE i,

        lv_max_data TYPE i,

        lv_page_count TYPE i.                               " LENGTH 4.

 

*  Calculate Page Count

  lv_total_data = LINES( gi_header ).

  lv_header_line = 4.

  lv_footer_line = 3.

  lv_max_content = p_mline - lv_header_line - lv_footer_line.

  lv_max_data    = p_mline - lv_footer_line.

 

  lv_page_count = ( lv_total_data DIV lv_max_content ) + 1.

 

*  Display Data to Screen

  LOOP AT gi_header.

    macro_data_possition : 'CONTENT'

                           gi_header-obj_name

                           gi_header-modtext.

 

    IF sy-linno = lv_max_data.

      PERFORM fm_footer USING lv_page_count.

 

      NEW-PAGE.

    ENDIF.

  ENDLOOP.

 

*  Create Last Footer

  IF sy-linno < lv_max_content.

    PERFORM fm_footer USING lv_page_count.

  ENDIF.

 

ENDFORM.                    "fm_display_data

 

 

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

*&      Form  fm_footer

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

*       text

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

*      -->FV_PAGE_COUtext

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

FORM fm_footer USING fv_page_count.

*      Create Footer Text ( 3 Lines )

  ULINE AT (p_mwidth).                    " Upper frame border

  FORMAT COLOR COL_TOTAL  INTENSIFIED.    " Footer color

  WRITE :  /'|' NO-GAP, 'Page : ' NO-GAP, (4) sy-pagno NO-GAP, '/', (4) fv_page_count NO-GAP.

  WRITE: AT p_mwidth sy-vline.            " Right border

  ULINE AT (p_mwidth).                    " Line below titles

  FORMAT COLOR OFF.

ENDFORM.                    "fm_footer

 

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

*&      Form  fm_print_setup

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

*       text

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

FORM fm_print_setup.

  DATA: lv_dialog TYPE c.

 

  IF p_prt = 'X'.

    IF p_dialog = 'X'.

      lv_dialog = ' '.

    ELSE.

      lv_dialog = 'X'.

    ENDIF.

 

    CALL FUNCTION 'GET_PRINT_PARAMETERS'

      EXPORTING

        destination            = p_pdest

        immediately            = 'X'

        draft                  = ' '

        no_dialog              = lv_dialog

        release                = 'X'

        layout                 = p_paart

      IMPORTING

        out_parameters         = gw_pri_params

        valid                  = gv_valid

      EXCEPTIONS

        archive_info_not_found = 1

        invalid_print_params   = 2

        invalid_archive_params = 3

        OTHERS                 = 4.

 

*    Dot Matrix Setting

*    PRINT-CONTROL CPI 17. "CPI cpiLetters per inch

*    PRINT-CONTROL LPI 6.  "LPI lpiLines per inch

*__________________________________________________

 

    IF sy-subrc <> 0.

      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

 

    CHECK gv_valid = 'X'.

 

    NEW-PAGE PRINT ON PARAMETERS gw_pri_params NO DIALOG.

 

  ENDIF.

ENDFORM.                    "fm_print_setup

 

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

*&      Form  fm_showmessage

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

*       text

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

FORM fm_showmessage.

  MESSAGE 'File not found.' TYPE 'I'.

ENDFORM.                    "fm_showmessage

 

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

*STANDARD EVENT

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

 

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

*Page Header

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

TOP-OF-PAGE.

*  Create Header Text ( 4 Lines )

  WRITE:/(19) 'Transaction Code - ', 20(20) p_tcode, 45(50) tstct-ttext.

 

  ULINE AT (p_mwidth).                    " Upper frame border

  FORMAT COLOR COL_HEADING INTENSIFIED.   " Title color

  macro_data_possition : 'HEADER' 'Exit Name' 'Description'.

  ULINE AT (p_mwidth).                    " Line below titles

  FORMAT COLOR OFF.

 

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

*Event Click

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

AT LINE-SELECTION.

  DATA : lv_obj_name   LIKE gi_header-obj_name,

         rs_selfield   TYPE slis_selfield,

*       kkblo_tabname TYPE slis_tabname,

         l_tabname     TYPE kkblo_tabname.

 

  GET CURSOR FIELD rs_selfield-sel_tab_field VALUE rs_selfield-value.

  SPLIT rs_selfield-sel_tab_field AT '-' INTO l_tabname

                                               rs_selfield-fieldname.

  CASE rs_selfield-fieldname.

    WHEN 'OBJ_NAME'.

      MOVE rs_selfield-value TO lv_obj_name.

      condense lv_obj_name.

      SET PARAMETER ID 'MON' FIELD lv_obj_name.

      CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

 

    WHEN OTHERS.

  ENDCASE.