Dieses Programm zeigt per Ampelsystem die Fälligkeit von Debitoren auf.
Neben Skontofälligkeitsdatum, Nettofälligkeitsdatum wird der Verlust / Gewinn an Skonto per Tage, die zu früh oder spät gezahlt wurde, errechnet. Dieser Gewichtsfaktor zeigt an, wie schwerwiegend der Verstoß gegen die Zahlungsbedinungen war. Der Verlust berechet sich aus Gesamtbetrag mal Anzahl der Tage mal Prozent Zinssatz.
Will man die Summe wissen, die bei riguoser Einforderung von zu Unrecht abgezogenen Skonto möglich wäre, so kann dies über die Spalte Skonto erfolgen.
Skontosumme und Gewichtung sind also zwei unterschiedliche Ansätze.
Je höher die Gewichtung ist, desto höher ist der Verstoß gegen die Zahlungsbedingungen.
Ist der Verstoß gegen die Nettozahlung, dann ist die Gewichtung sogar das einzige und das geeignete Medium, den Verlust einzuschätzen.
REPORT zfi_faell02.
*Programm zur raschen Auswertung der Fälligkeit
*Auswahl der Kunden
*01 2018-12-10 Dipl.Ing.J.Stangl Erstversion inkl. Bewertung
*02 2018-12-11 Dipl.Ing.J.Stangl Name hinzugefügt, Überschriften angepaßt
*Test
SELECTION-SCREEN COMMENT 01(80) text-001.
SELECTION-SCREEN SKIP.
TABLES:
bkpf,
bsad,
bseg.
* coas,
* mseg.
SELECTION-SCREEN BEGIN OF BLOCK all WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK ausw WITH FRAME TITLE text-011.
SELECT-OPTIONS so_kunnr FOR bsad-kunnr. " DEFAULT '20200'.
SELECT-OPTIONS so_budat FOR bsad-budat.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK ausw.
SELECTION-SCREEN BEGIN OF BLOCK opt WITH FRAME TITLE text-012.
SELECT-OPTIONS so_augdt FOR bsad-augdt.
*PARAMETERS p_date TYPE sy-datum DEFAULT sy-datum NO-DISPLAY.
*PARAMETERS p_detail TYPE xfeld AS CHECKBOX DEFAULT abap_true.
*PARAMETERS p_summe TYPE xfeld AS CHECKBOX DEFAULT abap_true.
*PARAMETERS p_sumges TYPE xfeld AS CHECKBOX DEFAULT abap_true.
PARAMETERS p_posit TYPE xfeld AS CHECKBOX DEFAULT abap_true. "Nur positive Beträge
PARAMETERS p_negat TYPE xfeld AS CHECKBOX DEFAULT abap_false. "Nur negative Beträge
SELECTION-SCREEN SKIP.
PARAMETERS: p_ausg RADIOBUTTON GROUP b2 DEFAULT 'X',
p_offen RADIOBUTTON GROUP b2,
p_alle RADIOBUTTON GROUP b2.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK opt.
SELECTION-SCREEN BEGIN OF BLOCK optaus WITH FRAME TITLE text-013.
SELECT-OPTIONS so_blart FOR bkpf-blart.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK optaus.
SELECTION-SCREEN BEGIN OF BLOCK ausg WITH FRAME TITLE text-014.
PARAMETERS : p_alv RADIOBUTTON GROUP g1 DEFAULT 'X',
p_list RADIOBUTTON GROUP g1.
*PARAMETERS p_zusatz TYPE xfeld AS CHECKBOX DEFAULT abap_true.
SELECTION-SCREEN SKIP.
PARAMETERS: p_zusatz TYPE xfeld AS CHECKBOX DEFAULT abap_false.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK ausg.
SELECTION-SCREEN BEGIN OF BLOCK bew WITH FRAME TITLE text-015.
SELECTION-SCREEN COMMENT /1(40) text-021.
PARAMETERS: p_bewert TYPE xfeld AS CHECKBOX DEFAULT abap_false. "Bewertung
PARAMETERS: p_proz TYPE bsad-zbd2p DEFAULT 2.
PARAMETERS: p_betrag TYPE bsad-dmbtr DEFAULT 0.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK bew.
SELECTION-SCREEN END OF BLOCK all.
*DATA:
*
* lv_kostv LIKE mseg-kostl,
* lv_text(30) TYPE c,
* lv_menge LIKE mseg-menge,
* lv_dmbtr LIKE mseg-dmbtr,
* lv_mengeges LIKE mseg-menge,
* lv_dmbtrges LIKE mseg-dmbtr.
*
TYPES: BEGIN OF ty_alv,
bemer(30) TYPE c,
kunnr TYPE bsad-kunnr,
name1 TYPE kna1-name1,
belnr TYPE bsad-belnr,
gjahr TYPE bsad-gjahr,
shkzg TYPE bsad-shkzg,
dmbtr TYPE bsad-dmbtr,
sknto TYPE bsad-sknto,
blart TYPE bsad-blart,
budat TYPE bsad-budat,
bldat TYPE bsad-bldat,
"faedt TYPE bsad-faedt,
augdt TYPE bsad-augdt,
zfbdt TYPE bsad-zfbdt,
zbd1t TYPE bsad-zbd1t,
zbd2t TYPE bsad-zbd2t,
zbd1p TYPE bsad-zbd1p,
zbd2p TYPE bsad-zbd2p,
faed1 TYPE bsad-zfbdt, "FälligSkonto
faed2 TYPE bsad-zfbdt, "FälligNetto
meng1 TYPE bsad-zbd1t,
meng2 TYPE bsad-zbd1t,
bewer TYPE mseg-menge, "Bewertung
ampel(4) TYPE c,
END OF ty_alv.
DATA: gt_alv TYPE STANDARD TABLE OF ty_alv,
gs_alv TYPE ty_alv.
RANGES: so_shkzg FOR bsad-shkzg.
*
INITIALIZATION.
*
* CLEAR so_matnr.
* so_matnr-sign = 'I'.
* so_matnr-option = 'CP'.
* so_matnr-low = '800000004*'.
* APPEND so_matnr.
*
so_budat-sign = 'I'.
so_budat-option = 'BT'.
so_budat-low = '20150101'.
so_budat-high = sy-datum.
APPEND so_budat.
so_augdt-sign = 'I'.
so_augdt-option = 'BT'.
so_augdt-low = '20150101'.
so_augdt-high = sy-datum.
APPEND so_augdt.
so_blart-sign = 'I'.
so_blart-option = 'NE'.
so_blart-low = 'DZ'.
APPEND so_blart.
so_kunnr-sign = 'I'.
so_kunnr-option = 'BT'.
so_kunnr-low = '21000'.
so_kunnr-high = '22000'.
APPEND so_kunnr.
* p_date = sy-datum - 60.
*
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.
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.
BREAK-POINT.
ENDMETHOD. "on_double_click
METHOD on_link_click.
exit.
break-point.
* DATA:
* lv_gjahr TYPE gjahr,
* lv_belnr TYPE belnr.
* lv_gjahr = '2015'.
* lv_belnr = '90000000'.
* SET PARAMETER ID: 'BLN' FIELD lv_belnr.
* SET PARAMETER ID: 'GJR' FIELD lv_gjahr.
TRY.
gs_alv = gt_alv[ row ].
cl_abap_browser=>show_html( html = VALUE cl_abap_browser=>html_table(
( '<html><body><basefont face="arial">' )
( |Belegnummer: | && gs_alv-belnr && | </br>| )
( |Geschäftsjahr: | && gs_alv-gjahr )
( '</body></html>' )
)
title = 'Ausgewählte Belegnummer'
printing = abap_true
size = cl_abap_browser=>small
"check_html = abap_true
"modal = abap_true
).
* DATA(html_tab) = VALUE cl_abap_browser=>html_table(
*
*
*
* ( 'Picture with CL_ABAP_BROWSER<br><br>' )
*
* ( 'Picture with CL_ABAP_BROWSER2<br><br>' )
*
* ( '<img src="PICT.GIF">' )
*
* ( '</body></html>' ) ).
*
* cl_abap_browser=>show_html( html = html_tab ).
*
CATCH cx_sy_itab_line_not_found.
BREAK-POINT.
"Error message goes here
ENDTRY.
"gt_alv
SET PARAMETER ID: 'BLN' FIELD gs_alv-belnr.
SET PARAMETER ID: 'GJR' FIELD gs_alv-gjahr.
PERFORM call_transaction USING 'FB03'.
"BREAK-POINT.
PERFORM on_link_click.
ENDMETHOD. "on_link_click
ENDCLASS. "cl_event_handler IMPLEMENTATION
START-OF-SELECTION.
CLEAR so_shkzg.
IF p_posit EQ abap_true AND p_negat EQ abap_false.
so_shkzg-sign = 'I'.
so_shkzg-option = 'EQ'.
so_shkzg-low = 'S'.
so_shkzg-high = ''.
APPEND so_shkzg.
ENDIF.
IF p_posit EQ abap_false AND p_negat EQ abap_true.
so_shkzg-sign = 'I'.
so_shkzg-option = 'EQ'.
so_shkzg-low = 'H'.
so_shkzg-high = ''.
APPEND so_shkzg.
ENDIF.
IF NOT p_bewert IS INITIAL.
"cl_demo_output=>display( 'Bewertung N/A' ).
ENDIF.
*Selektion der Daten
IF p_ausg EQ abap_true OR p_alle EQ abap_true.
SELECT
' ' AS bemer, a~kunnr, b~name1, belnr, gjahr, shkzg, dmbtr, sknto, blart, budat, bldat, "faedt,
augdt, zfbdt, zbd1t, zbd2t, zbd1p, zbd2p
* CASE
* WHEN budat_mkpf = @so_buda2-low then 'KRIT'
* else ' '
* end as bemer,
FROM bsad AS a INNER JOIN kna1 AS b ON a~kunnr = b~kunnr
INTO TABLE @gt_alv
WHERE a~kunnr IN @so_kunnr
AND budat IN @so_budat
AND budat IN @so_augdt
AND blart IN @so_blart
AND shkzg IN @so_shkzg
"group by,
.
ELSE.
cl_demo_output=>display( 'Offene Posten N/A (Info wenn gebraucht)' ).
ENDIF.
*Ausgabe ALV
IF p_alv EQ abap_true.
LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<gs_alv>).
" ampel = '@08@'. Grün
" ampel = '@09@'. Gelb
" ampel = '@0A@'. Rot
" ampel = '@EB@'. Grau
IF <gs_alv>-shkzg = 'H'.
<gs_alv>-dmbtr = - <gs_alv>-dmbtr.
<gs_alv>-sknto = - <gs_alv>-sknto.
<gs_alv>-ampel = '@0A@'.
ENDIF.
<gs_alv>-faed1 = <gs_alv>-zfbdt + <gs_alv>-zbd1t. "FälligSkonto
<gs_alv>-faed2 = <gs_alv>-zfbdt + <gs_alv>-zbd2t. "FälligNetto
IF NOT <gs_alv>-augdt IS INITIAL.
<gs_alv>-meng1 = <gs_alv>-augdt - <gs_alv>-faed1. "Skontotage größer 0 ist überfällig
<gs_alv>-meng2 = <gs_alv>-augdt - <gs_alv>-faed2. "Fälligtage größer 0 ist überfällig
ELSE.
ENDIF.
"Zahlt verfrüht mit Skonto --> (Netto - Skonto) * Banktage * Bankproz Gewinnn
"Zahlt verspätet mit Skonto --> Netto * Banktage * Bankproz Verlust
"Zahlt verfrüht Netto --> Netto * Banktage * Bankproz Gewinn
"Zahlt verspätet Netto --> Netto * Banktage * Bankproz Gewinn
IF <gs_alv>-sknto NE 0 AND <gs_alv>-meng1 < 0. "Gewichtet mit Tagen
<gs_alv>-bewer = ( <gs_alv>-dmbtr - <gs_alv>-sknto ) * p_proz * <gs_alv>-meng1 / 365 / 100.
IF <gs_alv>-shkzg = 'S'. "Verfrüht und Skonto
<gs_alv>-ampel = '@08@'.
<gs_alv>-bemer = 'Gewinn: Verfrüht mit Skonto'.
ELSE.
<gs_alv>-ampel = '@0A@'.
<gs_alv>-bemer = 'Verlust: Verfrüht mit Skonto'.
ENDIF.
ELSE. "Gewichtet mit Tagen
<gs_alv>-bewer = ( <gs_alv>-dmbtr ) * p_proz * <gs_alv>-meng2 / 365 / 100.
IF <gs_alv>-meng2 LE 0. "Verfrüht
IF <gs_alv>-shkzg = 'S' .
<gs_alv>-ampel = '@08@'.
<gs_alv>-bemer = 'Gewinn: Verfrüht Netto'.
ELSE.
<gs_alv>-ampel = '@0A@'.
<gs_alv>-bemer = 'Verlust: Verfrüht Netto'.
ENDIF.
ELSE.
IF <gs_alv>-shkzg = 'S' .
<gs_alv>-ampel = '@0A@'.
<gs_alv>-bemer = 'Verlust: Verspätet Netto'.
ELSE.
<gs_alv>-ampel = '@08@'.
<gs_alv>-bemer = 'Gewinn: Verspätet Netto'.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM show_alv.
*Ausgabe Liste
ELSE.
cl_demo_output=>display( 'List N/A (Info wenn gebraucht)' ).
ENDIF.
*&---------------------------------------------------------------------*
*& Form SHOW_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM show_alv.
"Initialisierung
DATA: gref_salv TYPE REF TO cl_salv_table,
gr_layout TYPE REF TO cl_salv_layout,
ls_key TYPE salv_s_layout_key.
DATA: lr_functions TYPE REF TO cl_salv_functions_list,
lo_events TYPE REF TO cl_salv_events_table.
* ALV aufbauen,
* gref_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 = gref_salv
CHANGING
t_table = gt_alv.
lo_events = gref_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.
CATCH cx_salv_msg .
ENDTRY.
"Die Keydaten werden gefüllt
ls_key-report = sy-repid.
"gr_layout zeigt auf das Layout des ALV
gr_layout = gref_salv->get_layout( ).
"Layout erhält Keydaten: Program Name
gr_layout->set_key( ls_key ).
"Layout Speichern erlaubt (3 Werte möglich) User can save
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
* Layout auf Kundenspezifisches Layout einstellen
* IF sy-slset = 'CUS&Z_PPMDT_01'.
* gr_layout->set_initial_layout( value = '/Z_PPMDT_TEL' ).
* ENDIF.
"lr_functions zeigt auf die Funktionen des ALV
lr_functions = gref_salv->get_functions( ).
"lr_functions einschalten
" lr_functions->set_default( ). "minimal
lr_functions->set_all( abap_true ). "Standard
* Feldkatalog ändern
DATA: lr_columns TYPE REF TO cl_salv_columns_table,
lr_column TYPE REF TO cl_salv_column_table.
lr_columns = gref_salv->get_columns( ).
* lr_columns->set_optimize( abap_true ).
TRY.
lr_column ?= lr_columns->get_column( 'KUNNR' ).
lr_column->set_output_length( '5' ).
lr_column ?= lr_columns->get_column( 'NAME1' ).
lr_column->set_output_length( '20' ).
lr_column ?= lr_columns->get_column( 'FAED1' ).
lr_column->set_short_text( 'Fäll.Sk.').
lr_column->set_medium_text( 'Fällig Skonto').
lr_column->set_long_text( 'Fällig Skonto').
lr_column ?= lr_columns->get_column( 'FAED2' ).
lr_column->set_short_text( 'Fäll.N.').
lr_column->set_medium_text( 'Fällig Netto').
lr_column->set_long_text( 'Fällig Netto').
lr_column ?= lr_columns->get_column( 'BUDAT' ).
lr_column->set_short_text( 'Buch.D.').
lr_column->set_medium_text( 'Buchungsd.').
lr_column->set_long_text( 'Buchungsdatum').
lr_column ?= lr_columns->get_column( 'ZBD1T' ).
lr_column->set_short_text( 'T.Skonto').
lr_column->set_medium_text( 'Tage Skonto').
lr_column->set_long_text( 'Tage Skonto').
lr_column ?= lr_columns->get_column( 'ZBD2T' ).
lr_column->set_short_text( 'T.Netto').
lr_column->set_medium_text( 'Tage Netto').
lr_column->set_long_text( 'Tage Netto').
lr_column ?= lr_columns->get_column( 'BLDAT' ).
lr_column->set_short_text( 'Bel.D.').
lr_column->set_medium_text( 'Belegd.').
lr_column->set_long_text( 'Belegdatum').
lr_column ?= lr_columns->get_column( 'AUGDT' ).
lr_column->set_short_text( 'Ausgl.D.').
lr_column->set_medium_text( 'Ausgleichsd.').
lr_column->set_long_text( 'Ausgleichsdatum').
lr_column ?= lr_columns->get_column( 'MENG1' ).
lr_column->set_short_text( 'Abw.Tg.S.').
lr_column->set_medium_text( 'Abw.Tg.Skonto').
lr_column->set_output_length( '10' ).
lr_column->set_sign( abap_true ).
lr_column ?= lr_columns->get_column( 'MENG2' ).
lr_column->set_short_text( 'Abw.Tg.N.').
lr_column->set_medium_text( 'Abw.Tg.Netto').
lr_column->set_output_length( '10' ).
lr_column->set_sign( abap_true ).
lr_column ?= lr_columns->get_column( 'DMBTR' ).
lr_column->set_output_length( '10' ).
lr_column->set_sign( abap_true ).
lr_column ?= lr_columns->get_column( 'SKNTO' ).
lr_column->set_short_text( 'Skonto').
lr_column->set_medium_text( 'Skonto').
lr_column->set_long_text( 'Skonto').
lr_column->set_output_length( '10' ).
lr_column->set_sign( abap_true ).
lr_column ?= lr_columns->get_column( 'BEMER' ).
lr_column->set_short_text( 'Bemerk.').
lr_column->set_medium_text( 'Bemerkung').
lr_column->set_long_text( 'Bemerkung').
lr_column->set_output_length( '25' ).
lr_column ?= lr_columns->get_column( 'BEWER' ).
IF p_bewert IS INITIAL.
lr_column->set_visible( '' ).
ELSE.
lr_column->set_short_text( 'Bew.').
lr_column->set_medium_text( 'Bewertung').
lr_column->set_long_text( 'Bewertung').
lr_column->set_sign( abap_true ).
ENDIF.
* Zusatzinfo ausblenden
IF p_zusatz IS INITIAL.
lr_column ?= lr_columns->get_column( 'ZFBDT' ).
lr_column->set_visible( '' ).
lr_column ?= lr_columns->get_column( 'ZBD1T' ).
lr_column->set_visible( '' ).
lr_column ?= lr_columns->get_column( 'ZBD2T' ).
lr_column->set_visible( '' ).
lr_column ?= lr_columns->get_column( 'ZBD1P' ).
lr_column->set_visible( '' ).
lr_column ?= lr_columns->get_column( 'ZBD2P' ).
lr_column->set_visible( '' ).
ENDIF.
*
*
* lr_column ?= lr_columns->get_column( 'WERKS' ).
* lr_column->set_visible( '' ).
*
* lr_column ?= lr_columns->get_column( 'ORGEH' ).
* lr_column->set_visible( '' ).
*
lr_column ?= lr_columns->get_column( 'AMPEL' ).
lr_column->set_short_text( 'Status').
lr_column->set_medium_text( 'Status').
lr_column->set_long_text( 'Aktueller Status').
lr_column->set_icon( abap_true ).
lr_columns->set_column_position( columnname = 'FAED1' position = 1 ).
lr_columns->set_column_position( columnname = 'FAED2' position = 1 ).
lr_columns->set_column_position( columnname = 'MENG1' position = 1 ).
lr_columns->set_column_position( columnname = 'MENG2' position = 1 ).
lr_columns->set_column_position( columnname = 'BEMER' position = 1 ).
lr_columns->set_column_position( columnname = 'AUGDT' position = 1 ).
lr_columns->set_column_position( columnname = 'BLDAT' position = 1 ).
lr_columns->set_column_position( columnname = 'BUDAT' position = 1 ).
lr_columns->set_column_position( columnname = 'BLART' position = 1 ).
lr_columns->set_column_position( columnname = 'SKNTO' position = 1 ).
lr_columns->set_column_position( columnname = 'DMBTR' position = 1 ).
lr_columns->set_column_position( columnname = 'SHKZG' position = 1 ).
lr_columns->set_column_position( columnname = 'BELNR' position = 1 ).
lr_columns->set_column_position( columnname = 'NAME1' position = 1 ).
lr_columns->set_column_position( columnname = 'KUNNR' position = 1 ).
lr_columns->set_column_position( columnname = 'AMPEL' position = 1 ).
lr_column ?= lr_columns->get_column( 'BELNR' ).
lr_column->set_cell_type( if_salv_c_cell_type=>hotspot ).
"lr_columns->get_count_column
CATCH cx_salv_not_found.
cl_demo_output=>display('Error' ).
ENDTRY.
* Ausgabe
gref_salv->display( ).
ENDFORM.
* call method gt_grid-grid->get_current_cell
* importing
* es_row_id = ls_row_id
* es_col_id = ls_col_id
* e_value = l_value.
*&---------------------------------------------------------------------*
*& 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 on_link_click.
ENDFORM.