Difference between revisions of "SAP ABAP 740"

From SapWiki
Line 81: Line 81:
 
  data(l_resp) =  cl_gui_frontend_services=>directory_exist( DIRECTORY = CONV #( l_dir ) ).
 
  data(l_resp) =  cl_gui_frontend_services=>directory_exist( DIRECTORY = CONV #( l_dir ) ).
  
 +
DATA l_date_c(8) VALUE '20200205'.
 +
 +
DATA(l_day) = cl_rs_time_service=>get_weekday( i_date = CONV #( l_date_c ) ).
 +
IF l_day > 4.
 +
  WRITE:/ 'Solo lunes a jueves'.
 +
  RETURN.
 +
ENDIF. 
 +
 +
===COND===
 +
DATA(time) = COND string( WHEN sy-timlo < '120000' THEN |{ sy-timlo TIME = ISO } AM|
 +
                          WHEN sy-timlo > '120000' THEN |{ CONV t( sy-timlo - 12 * 3600 ) TIME = ISO } PM|
 +
                          WHEN sy-timlo = '120000' THEN |High Noon|
 +
                          ELSE 'nada' ).
 
=== SWITCH ===
 
=== SWITCH ===
 
  DATA l_flag TYPE flag.
 
  DATA l_flag TYPE flag.
Line 87: Line 100:
 
                               ELSE 'Error'
 
                               ELSE 'Error'
 
                           ).
 
                           ).
 +
 
  DATA(l_number) = SWITCH string( sy-index WHEN 1 THEN 'uno'
 
  DATA(l_number) = SWITCH string( sy-index WHEN 1 THEN 'uno'
 
                                       WHEN 2 THEN 'dos'
 
                                       WHEN 2 THEN 'dos'
Line 103: Line 117:
 
   RETURN.
 
   RETURN.
 
  ENDIF.   
 
  ENDIF.   
 
*Uso de CONV para pasar ingresar I_DATE con tipo distinto a DATS, esto puede ser útil cuando se utilizan archivos o llamadas a Web Services.
 
DATA l_date_c(8) VALUE '20200205'.
 
 
DATA(l_day) = cl_rs_time_service=>get_weekday( i_date = CONV #( l_date_c ) ).
 
IF l_day > 4.
 
  WRITE:/ 'Solo lunes a jueves'.
 
  RETURN.
 
ENDIF. 
 
  
 
  ********************
 
  ********************

Revision as of 17:49, 30 March 2020

Ejemplos

VALUE

types ty_ra type RANGE OF vbak-auart.
data(ra_auart) = VALUE ty_ra(
                              ( low = 'Z1' sign = 'I' option = 'EQ' )
                              ( low = 'Z2' sign = 'I' option = 'EQ' )
                            ).
 select vbeln into table @data(LT_vbeln) from vbak where auart in @ra_auart.
DATA itab TYPE RANGE OF i. 
itab = VALUE #( sign = 'I'  option = 'BT' ( low = 1  high = 10 ) 
                                         ( low = 21 high = 30 ) 
                                         ( low = 41 high = 50 ) 
                           option = 'GE' ( low = 61 )  ).
data ra_ktart TYPE RANGE OF p2006-ktart.
CASE lw_solicitudes-subty.
  WHEN '0100'.
    ra_ktart = VALUE #( ( low = '01' sign = 'I' option = 'EQ' )
                           ( low = '02' sign = 'I' option = 'EQ' )                     ).
  WHEN '0300' OR '0301' OR '0309'.
    ra_ktart = VALUE #( ( low = '17' sign = 'I' option = 'EQ' ) ).
   WHEN '0901'.
     ra_ktart = VALUE #( ( low = '10' sign = 'I' option = 'EQ' ) ).
ENDCASE.

Manejo de strings

character_string = |{ a_numeric_variable }|.
character_string = |This resulted in return code { sy-subrc }|.
LO_OBJECT->STRING2XML( |{ converted_xml }{ xml_row-row_close_tag }| ).
v_var1 = 'Esto es'.
v_var2 = 'un'.
v_var3 = 'String'.
lv_result = v_var1 && v_var2 && v_var3.
[WIDTH     = len]
[ALIGN     = LEFT|RIGHT|CENTER|(val)]
[PAD       = c]
[CASE      = RAW|UPPER|LOWER|(val)]
[SIGN      = LEFT|LEFTPLUS|LEFTSPACE|RIGHT|RIGHTPLUS|RIGHTSPACE|(val)]
[EXPONENT  = exp]
[DECIMALS  = dec]
[ZERO      = YES|NO|(val)]
[XSD       = YES|NO|(val)]
[STYLE     =  SIMPLE|SIGN_AS_POSTFIX|SCALE_PRESERVING
             |SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO
             |SCALE_PRESERVING_SCIENTIFIC|ENGINEERING
             |(val)]
[CURRENCY  = cur]
[NUMBER    = RAW|USER|ENVIRONMENT|(val)]
[DATE      = RAW|ISO|USER|ENVIRONMENT|(val)]
[TIME      = RAW|ISO|USER|ENVIRONMENT|(val)]
[TIMESTAMP = SPACE|ISO|USER|ENVIRONMENT|(val)]
[TIMEZONE  = tz]
[COUNTRY   = cty] ...

l_dir = |including a \{ bracket|.
l_dir = |c:\\temp|.  "c:\temp'
TRY.
  WRITE: /   |string|.
  WRITE: /   |{ my_variable }|.
  WRITE: /   |i'm a { my_variable }!|.
  WRITE: /   |i'm number { my_number * 10 }!| .
  WRITE: /   |client 000 is called: | &&
             |{ clients[ mandt = '000' ]-mtext }|.
  WRITE: /   |i'm going to be in upper case: | &&
             |{ my_variable CASE = UPPER }|.
  WRITE: /   |function and formatting:| &&
             | date raw - { my_string->date( ) DATE = RAW }| &&
             | date iso - { my_string->date( ) DATE = ISO }|.
  CATCH cx_root.
ENDTRY.

CONV

data: l_dir type char200.
l_dir = 'c:\temp'.
data(l_resp) =  cl_gui_frontend_services=>directory_exist( DIRECTORY = CONV #( l_dir ) ).
DATA l_date_c(8) VALUE '20200205'.
DATA(l_day) = cl_rs_time_service=>get_weekday( i_date = CONV #( l_date_c ) ).
IF l_day > 4.
  WRITE:/ 'Solo lunes a jueves'.
  RETURN.
ENDIF.  

COND

DATA(time) = COND string( WHEN sy-timlo < '120000' THEN |{ sy-timlo TIME = ISO } AM|
                          WHEN sy-timlo > '120000' THEN |{ CONV t( sy-timlo - 12 * 3600 ) TIME = ISO } PM|
                          WHEN sy-timlo = '120000' THEN |High Noon|
                          ELSE 'nada' ).

SWITCH

DATA l_flag TYPE flag.
DATA(l_status) = SWITCH #( l_flag
                             WHEN 'X' THEN 'OK'
                             ELSE 'Error'
                         ).
DATA(l_number) = SWITCH string( sy-index WHEN 1 THEN 'uno'
                                      WHEN 2 THEN 'dos'
                                      WHEN 3 THEN 'tres'
                                      else 'nada' ).

Códigos Varios

DATA(l_day) = cl_rs_time_service=>get_weekday( i_date = sy-datum ).
IF l_day > 4.
  WRITE:/ 'Solo lunes a jueves'.
  RETURN.
ENDIF.   
IF cl_rs_time_service=>get_weekday( i_date = sy-datum ) > 4.
  WRITE:/ 'Solo lunes a jueves'.
  RETURN.
ENDIF.   
********************
DATA(components) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( 'T100' ) )->components.