[ABAP] Text-Editor (Textanzeige, Texteingabe) als Popup-Fenster anzeigen

Variante 1 (führt Wordwrap bei Pos. 72 durch)

DATA: it_textlines TYPE STANDARD TABLE OF string.

...

CALL FUNCTION 'TERM_CONTROL_EDIT'
  EXPORTING
    titel          = 'Titel'
    langu          = sy-langu
  TABLES
    textlines      = it_textlines
  EXCEPTIONS
    user_cancelled = 1
    OTHERS         = 2.

IF sy-subrc = 0.

ENDIF.

Variante 2 (maximale Zeilenlänge sind 72 Zeichen)

DATA: it_text TYPE catsxt_longtext_itab.

...

CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
  EXPORTING
    im_title        = 'Title'
    im_display_mode = ' ' " 'X' -> ReadOnly
    im_start_column = 10
    im_start_row    = 10
  CHANGING
    ch_text         = it_text.         " Tabelle mit Text

[ABAP] Inhalt einer internen Tabelle in einem PopUp-Fenster anzeigen

Variante 1 (Rechtsklick im PopUp zeigt Funktionsmenü)

CALL FUNCTION 'POPUP_WITH_TABLE'
  EXPORTING
    endpos_col   = 160
    endpos_row   = 40
    startpos_col = 1
    startpos_row = 1
    titletext    = 'Titel'
*           IMPORTING
*             CHOICE       =
  TABLES
    valuetab     = itab " darf nur eine Spalte beinhalten 
  EXCEPTIONS
    break_off    = 1
    OTHERS       = 2.
IF sy-subrc = 0.

ENDIF.

Variante 2 (Darstellung max. 80 Zeichen breit)

CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'
  EXPORTING
    endpos_col   = 160
    endpos_row   = 40
    startpos_col = 1
    startpos_row = 1
    titletext    = 'Titel'
  tables
    valuetab     = itab " darf nur eine Spalte beinhalten 
  EXCEPTIONS
    break_off    = 1
    OTHERS       = 2.
IF sy-subrc = 0.

ENDIF.

[ABAP] Auswahl-PopUp-Fenster anzeigen

DATA: it_sel TYPE STANDARD TABLE OF spopli.

it_sel = VALUE #( ( inactive = '' selflag = ' ' varoption = 'Auswahl 1' )
                  ( inactive = '' selflag = 'X' varoption = 'Auswahl 2' )
                  ( inactive = 'X' selflag = ' ' varoption = 'Auswahl 3' )
                  ( inactive = '' selflag = 'Y' varoption = 'Auswahl 4' ) ).

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
  EXPORTING
    i_title               = 'Bitte Einträge markieren!'
    i_selection           = abap_true
    i_zebra               = abap_true
    i_screen_start_column = 1
    i_screen_start_line   = 1
    i_screen_end_column   = 80
    i_screen_end_line     = 10
    i_checkbox_fieldname  = 'SELFLAG'
    i_tabname             = 'IT_SEL'   " wird im Zusammenhang mit dem Strukturnamen zur Erzeugung des internen Feldkatalogs gebraucht
    i_structure_name      = 'SPOPLI'   " wenn Struktur übergeben, erzeugt der FB selber einen Feldkatalog
  TABLES
    t_outtab              = it_sel
  EXCEPTIONS
    program_error         = 1
    OTHERS                = 2.

IF sy-subrc = 0.
  LOOP AT it_sel ASSIGNING FIELD-SYMBOL(<fs_sel>) WHERE selflag = abap_true.
    WRITE: / <fs_sel>-varoption.
  ENDLOOP.
ENDIF.

[ABAP] Folge von Selektionsbildschirmen durchschalten

SELECTION-SCREEN BEGIN OF SCREEN 100.
SELECTION-SCREEN BEGIN OF BLOCK sel1 WITH FRAME TITLE title1.
PARAMETERS: p_s_v TYPE spfli-cityfrom.
PARAMETERS: p_s_n TYPE spfli-cityto.
SELECTION-SCREEN END OF BLOCK sel1.
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN BEGIN OF SCREEN 200.
SELECTION-SCREEN BEGIN OF BLOCK sel2 WITH FRAME TITLE title2.
PARAMETERS: p_fh_v TYPE spfli-airpfrom.
PARAMETERS: p_fh_n TYPE spfli-airpto.
SELECTION-SCREEN END OF BLOCK sel2.
SELECTION-SCREEN END OF SCREEN 200.

INITIALIZATION.
  title1 = 'Städte'.
  title2 = 'Flughäfen'.

START-OF-SELECTION.
  CALL SELECTION-SCREEN 100 STARTING AT 10 10.
  CALL SELECTION-SCREEN 200 STARTING AT 10 10.

[ABAP] SALV-Table als F4-Suchhilfe-PopUp verwenden

CLASS lcl_salv_f4 DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: get_selected_value
      IMPORTING
                i_table_name      TYPE string
                i_display_columns TYPE string DEFAULT '*'
                i_sel_column      TYPE string
                i_max_datacnt     TYPE i OPTIONAL
                i_top             TYPE i DEFAULT 3
                i_bottom          TYPE i DEFAULT 25
                i_left            TYPE i DEFAULT 25
                i_right           TYPE i DEFAULT 160
      RETURNING VALUE(ret_val)    TYPE string.
