[ABAP] SELECT-OPTIONS Auswahl vorbelegen

Beispiel 1

DATA: gv_num TYPE i.
 
SELECT-OPTIONS: p_num FOR gv_num.
 
INITIALIZATION.
 
* Zahlenwerte 3 und 9
  p_num[] = VALUE #( ( sign = 'I' option = 'EQ' low = 3 )
                     ( sign = 'I' option = 'EQ' low = 9 ) ).

Beispiel 2

DATA: gv_matnr TYPE mara-matnr.
DATA: gv_werks TYPE mard-werks.
  
SELECT-OPTIONS: so_matnr FOR gv_matnr.
SELECT-OPTIONS: so_werks FOR gv_werks.

INITIALIZATION.

* MATNR von / bis
  so_matnr[] = VALUE #( ( sign = 'I' option = 'BT' low = '000000001000000000' high = '000000002000000000' ) ).
  
* Werk 0001
  so_werks[] = VALUE #( ( sign = 'I' option = 'EQ' low = '0001' ) ).

Beispiel 3

DATA: gv_werks TYPE mard-werks.
  
SELECT-OPTIONS: so_werks FOR gv_werks.

INITIALIZATION.
  
* Ausschluss Werk 0001
  so_werks[] = VALUE #( ( sign = 'E' option = 'EQ' low = '0001' ) ).

[ABAP] Alter / obsoleter Code

Weiterführende Infos: Link

alt / obsolet                                       neu

DATA: f1(8) TYPE d. (Längenangaben bei Datentypen)  DATA: f1 TYPE d.
FORM, PERFORM (obsolete Modularisierung)            CLASS DEFINITION, CLASS IMPLEMENTATION + Methoden (Kapselung)
CALL FUNCTION func EXCEPTIONS ...                   CLASS DEFINITION, CLASS IMPLEMENTATION + Methoden (Kapselung)
LIKE, STRUCTURE                                     TYPE, außer bei LIKE LINE OF
LOCAL                                               Verzichten auf Zugriff auf globalen Daten des Rahmenprogramms
FIELD-SYMBOLS: ...                                  LOOP AT ... ASSIGNING FIELD-SYMBOL(<...>)
READ TABLE ... INDEX 1                              itab[ 1 ]
READ TABLE ... ASSIGNING ...                        itab[ ... ]
READ TABLE ... WITH KEY type = '1'                  itab[ type = '1' ]
READ TABLE ... INTO ...                             DATA(var) = itab[ ... ].
READ TABLE ... REFERENCE INTO ...                   DATA(oref) = REF type( itab[ ... ] ).
READ TABLE ... TRANSPORTING NO FIELDS               IF line_exists( itab[ ... ] ). ... ENDIF.
REFRESH                                             CLEAR, FREE
DATA name TYPE ...                                  DATA(name) = VALUE type( ... ).
CLASS class DEFINITION LOAD.                        CLASS class DEFINITION.
INTERFACE intf LOAD.                                INTERFACE intf.
CREATE OBJECT oref EXPORTING ...                    DATA(oref) = NEW class( ... ).
OCCURS                                              Tabellen mit Kopfzeilen sind obsolet, im OO nicht mehr unterstützt
WITH HEADER LINE                                    Tabellen mit Kopfzeilen sind obsolet, im OO nicht mehr unterstützt
RANGES                                              DATA rg_name = TYPE|LIKE RANGE OF type.
MOVE                                                =
COMPUTE                                             weglassen, komplett überflüssig
PACK src TO dest                                    dest = src
TABLES                                              weglassen, komplett überflüssig, außer TABLES sscrfields.
TYPE-POOLS                                          weglassen, komplett überflüssig
DATA - COMMON PART                                  weglassen, komplett überflüssig
TABLES *                                            weglassen, komplett überflüssig
TYPE TABLE                                          TYPE ... TABLE WITH ... KEY (explizite Typisierung)
CHECK SELECT-OPTIONS.                               wird im OO nicht mehr unterstützt

