*&---------------------------------------------------------------------*
*& Report Z_CHARACTER_STRINGS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_CHARACTER_STRINGS.
TABLES ZEMPLOYEES.
DATA MYCHAR(10) TYPE C.
DATA MYCHAR2. " DEFAULT LENGTH OF CHAR IS <1>. AND CHARACTER TYPE IS DEFAULT TYPE.
* SAME AS => DATA MYCHAR(1) TYPE C.
DATA MYSURNAME1(40) TYPE C.
DATA MYSURNAME2 LIKE ZEMPLOYEES-SURNAME.
************************************************************************************
DATA ZNUMBER1 TYPE N.
************************************************************************************
** ManIplate STRING data type
DATA: TITLE(15) TYPE C VALUE 'Mr',
SURNAME(40) TYPE C VALUE 'Smith',
FORENAME(40) TYPE C VALUE 'Joe',
SEP, " Default CHARATER type and lengrh is 1 (Space).
DESTINATION(200) TYPE C,
SPACED_NAME(20) TYPE C VALUE 'Mr Joe Smith',
LEN TYPE I,
SURNAME2(40),
EMPL_NUM(10),
TESTSTR TYPE STRING,
MYSTRING(30) TYPE C,
A1(10) TYPE C,
A2(10) TYPE C,
A3(10) TYPE C,
SEP2(2) TYPE C VALUE '**'.
* Concatenating String Fields.-----------------------------------------------------------------------------------------
* Use STRING type because CHARACTER type can ben truncated if the length of result exceeds 65000 characters.
* CONCATNATE F1 F2 [F3, F4 ....] INTO DESTINATION1 [SEPARATED BY SEP].
CONCATENATE TITLE SURNAME FORENAME INTO DESTINATION.
WRITE / DESTINATION.
ULINE.
CONCATENATE TITLE SURNAME FORENAME INTO DESTINATION SEPARATED BY SEP.
WRITE / DESTINATION.
ULINE.
* Condensing Character String -----------------------------------------------------------------------------------------
* CONDENSE C [NO-GAPS]
CONDENSE SPACED_NAME.
WRITE SPACED_NAME.
ULINE.
CONDENSE SPACED_NAME NO-GAPS.
WRITE SPACED_NAME.
ULINE.
* Find the length of a String -----------------------------------------------------------------------------------------
LEN = STRLEN( SURNAME ).
WRITE: 'The length of the SURNAME field is', LEN.
ULINE.
** Replacing Character Strings -----------------------------------------------------------------------------------------
* It only replaces the fist occurrence in the string.
* REPLACE O1 WITH O2 INTO C.
SURNAME2 = 'Mr, Joe, Smith'.
REPLACE ',' WITH '.' INTO SURNAME2.
WRITE: SURNAME2.
ULINE.
* Using while statement
* sy-subrc: Contains return value -> If it is 0 - Success / If it is other than 0 - Error or warning
WHILE SY-SUBRC = 0.
REPLACE ',' WITH '.' INTO SURNAME2.
ENDWHILE.
WRITE: SURNAME2.
ULINE.
* Searching for specific characters.
* SY-FDPOS: Used to search string. SY-FDPOS gives the position where that character is present in string.
SURNAME2 = 'Mr Joe Smith'.
WRITE:/ 'Searching: "Mr Joe Smith"'.
SKIP.
*Blank Spaces are ignored.
SEARCH SURNAME2 FOR 'Joe '.
WRITE:/ 'Searching for "Joe "'.
WRITE:/ 'SY-SUBRC: ', SY-SUBRC, / 'SY-FDPOS: ', SY-FDPOS.
ULINE.
*Blank spaces are taken into account.
SEARCH SURNAME2 FOR '.Joe '.
WRITE:/ 'Searching for ".Joe "'.
WRITE:/ 'SY-SUBRC: ', SY-SUBRC, / 'SY-FDPOS: ', SY-FDPOS.
ULINE.
*Wild card search - word ending with 'ith'.
SEARCH SURNAME2 FOR '*ith'.
WRITE:/ 'Searching for "*ith"'.
WRITE:/ 'SY-SUBRC: ', SY-SUBRC, / 'SY-FDPOS: ', SY-FDPOS.
ULINE.
*Wild card search - word ending starts with 'Smi*'.
SEARCH SURNAME2 FOR 'Smi*'.
WRITE:/ 'Searching for "Smi*"'.
WRITE:/ 'SY-SUBRC: ', SY-SUBRC, / 'SY-FDPOS: ', SY-FDPOS.
ULINE.
** SHIFT statement--------------------------------------------------------------------------------
* If the type is character - the length doesnt change,
* If the type is string - the length is shortend or but not lengthed.
EMPL_NUM = '0000654321'.
SHIFT EMPL_NUM LEFT DELETING LEADING '0'.
WRITE :/ EMPL_NUM.
TESTSTR = '0000654321'.
SHIFT TESTSTR LEFT DELETING LEADING'0'.
WRITE :/ TESTSTR.
EMPL_NUM = '0000654321'.
SHIFT EMPL_NUM.
WRITE :/ EMPL_NUM.
EMPL_NUM = '0000654321'.
SHIFT EMPL_NUM CIRCULAR.
WRITE :/ EMPL_NUM.
** Split statement -----------------------------------------------------------------------------------
MYSTRING = ' 1234** ABCD **6789'.
*MYSTRING = ' 1234** ABCD **6789**WXYZ'.
WRITE :/ MYSTRING.
SKIP.
*SPLIT MYSTRING AT '++' INTO A1 A2 A3.
SPLIT MYSTRING AT SEP2 INTO A1 A2 A3.
WRITE / A1.
WRITE / A2.
WRITE / A3.
WRITE :/ 'Length of A1 A2 A3: ', STRLEN( A1 ) , STRLEN( A2 ), STRLEN( A3 ). " Spaces are included
** SUBFIELDS ------------------------------------------------------------------------------------------
DATA: INT_TELEPHONE_NUM(17) TYPE C,
COUNTRY_CODE(3) TYPE C,
TELEPHONE_NUM(14) TYPE C.
INT_TELEPHONE_NUM = '+44-(0)207-123456'.
WRITE INT_TELEPHONE_NUM.
SKIP.
COUNTRY_CODE = INT_TELEPHONE_NUM(3).
TELEPHONE_NUM = INT_TELEPHONE_NUM+4(13).
WRITE / COUNTRY_CODE.
WRITE / TELEPHONE_NUM.
COUNTRY_CODE+1(2) = '01'.
WRITE / COUNTRY_CODE.
'SAP > ABAP 코드' 카테고리의 다른 글
ABAP - IF & CASE (0) | 2021.05.24 |
---|---|
ABAP - BASIC SQL STATEMENT (0) | 2021.05.24 |
ABAP - DATE & TIME & CURRENCY & QUANTITY (0) | 2021.05.24 |
ABAP - Arithmetic (0) | 2021.05.24 |
ABAP - Variable / Constants (0) | 2021.05.24 |