2017-07-18 5 views
-2
TABLES: mara, marc. 
    "marc is N 181 
    "mara is 1 157 
    DATA: lt_mara TYPE TABLE OF mara, 
      ls_mara TYPE mara, 
      lt_marc TYPE TABLE OF marc, 
      ls_marc TYPE marc, 
      BEGIN OF ls_out OCCURS 0, 
      mtart LIKE mara-mtart, 
      matnr LIKE marc-matnr, 
      werks LIKE marc-werks, 
      ntgew LIKE mara-ntgew, 
      brgew LIKE mara-brgew, 
      sum LIKE mara-brgew, 
      color(4). 
    DATA: END OF ls_out. 
    DATA: lt_out LIKE TABLE OF ls_out, 
      fcat TYPE slis_t_fieldcat_alv, 
      ls_fcat LIKE LINE OF fcat, 
      layout TYPE slis_layout_alv. 
    FIELD-SYMBOLS: <fsym> LIKE LINE OF fcat. 
    PARAMETERS: p_mtart TYPE mara-mtart. 
    SELECT-OPTIONS: so_werks FOR marc-werks. 
    SELECT * FROM mara INTO TABLE lt_mara 
     WHERE mtart = p_mtart. 
    IF sy-subrc = 0. 
     SELECT * FROM marc INTO TABLE lt_marc 
     FOR ALL ENTRIES IN lt_mara 
     WHERE matnr = lt_mara-matnr 
     AND werks IN so_werks. 
     LOOP AT lt_marc INTO ls_marc. 
     READ TABLE lt_mara INTO ls_mara 
     WITH KEY matnr = ls_marc-matnr. 
     ls_out-sum = ls_mara-brgew + ls_mara-ntgew . 
     MOVE-CORRESPONDING ls_marc TO ls_out. 
     MOVE-CORRESPONDING ls_mara TO ls_out. 
     APPEND ls_out TO lt_out. 
     CLEAR ls_out. 
     ENDLOOP. 
    ELSE. 
     MESSAGE TEXT-e02 TYPE 'E' . 
    ENDIF. 
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' 
     EXPORTING 
     i_program_name   = sy-repid "e merr auto 
     i_internal_tabname  = 'LS_OUT' 
     i_client_never_display = 'X' 
     i_inclname    = sy-repid 
     CHANGING 
     ct_fieldcat   = fcat[] 
     EXCEPTIONS 
     inconsistent_interface = 1 
     program_error   = 2 
     OTHERS     = 3. 
    READ TABLE fcat INDEX 6 ASSIGNING <fsym>. 
    <fsym>-outputlen = 15. 

    *-conditionally populate the color 
    LOOP AT LS_OUT. 
     IF LS_OUT-sum eq 21. 
     LS_OUT-color = 'C311'. 
     ENDIF. 
     MODIFY LS_OUT. 
    ENDLOOP. 
    layout-info_fieldname = 'COLOR'. 
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
     EXPORTING 
     i_callback_program = sy-repid 
     i_structure_name = 'LS_OUT' 
     it_fieldcat  = fcat[] 
     TABLES 
     t_outtab   = lt_out 
     EXCEPTIONS 
     program_error  = 1 
     OTHERS    = 2. 

ls_outの合計が1900の行を表示するにはどうすればよいですか?誰かが自分のコードに追加する必要があることを教えてもらえますか?それは私がちょうど着色が必要な作品です。すべての変数が宣言されているようです。これらのコードには​​3210 FERTso_werks10001998を入力してください。アブラムカラーalvローグ

+2

あなたが何を求めているかは非常に不明です。一列おきに色付けしますか?いくつかのフィールドの特定の値を色付けしますか?質問を明確にして、可能な限り簡潔にしてください。 – gkubed

+0

@gkubed私は、合計がLTである行を色付けするように頼んでいます。 – user3026665

答えて

0
LOOP AT Lt_OUT. 
     IF Lt_OUT-SUM LT 50000. 
    Lt_OUT-color = 'C311'. 
     ENDIF. 
     MODIFY Lt_OUT. 
    ENDLOOP. 
    layout-info_fieldname = 'COLOR". 
1

REUSE_ALV_GRID_DISPLAYにお電話に次のパラメータを追加すると、あなたの問題を解決する必要があります

is_layout = layout

+0

申し訳ありません、申し訳ありません! ls_out-SUMまたは他の列LT 5000を作成しても、黄色になりません – user3026665

+0

現在、プログラムの色は条件IF LS_OUT-sum eq 21で、関連する条件に変更されます。また、条件が失敗した場合には値をクリアに設定します。つまり、ELSE句を追加します。 –

0

あなたはALVでの特定のセルのいずれか/!\フォーマットを処理したい場合は、ここでの方法は、よ。

ALV に行に色を割り当てる方法
FORM update_style using 
    x type lvc_fname " x is 'MATNR', 'VBELN', 'BELNR'.... whatever in your fieldcatalog 
    y type int4 " y = 1,2,3..... 
    update_mask type xstring 
    update_style type xstring. 

