Professional Documents
Culture Documents
*----------------------------------------------------------------------*
* TYPES *
*----------------------------------------------------------------------*
TYPES : BEGIN OF x_output,
str TYPE char90,
END OF x_output.
*----------------------------------------------------------------------*
* CONSTANTS *
*----------------------------------------------------------------------*
CONSTANTS : c_x TYPE char1 VALUE 'X',
c_i TYPE char1 VALUE 'I',
c_s TYPE char1 VALUE 'S',
c_rid TYPE char3 VALUE 'RID',
c_se38 TYPE char4 VALUE 'SE38',
c_star TYPE char1 VALUE '*',
c_dash TYPE char1 VALUE '-',
c_colon TYPE char1 VALUE ':',
c_01 TYPE char30 VALUE 'Title',
c_02 TYPE char30 VALUE 'Program ID',
c_03 TYPE char30 VALUE 'Version',
c_04 TYPE char30 VALUE 'SAP Version',
c_05 TYPE char30 VALUE 'Program Name',
c_06 TYPE char30 VALUE 'Created by',
c_07 TYPE char30 VALUE 'Created on',
c_08 TYPE char30 VALUE 'Program Type',
c_09 TYPE char30 VALUE 'Message Class',
c_10 TYPE char30 VALUE 'Description',
c_11 TYPE char30 VALUE 'Change History',
c_12 TYPE char30 VALUE 'Change Id',
c_13 TYPE char30 VALUE 'Author',
c_14 TYPE char30 VALUE 'Changed On',
c_15 TYPE char30 VALUE 'Description',
c_incl TYPE char35 VALUE ' INCLUDE',
c_type TYPE char35 VALUE ' TYPES',
c_cons TYPE char35 VALUE ' CONSTANTS',
c_itab TYPE char35 VALUE ' INTERNAL TABLES',
c_wa TYPE char35 VALUE ' WORK AREA',
c_var TYPE char35 VALUE ' VARIABLES',
c_range TYPE char35 VALUE ' RANGE',
c_fs TYPE char35 VALUE ' FIELD SYMBOLS',
c_ss TYPE char35 VALUE ' SELECTION SCREEN',
c_ssa TYPE char35 VALUE ' SELECTION SCREEN VALIDATION',
c_init TYPE char35 VALUE ' INITIALIZATION',
c_sos TYPE char35 VALUE ' START OF SELECTION',
c_eos TYPE char35 VALUE ' END OF SELECTION',
c_sos_dash TYPE char35 VALUE ' START-OF-SELECTION.',
c_eos_dash TYPE char35 VALUE ' END-OF-SELECTION.',
c_dot TYPE char1 VALUE '.'.
*----------------------------------------------------------------------*
* INTERNAL TABLES *
*----------------------------------------------------------------------*
DATA :t_output TYPE TABLE OF x_output.
*----------------------------------------------------------------------*
* WORK AREA *
*----------------------------------------------------------------------*
DATA :w_output TYPE x_output.
*----------------------------------------------------------------------*
* VARIABLES *
*----------------------------------------------------------------------*
SELECTION-SCREEN:END OF LINE,
BEGIN OF LINE.
*--------------------------------------------------------------------* Created on
*--------------------------------------------------------------------PARAMETERS : cb_erdat TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t07 FOR FIELD p_erdat.
PARAMETERS : p_erdat TYPE sydatum DEFAULT sy-datum.
SELECTION-SCREEN:END OF LINE,
BEGIN OF LINE.
*--------------------------------------------------------------------* Program Type
*--------------------------------------------------------------------PARAMETERS : cb_typ TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t08 FOR FIELD p_typ.
PARAMETERS : p_typ TYPE char50 DEFAULT 'Report'.
SELECTION-SCREEN:END OF LINE,
BEGIN OF LINE.
*--------------------------------------------------------------------* Message Class
*--------------------------------------------------------------------PARAMETERS : cb_msgcl TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t09 FOR FIELD p_msgcl.
PARAMETERS : p_msgcl TYPE symsgid DEFAULT 'DU'.
SELECTION-SCREEN:END OF LINE,
BEGIN OF LINE.
*--------------------------------------------------------------------* Description
*--------------------------------------------------------------------PARAMETERS : cb_desc TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t10 FOR FIELD p_desc.
PARAMETERS : p_desc TYPE char50 DEFAULT 'Program description'.
SELECTION-SCREEN:END OF LINE,
END OF BLOCK b1.
*********************************************************************
* Block Two for Change History
*********************************************************************
SELECTION-SCREEN:BEGIN OF BLOCK b2 WITH FRAME TITLE g_text02,
BEGIN OF LINE.
*--------------------------------------------------------------------* Change History
*--------------------------------------------------------------------PARAMETERS : cb_chist TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t11 FOR FIELD p_chist.
PARAMETERS : p_chist TYPE char50 DEFAULT 'C H A N G E H I S T O R Y'.
SELECTION-SCREEN:END OF LINE,
BEGIN OF LINE.
*--------------------------------------------------------------------* Change Id
*--------------------------------------------------------------------PARAMETERS : cb_cid TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t12 FOR FIELD p_cid.
PARAMETERS : p_cid TYPE char50 DEFAULT 'CHGID001'.
SELECTION-SCREEN:END OF LINE,
BEGIN OF LINE.
*--------------------------------------------------------------------* Author
*--------------------------------------------------------------------PARAMETERS : cb_aut TYPE char1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:COMMENT 3(20) g_t13 FOR FIELD p_aut.
IF rb_dot EQ c_x.
DO 72 TIMES.
CONCATENATE g_line c_dash INTO g_line.
ENDDO.
ELSE.
DO 72 TIMES.
CONCATENATE g_line c_star INTO g_line.
ENDDO.
ENDIF.
*---------------------------------------------------------------------* TITLE
*---------------------------------------------------------------------IF cb_title EQ c_x.
PERFORM build_output USING g_line.
CLEAR w_output .
w_output-str+2 = p_title.
APPEND w_output TO t_output.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* PROGRAM ID
*---------------------------------------------------------------------IF cb_pid EQ c_x.
PERFORM build_desc USING c_02 p_pid.
ENDIF.
*---------------------------------------------------------------------* VERSION
*---------------------------------------------------------------------IF cb_ver EQ c_x.
PERFORM build_desc USING c_03 p_ver.
ENDIF.
*---------------------------------------------------------------------* SAP VERSION
*---------------------------------------------------------------------IF cb_sver EQ c_x.
PERFORM build_desc USING c_04 p_sver.
ENDIF.
*---------------------------------------------------------------------* PROGRAM NAME
*---------------------------------------------------------------------IF cb_repid EQ c_x.
PERFORM build_desc USING c_05 p_repid.
ENDIF.
*---------------------------------------------------------------------* CREATED BYE
*---------------------------------------------------------------------IF cb_ernam EQ c_x.
PERFORM build_desc USING c_06 p_ernam.
ENDIF.
*---------------------------------------------------------------------* CREATED ON
*---------------------------------------------------------------------IF cb_erdat EQ c_x.
CLEAR g_date.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal
= p_erdat
IMPORTING
date_external
= g_date
EXCEPTIONS
date_internal_is_invalid = 1.
PERFORM build_desc USING c_07 g_date.
ENDIF.
*---------------------------------------------------------------------* PROGRAM TYPE
*---------------------------------------------------------------------IF cb_typ EQ c_x.
PERFORM build_desc USING c_08 p_typ.
ENDIF.
*---------------------------------------------------------------------* MESSAGE CLASS
*---------------------------------------------------------------------IF cb_msgcl EQ c_x.
PERFORM build_desc USING c_09 p_msgcl.
ENDIF.
*---------------------------------------------------------------------* PROGRAM DESCRIPTION
*---------------------------------------------------------------------IF cb_desc EQ c_x.
PERFORM build_desc USING c_10 p_desc.
PERFORM build_output USING g_line.
ENDIF.
PERFORM build_output USING g_line.
*---------------------------------------------------------------------* CHANGE HISTORY
*---------------------------------------------------------------------IF cb_chist EQ c_x.
CLEAR w_output.
w_output-str+2 = p_chist.
APPEND w_output TO t_output.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* CHANGE ID
*---------------------------------------------------------------------IF cb_cid EQ c_x.
PERFORM build_desc USING c_12 p_cid.
ENDIF.
*---------------------------------------------------------------------* CHANGES BY
*---------------------------------------------------------------------IF cb_aut EQ c_x.
PERFORM build_desc USING c_13 p_aut.
ENDIF.
*---------------------------------------------------------------------* CHANGED ON
*---------------------------------------------------------------------IF cb_chg EQ c_x.
PERFORM build_desc USING c_14 p_chg.
ENDIF.
*---------------------------------------------------------------------* CHANGE DESCRIPTION
*---------------------------------------------------------------------IF cb_cdesc EQ c_x.
PERFORM build_desc USING c_15 p_cdesc.
ENDIF.
PERFORM build_output USING g_line.
*----------------------------------------------------------------------
* REPORT NAME
*---------------------------------------------------------------------IF p_msgcl IS INITIAL.
CONCATENATE space 'REPORT' p_repid
'NO STANDARD PAGE HEADING LINE-SIZE 65 LINE-COUNT 80.'
INTO w_output-str SEPARATED BY space.
APPEND w_output TO t_output.
ELSE.
CONCATENATE space 'REPORT' p_repid
'NO STANDARD PAGE HEADING LINE-SIZE 65 LINE-COUNT 80 MESSAGE-ID' p_msgcl c_dot
INTO w_output-str SEPARATED BY space.
APPEND w_output TO t_output.
ENDIF.
*---------------------------------------------------------------------* INCLUDES
*---------------------------------------------------------------------IF cb_incl EQ c_x.
PERFORM build_output USING g_line.
PERFORM build_output USING c_incl.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* TYPES DECLARATION
*---------------------------------------------------------------------IF cb_type EQ c_x.
PERFORM build_output USING g_line.
PERFORM build_output USING c_type.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* CONSTANT DECLARATION
*---------------------------------------------------------------------IF cb_cons EQ c_x.
PERFORM build_output USING g_line.
PERFORM build_output USING c_cons.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* DATA DECLARATION FOR INTERNAL TABLES
*---------------------------------------------------------------------IF cb_itab EQ c_x.
PERFORM build_output USING g_line.
PERFORM build_output USING c_itab.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* DATA DECLARATION FOR WORK AREA
*---------------------------------------------------------------------IF cb_wa EQ c_x.
PERFORM build_output USING g_line.
PERFORM build_output USING c_wa.
PERFORM build_output USING g_line.
ENDIF.
*---------------------------------------------------------------------* DATA DECLARATION FOR VARIABLES
*---------------------------------------------------------------------IF cb_var EQ c_x.
PERFORM build_output USING g_line.
utput>-str NE c_eos_dash.
CONCATENATE c_star <fs_output>-str INTO <fs_output>-str.
IF rb_close EQ c_x.
<fs_output>+71 = c_star.
ENDIF.
ENDIF.
ENDLOOP.
* Create a new report as per the name entered by the user
INSERT REPORT p_repid FROM t_output.
IF sy-subrc EQ 0.
MESSAGE 'Pls save the new program in an request or local obj.'
TYPE c_i.
MESSAGE 'Pls do enter the program title in Menu Goto->Attributes.'
TYPE c_i.
MESSAGE 'Report created sucessfully.' TYPE c_s.
ENDIF.
*---------------------------------------------------------------------*
* END OF SELECTION
*---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form BUILD_DESC
*&---------------------------------------------------------------------*
* -->FP_DATA
*----------------------------------------------------------------------*
FORM build_desc USING fp_desc fp_val.
CLEAR w_output.
w_output-str+2 = fp_desc.
w_output-str+25(1) = c_colon.
w_output-str+27 = fp_val.
APPEND w_output TO t_output.
ENDFORM. " BUILD_DESC
*&---------------------------------------------------------------------*
*& Form build_output
*&---------------------------------------------------------------------*
* -->FP_DATA
*----------------------------------------------------------------------*
FORM build_output USING fp_data.
IF fp_data IS NOT INITIAL.
CLEAR w_output.
w_output-str = fp_data.
APPEND w_output TO t_output.
ENDIF.
ENDFORM. " build_output