ABAP Text edit使用
生活随笔
收集整理的這篇文章主要介紹了
ABAP Text edit使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、如果要使用自定義的文本對象和識別碼,需要先用se75創建文本對象和識別碼。
2、在屏幕中拖個自定義控件,拖放適當的大小,激活。
3、在代碼中申明一個cl_gui_custom_container類型的變量和一個cl_gui_textedit類型的變量。
data:gv_container type REF TO cl_gui_custom_container,
???? gv_editor??? type ref to cl_gui_textedit. 4、創建上面兩個變量的實例。 if gv_container is initial.
??? CREATE OBJECT gv_container
????? EXPORTING
*??????? parent????????????????????? =
??????? container_name ?= 'GV_CONTAINER_TXT'? "一定要是屏幕中自定義控件的名字
*??????? style?????????????????????? =
*??????? lifetime??????????????????? = lifetime_default
*??????? repid?????????????????????? =
*??????? dynnr?????????????????????? =
*??????? no_autodef_progid_dynnr???? =
*????? EXCEPTIONS
*??????? cntl_error????????????????? = 1
*??????? cntl_system_error?????????? = 2
*??????? create_error??????????????? = 3
*??????? lifetime_error????????????? = 4
*??????? lifetime_dynpro_dynpro_link = 5
*??????? others????????????????????? = 6
??????? .
??? IF sy-subrc <> 0.
???? MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
??????????????? WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
??? ENDIF. if gv_editor is initial.
??????? CREATE OBJECT gv_editor
????????? EXPORTING
*??????????? max_number_chars?????? =
*??????????? style????????????????? = 0
??????????? wordwrap_mode????????? = cl_gui_textedit=>WORDWRAP_AT_FIXED_POSITION
??????????? wordwrap_position????? = -1
??????????? wordwrap_to_linebreak_mode = cl_gui_textedit=>true
*??????????? filedrop_mode????????? = DROPFILE_EVENT_OFF
??????????? parent???????????????? = gv_container
*??????????? lifetime?????????????? =
*??????????? name?????????????????? =
*????????? EXCEPTIONS
*??????????? error_cntl_create????? = 1
*??????????? error_cntl_init??????? = 2
*??????????? error_cntl_link??????? = 3
*??????????? error_dp_create??????? = 4
*??????????? gui_type_not_supported = 5
*??????????? others???????????????? = 6
??????????? .
??????? IF sy-subrc <> 0.
*???????? MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*??????????????????? WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
??????? ENDIF. endif.
? endif.
運行下就可以看到文本編輯框了。怎么讀寫文本呢,先申明下面的變量 data:fid???? like THEAD-TDID,
???? fNAME?? like THEAD-TDNAME,
???? fobject like THEAD-TDOBJECT,
???? it_line like STANDARD TABLE OF line WITH HEADER LINE,
???? it_tline like STANDARD TABLE OF tline WITH HEADER LINE,
???? it_header like THEAD. 從數據庫中讀文本和寫文本使用read_text、create_text這兩個FM,他們有個table參數是tline類型的。 從文本編輯框中讀、寫文本使用 SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}</STYLE.get_text_as_r3table 和 setSPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}</STYLE._text_as_r3table 這兩個method 他們有個table參數是line類型的。這兩種類型使用下面的form進行轉換 "
"
form. convert_tlines_to_lines.
? clear:it_line[],it_line. loop at it_tline.
??? it_line = it_tline-TDLINE.
??? append it_line.
? ENDLOOP. "clear:it_tline[],it_tline.
endform. "
"
form. convert_lines_to_tlines.
? clear:it_tline[],it_tline.
? loop at it_line.
??? it_tline-tdline = it_line.
??? append it_tline.
? ENDLOOP.
? "clear:it_line[],it_line.
endform. 把文本讀到文本編輯框中的代碼。
*&---------------------------------------------------------------------*
*&????? Form? READ_TEXT
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
form. READ_TEXT .
? CALL FUNCTION 'READ_TEXT'
???? EXPORTING
*????? CLIENT??????????????????????? = SY-MANDT
?????? id??????????????????????????? = fid
?????? language????????????????????? = sy-langu
?????? NAME????????????????????????? = fname
?????? OBJECT??????????????????????? = fobject
*????? ARCHIVE_HANDLE??????????????? = 0
*????? LOCAL_CAT???????????????????? = ' '
*??? IMPORTING
*????? HEADER??????????????????????? =
???? TABLES
?????? lines???????????????????????? = it_tline
??? EXCEPTIONS
????? ID??????????????????????????? = 1
????? LANGUAGE????????????????????? = 2
????? NAME????????????????????????? = 3
????? NOT_FOUND???????????????????? = 4
????? OBJECT??????????????????????? = 5
????? REFERENCE_CHECK?????????????? = 6
????? WRONG_ACCESS_TO_ARCHIVE?????? = 7
????? OTHERS??????????????????????? = 8
???????????? .
?? IF sy-subrc <> 0.
* Implement suitable error handling here
?? ENDIF. perform. convert_tlines_to_lines.
endform.??????????????????? " READ_TEXT
PROCESS BEFORE OUTPUT.
?module load_text. module LOAD_TEXT output. "perform. convert_tlines_to_lines. CALL METHOD gv_editor->set_text_as_r3table
???? EXPORTING
?????? table?????????? = it_line[]
???? EXCEPTIONS
?????? error_dp??????? = 1
?????? error_dp_create = 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.
?? "clear:it_tline[],it_tline,it_line[],it_line. endmodule.???????????????? " LOAD_TEXT? OUTPUT 文本從編輯框中保存到數據庫的代碼。 form. SAVE_TEXT .
??? CALL METHOD gv_editor->get_text_as_r3table
*????? EXPORTING
*??????? only_when_modified???? = FALSE
????? IMPORTING
??????? table????????????????? = it_line[]
*??????? is_modified??????????? =
????? EXCEPTIONS
??????? error_dp?????????????? = 1
??????? error_cntl_call_method = 2
??????? error_dp_create??????? = 3
??????? potential_data_loss??? = 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. if it_line[] is not initial.
????? perform. convert_lines_to_tlines. CALL FUNCTION 'CREATE_TEXT'
??????? EXPORTING
????????? fid?????????????? = fid
????????? flanguage???????? = sy-langu
????????? fname???????????? = fname
????????? fobject?????????? = fobject
*???????? SAVE_DIRECT?????? = 'X'
*???????? FFORMAT?????????? = '*'
??????? TABLES
????????? flines??????????? = it_tline[]
?????? EXCEPTIONS
???????? NO_INIT?????????? = 1
???????? NO_SAVE?????????? = 2
???????? OTHERS??????????? = 3
??????????????? .
????? IF sy-subrc <> 0.
* Implement suitable error handling here
????? ENDIF.
??? "clear:it_tline[],it_tline.
??? endif. endform.??????????????????? " SAVE_TEXT
???? gv_editor??? type ref to cl_gui_textedit. 4、創建上面兩個變量的實例。 if gv_container is initial.
??? CREATE OBJECT gv_container
????? EXPORTING
*??????? parent????????????????????? =
??????? container_name ?= 'GV_CONTAINER_TXT'? "一定要是屏幕中自定義控件的名字
*??????? style?????????????????????? =
*??????? lifetime??????????????????? = lifetime_default
*??????? repid?????????????????????? =
*??????? dynnr?????????????????????? =
*??????? no_autodef_progid_dynnr???? =
*????? EXCEPTIONS
*??????? cntl_error????????????????? = 1
*??????? cntl_system_error?????????? = 2
*??????? create_error??????????????? = 3
*??????? lifetime_error????????????? = 4
*??????? lifetime_dynpro_dynpro_link = 5
*??????? others????????????????????? = 6
??????? .
??? IF sy-subrc <> 0.
???? MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
??????????????? WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
??? ENDIF. if gv_editor is initial.
??????? CREATE OBJECT gv_editor
????????? EXPORTING
*??????????? max_number_chars?????? =
*??????????? style????????????????? = 0
??????????? wordwrap_mode????????? = cl_gui_textedit=>WORDWRAP_AT_FIXED_POSITION
??????????? wordwrap_position????? = -1
??????????? wordwrap_to_linebreak_mode = cl_gui_textedit=>true
*??????????? filedrop_mode????????? = DROPFILE_EVENT_OFF
??????????? parent???????????????? = gv_container
*??????????? lifetime?????????????? =
*??????????? name?????????????????? =
*????????? EXCEPTIONS
*??????????? error_cntl_create????? = 1
*??????????? error_cntl_init??????? = 2
*??????????? error_cntl_link??????? = 3
*??????????? error_dp_create??????? = 4
*??????????? gui_type_not_supported = 5
*??????????? others???????????????? = 6
??????????? .
??????? IF sy-subrc <> 0.
*???????? MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*??????????????????? WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
??????? ENDIF. endif.
? endif.
運行下就可以看到文本編輯框了。怎么讀寫文本呢,先申明下面的變量 data:fid???? like THEAD-TDID,
???? fNAME?? like THEAD-TDNAME,
???? fobject like THEAD-TDOBJECT,
???? it_line like STANDARD TABLE OF line WITH HEADER LINE,
???? it_tline like STANDARD TABLE OF tline WITH HEADER LINE,
???? it_header like THEAD. 從數據庫中讀文本和寫文本使用read_text、create_text這兩個FM,他們有個table參數是tline類型的。 從文本編輯框中讀、寫文本使用 SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}</STYLE.get_text_as_r3table 和 setSPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}</STYLE._text_as_r3table 這兩個method 他們有個table參數是line類型的。這兩種類型使用下面的form進行轉換 "
"
form. convert_tlines_to_lines.
? clear:it_line[],it_line. loop at it_tline.
??? it_line = it_tline-TDLINE.
??? append it_line.
? ENDLOOP. "clear:it_tline[],it_tline.
endform. "
"
form. convert_lines_to_tlines.
? clear:it_tline[],it_tline.
? loop at it_line.
??? it_tline-tdline = it_line.
??? append it_tline.
? ENDLOOP.
? "clear:it_line[],it_line.
endform. 把文本讀到文本編輯框中的代碼。
*&---------------------------------------------------------------------*
*&????? Form? READ_TEXT
*&---------------------------------------------------------------------*
*?????? text
*----------------------------------------------------------------------*
*? -->? p1??????? text
*? <--? p2??????? text
*----------------------------------------------------------------------*
form. READ_TEXT .
? CALL FUNCTION 'READ_TEXT'
???? EXPORTING
*????? CLIENT??????????????????????? = SY-MANDT
?????? id??????????????????????????? = fid
?????? language????????????????????? = sy-langu
?????? NAME????????????????????????? = fname
?????? OBJECT??????????????????????? = fobject
*????? ARCHIVE_HANDLE??????????????? = 0
*????? LOCAL_CAT???????????????????? = ' '
*??? IMPORTING
*????? HEADER??????????????????????? =
???? TABLES
?????? lines???????????????????????? = it_tline
??? EXCEPTIONS
????? ID??????????????????????????? = 1
????? LANGUAGE????????????????????? = 2
????? NAME????????????????????????? = 3
????? NOT_FOUND???????????????????? = 4
????? OBJECT??????????????????????? = 5
????? REFERENCE_CHECK?????????????? = 6
????? WRONG_ACCESS_TO_ARCHIVE?????? = 7
????? OTHERS??????????????????????? = 8
???????????? .
?? IF sy-subrc <> 0.
* Implement suitable error handling here
?? ENDIF. perform. convert_tlines_to_lines.
endform.??????????????????? " READ_TEXT
PROCESS BEFORE OUTPUT.
?module load_text. module LOAD_TEXT output. "perform. convert_tlines_to_lines. CALL METHOD gv_editor->set_text_as_r3table
???? EXPORTING
?????? table?????????? = it_line[]
???? EXCEPTIONS
?????? error_dp??????? = 1
?????? error_dp_create = 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.
?? "clear:it_tline[],it_tline,it_line[],it_line. endmodule.???????????????? " LOAD_TEXT? OUTPUT 文本從編輯框中保存到數據庫的代碼。 form. SAVE_TEXT .
??? CALL METHOD gv_editor->get_text_as_r3table
*????? EXPORTING
*??????? only_when_modified???? = FALSE
????? IMPORTING
??????? table????????????????? = it_line[]
*??????? is_modified??????????? =
????? EXCEPTIONS
??????? error_dp?????????????? = 1
??????? error_cntl_call_method = 2
??????? error_dp_create??????? = 3
??????? potential_data_loss??? = 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. if it_line[] is not initial.
????? perform. convert_lines_to_tlines. CALL FUNCTION 'CREATE_TEXT'
??????? EXPORTING
????????? fid?????????????? = fid
????????? flanguage???????? = sy-langu
????????? fname???????????? = fname
????????? fobject?????????? = fobject
*???????? SAVE_DIRECT?????? = 'X'
*???????? FFORMAT?????????? = '*'
??????? TABLES
????????? flines??????????? = it_tline[]
?????? EXCEPTIONS
???????? NO_INIT?????????? = 1
???????? NO_SAVE?????????? = 2
???????? OTHERS??????????? = 3
??????????????? .
????? IF sy-subrc <> 0.
* Implement suitable error handling here
????? ENDIF.
??? "clear:it_tline[],it_tline.
??? endif. endform.??????????????????? " SAVE_TEXT
總結
以上是生活随笔為你收集整理的ABAP Text edit使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB连接SAP实例
- 下一篇: 批量下载ABAP程序和表结构