READ table gt_alv into gs_alv index y. 
tabstyle = gs_alv-tabstyle. 
READ table tabstyle into s_style with key fieldname = x. 

" check if fieldname already exists in gs_alv-tabstyle (insert or update) 

s_style-style = s_style-style BIT-AND update_mask. 
s_style-style = s_style-style BIT-OR update_style. 

" Update or insert gs_alv-tabstyle from s_style 
" update gt_alv from gs_alv 

ENDFORM. 

(しかし、あなたは、同時にセルの背景やフォントの色を持ってカント!)

perform update_style USING x y 'FFFFFFE0' update_style. 

update_style can be : 

'00000000'. " Disable any color 
'00000011'. " White Font 
'00000017'. " Red fond 
'00000013'. " gray font 
'00000014'. " Yellow font 
'00000015'. " blue font 
'00000016'. " green font 
'00000018'. " orange font 
'00000011'. " black font 

'0000000D'. " background dark blue 
'0000000A'. " background fluo blue 
'00000005'. " background blue 
'00000003'. " background light blue 
'00000000'. " background gray 
'00000001'. " background light gray 
'00000004'. " backgorund yellow 
'0000000C'. " background dark yellow 
'00000006'. " background green 
'0000000E'. " background dark green 
'00000010'. " background dark orange 
'0000000F'. " background red 
'00000007'. " background pink 
'00000008'. " background orange 
'00000001'. " background standard 

編集可能な処理したい場合は、太字、

:イタリック、update_maskは 'DFFFF57F' で、update_styleをすることができ、...プロパティの整列のために

perform update_style USING x y 'FFFFFF9F' '00000020'. " set bold 
perform update_style USING x y 'FFFFFF9F' '00000040'. " unset bold property 

perform update_style USING x y 'FFFFF9FF' '00000200'. " Underline 
perform update_style USING x y 'FFFFF9FF' '00000400'. " stop underlying 

perform update_style USING x y 'FFFFF57F' '00000080' " italic 

perform update_style USING x y 'FF9FFFFF' '00200000' " hotspot 
perform update_style USING x y 'FF9FFFFF' '00400000' " no hotspot 

perform update_style USING x y 'F9E7FFFF' '00080000' " Editable 
perform update_style USING x y 'F9E7FFFF' '00100000' " Non Editable 

を強調

DATA alv_style_align_left_top(4) TYPE x VALUE '00000800'. 
    DATA alv_style_align_center_top(4) TYPE x VALUE '00001000'. 
    DATA alv_style_align_right_top(4) TYPE x VALUE '00001800'. 
    DATA alv_style_align_left_center(4) TYPE x VALUE '00002000'. 
    DATA alv_style_align_center_center(4) TYPE x VALUE '00002800'. 
    DATA alv_style_align_right_center(4) TYPE x VALUE '00003000'. 
    DATA alv_style_align_left_bottom(4) TYPE x VALUE '00003800'. 
    DATA alv_style_align_center_bottom(4) TYPE x VALUE '00004000'. 
    DATA alv_style_align_right_bottom(4) TYPE x VALUE '00004800'. 

あなたが国境を処理したい場合は、あなたとs_style-スタイル2を変更する必要があります。

'FFFBFFFF' '00040000' " Remove top border 
'FFF7FFFF' '00080000' " Remove bottom border 
'FFFEFFFF' '00010000' " Remove left border 
'FFFDFFFF' '00020000' " Remove right border 

と(でもset_table_for_first_display後)このすべて 後にあなただけと呼ばれるフォームまたはメソッドを呼び出す必要があります私はへのすべての行をループすることができるように

METHOD REFRESH. 
    DATA ls_stable TYPE lvc_s_stbl. 
    ls_stable-row = 'X'. 
    ls_stable-col = 'X'. 

    CALL METHOD me->refresh_table_display 
    EXPORTING 
    is_stable = ls_stable 
    EXCEPTIONS 
    finished = 1 
    OTHERS = 2. 
ENDMETHOD. 

xとyは必須フィールドではありません:私は形成するが、メソッドを使用してはいけないクラスCL_GUI_ALV_GRIDのimplentationを書いたので をリフレッシュ、より多くの可能性の列(Yが設定されていない)ラインにプロパティを設定するために、私のfieldcatalog上

ASSIGN mt_outtab->* TO <tab>. 
    CHECK <tab> IS ASSIGNED. 
    LOOP AT <tab> ASSIGNING <line>. 
     update_style(x sy-tabix update_mask update_style) 

またはループ(Xが設定されていない)

LOOP at me->get_frontend_fieldcatalog() in ls_fcat 
     update_style(ls_fcat-fieldname y update_mask update_style) 

にプロパティを設定するリンク

をチェック

ABAP Alv_grid Merge cells and style formating of cells

関連する問題