Para obtener la cantidad de caracteres de un string utilizar:
data: v_cantidad type i,
v_texto(50) type c.
v_texto = 'Hola mundo'.
v_cantidad = STRLEN( v_texto ).
domingo, 30 de septiembre de 2012
SAVE_TEXT y CREATE_TEXT
Ejemplo de utilización de grabación de texto standard, si ya existe el texto utiliza la función save_text para modificarlo, si no existe utiliza la función create_text para crearlo.
FORM f_guarda_comentarios.
DATA: u_line TYPE STANDARD TABLE OF tline,
u_line_aux TYPE STANDARD TABLE OF tline,
x_line TYPE tline,
x_text TYPE tp_text,
x_header TYPE thead,
w_name TYPE tdobname.
CHECK NOT t_text[] IS INITIAL.
REFRESH u_line.
LOOP AT t_text INTO x_text.
CLEAR x_line.
x_line-tdline = x_text-line.
APPEND x_line TO u_line.
ENDLOOP.
CHECK NOT u_line[] IS INITIAL.
CHECK NOT v_vbeln IS INITIAL.
* Busca si ya existe el texto
w_name = v_vbeln.
* Rescata comentarios
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0002'
language = 'S'
name = w_name
object = 'VBBK'
TABLES
lines = u_line_aux
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc NE 0.
* Crea texto
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
fid = '0002'
flanguage = sy-langu
fname = w_name
fobject = 'VBBK'
TABLES
flines = u_line
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ELSE.
CLEAR x_header.
x_header-tdname = w_name.
x_header-tdid = '0002'.
x_header-tdspras = sy-langu.
x_header-tdobject = 'VBBK'.
x_header-mandt = sy-mandt.
* Guarda texto
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = x_header
savemode_direct = 'X'
TABLES
lines = u_line
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDIF.
CALL FUNCTION 'COMMIT_TEXT'.
ENDFORM. " F_GUARDA_COMENTARIOS
Obtener el nombre de los meses
Para obtener el listado de nombres de los meses utilizar la función:
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
language = sy-langu
* IMPORTING
* RETURN_CODE =
TABLES
month_names = t_month
* EXCEPTIONS
* MONTH_NAMES_NOT_FOUND = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
en la tabla interna t_month obtendremos el listado completo de los meses en el idioma sy-langu.
Signo menos a la izquierda
Para mover el signo menos de un número a la izquierda (ya que SAP utiliza por defecto el signo a la derecha). Utilizar la función:
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = p_amount.
(donde p_amount es la variable que contiene el número con el signo que queremos modificar).
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = p_amount.
(donde p_amount es la variable que contiene el número con el signo que queremos modificar).
viernes, 25 de mayo de 2012
ABAP - Sacar el separador decimal
Para eliminar el separador decimal o el de miles.
Hay que directamente ingresar que lo remplace por espacio (realmente lo eliminara).
w_cant = '100.00'.
REPLACE ALL OCCURRENCES OF '.' IN w_cant WITH space.
despues de esta sentencia nos quedara:
w_cant = '10000'. "Todo junto y sin separador
ABAP - Sacar decimales de un número
Si queremos sacar los decimales, primero copiar los datos a una variable tipo char, luego hacer split para separar los datos por el . o la , segun corresponda.
data: w_cant(6) type c,
w_scrap(6) type c.
SPLIT w_cant AT '.' INTO w_cant w_scrap.
domingo, 13 de mayo de 2012
MMPV - Desplazar periodo MM
Con la transacción MMPV es posible desplazar el período MM.
Apareceran para ingresar los datos de:
from company: A041 (ingresar la sociedad que corrresponda)
to company: A041 (ingresar la sociedad que corrresponda)
periodo: 08 (número que se desea abrir)
fiscal year: 2011 (año del periodo)
X check and close period
x Allow neg. qties in prev. per.
x Allow neg. vals in prev. per.
Suscribirse a:
Entradas (Atom)