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.
Comment puis-je afficher la ligne où la somme de ls_out
est 1900? Quelqu'un peut-il me dire ce qu'il faut ajouter à mon code? Cela fonctionne j'ai juste besoin de colorier. Toutes les variables semblent être déclarées. Remplissez le code avec ces P_MATART
FERT
so_werks
1000
à 1998
.Couleur abap alv row
On ne sait pas très bien ce que vous demandez. Voulez-vous que tous les autres rangs soient colorés? Voulez-vous que des valeurs spécifiques d'un champ soient colorées? Veuillez clarifier votre question, en la rendant aussi succincte que possible. – gkubed
@gkubed J'ai, je demande à colorier les lignes où la somme est LT 5000 – user3026665