READ, LOOP, INSERT, COLLECT,
APPEND, MODIFY, DELETE                              ohne INTO im OO nicht mehr unterstützt
SELECT * FROM tab.                                  ohne INTO im OO nicht mehr unterstützt, neu: SELECT ... INTO wa
LOOP AT itab.                                       ohne INTO im OO nicht mehr unterstützt, neu: LOOP AT ... INTO wa, ASSIGNING ... oder TRANSPORTING NO FIELDS
LOOP AT screen.                                     nur noch LOOP AT SCREEN INTO DATA(screen_wa).
MODIFY screen.                                      nur noch MODIFY SCREEN FROM screen_wa.
FIELDS obj.                                         ##NEEDED
"#EC ... (Pseudokommentare)                         ## ... (Pragmas)
CALL TRANSACTION ...                                CALL TRANSACTION ... WITH|WITHOUT AUTHORITY-CHECK.
CALL METHOD ...                                     weglassen, nur noch direkter Methodenaufruf
CALL DIALOG ...                                     globale Klassen oder FuBa
CALL CUSTOMER-FUNCTION ...                          CALL BADI ...
LEAVE                                               LEAVE PROGRAM, LEAVE TO TRANSACTION, LEAVE [TO] SCREEN, LEAVE LIST-PROCESSING.
><, =>, =<                                          <>, >=, <=, NE, GE, LE
IS REQUESTED                                        IS SUPPLIED
CATCH SYSTEM-EXCEPTIONS ...                         TRY ... CATCH
SEARCH itab                                         FIND IN TABLE

SELECT a b FROM tbl                                 SELECT a, b FROM tbl
  INTO CORRESPONDING FIELDS OF TABLE itab             INTO CORRESPONDING FIELDS OF TABLE @itab
  WHERE c = v1                                        WHERE c = @v1
  ORDER BY a, b.                                      ORDER BY a, b.

GUID_CREATE                                         cl_system_uuid
GUID_CONVERT                                        cl_system_uuid
SYSTEM_UUID_CREATE                                  cl_system_uuid
SYSTEM_UUID_C_CREATE                                cl_system_uuid
SYSTEM_UUID_C22_CREATE                              cl_system_uuid

[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] Base64 Encoding / Decoding

Variante 1 (cl_http_utility)

DATA: lv_bas64enc TYPE string VALUE 'Teststring'.
DATA: lv_base64dec TYPE string.

WRITE: / 'Plain:', lv_bas64enc.

cl_http_utility=>encode_base64( EXPORTING
                                  unencoded = lv_bas64enc
                                RECEIVING
                                  encoded   = lv_bas64enc ).

WRITE: / 'Base64 enc:', lv_bas64enc.

cl_http_utility=>decode_base64( EXPORTING
                                  encoded = lv_bas64enc
                                RECEIVING
                                  decoded = lv_base64dec ).

WRITE: / 'Base64 dec:', lv_base64dec.

Variante 2 (cl_hard_wired_encryptor)

DATA: text TYPE string VALUE 'TestString.'.

START-OF-SELECTION.

  WRITE: / text.

  DATA(o_base64) = NEW cl_hard_wired_encryptor( ).

  DATA(enc_string) = o_base64->encrypt_string2string( text ).
  WRITE: / 'Base64 encrypt_string2string: ', enc_string.

  DATA(dec_string) = o_base64->decrypt_string2string( enc_string ).
  WRITE: / 'Base64 decrypt_string2string: ', dec_string.

  DATA(enc_xstring) = o_base64->encrypt_string2bytes( dec_string ).
  WRITE: / 'Base64 encrypt_string2bytes:  ', enc_xstring.

  DATA(enc_bytes) = o_base64->encrypt_bytes2bytes( enc_xstring ).
  WRITE: / 'Base64 encrypt_bytes2bytes:   ', enc_bytes.

  DATA(dec_bytes) = o_base64->decrypt_bytes2bytes( enc_bytes ).
  WRITE: / 'Base64 decrypt_bytes2bytes:   ', dec_bytes.

  DATA(dec_string2) = o_base64->decrypt_bytes2string( dec_bytes ).
  WRITE: / 'Base64 decrypt_bytes2string:  ', dec_string2.

Links