Elemente durch PUSH-Buttons ein- und ausblenden

Auf einem Report-Selektionsbild sind oftmals viele Bereiche, die aber für den täglichen Gebrauch nicht alle von Bedeutung sind. Durch geschickte Programmierung lässt sich auf einem Selektionsbild “ENJOY-Feeling” programmieren. Einzelne Bereiche können ein- oder ausgeblendet werden.

report zzdemo02.

tables sscrfields.

data: 
  anz1, anz2,
  h_vbeln type vbeln,
  h_posnr type posnr,
  h_erdat type erdat,
  h_matkl type matkl.

selection-screen pushbutton /1(20) push1 user-command push1.
select-options:
  s_vbeln for h_vbeln modif id 1,
  s_erdat for h_erdat modif id 1.
selection-screen pushbutton /1(20) push2 user-command push2.
select-options:
  s_posnr for h_posnr modif id 2,
  s_matkl for h_matkl modif id 2.

initialization.
*--> Import, damit bei F3 alle Werte erhalten bleiben:
import anz1 anz2 from memory id 'ZZMERK'.
check sy-subrc > 0.
push1 = 'Kopfdaten zeigen'. "pushbutton 1 benennen
perform loop_at_screen using '1' 0.
push1 = 'Positionsdaten zeigen'. "pushbutton 2 benennen
perform loop_at_screen using '2' 0.


at selection-screen.
*--> Pushbutton 1:
if sscrfields-ucomm = 'PUSH1'.
  if anz1 is initial.
    anz1 = 'X'.
  else.
    anz1 = space.
  endif.
endif.

*--> Pushbutton 2:
if sscrfields-ucomm = 'PUSH2'.
  if anz2 is initial.
    anz2 = 'X'.
  else.
    anz2 = space.
  endif.
endif.

at selection-screen output.
if anz1 is initial.
  push1 = 'Kopfdaten anzeigen'.
  perform loop_at_screen using '1' 0.
  perform refresh sel using '1'.
else.
  push1 = 'Kopfdaten ausblenden'.
  perform loop_at_screen using '1' 1.
endif.

if anz2 is initial.
  push2 = 'Positionsdaten anzeigen'.
  perform loop_at_screen using '2' 0.
  perform refresh sel using '2'.
else.
  push2 = 'Positionsdaten ausblenden'.
  perform loop_at_screen using '2' 1.
endif.

start-of-selection.
*--> Export, damit bei F3 alle werte erhalten bleiben
export anz1 anz2 to memory id 'ZZMERK'.
..
...
....
end-of-selection.

form loop_at_screen using value(p_gruppe) value(p_mode).
  loop at screen.
    if screen-group1 = p_gruppe.
      screen-active = p_mode.
      modify screen.
    endif.
  endloop.
endform.

form refresh_sel using value(p_gruppe).
  case p_gruppe.
    when '1'. 
      refresh: s1, s2.
    when '2'.
      refresh: s3, s4.
   endcase.
endform.

Screenshots

Und so sieht’s aus.

Noch sind keine Daten sichtbar:

Nach Druck auf [Kopfdaten einblenden] werden die zugeordneten Felder sichtbar:

Kopfdaten und Positionsdaten sind eingeblendet:

Enno Wulff

Leave a Comment