• [问题解决]ALV可输入状态下输入金额/数量字段小数位数提前的问题


    1, 问题描述

    ALV单元格在可输入状态下,金额和数量类型的字段小数点的位置会发生错误,数量是quan类型,金额是curr类型,如下:

    错误情况如下:qty输入66,结果显示0.066小数点提前3位,差1000倍,price输入7,结果显示0.07,小数点提前两位,差100倍。

    2, 问题解决

    方法如下:

    1、对于货币字段,catalog中再添加一个“指定数据类型”的属性datatype,如下:
    wa_fieldcat-datatype      = 'CURR' .     " 指定数据类型
    这样在修改数据并保存时,才能将数据保持原样,否则输入的数据会自动将小数点提前2位;

    2、对于数量字段,也要添加一个“指定数据类型”的属性,才能保持数据的正确性,如下:
    wa_fieldcat-datatype      = 'QUAN' .  " 指定数据类型
    wa_fieldcat-inttype         = 'C' .       "这个是指定字段的类型为C

    完整代码:

    REPORT ztest_alv_lvc_edit.
    
    TYPES:BEGIN OF gty_ekko,
            ebeln TYPE ekko-ebeln,
            menge TYPE ekpo-menge,
            netwr TYPE ekpo-netwr,
          END OF gty_ekko.
    DATA:git_ekko TYPE STANDARD TABLE OF gty_ekko,
         gwa_ekko TYPE gty_ekko.
    
    DATA:git_fcat   TYPE lvc_t_fcat,
         gwa_fcat   LIKE LINE OF git_fcat,
         gwa_layout TYPE lvc_s_layo,
         gwa_glay   TYPE lvc_s_glay.
    
    START-OF-SELECTION.
    
      SELECT ebeln
             menge
             netwr
        INTO CORRESPONDING FIELDS OF TABLE git_ekko
        FROM ekpo
       UP TO 10 ROWS.
    
      PERFORM frm_set_catalog.
    
      gwa_layout-zebra = 'X'.
      gwa_layout-sel_mode = 'A'.
      gwa_layout-cwidth_opt = 'X'.
    
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
        EXPORTING
          i_callback_program = sy-repid
          is_layout_lvc      = gwa_layout
          it_fieldcat_lvc    = git_fcat
        TABLES
          t_outtab           = git_ekko[]
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc = 0.
    
      ENDIF.
    *&---------------------------------------------------------------------*
    *&      Form  FRM_SET_CATALOG
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM frm_set_catalog .
    
      DATA:l_pos TYPE i VALUE 1.
      CLEAR: l_pos.
      l_pos = l_pos + 1.
      gwa_fcat-coltext   = 'PO'.
      gwa_fcat-scrtext_l = 'PO'.
      gwa_fcat-scrtext_m = 'PO'.
      gwa_fcat-scrtext_s = 'PO'.
      gwa_fcat-fieldname = 'EBELN'.
      gwa_fcat-col_pos = l_pos.
    *  gwa_fcat-edit    = 'X'.
      gwa_fcat-outputlen = '10'.
      APPEND gwa_fcat TO git_fcat.
    
      l_pos = l_pos + 1.
      gwa_fcat-coltext   = 'Qty'.
      gwa_fcat-scrtext_l = 'Qty'.
      gwa_fcat-scrtext_m = 'Qty'.
      gwa_fcat-scrtext_s = 'Qty'.
      gwa_fcat-fieldname = 'MENGE'.
      gwa_fcat-datatype  = 'QUAN' .  "指定该字段为数量
      gwa_fcat-inttype   = 'C' .     "指定该字段类型为C
      gwa_fcat-edit    = 'X'.
      gwa_fcat-col_pos = l_pos.
      gwa_fcat-outputlen = '10'.
      APPEND gwa_fcat TO git_fcat.
      l_pos = l_pos + 1.
      gwa_fcat-coltext   = ''.
      gwa_fcat-scrtext_l = 'Price'.
      gwa_fcat-scrtext_m = 'Price'.
      gwa_fcat-scrtext_s = 'Price'.
      gwa_fcat-fieldname = 'NETWR'.
      gwa_fcat-datatype  = 'CURR' .  "指定该字段为金额
      gwa_fcat-edit    = 'X'.
      gwa_fcat-col_pos = l_pos.
      gwa_fcat-outputlen = '10'.
      APPEND gwa_fcat TO git_fcat.
    
    ENDFORM.

    测试结果:

    以上。

  • 相关阅读:
    简单理解Vue中的nextTick
    vue-router路由元信息及keep-alive组件级缓存
    Webpack配置区分开发环境和生产环境
    理解Vue.mixin,利用Vue.mixin正确的偷懒
    HTML5实现首页动态视频背景
    vue-router钩子函数实现路由守卫
    Vue路由(vue-router)详细讲解指南
    一文轻松搞懂Vuex
    利用HBuilder打包Vue开发的webapp为app
    WPF中剪贴板操作Clipboard
  • 原文地址:https://www.cnblogs.com/datie/p/11434515.html
Copyright © 2020-2023  润新知