abap 字符超过255的显示

大家都知道SAP ALV的一个单元格最大显示的长度就是255

意思就是你的这个字段在内表里面即使是超过255位,也无法只能显示255

如果客户的需求是需要看到完整的消息内容,

最简单的就是将整个程序的数据右键导出到excle中去查看

如果客户执意需要在ALV中一个一个显示

首先将单元格设置可点击,然后单击去display

1.最简单的办法:cl_demo_output=>display_html

  

        CALL METHOD cl_demo_output=>display_html
          EXPORTING
            html = gs_result-ifmsg.

显示如图:

2.  函数:FB_MESSAGES_DISPLAY_POPUP

      这种方法适用于标准bapi的报错,将错误捕捉后,显示

     DATA: lt_tsmesg TYPE tsmesg.
     DATA: ls_smesg  TYPE smesg.

        ls_smesg-msgty = 'E'.
        ls_smesg-text = gs_result-ifmsg..
        APPEND ls_smesg TO lt_tsmesg.
        CALL FUNCTION 'FB_MESSAGES_DISPLAY_POPUP'
          EXPORTING
            it_smesg        = lt_tsmesg
*           ID_SMESG_ZEILE  =
*           IT_RETURN       =
*           ID_SEND_IF_ONE  =
          EXCEPTIONS
            no_messages     = 1
            popup_cancelled = 2
            OTHERS          = 3.
        IF sy-subrc <> 0.
* Implement suitable error handling here
        ENDIF.

  显示效果如图

3:借用longtxt的显示框

          3.1 创建一个函数组:ZFG_TOOLS

          3.2.创建一个函数:ZFM_DISPLAY_TEXT

         

 源代码:


  IF iv_text IS NOT INITIAL .
  CLEAR:src[].
    CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
      EXPORTING
        text      = iv_text
* IMPORTING
*       LENGTH    =
      TABLES
        ftext_tab = src[].

      CALL SCREEN 0200 STARTING AT 5 5..
  ENDIF.

          3.3  画一个屏幕:0200

3.4 设置flow logic:

PROCESS BEFORE OUTPUT.
 MODULE STATUS_0200.
*
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0200.

 3.5 LZFG_TOOLSTOP 这个include中的代码:

FUNCTION-POOL ZFG_TOOLS.                    "MESSAGE-ID ..

DATA  go_editor TYPE REF TO cl_gui_textedit.
DATA: go_editcontainer TYPE REF TO cl_gui_custom_container.
DATA: BEGIN OF src OCCURS 500,
              line(72),
      END   OF src.

DATA:ok_code          LIKE sy-ucomm.
* INCLUDE LZFG_TOOLSD...                     " Local class definition

3.6 新增include:LZFG_TOOLSO01

*----------------------------------------------------------------------*
***INCLUDE LZFG_TOOLSO01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
  IF go_editcontainer IS INITIAL .
    CREATE OBJECT go_editcontainer
      EXPORTING
        container_name = 'SRC'
        repid          = 'SAPLZFG_TOOLS'
        dynnr          = '0200'.
  ENDIF.


  IF go_editor IS INITIAL.
    SET PF-STATUS 'DMSHOWC'.
    "set titlebar 'DMS'.
    CREATE OBJECT go_editor
      EXPORTING
        parent            = go_editcontainer
        wordwrap_mode     = cl_gui_textedit=>wordwrap_at_fixed_position
        wordwrap_position = 256
        max_number_chars  = 100000.

    CALL METHOD go_editor->set_text_as_r3table EXPORTING table = src[].
    CALL METHOD cl_gui_cfw=>flush.

  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
  CASE ok_code.
      FREE:go_editor,go_editcontainer.
      LEAVE TO SCREEN 0.
  ENDCASE.

  CLEAR ok_code.

ENDMODULE.

  3.7 在点击事件调用这个函数

    

     DATA: lv_string TYPE string.
       lv_string = gs_result-ifmsg.
        CALL FUNCTION 'ZFM_DISPLAY_TEXT'
          EXPORTING
            iv_text       = lv_string
                  .

显示结果如下:

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值