ENDCLASS.

CLASS lcl_salv_f4 IMPLEMENTATION.
  METHOD get_selected_value.

    ret_val = ''.

    TRY.
        IF i_display_columns NE ''.
* Datenreferenzen auf Table und Row
          DATA: o_table TYPE REF TO data.
          DATA: o_row TYPE REF TO data.

          FIELD-SYMBOLS: <table> TYPE STANDARD TABLE.
          FIELD-SYMBOLS: <row> TYPE any.

          CREATE DATA o_table TYPE STANDARD TABLE OF (i_table_name).
          ASSIGN o_table->* TO <table>.

          CREATE DATA o_row LIKE LINE OF <table>.
          ASSIGN o_row->* TO <row>.

* SELECT-Statement anpassen
          IF i_max_datacnt IS NOT INITIAL.
            SELECT (i_display_columns) FROM (i_table_name) INTO CORRESPONDING FIELDS OF TABLE @<table> UP TO @i_max_datacnt ROWS.
          ELSE.
            SELECT (i_display_columns) FROM (i_table_name) INTO CORRESPONDING FIELDS OF TABLE @<table>.
          ENDIF.

* SALV-Grid erzeugen
          DATA: o_salv TYPE REF TO cl_salv_table.

          cl_salv_table=>factory( IMPORTING
                                    r_salv_table = o_salv
                                  CHANGING
                                    t_table      = <table> ).

          o_salv->get_functions( )->set_default( abap_true ).
          o_salv->get_columns( )->set_optimize( abap_true ).
          o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
          o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>single ).
          o_salv->get_display_settings( )->set_list_header( 'Auswahl' ).

* Strukturbeschreibung einer Tabellenzeile
          DATA: o_struct TYPE REF TO cl_abap_structdescr.
          o_struct ?= cl_abap_typedescr=>describe_by_data( <row> ).

* Komponenten der Struktur
*          DATA: it_comp_tab TYPE abap_component_tab.
          DATA(it_comp_tab) = o_struct->get_components( ).

          DATA(it_columns) = o_salv->get_columns( ).
          DATA: lv_col TYPE REF TO cl_salv_column.

          LOOP AT it_comp_tab INTO DATA(lv_comp).
* Spalte anhand des Komponentennamens holen
            lv_col ?= it_columns->get_column( |{ lv_comp-name }| ).

* wenn Anzeigespalte als Komponente der Struktur verfügbar, dann Spalte anzeigen
            IF ( i_display_columns CS lv_comp-name ) OR ( i_display_columns = '*' ).
              lv_col->set_visible( abap_true ).
            ELSE.
              lv_col->set_visible( abap_false ).
            ENDIF.
          ENDLOOP.

* Popup-SALV-Grid anzeigen
          o_salv->set_screen_popup( start_column = i_left
                                    end_column   = i_right
                                    start_line   = i_top
                                    end_line     = i_bottom ).

* Popup anzeigen und auf Klick warten
          o_salv->display( ).

* Auswahl auswerten
          DATA(it_sel_rows) = o_salv->get_selections( )->get_selected_rows( ).

* Nummer der ersten gewählten Tabellenzeile holen -> it_sel_rows[ 1 ]
* Tabellenzeile ermitteln -> <table>[ ... ]
* und Feldwert anhand der Spaltennummer auslesen -> COMPONENT i_sel_column
          ASSIGN COMPONENT i_sel_column OF STRUCTURE <table>[ it_sel_rows[ 1 ] ] TO FIELD-SYMBOL(<cell>).

* Rückgabewert
          ret_val = <cell>.

        ENDIF.

      CATCH cx_root.

    ENDTRY.

  ENDMETHOD.
ENDCLASS.

PARAMETERS: p_par TYPE string OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_par.
  p_par = lcl_salv_f4=>get_selected_value( i_table_name = 'spfli'
                                           i_display_columns = 'mandt, carrid, connid, cityto, airpfrom'
                                           i_sel_column = 'cityto' ).

[ABAP] Popup zur Auswahl von Monat und Jahr anzeigen

DATA: lv_actmonth TYPE isellist-month.
DATA: lv_sel_month TYPE isellist-month.
DATA: lv_subrc TYPE sy-subrc.
  
lv_actmonth = |{ 2016 }{ 06 }|. " Eingabemonat: 06/2016

CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
  EXPORTING
    actual_month               = lv_actmonth
*     factory_calendar           = 'X'
*     holiday_calendar           = 'X'
    language                   = sy-langu
    start_column               = 8
    start_row                  = 5
  IMPORTING
    selected_month             = lv_sel_month
    return_code                = lv_subrc
  EXCEPTIONS
    factory_calendar_not_found = 1
    holiday_calendar_not_found = 2
    month_not_found            = 3
    OTHERS                     = 4.
    
IF sy-subrc NE 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
  IF lv_subrc EQ 0.
    " ...
  ENDIF.
ENDIF.