1. 程式人生 > >ABAP 自己定義一個長文字TEXT的編寫、儲存

ABAP 自己定義一個長文字TEXT的編寫、儲存

TEXT長文字的編寫

大家在程式設計過程中,一定經常用到READ_TEXT這個函式來讀取長文字,下面我介紹的是如果自己定義一個長文字object和ID,自己儲存長文字。

在專案中,做了很多功能性開發,使用者要寫一些備註或者是審批意見和建議,自定義表裡面儲存欄位的長度是有限的,這個時候能自定義長文字就很實用了。

第一步:建長文字的OBJECT,TCODE SE75,選擇‘文字物件和識別碼’,點選change,這個時候就會看到SAP系統中存在的所有長文字OBJECT,點‘新建’,輸入文字物件,描述,選擇儲存狀態是更新,選擇編輯器應用格式是TA,行寬選一下,回車,搞定

第二步:建長文字的ID,雙擊剛剛建立的OBJECT,點新建,就可以建立ID了

第三步:先READ_TEXT,如果sy-subrc = 0,說明可以讀到,如果不等於0,就說明還沒有寫長文字,那就可以用INIT_TEXT函式先初始化一下,再EDIT_TEXT編輯一下,最後SAVE_TEXT儲存一下就OK了.

?

長文字的編輯能做到:第二次編輯的時候,第一次編輯的內容都是灰色的,這樣就可以用來寫審批意見。也可以做到,第二次編輯的時候,第一次的編輯也可以修改,這由幾個引數決定。

SAP的標準例子:SDTEXTE,可以參考

module mod_custom_control output。
  data: lv_dmode type xfeld. "Display mode.

** Get display mode.
  if t340-trtyp = 'H'.
    lv_dmode = space.
  elseif t340-trtyp = 'V'.
    lv_dmode = space.
  elseif t340-trtyp = 'A'.
    lv_dmode = 'X'.
  endif.
** Get what input in the textedit.
  perform frm_read_text.

** Text editor set.
  call function 'RH_EDITOR_SET'
    exporting
      repid          = sy-repid
      dynnr          = sy-dynnr
      controlname    = 'ZCBOX'
      max_cols       = 79
      show_tool      = 'X'
      show_status    = 'X'
      display_mode   = lv_dmode
    tables
      lines          = gt_lines
    exceptions
      create_error   = 1
      internal_error = 2
      others         = 3.

endmodule.                 " MOD_CUSTOM_CONTROL  OUTPUT
form frm_read_text .
  data: lv_name like thead-tdname. "Name.

** Object name.
  clear: lv_name.
  lv_name = mgef-stoff.

** Read text.
  if gv_enter_flg eq 'X'.
    clear gt_lines.
    call function 'RH_EDITOR_GET'
      exporting
        controlname    = 'ZCBOX'
      tables
        lines          = gt_lines
      exceptions
        internal_error = 1
        others         = 2.
    clear gv_enter_flg.
  else.
    call function 'READ_TEXT'
      exporting
        id                      = 'ZHAZ'
        language                = 'E'
        name                    = lv_name
        object                  = 'ZHAZARDMAT'
      tables
        lines                   = gt_text
      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 eq 0.
** Transfer text.
      loop at gt_text into gs_text.
        gs_lines = gs_text-tdline.
        append gs_lines to gt_lines.
        clear: gs_text, gs_lines.
      endloop.
    endif.
  endif.
endform.                    " FRM_READ_TEXT

來源:http://www.renren.it/a/shujuku/Access/20111031/103634.html