物料描述的特殊字符

MM03查看某料号,有特殊字符,看上去是#

SE16N中并没有显示出来这个特殊字符

 DeBug时可以看到#,复制出来也是#,但其实不是

 ALV中也看不到这个特殊字符

 需要写代码,获取这个编码Unicode

参考:【ABAP系列】SAP ABAP 字符编码与解码、Unicode - SAPmatinal - 博客园

  DATA:xstr           TYPE xstring,
       l_codepage(4)  TYPE n,
       l_encoding(20),
       convout        TYPE REF TO cl_abap_conv_out_ce, "编码
       convin         TYPE REF TO cl_abap_conv_in_ce,
       str            TYPE string.


    LOOP AT gt_marc ASSIGNING <fs_marc>.

      lv_maktx = <fs_marc>-maktx.

      lv_length = strlen( lv_maktx ).
      lv_i = 0.
      DO lv_length TIMES.
        lv_char = lv_maktx+lv_i(1).
        lv_i  = lv_i  + 1.

        IF lv_i = 20.
          lv_i = lv_i.
        ENDIF.

        convout->write( data = lv_char ). " 编码

        xstr =  convout->get_buffer( ). " 获取码流
      ENDDO.
    ENDLOOP.

 获取到编码后,又要把这个解析出来,再用正则判断,物料描述中是不是含有这个特殊字符

  xstr = '02'.
  convin = cl_abap_conv_in_ce=>create( encoding = l_encoding input = xstr )."创建解码对象
  CALL METHOD convin->read IMPORTING data = str."解码
  lv_char = str .

    LOOP AT gt_marc ASSIGNING <fs_marc>.
      PERFORM get_data_matcher USING <fs_marc>-maktx lv_char <fs_marc>-status.
    ENDLOOP.

*&---------------------------------------------------------------------*
*& Form GET_DATA_MATCHER
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LV_CHAR1
*&---------------------------------------------------------------------*
FORM get_data_matcher USING p_ls_maktx p_ls_char p_ls_status.

  DATA:lv_maktx     TYPE maktx,
       lv_char      TYPE c,
       lv_status(4) TYPE c.

  lv_maktx = p_ls_maktx.
  lv_char = p_ls_char.
  lv_status = p_ls_status.

  IF cl_abap_matcher=>contains(
       pattern = lv_char
       text = lv_maktx
       ignore_case = 'X' ) = abap_true.

    lv_status = icon_led_red.

  ENDIF.

  IF lv_status NE icon_led_red.
    lv_status = icon_led_green.
  ENDIF.

  p_ls_status = lv_status.

ENDFORM.

这个特殊字符的错误会导致EXCEL导不出来

另外一个料号也有特殊字符,看上去似乎是#,ALV同样显示不出来,但是却不影响导出EXCEL

该特殊字符可以用这个获取:cl_abap_char_utilities=>newline.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值