创建文本编辑框

*&---------------------------------------------------------------------*
*& Report  ZTEST_ZNT05
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_ZNT05.

TABLES: SSCRFIELDS.
DATA: ITAB_CODE    TYPE STANDARD TABLE OF CHAR72.
DATA: V_LINE    TYPE I.
DATA: S_MESSAGE TYPE TRMSG.
DATA: V_WORD    TYPE CHAR72.
DATA: V_REPORT TYPE SYREPID VALUE 'Z_TEST_REPORT_11'.
DATA: V_TIME1   TYPE I.
DATA: V_TIME2   TYPE I.
DATA: V_REPID   TYPE SYREPID.
DATA: X_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
      X_EDITOR TYPE REF TO CL_GUI_TEXTEDIT.
PARAMETERS:P_REPORT(72) DEFAULT 'REPORT z_test_report_11.'.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(60) V_TEXT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(80) V_TEXT1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.
  V_REPID = SY-REPID.
  V_TEXT = 'Report Z_TEST_REPORT_11 will be generated'.
  V_TEXT1 = 'This is a small utility program to get the run time for the given code.'.
  SSCRFIELDS-FUNCTXT_01 = 'Check syntax'.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF SCREEN-NAME = 'P_REPORT'.
      SCREEN-INPUT = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
  IF X_DOCKING IS INITIAL .
    CREATE OBJECT X_DOCKING
    EXPORTING
        REPID = V_REPID
        DYNNR = SY-DYNNR
        SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_bottom
        EXTENSION = '235'
    EXCEPTIONS
        CNTL_ERROR                  = 1
        CNTL_SYSTEM_ERROR           = 2
        CREATE_ERROR                = 3
        LIFETIME_ERROR              = 4
        LIFETIME_DYNPRO_DYNPRO_LINK = 5.
  ENDIF .
  IF X_EDITOR IS INITIAL.
    CREATE OBJECT X_EDITOR
      EXPORTING
          PARENT            = X_DOCKING
          WORDWRAP_MODE = CL_GUI_TEXTEDIT=>WORDWRAP_AT_FIXED_POSITION
          WORDWRAP_POSITION = 72
          MAX_NUMBER_CHARS = 100000.
  ENDIF .

AT SELECTION-SCREEN.
  CHECK SY-UCOMM = 'FC01'.
  PERFORM CODE_AND_SYNTAX_CHECK.

START-OF-SELECTION.
  PERFORM CODE_AND_SYNTAX_CHECK.
  INSERT REPORT 'Z_TEST_REPORT_11' FROM ITAB_CODE.
  IF SY-SUBRC <> 0.
    MESSAGE I398(00) WITH 'Errors in generating'.
    LEAVE LIST-PROCESSING.
  ENDIF.
  GENERATE REPORT 'Z_TEST_REPORT_11'.
  IF SY-SUBRC <> 0.
    MESSAGE I398(00) WITH 'Errors in generating'.
    LEAVE LIST-PROCESSING.
  ELSE.
    MESSAGE S398(00) WITH 'Code generated successfully'.
  ENDIF.
  GET RUN TIME FIELD V_TIME1.
  SUBMIT (V_REPORT) AND RETURN.
  GET RUN TIME FIELD V_TIME2.
  V_TIME2 = V_TIME2 - V_TIME1.
  WRITE: / 'Run time in micro seconds = ', V_TIME2.
*&---------------------------------------------------------------------*
*&      Form code_and_syntax_check
*&---------------------------------------------------------------------*
FORM CODE_AND_SYNTAX_CHECK.
  REFRESH: ITAB_CODE.
  CALL METHOD X_EDITOR->GET_TEXT_AS_R3TABLE
    IMPORTING
      TABLE                  = ITAB_CODE
    EXCEPTIONS
      ERROR_DP               = 1
      ERROR_CNTL_CALL_METHOD = 2
      ERROR_DP_CREATE        = 3
      POTENTIAL_DATA_LOSS    = 4
      OTHERS                 = 5.
  IF SY-SUBRC <> 0.
    MESSAGE I398(00) WITH 'Error in getting the code'.
    LEAVE PROGRAM.
  ENDIF.
  INSERT P_REPORT INTO ITAB_CODE INDEX 1.
  SYNTAX-CHECK FOR ITAB_CODE MESSAGE S_MESSAGE LINE V_LINE WORD V_WORD.
  IF SY-SUBRC <> 0.
    MESSAGE I398(00) WITH S_MESSAGE-MSGTEXT 'Line' V_LINE.
    LEAVE LIST-PROCESSING.
  ELSE.
    MESSAGE S398(00) WITH 'No syntax errors'.
  ENDIF.
ENDFORM.                    " code_and_syntax_check

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值