Thursday, December 23, 2021

Embedded Expressions in ABAP 7.4

This in post will show you how we can use embedded expression in ABAP 7.4.

1. ALPHA
2. CASE
3. DATE
4. SIGN


1. ALPHA - ALPHA is used to add or remove leading zero into variable:

REPORT zembedded_exp NO STANDARD PAGE HEADING.

DATAlv_vbeln_in  TYPE vbeln,
      lv_vbeln_out TYPE vbeln.

SELECT SINGLE vbeln FROM vbak INTO @DATA(lv_vbeln).

"&... Remove leading zero

"&... Before ABAP 7.4
*CALL FUNCTION 'CONVERSION_EXIT_AINLT_OUTPUT'
*  EXPORTING
*    input  = lv_vbeln
*  IMPORTING
*    output = lv_vbeln_out.

"&... After ABAP 7.4
lv_vbeln_out |{ lv_vbeln ALPHA OUT }|.

ULINE.
WRITE:'Original Value:'lv_vbeln USING NO EDIT MASK.

WRITE:'ALPHA OUT value(Remove leading Zero):'lv_vbeln_out USING NO EDIT MASK.

ULINE.

"&... Add leading zero

"&... Befor ABAP 7.4
*CALL FUNCTION 'CONVERSION_EXIT_AINLT_INPUT'
*  EXPORTING
*    input  = lv_vbeln
*  IMPORTING
*    output = lv_vbeln_in.

"&... After ABAP 7.4
lv_vbeln_in |{ lv_vbeln_out ALPHA IN }|.

WRITE:'Original Value:'lv_vbeln_out USING NO EDIT MASK.

WRITE:'ALPHA IN value(Add Leading Zero):'lv_vbeln_in USING NO EDIT MASK.

Output: 















2. CASE - If you want to convert Upper case/ Lower case then we use case expression:
REPORT zembedded_exp NO STANDARD PAGE HEADING.

PARAMETERSp_val TYPE text256.

"&... Convert to upper case
DATA(lv_upper|{ p_val CASE UPPER }|.

"&... Convert to Lower case
DATA(lv_lower|{ p_val CASE LOWER }|.

"&... Display Original value(Unchange).
DATA(lv_raw|{ p_val CASE RAW }|.

ULINE.
WRITE'Original Value: 'p_val.

ULINE.
WRITE:'Convert to Upper case: 'lv_upper.

ULINE.
WRITE:'Convert to lower case: 'lv_lower.

ULINE.
WRITE:'RAW value(unchange value): 'lv_raw.

Output: 
Input value:









Result:

















3. DATE - Convert date to external format or country specific format:
REPORT zembedded_exp NO STANDARD PAGE HEADING.

TYPESBEGIN OF ty_date,
         desc    TYPE string,
         country TYPE land1,
         format  TYPE char3,
         date1   TYPE char10,
       END OF ty_date.

DATAlt_data TYPE TABLE OF ty_date.

lt_data[] VALUE #desc 'User settings DATE format' country ' '  format 'USR' )
                     desc 'RAW Date format'           country ' '  format 'RAW' )
                     desc 'ISO Date format'           country ' '  format 'ISO' )
                     desc 'India date format'         country 'IN' format ' ' )
                     desc 'US date format'            country 'US' format ' ' )
                     desc 'Canada date format'        country 'CA' format ' ' )
                     desc 'Andorra date format'       country 'AD' format ' ' )
                     desc 'South Korea date format'   country 'KR' format ' ' )
                     desc 'Philippines date format'   country 'PH' format ' ' )
                     desc 'South Africa date format'  country 'ZA' format ' ' )
                     desc 'Qatar date format'         country 'QA' format ' ' )
                     desc 'Japan date format'         country 'JP' format ' ' ).

LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<lfs_data>).

  IF <lfs_data>-country IS NOT INITIAL.
    SET COUNTRY <lfs_data>-country.

    <lfs_data>-date1 |{ sy-datum DATE ENVIRONMENT }|.

  ELSE.

    IF <lfs_data>-format 'USR'.
      <lfs_data>-date1 |{ sy-datum DATE USER }|.
    ELSEIF <lfs_data>-format 'RAW'.
      <lfs_data>-date1 |{ sy-datum DATE RAW }|.
    ELSEIF <lfs_data>-format 'ISO'.
      <lfs_data>-date1 |{ sy-datum DATE ISO }|.
    ENDIF.

  ENDIF.

ENDLOOP.

"&... Display data
cl_salv_table=>factory(
  IMPORTING
    r_salv_table   DATA(lref_salv)
  CHANGING
    t_table        lt_data ).

lref_salv->display).

Output: 





















4. SIGN - Sign Expression is used to display "-" or "+" sign to left or Right side.

REPORT zembedded_exp NO STANDARD PAGE HEADING.

DATAlv_left   TYPE char15,
      lv_leftp  TYPE char15,
      lv_lefts  TYPE char15,
      lv_right  TYPE char15,
      lv_rightp TYPE char15,
      lv_rights TYPE char15,
      lv_amt    TYPE netwr.

PARAMETERSp_amt TYPE netwr.

"&... Add Minus sign
lv_amt p_amt * -1.

"Add left sign without space, no "+"
lv_left   |{ lv_amt SIGN LEFT }|.

"If "-" sign not added then defualt add "+" to left side without space
lv_leftp  |{ p_amt SIGN LEFTPLUS }|.

"Blank space added for left side.
lv_lefts  |{ p_amt SIGN LEFTSPACE }|.

"Add Right sign without space, no "+"
lv_right  |{ lv_amt SIGN RIGHT }|.

"If "-" sign not added then defualt add "+" to Right side without space
lv_rightp |{ p_amt SIGN RIGHTPLUS }|.

"Blank space added for Right side.
lv_rights |{ p_amt SIGN RIGHTSPACE }|.

WRITE:'Left sign: 'lv_left USING NO EDIT MASK.
ULINE.
WRITE:'Left Plus sign: ' ,lv_leftp USING NO EDIT MASK.
ULINE.
WRITE:'Left space: ' ,lv_lefts USING NO EDIT MASK.
ULINE.
WRITE:'Right Sign: ' ,lv_right USING NO EDIT MASK.
ULINE.
WRITE:'Right Plus sign: 'lv_rightp USING NO EDIT MASK.
ULINE.
WRITE:'Right Space: ' ,lv_rights USING NO EDIT MASK.
ULINE.

Output: 

















SALV 8: Adding Custom PF STATUS in ALV

Note: First create Custom PF Status using below Link: https://sapabapc.blogspot.com/2022/08/create-custom-pf-status.html *&-------------...