*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Módulo Programador ABAP AVANZADO

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
1. VARIABLES.
========================================================
1.1
::> DECLARACION.
--------------------
> CARACTER:
DATA: nom_variable(cantidad_caracteres) TYPE C.
> ENTERO:
La longitud se define dinámicamente, no hace falta establecerla
DATA: nom_variable TYPE I.
> DECIMALES:
v_descuento_regimen TYPE p DECIMALS 2 "Campo Decimal con 2 digitos
a la DERECHA de la coma
v_dif_tbbprecal TYPE p DECIMALS 7 "Campo Decimal con 7 digitos
a la DERECHA de la coma
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
1.2
::> DECLARACION DE VARIABLES TIPADAS
-------------------------------------------
DATA:
P1 TYPE P VALUE '123456789012345'.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
1.3
::> LIMPIAR VARIABLE.
-----------------------
CLEAR nom_variable.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
1.4
::> MOVER EL CONTENIDO DE UNA VARIABLE.
----------------------------------------------
MOVE SPACE TO T_FKKCL_E113_01-XAKTP_E113.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
1.5
::> DECLARACION DE VARIABLE Y ASIGNACION
DE VALOR
------------------------------------------------------------
vl_numeros(10) TYPE c VALUE '0123456789'
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
1.6
::> DECLARACION DE CONSTANTES
-------------------------------------
CONSTANTS: c_0 TYPE i VALUE 0,
c_4 TYPE i VALUE 4,
c_1 TYPE i VALUE 1,
c_et001 TYPE z_fw_estado VALUE 'ET001',
c_et002 TYPE z_fw_estado VALUE 'ET002',
c_je001 TYPE z_fw_estado VALUE 'JE001',
c_je002 TYPE z_fw_estado VALUE 'JE002',
c_m TYPE c VALUE 'M',
c_i TYPE c VALUE 'I',
c_3 TYPE zsig_indicador VALUE '3',
c_detejer TYPE z_fw_entidad VALUE 'DETEJER',
c_testrun type c VALUE 'NO'.
CONSTANTS:
PI TYPE F VALUE '3.1415926535897932'.
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Módulo Programador ABAP AVANZADO

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
2. CADENAS DE CARACTERES.
========================================================
2.1
::> CONCATENACION:
-----------------------
Ejemplo1:
CONCATENATE '/iface/' sy-sysid(3) '/out/comm/'
INTO p_file_e.
Ejemplo2:
CONCATENATE sy-mandt bsik-bukrs bsik-belnr bsik-gjahr
into wobjectid.
NOTA: los espacios vacíos son eliminados
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.1.1
::> CONCATENACION CON PUNTERO (RESPETANDO
ESPACIOS VACIOS)
-------------------------------------------------------------------------
El método de puntero para el armado de cadenas permite mantener
espacios vacíos
y longitudes fijas en campos con longitudes variables.
DATA: vl_tdname(36) type c.
vl_tdname+0(3) = tg_draw-mandt.
vl_tdname+3(3) = tg_draw-dokar.
vl_tdname+6(25) = tg_draw-doknr.
vl_tdname+31(2) = tg_draw-dokvr.
vl_tdname+33(3) = tg_draw-doktl.
* Explicacion: vl_tdname+posicion(cant caracteres) = variable.
EJECUCIÓN:
Para los valores:
tg_draw-mandt = '099'
tg_draw-dokar = 'DGT'
tg_draw-doknr = '2130/2007-00016' " Se observa que viene con menos
de 25 chars, pero el puntero posterior reserva el lugar
tg_draw-dokvr = '00'
tg_draw-doktl = '000'
El RESULTADO obtenido es:
vl_tdname conteniendo: '099DGT2130/2007-00016 00000'
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.2
::> CANTIDAD DE CARACTERES DE UNA
CADENA
--------------------------------------------------
STRLEN(cadena_caracteres).
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.3
::> BUSCAR CARACTERES DENTRO DE UNA
CADENA DE CARACTERES
-----------------------------------------------------------------------
SEARCH f FOR g.
Busca el contenido de f dentro de la cadena G
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.4
::> ELIMINAR ESPACIOS EN BLANCO
--------------------------------------
CONDENSE [NO-GAPS].
- Elimina espacios en blanco al inicio de la cadena.
- Elimina ceros a la izquierda si se trata de un entero
- Si dentro de la cadena hay mas de un espacio en blanco juntos, deja
uno solo
Ejemplo:
DATA NAME (30).
NAME(10) = ' Dr.',
NAME+10(10) = 'Michael',
NAME+20(10) = 'Hofmann'.
CONDENSE NAME.
WRITE NAME.
Devuelve:
Dr. Michael Hofmann
>INFO_ La opc NO-GAPS Elimina TODOS los espacios en blanco.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.5
::> PASAR CADENA A MAYUSCULAS Y A
MINUSCULAS
------------------------------------------------------
Pasar cadena a mayúsculas:
TRANSLATE c TO UPPER CASE.
Pasar cadena a minúsculas:
TRANSLATE c TO LOWER CASE.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.6
::> REEMPLAZAR OCURRENCIAS
---------------------------------
Reemplaza todas las ocurrencias en una tabla
REPLACE ALL OCCURRENCES OF 'á' IN T_MAKT-MAKTX WITH 'a'
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.7
::> TOMAR XXX CARACTERES DE UNA CADENA
(TRUNCAMIENTO de cadena)
-----------------------------------------------------------------------------
> Metodo 1
----------
* Tomar los 8 primeros caracteres
*A vl_strno_extract que tiene 8 le mando el contenido de una variable
con 10, entonces se trunca solita
MOVE vl_strno TO vl_strno_extract.
> Metodo 2
----------
Concatenacion y toma los primeros 6 caracteres de una cadena y lo almacena
en otra.
CONCATENATE 'E' p_zdtctapol_zd_exp_e_pol(6) INTO vl_cod_usr.
> Metodo 3
----------
Tomar los utimos 8 caracteres de una cadena y almacenarlo en otra.
vl_pernr posee 10 chars.
Se le indica que a partir del 2do char tome 8.
vl_pernr_8 = vl_pernr+2(8).
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.8
::> OPERADORES DE COMPARACION
---------------------------------------
* Operadores de comparacion:
* En la comparación "c1 op c2"
-> CO (Contains Only):
c1 contains only characters from the string c2.
'ABCDE' CO 'XYZ' is false; SY-FDPOS = 0.
'ABCDE' CO 'AB' is false; SY-FDPOS = 2.
'ABCDE' CO 'ABCDE' is true; SY-FDPOS = 5.
> Contrario: CN (Contains Not only):
-> CA (Contains Any):
c1 contains at least one character from the string c2.
'ABCDE' CA 'CY' is true; SY-FDPOS = 2.
'ABCDE' CA 'XY' is false; SY-FDPOS = 5.
> Contrario: NA (contains Not Any):
-> CS (Contains String):
c1 contains the character string c2.
'ABCDE' CS 'CD' is true; SY-FDPOS = 2.
'ABCDE' CS 'XY' is false; SY-FDPOS = 5.
'ABAAA' CS 'AB ' is true; SY-FDPOS = 0.
' ABC' CS ' AB' is true; SY-FDPOS = 1.
'ABC DEF' CS ' ' is true; but: SY-FDPOS = 0,
> Contrario: NS (contains No String)
-> CP (Contains Pattern):
The complete string c1 matches the pattern c2 (c1 "matches"
c2).
'ABCDE' CP '*CD*' is true; SY-FDPOS = 2.
'ABCDE' CP '*CD' is false; SY-FDPOS = 5.
'ABCDE' CP '++CD+' is true; SY-FDPOS = 0.
'ABCDE' CP '+CD*' is false; SY-FDPOS = 5.
'ABCDE' CP '*B*D*' is true; SY-FDPOS = 1.
> Contrario: NP (contains No Pattern)
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.9
::> COMPARACION DE PATRONES
----------------------------------
* Una variable contra el patron xxxNTNNN
vl_numeros(10) TYPE c VALUE '0123456789'.
IF vl_strno_extract+3(1) CO vl_numeros AND " Compara el 4to caracter
si es un numero
vl_strno_extract+4(1) = 'T' AND " Compara si el 5to caracter es
una 'T'
vl_strno_extract+5(3) CO vl_numeros. " Compara 6to - 7mo y 8vo
cararacter si son numeros
* INTERPRETACIÓN: nombre_varable+posicion(cantidad_de_caracteres_a_evaluar)
* NOTA: para comparar si es caracter se puede usar la variable de systema
sy-abcd
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.9.1
::> COMPARACIÓN DE PATRONES
UTILIZANDO UNA ESTRUCTURA (y comodines unix)
---------------------------------------------------------------------------------------
* Armado del patrón que formará el nombre del archivo
que va a leer.
DATA: BEGIN OF wl_patron,
sep1(1) VALUE '_', " separador
hor(10) VALUE '++++++++++', " hor del micro
sep2(1) VALUE '_', " separador
fecha(8) VALUE '++++++++', " fecha
tipofich(7) VALUE '_DA.txt', " Tipo de Fichero
END OF wl_patron.
CONCATENATE datos
wl_patron-sep1
wl_patron-hor
wl_patron-sep2
wl_patron-fecha
wl_patron-tipofich INTO vl_patron.
IF tg_result-line+57 CP vl_patron.
* PROCESAMIENTO
ENDIF.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
2.10
::> CAMBIAR EL VALOR DE UN CARACTER
EN UNA CADENA
------------------------------------------------------------
vl_strno_extract+4(1) = 'A'.
* INTERPRETACIÓN: Asigna el caracter 'A' a donde se lo indica
el puntero ( en el 5to caracter )
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Módulo Programador ABAP AVANZADO

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
3. NUMERICOS.
========================================================
3.1
::> COMPLETAR CEROS A LA IZQUIERDA.
-------------------------------------------
* Completo con ceros a la izquierda el campo doknr
PERFORM ffnc_xx_conv_ceros_izq
USING doknr
CHANGING doknr.
*&---------------------------------------------------------------------*
*& Form ffnc_xx_conv_ceros_izq
*&---------------------------------------------------------------------*
* Completa con ceros a la izquierda un campo
*----------------------------------------------------------------------*
FORM ffnc_xx_conv_ceros_izq USING pe_campo
CHANGING ps_campo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = pe_campo
IMPORTING
output = ps_campo.
ENDFORM. " ffnc_xx_conv_ceros_izq
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
3.2
::> SIGNO DE UN NUMERO
---------------------------
SIGN ( variable ).
Devuelve 1 si variable > 0
Devuelve 0 si variable = 0
Devuelve -1 si variable < 0
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
3.3
::> REDONDEOS
-----------------
CEIL (variable_redondear)
Devuelve el entero mas bajo, osea que redondea para abajo.
FLOOR (variable_redondear)
Devuelve el entero mas alto, o sea que redondea para abajo.
[ Subir]
**--------------------------------------------------------------**
Centro
de capacitacion SAP
3.4
::> TOMAR LA PARTE ENTERA Y LA PARTE
DECIMAL DE UN NUMERO
--------------------------------------------------------------------
TRUNC(variable_con_decimales)
Toma la parte entera.
FRAC(variable_con_decimales)
Toma la parte decimal.
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* :: La mejor capacitación en SAP está a tu alcance. :: ESAP Posee el más avanzado y efectivo sistema de Capacitación SAP. Conocelo!

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
4. FECHAS.
========================================================
4.1
::> OBTENER EL PRIMER DÍA DEL
MES DE SELECCIÓN.
------------------------------------------------------
* Obtener el primer día del mes de selección.
CONCATENATE vl_fecha_inicio(6) '01' INTO vl_fecha_inicio.
Ejemplo:
antes: 20070130 " 30 de enero 2007
lo convierte en : 20070101 " 01 de enero 2007
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* ::Te invitamos a conocer nuestras carreras :: Carrera Consultor ABAP - Modulo Programador ABAP INICIAL

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
------------------------------------------------------------------------
5. CONSTANTES.
========================================================
5.1
::> DEFINICIÓN DE CONSTANTES
----------------------------------
CONSTANTS:
PI TYPE F VALUE '3.1415926535897932'.
CONSTANTS: c_0 TYPE i VALUE 0,
c_4 TYPE i VALUE 4,
c_1 TYPE i VALUE 1,
c_et001 TYPE z_fw_estado VALUE 'ET001',
c_et002 TYPE z_fw_estado VALUE 'ET002',
c_je001 TYPE z_fw_estado VALUE 'JE001',
c_je002 TYPE z_fw_estado VALUE 'JE002',
c_m TYPE c VALUE 'M',
c_i TYPE c VALUE 'I',
c_3 TYPE zsig_indicador VALUE '3',
c_detejer TYPE z_fw_entidad VALUE 'DETEJER',
c_testrun type c VALUE 'NO'.
*------------------------------------------------------------------------------* *------------------------------------------------------------------------------* :: La mejor capacitación en SAP está a tu alcance. :: ESAP Posee el más avanzado y efectivo sistema de Capacitación SAP. Conocelo!

*------------------------------------------------------------------------------* *------------------------------------------------------------------------------*
|