Dieses Programm analysiert die Preis 0 Materialien.
Somit ist eine tägliche Bearbeitung und damit Vermeidung von Bewegungen von Materialien mit Preis 0 möglich.
Per Ampelsystem werden die Ergebnisse der Plausiblitätsprüfungen ausgegeben.
- Bestand bei fraglichen Preis
- Fraglicher Preis
- Suboptimale Preiseinheit
- Preissteuerung (V oder S)
- ABC Kategorisierung
- Abwertung
REPORT zmm_preis3.
*Programm zur raschen Auswertung von Materialien mit Preis 0
* Version XXX
* Warengruppentext
* Materialarttext
* Dispo
* Version 002 20190826 Erste Version über SALV
* Kennzeichen Alter
* Version 001 20180630 Variante über Query
*
*
*Ausgabe als ALV List
TABLES: mara, mbew, marc, makt.
SELECTION-SCREEN COMMENT 01(80) text-001.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK all WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK aus WITH FRAME TITLE text-011.
SELECT-OPTIONS so_matnr FOR mara-matnr. "DEFAULT '12-780-071-Z2'. "'7227775030' DEFAULT '800000004*'. " '7277771163-2'.
SELECT-OPTIONS so_maktx FOR makt-maktx. "DEFAULT '12-780-071-Z2'. "'7227775030' DEFAULT '800000004*'. " '7277771163-2'.
SELECT-OPTIONS so_lbkum FOR mbew-lbkum. "Gesamtbestand
SELECT-OPTIONS so_salk3 FOR mbew-salk3. "Gesamtbestandwert
SELECT-OPTIONS so_vprsv FOR mbew-vprsv. "Gleitender Durchschnittspreis / Standardpreis Kennzeichen
SELECT-OPTIONS so_verpr FOR mbew-verpr. "DEFAULT 0. "Gleiternder Durchschnittspreis
SELECT-OPTIONS so_stprs FOR mbew-stprs. "Standardpreis
SELECT-OPTIONS so_peinh FOR mbew-peinh. "Preiseinheit
SELECT-OPTIONS so_bklas FOR mbew-bklas. "Bewertungsklasse
SELECT-OPTIONS so_mtart FOR mara-mtart. "Materialart
SELECT-OPTIONS so_matkl FOR mara-matkl. "Warengruppe.
SELECT-OPTIONS so_maabc FOR marc-maabc. "ABC Kennzeichen Dispo1
SELECT-OPTIONS so_abwkz FOR mbew-abwkz. "Abwertungskennziffer
SELECTION-SCREEN END OF BLOCK aus.
SELECTION-SCREEN BEGIN OF BLOCK alv WITH FRAME TITLE text-015.
SELECTION-SCREEN COMMENT 1(60) text-016 .
PARAMETERS p_var TYPE rsvar-variant. "LIKE p_alvvar.
SELECTION-SCREEN END OF BLOCK alv.
SELECTION-SCREEN END OF BLOCK all.
TYPES: BEGIN OF ty_alv,
matnr TYPE matnr,
maktx TYPE maktx,
lbkum TYPE lbkum,
meins TYPE meins,
salk3 TYPE salk3,
vprsv TYPE vprsv,
verpr TYPE verpr,
stprs TYPE stprs,
peinh TYPE peinh,
bklas TYPE bklas, "Bewertungsklasse
mtart TYPE mtart,
matkl TYPE matkl,
maabc TYPE maabc,
abwkz TYPE abwkz,
bemer(30) TYPE c,
ampel1(4) TYPE c,
ampel2(4) TYPE c,
ampel3(4) TYPE c,
ampel4(4) TYPE c,
ampel5(4) TYPE c,
ampel6(4) TYPE c,
END OF ty_alv.
TYPES: ty_alv_table TYPE STANDARD TABLE OF ty_alv.
DATA: gt_alv TYPE ty_alv_table,
gt_alv2 TYPE ty_alv_table,
gs_alv TYPE ty_alv.
DATA gv_titel(50) TYPE c.
*----------------------------------------------------------------------*
* CLASS cl_event_handler DEFINITION
*----------------------------------------------------------------------*
CLASS cl_event_handler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS on_before_salv_function " BEFORE_SALV_FUNCTION
FOR EVENT if_salv_events_functions~before_salv_function
OF cl_salv_events_table
IMPORTING e_salv_function.
CLASS-METHODS on_after_salv_function " AFTER_SALV_FUNCTION
FOR EVENT if_salv_events_functions~before_salv_function
OF cl_salv_events_table
IMPORTING e_salv_function.
CLASS-METHODS on_added_function " ADDED_FUNCTION
FOR EVENT if_salv_events_functions~added_function
OF cl_salv_events_table
IMPORTING e_salv_function.
CLASS-METHODS on_top_of_page " TOP_OF_PAGE
FOR EVENT if_salv_events_list~top_of_page
OF cl_salv_events_table
IMPORTING r_top_of_page
page
table_index.
CLASS-METHODS on_end_of_page " END_OF_PAGE
FOR EVENT if_salv_events_list~end_of_page
OF cl_salv_events_table
IMPORTING r_end_of_page
page.
CLASS-METHODS on_double_click " DOUBLE_CLICK
FOR EVENT if_salv_events_actions_table~double_click
OF cl_salv_events_table
IMPORTING row
column.
CLASS-METHODS on_link_click " LINK_CLICK
FOR EVENT if_salv_events_actions_table~link_click
OF cl_salv_events_table
IMPORTING row
column.
ENDCLASS. "cl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS cl_event_handler IMPLEMENTATION.
METHOD on_before_salv_function.
"BREAK-POINT.
ENDMETHOD. "on_before_salv_function
METHOD on_after_salv_function.
"BREAK-POINT.
ENDMETHOD. "on_after_salv_function
METHOD on_added_function.
"BREAK-POINT.
ENDMETHOD. "on_added_function
METHOD on_top_of_page.
"BREAK-POINT.
ENDMETHOD. "on_top_of_page
METHOD on_end_of_page.
"BREAK-POINT.
ENDMETHOD. "on_end_of_page
METHOD on_double_click.
PERFORM action TABLES gt_alv USING row column.
ENDMETHOD. "on_double_click
METHOD on_link_click.
PERFORM action TABLES gt_alv USING row column.
ENDMETHOD. "on_link_click
ENDCLASS. "cl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS application DEFINITION
*----------------------------------------------------------------------*
CLASS application DEFINITION CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS f4_alv_variant.
CLASS-METHODS init.
CLASS-METHODS run.
CLASS-METHODS collect_alv
CHANGING gt_alv TYPE ty_alv_table.
CLASS-METHODS show_alv
CHANGING gt_alv TYPE ty_alv_table.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS application IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS application IMPLEMENTATION.
*----------------------------------------------------------------------*
* METHOD f4_alv_variant
*----------------------------------------------------------------------*
METHOD f4_alv_variant. "CHANGING p_var TYPE rsvar-variant. "LIKE p_alvvar.
DATA:variant TYPE disvariant.
variant-report = sy-repid.
"variant-handle = '0001'.
variant-username = sy-uname.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = variant
i_save = 'A'
IMPORTING
es_variant = variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
CHECK sy-subrc = 0.
p_var = variant-variant.
ENDMETHOD. " f4_alv_variant
*----------------------------------------------------------------------*
* METHOD init
*----------------------------------------------------------------------*
METHOD init.
* CLEAR so_matnr.
* so_matnr-sign = 'I'.
* so_matnr-option = 'CP'.
* so_matnr-low = '800000004*'.
APPEND INITIAL LINE TO so_lbkum ASSIGNING FIELD-SYMBOL(<so_lbkum>).
<so_lbkum>-sign = 'I'.
<so_lbkum>-option = 'GT'.
<so_lbkum>-low = 0.
APPEND INITIAL LINE TO so_vprsv ASSIGNING FIELD-SYMBOL(<so_vprsv>).
<so_vprsv>-sign = 'I'.
<so_vprsv>-option = 'EQ'.
<so_vprsv>-low = 'V'.
APPEND INITIAL LINE TO so_verpr ASSIGNING FIELD-SYMBOL(<so_verpr>).
<so_verpr>-sign = 'I'.
<so_verpr>-option = 'BT'.
<so_verpr>-low = 0.
<so_verpr>-high = 1.
ENDMETHOD.
*----------------------------------------------------------------------*
* METHOD run
*----------------------------------------------------------------------*
METHOD run.
"break-point.
application=>collect_alv( CHANGING gt_alv = gt_alv ).
application=>show_alv( CHANGING gt_alv = gt_alv ).
ENDMETHOD.
*----------------------------------------------------------------------*
* METHOD collect_alv
*----------------------------------------------------------------------*
METHOD collect_alv.
SELECT a~matnr, maktx, lbkum, meins, salk3, vprsv, verpr, stprs, peinh, bklas, mtart, matkl, maabc, abwkz
* matnr TYPE matnr,
* lbkum TYPE lbkum,
* salk3 TYPE salk3,
* vprsv TYPE vprsv,
* verpr TYPE verpr,
* stprs TYPE stprs,
* peinh TYPE peinh,
* bklas TYPE bklas, "Bewertungsklasse
* mtart TYPE mtart,
* matkl TYPE matkl,
* bemer(30) TYPE c,
* ampel(4) TYPE c,
FROM ( ( mara AS a INNER JOIN mbew AS b ON a~matnr = b~matnr ) INNER JOIN marc AS c ON b~matnr = c~matnr ) INNER JOIN makt AS d ON a~matnr = d~matnr
INTO CORRESPONDING FIELDS OF TABLE @gt_alv2
WHERE a~matnr IN @so_matnr
AND lbkum IN @so_lbkum
AND salk3 IN @so_salk3
AND vprsv IN @so_vprsv
AND verpr IN @so_verpr
AND stprs IN @so_stprs
AND peinh IN @so_peinh
AND bklas IN @so_bklas
AND mtart IN @so_mtart
AND matkl IN @so_matkl
and maktx in @so_maktx
AND spras EQ 'DE'
.
*letzter eintrag auslesen
" ampel = '@08@'. Grün
" ampel = '@09@'. Gelb
" ampel = '@0A@'. Rot
" ampel = '@EB@'. Kein Licht
LOOP AT gt_alv2 ASSIGNING FIELD-SYMBOL(<gs_alv>).
"<gs_alv>-ampel = '@EB@'. "Kein Licht
IF <gs_alv>-lbkum > 0.
<gs_alv>-ampel1 = '@0A@'. "Rot: Bestand
ELSE.
<gs_alv>-ampel1 = '@EB@'. "Kein Licht: Kein Bestand
ENDIF.
<gs_alv>-ampel2 = '@0A@'. "Rot Preis
IF <gs_alv>-peinh EQ 1.
<gs_alv>-ampel3 = '@0A@'. "Rot: Preiseinheit 1
ELSE.
<gs_alv>-ampel3 = '@EB@'. "Kein Licht: Preiseinheit 1000
ENDIF.
IF <gs_alv>-vprsv EQ 'V'.
<gs_alv>-ampel4 = '@0A@'. "Rot: Gleitender Preis
ELSE.
<gs_alv>-ampel4 = '@EB@'. "Kein Licht: Standardpreis
ENDIF.
IF <gs_alv>-maabc EQ 'L'.
<gs_alv>-ampel5 = '@08@'. "Grün: Ladenhüter
ELSEIF <gs_alv>-maabc EQ 'C'.
<gs_alv>-ampel5 = '@09@'. "Gelb: Material geringe Bedeutung
ELSE.
<gs_alv>-ampel5 = '@0A@'. "Rot: A/B
ENDIF.
IF <gs_alv>-abwkz GT 6.
<gs_alv>-ampel6 = '@08@'. "Grün: Hohe Abwertung
ELSEIF <gs_alv>-abwkz GT 1.
<gs_alv>-ampel6 = '@09@'. "Gelb: Abwertung läuft
ELSE.
<gs_alv>-ampel6 = '@0A@'. "Rot: Keine Abwertung
ENDIF.
APPEND <gs_alv> TO gt_alv.
ENDLOOP.
SORT gt_alv BY matnr mtart matkl bklas . "Materialart, Warengruppe, Bewertungsklasse.
ENDMETHOD.
*----------------------------------------------------------------------*
* METHOD show_alv
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
METHOD show_alv.
"Initialisierung
DATA: lref_salv TYPE REF TO cl_salv_table,
lr_layout TYPE REF TO cl_salv_layout,
ls_key TYPE salv_s_layout_key.
DATA: lr_functions TYPE REF TO cl_salv_functions_list.
DATA: lr_display TYPE REF TO cl_salv_display_settings.
* Titel
DATA: lv_titel TYPE lvc_title.
* Sortierung und Aggregation
DATA: lr_sorts TYPE REF TO cl_salv_sorts.
DATA: lr_aggs TYPE REF TO cl_salv_aggregations.
* Feldkatalog ändern
DATA: lr_columns TYPE REF TO cl_salv_columns_table,
lr_column TYPE REF TO cl_salv_column_table.
DATA: lf_variant TYPE slis_vari.
DATA: lo_events TYPE REF TO cl_salv_events_table. "HST 20190712
* ALV aufbauen,
* lref_salv zeigt danach auf das Objekt,
* gt_alv ist die Tabelle, die als Info mitgegeben wird, wo die Daten zukünftig gespeichert werden.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lref_salv
CHANGING
t_table = gt_alv.
"HST 20190712 Beginn
lo_events = lref_salv->get_event( ).
SET HANDLER cl_event_handler=>on_before_salv_function FOR lo_events.
SET HANDLER cl_event_handler=>on_after_salv_function FOR lo_events.
SET HANDLER cl_event_handler=>on_added_function FOR lo_events.
SET HANDLER cl_event_handler=>on_top_of_page FOR lo_events.
SET HANDLER cl_event_handler=>on_end_of_page FOR lo_events.
SET HANDLER cl_event_handler=>on_double_click FOR lo_events.
SET HANDLER cl_event_handler=>on_link_click FOR lo_events.
"HST 20190712 Ende
CATCH cx_salv_msg .
ENDTRY.
"Die Keydaten werden gefüllt
ls_key-report = sy-repid.
"lr_layout zeigt auf das Layout des ALV
lr_layout = lref_salv->get_layout( ).
"Layout erhält Keydaten: Program Name
lr_layout->set_key( ls_key ).
"Layout Speichern erlaubt (3 Werte möglich) User can save
lr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
* Layout auf Kundenspezifisches Layout einstellen
lr_layout->set_initial_layout( value = '/STANGL1' ).
* IF sy-slset = 'CUS&Z_PPMDT_01'.
* lr_layout->set_initial_layout( value = '/Z_PPMDT_TEL' ).
* ENDIF.
"lr_functions zeigt auf die Funktionen des ALV
lr_functions = lref_salv->get_functions( ).
"lr_functions einschalten
" lr_functions->set_default( ). "minimal
lr_functions->set_all( abap_true ). "Standard
"Überschrift des Display einstellen
gv_titel = 'Nullpreis:'.
CONCATENATE gv_titel ' Keine Projektbestände ' INTO lv_titel.
lr_display = lref_salv->get_display_settings( ).
lr_display->set_list_header( lv_titel ).
lr_display->set_striped_pattern( abap_true ).
lr_columns = lref_salv->get_columns( ).
lr_columns->set_optimize( abap_true ).
TRY.
* "Sort einstellen
* lr_sorts = lref_salv->get_sorts( ).
* lr_sorts->add_sort( columnname = 'NACHN' subtotal = abap_true ).
**
* "Aggregation einstellen
* lr_aggs = lref_salv->get_aggregations( ).
* lr_aggs->add_aggregation( 'ZTAGE' ).
* lr_aggs->add_aggregation( 'ZSTUN' ).
lr_column ?= lr_columns->get_column( 'BEMER' ).
lr_column->set_visible( abap_false ).
lr_column ?= lr_columns->get_column( 'AMPEL1' ).
lr_column->set_short_text( 'Bestand').
lr_column->set_medium_text( 'Bestand Status').
lr_column->set_long_text( 'Bestand Status').
lr_column->set_icon( abap_true ).
lr_column ?= lr_columns->get_column( 'AMPEL2' ).
lr_column->set_short_text( 'Preis').
lr_column->set_medium_text( 'Preis Status').
lr_column->set_long_text( 'Preis Status').
lr_column->set_icon( abap_true ).
lr_column ?= lr_columns->get_column( 'AMPEL3' ).
lr_column->set_short_text( 'Preiseinh.').
lr_column->set_medium_text( 'Preiseinheit Status').
lr_column->set_long_text( 'Preiseinheit Status').
lr_column->set_icon( abap_true ).
lr_column ?= lr_columns->get_column( 'AMPEL4' ).
lr_column->set_short_text( 'V/S').
lr_column->set_medium_text( 'Gleit. / Standard').
lr_column->set_long_text( 'Gleit.Pr. / Standardpr.').
lr_column->set_icon( abap_true ).
lr_column ?= lr_columns->get_column( 'AMPEL5' ).
lr_column->set_short_text( 'A/B/C/L').
lr_column->set_medium_text( 'ABC Kat.').
lr_column->set_long_text( 'ABC Kategorie').
lr_column->set_icon( abap_true ).
lr_column ?= lr_columns->get_column( 'AMPEL6' ).
lr_column->set_short_text( 'Abw.').
lr_column->set_medium_text( 'Abwertung').
lr_column->set_long_text( 'Abwertung').
lr_column->set_icon( abap_true ).
lr_column ?= lr_columns->get_column( 'MATNR' ).
lr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
"lr_columns->set_column_position( columnname = 'AMPEL1' position = 1 ).
** set initial Layout
"lf_variant = 'DEFAULT'.
"lr_layout->set_initial_layout( lf_variant ).
* Ausgabe
lref_salv->display( ).
CATCH cx_salv_not_found.
cl_demo_output=>display('Error' ).
CATCH cx_salv_existing.
cl_demo_output=>display('Error: Existence' ).
CATCH cx_salv_data_error.
cl_demo_output=>display('Error: Data' ).
ENDTRY.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& FORM call_transaction
*&---------------------------------------------------------------------*
* Call standard transactions with authority check and progress indicator
*----------------------------------------------------------------------*
FORM call_transaction USING trx TYPE tcode.
DATA: lv_message TYPE string.
CONCATENATE 'Opening transaction' trx '...' INTO lv_message SEPARATED BY space. "#EC NOTEXT
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = trx
EXCEPTIONS
ok = 0
not_ok = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE e172(00) WITH trx.
ELSE.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = lv_message.
CALL TRANSACTION trx AND SKIP FIRST SCREEN.
ENDIF.
ENDFORM. "call transaction
*----------------------------------------------------------------------*
* FORM action
*----------------------------------------------------------------------*
FORM action TABLES gt_alv USING row TYPE salv_de_row column TYPE salv_de_column.
IF column EQ 'MATNR' or 1 = 1.
"FIELD-SYMBOLS: <lv_sobkz> TYPE mseg-sobkz.
"ASSIGN COMPONENT column OF STRUCTURE gt_alv[ row ] TO <lv_sobkz>.
PERFORM display_mm03 TABLES gt_alv USING row column.
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
* FORM display_MM03
*----------------------------------------------------------------------*
FORM display_mm03 TABLES gt_alv USING row TYPE salv_de_row column TYPE salv_de_column.
TRY.
gs_alv = gt_alv[ row ].
SET PARAMETER ID: 'MAT' FIELD gs_alv-matnr.
PERFORM call_transaction USING 'MM03'.
"BREAK-POINT.
CATCH cx_sy_itab_line_not_found.
cl_demo_output=>display('Einzelzeile MATNR auswählen' ).
"cl_abap_browser=>show_html( html = VALUE #( ( 'Einzelzeile MATNR auswählen' ) ) ).
ENDTRY.
ENDFORM.
*----------------------------------------------------------------------*
* FORM display_document_div
*----------------------------------------------------------------------*
FORM display_document_div USING transaction TYPE ckmi1-awtyp
document TYPE ckmi1-awref
year TYPE ckmi1-aworg.
DATA: lv_mblnr TYPE mblnr,
lv_mjahr TYPE mjahr,
lv_belnr TYPE ck_belnr,
lv_kjahr TYPE ck_kjahr,
lv_belnr_iv TYPE re_belnr, "invoice
lv_belnr_am TYPE ko_belnr, "account maintenance
lv_gjahr TYPE gjahr,
lv_belnr_s TYPE aa_belnr. "settlement
CASE transaction.
WHEN 'MKPF'. "Material document
"Progress bar for opening MIGO
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Opening transaction MIGO...'. "#EC NOTEXT
"Call MIGO in display mode; this contains the authorization checks
lv_mblnr = document. "to avoid type mismatch
lv_mjahr = year. "automatic cast here
CALL FUNCTION 'MIGO_DIALOG'
EXPORTING
i_action = 'A04'
i_refdoc = 'R02'
i_notree = 'X'
i_no_auth_check = ' '
i_deadend = 'X'
i_skip_first_screen = 'X'
i_okcode = 'OK_GO'
i_mblnr = lv_mblnr
i_mjahr = lv_mjahr.
WHEN 'RMRP'. "Invoice document
DATA: lv_vgart TYPE vgart.
lv_belnr_iv = document. "to avoid type mismatch
lv_gjahr = year. "automatic cast here
"Check the document type of the Invoice-Document
SELECT SINGLE vgart FROM rbkp INTO lv_vgart
WHERE belnr = lv_belnr_iv
AND gjahr = lv_gjahr.
IF sy-subrc <> 0. "Document has been archived
MESSAGE e184(m8) WITH lv_belnr_iv lv_gjahr.
ENDIF.
"KP = Account maintenance
"KS = Account maintenance Reversal >> can be opened in MR11SHOW
IF lv_vgart EQ 'KP' OR lv_vgart EQ 'KS'.
lv_belnr_am = document.
SET PARAMETER ID: 'KBN' FIELD lv_belnr_am,
'GJR' FIELD lv_gjahr.
PERFORM call_transaction USING 'MR11SHOW'.
"RS = credit memo
"RD = logistisc invoice >> can be opened in MR11SHOW
ELSE.
SET PARAMETER ID: 'RBN' FIELD lv_belnr_iv,
'GJR' FIELD lv_gjahr.
PERFORM call_transaction USING 'MIR4'.
ENDIF.
WHEN 'PRCHG'. "Price change document
lv_belnr = document. "to avoid type mismatch
lv_kjahr = year. "automatic cast here
SET PARAMETER ID: 'MLN' FIELD lv_belnr,
'MLJ' FIELD lv_kjahr.
PERFORM call_transaction USING 'CKMPCD'.
WHEN 'MLHD'. "Material ledger document
lv_belnr = document. "to avoid type mismatch
lv_kjahr = year. "automatic cast here
SET PARAMETER ID: 'MLN' FIELD lv_belnr,
'MLJ' FIELD lv_kjahr.
PERFORM call_transaction USING 'CKMB'.
WHEN 'AUAK'. "Settlement document
lv_belnr_s = document. "to avoid type mismatch
SET PARAMETER ID: 'BLN' FIELD lv_belnr_s.
PERFORM call_transaction USING 'KO8B'.
ENDCASE.
ENDFORM. "display_document
*----------------------------------------------------------------------*
* Events
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
application=>f4_alv_variant( ). "p_var.
INITIALIZATION.
application=>init( ).
AT SELECTION-SCREEN OUTPUT.
* LOOP AT SCREEN.
* IF screen-name = 'P_DATE'.
* screen-input = 0.
* screen-invisible = abap_false.
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
AT SELECTION-SCREEN.
EXIT.
START-OF-SELECTION.
application=>run( ).
EXIT.