SAP/ABAP 코드

Character & String

haramang 2021. 5. 24. 21:47

*&---------------------------------------------------------------------*

*& Report Z_CHARACTER_STRINGS

*&---------------------------------------------------------------------*

*&

*&---------------------------------------------------------------------*

REPORT Z_CHARACTER_STRINGS.

 

TABLES ZEMPLOYEES.

 

DATA MYCHAR(10TYPE C.

DATA MYCHAR2.  " DEFAULT LENGTH OF CHAR IS <1>. AND CHARACTER TYPE IS DEFAULT TYPE.

* SAME AS => DATA MYCHAR(1) TYPE C.

 

DATA MYSURNAME1(40TYPE C.

DATA MYSURNAME2 LIKE ZEMPLOYEES-SURNAME.

 

************************************************************************************

 

DATA ZNUMBER1 TYPE N.

 

************************************************************************************

 

** ManIplate STRING data type

 

DATATITLE(15TYPE C VALUE 'Mr',

      SURNAME(40TYPE C VALUE 'Smith',

      FORENAME(40TYPE C VALUE 'Joe',

      SEP,            " Default CHARATER type and lengrh is 1 (Space).

      DESTINATION(200TYPE C,

      SPACED_NAME(20TYPE C VALUE 'Mr  Joe  Smith',

      LEN TYPE I,

      SURNAME2(40),

      EMPL_NUM(10),

      TESTSTR TYPE STRING,

      MYSTRING(30TYPE C,

      A1(10TYPE C,

      A2(10TYPE C,

      A3(10TYPE C,

      SEP2(2TYPE 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 STRLENSURNAME ).

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.

WRITESURNAME2.

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.

WRITESURNAME2.

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: 'STRLENA1 ) , STRLENA2 ), STRLENA3 ). " Spaces are included

 

 

 

** SUBFIELDS ------------------------------------------------------------------------------------------

DATAINT_TELEPHONE_NUM(17TYPE C,

      COUNTRY_CODE(3TYPE C,

      TELEPHONE_NUM(14TYPE 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