Links#
SAP ABAP Technology
New ABAP Keyword Documentation for SAP
ABAP-Programmierung
Program Samples
Load Excel into table
Run Time Type Services (RTTS)#
Types according to CL_ABAP_ELEMDESCR
| KIND_CLASS | C |
| KIND_ELEM | E |
| KIND_INTF | I |
| KIND_REF | R |
| KIND_STRUCT | S |
| KIND_TABLE | T |
| TRUE | X |
| TYPEKIND_ANY | ~ |
| TYPEKIND_CHAR | C | CHAR |
| TYPEKIND_CLASS | * |
| TYPEKIND_CLIKE | & |
| TYPEKIND_CSEQUENCE | ? |
| TYPEKIND_DATA | # |
| TYPEKIND_DATE | D | DATS |
| TYPEKIND_DECFLOAT | / |
| TYPEKIND_DECFLOAT16 | a |
| TYPEKIND_DECFLOAT34 | e |
| TYPEKIND_DREF | l |
| TYPEKIND_FLOAT | F |
| TYPEKIND_HEX | X |
| TYPEKIND_INT | I |
| TYPEKIND_INT1 | b |
| TYPEKIND_INT2 | s |
| TYPEKIND_INTF | + |
| TYPEKIND_IREF | m |
| TYPEKIND_NUM | N |
| TYPEKIND_NUMERIC | % |
| TYPEKIND_OREF | r |
| TYPEKIND_PACKED | P | CURR,DEC |
| TYPEKIND_SIMPLE | $ |
| TYPEKIND_STRING | g |
| TYPEKIND_STRUCT1 | u |
| TYPEKIND_STRUCT2 | v |
| TYPEKIND_TABLE | h |
| TYPEKIND_TIME | T |
| TYPEKIND_W | w |
| TYPEKIND_XSEQUENCE | ! |
| TYPEKIND_XSTRING | y |
| TYPEKIND_BREF | j |
| TYPEPROPKIND_DBMAXLEN | D |
| TYPEPROPKIND_HASCLIENT | C |
| UNDEFINED | - |
Character conversion (codepage)#
See
here
and
here
or
Abap-xstring
| fb.SCP_REPLACE_STRANGE_CHARS | Change German special chars (Umlaute) |
| CL_XMS_PART_UTIL | |
| CL_ABAP_CONV_IN_CE | Code Page and Endian Conversion (External -> System Format) |
| CL_ABAP_CONV_OUT_CE | Converts ABAP data objects to an external binary format |
| CL_ABAP_CONV_X2X_CE | Converts of ABAP data objects between two external binary formats |
| CL_ABAP_CHAR_UTILITIES | Various attributes and methods for character sets and byte order |
| CL_NLS_STRUC_CONTAINER | Corrects alignment of structures in containers of type C (or STRING). You need to make this correction if East-Asian characters ("full-width" characters in Chinese, Japanese, and Korean) are to be copied from a non-Unicode to a Unicode system or vice versa. You do not need to make the correction if you use the method CONVERT_STRUC from this class. |
DATA: l_xstring_input TYPE xstring,
l_string_output TYPE string,
l_encoding TYPE abap_encoding, "see table TCP00
l_r_converter TYPE REF TO cl_abap_conv_in_ce.
" Convert file data to string
TRY.
CALL METHOD cl_abap_conv_in_ce=>create
EXPORTING
input = l_xstring_input
encoding = l_encoding
replacement = '#'
ignore_cerr = abap_false
RECEIVING
conv = l_r_converter.
CALL METHOD l_r_converter->read
IMPORTING
data = l_string_output.
CATCH cx_root.
" Conversion error
EXIT.
ENDTRY.
CL_HRCE_MASTERSWITCHES=>IS_CLIENT_PRODUCTIVE( ) = 'X'/' '
Shortcuts#
| Ctrl + < | comment out all marked line |
| Ctrl + Shift + < | uncomment all mrkes lines |
Search in Reports#
| RPINCL10 | Standard |
| RPR_ABAP_SOURCE_SCAN | Scan ABAP Report Sourcen |
| x.CODE_SCANNER | ABAP Search (=r.AFX_CODE_SCANNER) |
| RSRSCAN1 | |
| RKCTSEAR | |
Append#
There is a weird shortcut for APPEND.
When you record a session, the code is generated like
CLEAR bdctab.
bdctab-program = 'SAPMSSY0'.
bdctab-dynpro = '120'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
The first CLEAR and the field assignments refer to a
structure bdctab.
This structure is the header line (deprecated) from itab bdctab. So bdctab is used in different contexts.
If an ABAP command needs a structure, the header line "bdctab" is automatically taken.
If an ABAP command need an itab, the table "bcdtab" is taken, you can use
APPEND bdctab[]
to indicate that the table should be used.
APPEND bdctab is a shortcut and should at least be
APPEND bcdtab to bdctab[]
But this is outdated also, though still generated from SAP ECC 6.0.
See more explanations
here
.
Execute OS commands on the server#
- function module SXPG_COMMAND_EXECUTE in connection with SM49/SM69
- WS_EXECUTE
- CL_GUI_FRONTEND_SERVICES=>EXECUTE
- TH_POPUP
- call 'SYSTEM' id 'COMMAND'
Remote Execution#
SUBMIT {rep|(name)} ...
Text Manipulation#
| class CL_ABAP_CHAR_UTILITIES | |
| concatenate | |
| strlen | describe field |
Note:
replace all occurrences of ' ' in p_filen with '_' in character mode.
will raise an exception REPLACE_INFINITE_LOOP, use the following:
replace all occurrences of regex '\s{1}' in p_filen with '_'.
(or use TRANSLATE)
Using XSTRING#
see xstring
File Handling#
- CL_GUI_FRONTEND_SERVICES=>FILE_*
- OPEN/GET DATASET
- FB EPS_GET*
- FB SCMS*
Date Handling#
Vormonat:
DATA: ultimo TYPE d.
ultimo = sy-datum.
ultimo+6(2) = '01'. " = erster Tag dieses Monats
ultimo = ultimo - 1. " = letzter Tag dieses Monats
Achtung: Funktioniert nicht beim Jahreswechsel, hier muss extra geprüft werden.
Import Excel to SAP#
| f.TEXT_CONVERT_XLS_TO_SAP | Fastest |
| f.ALSM_EXCEL_TO_INTERNAL_TABLE | Standard |
| f.KCD_EXCEL_OLE_TO_INT_CONVERT | limited to 9999 rows |
| f.FILE_READ_AND_CONVERT_SAP_DATA | 6x slower |
| Per OLE | CREATE OBJECT H_EXCEL 'Excel.Application' + CALL METHOD OF H_EXCEL 'Workbooks' = H_WRKBK ... |
Dynamic / Generic SQL#
Native SQL, see reports
Open SQL
REPORT z_bi_blogdyn1.
PARAMETERS: p_tab TYPE tabname DEFAULT 'T001'.
START-OF-SELECTION.
DATA: dref TYPE REF TO data,
tref TYPE REF TO data,
gt_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS: <wa> TYPE ANY,
<itab> TYPE STANDARD TABLE.
CREATE DATA dref TYPE (p_tab).
ASSIGN dref->* TO <wa>.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_tab
CHANGING
ct_fieldcat = gt_fcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fcat
IMPORTING
ep_table = tref
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
ASSIGN tref->* TO <itab>.
SELECT * FROM (p_tab) INTO TABLE <itab>.
LOOP AT <itab> INTO <wa>.
WRITE: / <wa>.
ENDLOOP.
Gray out selection parameters#
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-NAME = 'STEP080'. " name is upper case always
SCREEN-input = 0. " grau out
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Cluster tables#
HR Clusters
|
Cluster Discussion
| x.PECLUSTER | HR-Cluster bearbeiten |
| v.V_T52RELID | Pflegeview für die Beschreibung der Cluster in PCLx |
| t.T52RELID | HR: Beschreibung der Cluster in den Tabellen PCLx |
| p.PCAL | Paket PCAL (all cluster stuff) |
| t.T52B5 | Zuordnung von Werten zu Objekten (CLST,PDP,1) |
| t.HRDCT_D_TABLES | Index Table for Declustering Transparent Tables |
ABAP Objects / Class#
| t.SEOCLASS | Classes |
| t.SEOCOMPO | Components (Methods) |
| v.VSEOCLASS | view on class |
| t.SEOMETAREL | Meta-Beziehung (see RELTYPE: Interface, Vererbung, Erweiterung) |
| t.TMDIR | Classes and its methods |
| cl.CL_OO_CLASS | Class Reflection Helper class |
Loop through table of objects with keyword TABLE_LINE:
DATA: gt_records type standard table of ref to zhrzxx_mig_tabledata,
lo_record type ref to zhrzxx_mig_tabledata.
LOOP AT gt_records INTO lo_record
WHERE table_line->mv_infty = '0001'.
[...]
ENDLOOP.
Tabellen DD0*
ABAP Dictionary#
| f.DDIF_FIELDINFO_GET |
| f.DDIF_FIELDLABEL_GET |
| fm.DDIF_DOMA_GET |
| fm.RSD_DTEL_GET |
| CL_ABAP_TYPEDESCR |
Wildcards#
| | SQL | Selektion Screen |
| 0 to many | % | * |
| single char | _ | + |
Business Application Log (BAL)#
| SLG0 | Anwendungs-Log: Objektpflege (Objekt+Unterobjekt ist nötig, um auf DB zu sichern) |
| SLG1 | Anwendungs-Log: Protokolle anzeigen |
| SLG2 | Anwendungs-Log: Protokolle löschen |
| SLGN | Anwendungs-Log: Nummernkreispflege |
| SLGT | Anmelden zentraler Objektkatalog |
Für die Protokollierung sollten die von SAP vorgesehenen Funktionsbausteine in
der Funktionsgruppe SBAL verwendet werden.
Die Beispielprogramme „SBAL_DEMO*“ bieten einen guten Einstieg und Überblick.
SAP Application Log – Leitfaden für Anwender
| r.SBAL_DOCUMENTATION |
| CL_HRPAY00_MESSAGE_HANDLER |
| BAL_AMODAL | Anwendungs-Log: INDX-Tabelle für amodale K |
| BAL_INDX | Anwendungs-Log: INDX-Tabelle |
| BALC | Anwendungs-Log: Kontext des Prokolls bzw. |
| BALDAT | Anwendungs-Log: Daten eines Protokolls |
| BALHANDLE | Anwendungs-Log: Dummy-Tabelle für Sperrobj |
| BALHDR | Anwendungs-Log: Protokollkopf |
| BALHDRP | Anwendungs-Log: Protokollparameter |
| BALM | Anwendungs-Log: Protokollnachrichten |
| BALMP | Anwendungs-Log: Nachrichtenparameter |
| BALOBJ | Anwendungs-Log: Objekte |
| BALOBJT | Anwendungs-Log: Texte zu den Objekten |
| BALSUB | Anwendungs-Log: Unterobjekte |
| BALSUBT | Anwendungs-Log: Unterobjekttexte |
| CIFBALSEL | Anwendungs-Log: CIF-Erweiterung für Protok |