簡體   English   中英

防止 CL_SALV_TABLE 刪除前導零?

[英]Prevent CL_SALV_TABLE from removing leading zeros?

請查看以下這段代碼,其中我將 Test2 中的零作為值,將 Test3 中的兩個零作為值。 我使用了 set_leading_zero 但仍然刪除了前導零。

CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
  PUBLIC SECTION.
    CLASS-METHODS:
      main.
ENDCLASS.

CLASS lcl_main IMPLEMENTATION.
  METHOD main.
    TYPES: BEGIN OF l_tys_test,
             name  TYPE string,
             value TYPE i,
           END OF l_tys_test,
           l_tyt_test TYPE STANDARD TABLE OF l_tys_test WITH EMPTY KEY.

    DATA(lt_test) = VALUE l_tyt_test(
      ( name = `Test1` value = 1 )
      ( name = `Test2` value = 02 )
      ( name = `Test3` value = 003 )
    ).

    cl_salv_table=>factory(
      IMPORTING
        r_salv_table = DATA(lo_salv_table)
      CHANGING
        t_table = lt_test
    ).


    lo_salv_table->get_columns( )->get_column( 'VALUE' )->set_leading_zero( abap_true ).

    lo_salv_table->display( ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  lcl_main=>main( ).

同意 Jozsef 和 Sandra,您無法使用整數數據類型來做到這一點。

如何通過 ALV 網格實現這一點的唯一方法是將您的VALUE字段重新聲明為 numchar

TYPES: BEGIN OF
         ...
         value TYPE n LENGTH 10,
         ...
       END OF.

並利用EDIT_MASK函數,該函數可用於WRITE語句和 ALV 網格。

把這個而不是set_leading_zero( )調用放在你的方法中

lo_salv_table->get_columns( )->get_column( 'VALUE' )->set_edit_mask( '___________' ).

類型定義中的LENGTH規范是要放置的前導零的數量。

您可以使用 set_zero 方法設置為 false。

DATA(lo_column) = lo_alv->get_columns( )->get_column( 'PERNR' ). lo_column->set_long_text( 'Staff No' ). lo_column->set_zero( abap_false ).

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM