Автор Тема: String To Table and vice versa.  (Прочитано 6364 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mangetik

  • Newbie
  • *
  • Сообщений: 11
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
String To Table and vice versa.
« : Декабрь 13, 2010, 12:15:58 pm »
 На мой взгляд полезная утилита которая позволяет перегнать текстовую строку в таблицу и обратно.
Реализация на самом деле содержится в стандартном классе CL_GUI_TEXTEDIT,
методы TRANSFORM_STRING_TO_TABLE, TRANSFORM_TABLE_TO_STRING.
Но разработчики класса решили сделать их PROTECTED.
 Придется чуть-чуть напрячься - делаем наследника ZCL_GUI_TEXTEDIT,
объявляем два дополнительных метода STRING_TO_TABLE, TABLE_TO_STRING делаем их PUBLIC.
Код внутри предельно прост
Код: You are not allowed to view links. Register or Login

METHOD string_to_table.
*TEXT_STRING Importing Type STRING
*TEXT_TABLE Changing Type STANDARD TABLE

  CALL METHOD cl_gui_textedit=>transform_string_to_table
    EXPORTING
      text_string            = text_string
    CHANGING
      text_table             = text_table
    EXCEPTIONS
      unsupported_table_type = 1
      OTHERS                 = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid
          TYPE sy-msgty
        NUMBER sy-msgno
          WITH sy-msgv1
               sy-msgv2
               sy-msgv3
               sy-msgv4.
  ENDIF.

ENDMETHOD.
и теперь можно пользоваться
пример вызова
Код: You are not allowed to view links. Register or Login
 
  DATA:
        str         TYPE string.
  DATA: BEGIN OF text_table OCCURS 0,
        txt(132),
        END OF text_table.



 CALL METHOD zcl_gui_textedit=>string_to_table
    EXPORTING
      text_string = str
    CHANGING
      text_table  = text_table[]
    EXCEPTIONS
      OTHERS      = 1.