Info completa de un Sapscript
Para ver toda la información de un Sapscript, es muy útil cuando queremos buscar algún campo en particular y no sabemos en que ventana se encuentra.
Costos de PS
Es algo bastante típico que te pidan reportes de PS usando costos, reales, comprometidos, etc.
Resumiendo todo dato real, comprometido y presupuesto esta en la COSP y RPSCO (resumen de COSP)
A estas tablas hay que acceder por el OBJNR del elemento imputado:
Si es un grafo -> AUFK-OBJNR
Si es una operación -> AFVC-OBJNR (se ingresa por hoja de ruta que la podemos tomar de la CAUFV con el Número de grafo)
Textos en inglés que me ayudaron a resolver el tema:
The actual,budget and commitment values are stored in the one table COSP.
The values differentiate with field VRGNG - "CO Business Transaction".
If the record has in this field text 'COIN' it means that values are "actual".
For example:
OBJNR PR00000101
GJAHR 2005
KSTAR 101101
VRGNG COIN
TWEAR USD
WTG001 100,00
WTG002 200,00
...
It means that the element PR0000101 has the 'actual' operations refering
the cost element 101101, with values: 100,00 USD in january 2005 and
200,00 USD in february 2005.
The next row in the table COSP, clould look like this:
OBJNR PR00000101
GJAHR 2005
KSTAR 101101
VRGNG RMBA
TWEAR USD
WTG001 100,00
WTG002 0,00
...
This means that there was a 'Purchase requisition' in january 2005
with decretation on object PR0000101.
And the next row, could be:
OBJNR PR00000101
GJAHR 2005
KSTAR 101101
VRGNG RMBE
TWEAR USD
WTG001 0,00
WTG002 150,00
And that means that in february 2005 there was a 'Purchase order'
with value 150,00 USD decretated on this object.
------------------------------------------------------------------------------
RMBA is the "Purchase Requisition" (created in transaction ME51n)
RMBE is the "Purchase Order" (created in transaction ME21n).
But both of these operations sum into commitment.
RKP1 stands for "Plan", but depending on configuration,
one of plan's versions can be the budget.
For example you can say, that plan in version 0 is the budget.
The best it would be, if you perform the check on your system:
1. Choose one order that you know it has represetaives data in your raport s_alr...
2. Open table AUFK, and write down the 'object number'- field OBJNR.
3. Open table COSP, and select data for OBJNR, that you recived in previous step.
4. Check what values do you have in the field VRGNG.
------------------------------------------------------------------------------
Status bar Standard
Si deseamos tener la status bar standard debemos setearla de la siguiente forma:
MODULE status_0100 OUTPUT.
SET PF-STATUS space.
SET PF-STATUS space.
ENDMODULE.
Tomar valores de un Pop Up
A veces en la impresión de algun documento u alguna otra cosa, necesitamos un corte de control para ingresar un valor y usarlo para algo.
En este ejemplo se muestra como haces para realizar esto:
report zjacprueba.
data: V_NUMERO like sval OCCURS 0 WITH HEADER LINE..
V_NUMERO-TABNAME = 'MARA'. "Tabla de donde queremos coger el campo
V_NUMERO-fieldname = 'MATNR'. "Campo que queremos pedir por pantalla
APPEND V_NUMERO.
V_NUMERO-TABNAME = 'MARA'.
V_NUMERO-FIELDNAME = 'MTART'.
APPEND V_NUMERO.
CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
* NO_VALUE_CHECK = ' '
POPUP_TITLE = 'Complete los campos'
START_COLUMN = '5'
START_ROW = '5'
* IMPORTING
* RETURNCODE =
TABLES
FIELDS = V_NUMERO.
* EXCEPTIONS
* ERROR_IN_FIELDS = 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.
LOOP AT V_NUMERO.
WRITE :/ V_NUMERO-VALUE. "Valor dado por pantalla.
ENDLOOP.
Buscador de User Exit por TCODE
*&---------------------------------------------------------------------*
*& Report ZBUSCO_EXIT *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZBUSCO_EXIT no standard page heading.
.
tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
tables : tstct.
data : jtab like tadir occurs 0 with header line.
data : field1(30).
data : v_devclass like tadir-devclass.
parameters : p_tcode like tstc-tcode obligatory.
select single * from tstc where tcode eq p_tcode.
if sy-subrc eq 0.
select single * from tadir where pgmid = 'R3TR'
and object = 'PROG'
and obj_name = tstc-pgmna.
move : tadir-devclass to v_devclass.
if sy-subrc ne 0.
select single * from trdir where name = tstc-pgmna.
if trdir-subc eq 'F'.
select single * from tfdir where pname = tstc-pgmna.
select single * from enlfdir where funcname =
tfdir-funcname.
select single * from tadir where pgmid = 'R3TR'
and object = 'FUGR'
and obj_name eq enlfdir-area.
move : tadir-devclass to v_devclass.
endif.
endif.
select * from tadir into table jtab
where pgmid = 'R3TR'
and object = 'SMOD'
and devclass = v_devclass.
select single * from tstct where sprsl eq sy-langu and
tcode eq p_tcode.
format color col_positive intensified off.
write:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(50) tstct-ttext.
skip.
if not jtab[] is initial.
write:/(95) sy-uline.
format color col_heading intensified on.
write:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
write:/(95) sy-uline.
loop at jtab.
select single * from modsapt
where sprsl = sy-langu and
name = jtab-obj_name.
format color col_normal intensified off.
write:/1 sy-vline,
2 jtab-obj_name hotspot on,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
endloop.
write:/(95) sy-uline.
describe table jtab.
skip.
format color col_total intensified on.
write:/ 'No of Exits:' , sy-tfill.
else.
format color col_negative intensified on.
write:/(95) 'No User Exit exists'.
endif.
else.
format color col_negative intensified on.
write:/(95) 'Transaction Code Does Not Exist'.
endif.
at line-selection.
get cursor field field1.
check field1(4) eq 'JTAB'.
set parameter id 'MON' field sy-lisel+1(10).
call transaction 'SMOD' and skip first screen.
*---End of Program
SAP NETWEAVER 2007s Trial
Despues de instalar el trial y de hacerlo funcionar.
El siguiente reporte nos genera la data del caso de vuelo SFLIGHT.
SAPBC_DATA_GENERATOR
PACKAGE del trial:
SAP_ABAPWD
SWDP_DEMO_TUTORIALS Demo Tutorials for Web Dynpro ABAP
Z_ABAP_BOOK Training and Demo Programs - ABAP Book
Z_FLIGHTMODEL_WS Web services for flight model
Z_NSPPOSTINST NSP Post Installation Steps
SPELL_AMOUNT - Texto de importes
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT = L_ENTRADA "Indicar importe
CURRENCY = 'EUR' "Indicar moneda
LANGUAGE = SY-LANGU "Indicar idioma texto
IMPORTING
IN_WORDS = L_RESULTADO
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
OTHERS = 3
L_entrada es el importe que quieras traducir a letras. El resultado lo tendras en L_RESULTADO. Más detallado:
L_RESULTADO-WORD = parte entera
L_RESULTADO-IN_WORDS = parte decimal.
ALV - Catalogo
ALV – Catálogo
ROW_POS:
Solo se informará este campo en el caso en el que el report de salida sea multilínea. Valores: 0, 1, 2 y 3.
COL_POS:
Solo es relevante en el caso que se quiera que la salida en el listado tenga un orden distinto a su posición en la tabla interna de datos.
TABNAME:
Nombre de la tabla interna que contiene los datos a mostrar en el listado.
REF_FIELDNAME:
Nombre del campo de la tabla del diccionario de datos al cual está referenciado el campo de la tabla interna (en el caso en el que lo esté).
CFIELDNAME:
Nombre del campo de la tabla interna de datos que contiene la moneda para el campo importe.
CTABNAME:
Este dato sólo es relevante informarlo para listados con más de una cabecera.
QFIELDNAME:
Nombre del campo de la tabla interna de datos que contiene la unidad de medida para el campo cantidad.
QTABNAME:
Este dato solo es relevante informarlo para listados con más de una cabecera.
OUTPUTLEN:
Siempre que el campo a mostrar en el listado de salida no esté referenciado a ningún campo de tabla del diccionario, se especificará aquí la longitud de salida del campo.
KEY:
El campo del registro actual se tomará como clave si se marca este campo. No podrá ocultarse en el listado de salida este campo.
KEY_SEL:
El campo será clave, pero podrá no salir en el listado de salida.
NO_OUT:
El campo no será mostrado en el listado de salida.
TECH:
Si se marca este campo, el campo actual no puede nunca salir en el listado de salida.
EMPHASIZE:
Para mostrar el campo de algún color.
HOTSPOT:
El campo aparece como hotspot.
FIX_COLUMN:
Si se marca, este campo aparecería como columna fija.
DO_SUM:
Se calculará la suma de este campo.
NO_SUM:
No se calculará la suma de este campo.
ICON:
El campo será mostrado como un icono.
SYMBOL:
El campo será mostrado como un símbolo.
JUST:
Justificación del campo. R= justificado a la derecha, L= justificado a la izquierda, C= centrado.
LZERO:
Mostrará los campos de tipo NUMC justificados a la derecha y sin ceros a la izquierda.
NO_SIGN:
Mostrará el campo sin signos.
NO_ZERO:
Suprime los 0’s.
EDIT_MASK:
Mostrará el campo con una máscara.
SELTEXT_L:
Se mostrará en la cabecera de la columna el texto largo de la definición del campo en la tabla del diccinario de datos.
SELTEXT_M:
Se mostrará en la cabecera de la columna el texto medio de la definición del campo en la tabla del diccinario de datos.
SELTEXT_S:
Se mostrará en la cabecera de la columna el texto corto de la definición del campo en la tabla del diccinario de datos.
DDICTXT:
Especificará mediante L, M y S el texto largo, medio o corto que se utilizará en los títulos de las cabeceras.
DATATYPE:
Se especificará cuando el campo de la tabla interna de datos no esté referenciado a ningún campo de tabla del diccionario de datos.
DDIC_OUTPUTLEN:
Especifica la longitud de salida. Para campos no referenciados al diccionario de datos.
SP_GROUP:
Si se marca este campo, el campo actual pertenecerá a un grupo que se especificará después en el parámetro IT_SPECIAL_GROUPS.
REPREP:
El campo será tomado como un criterio de selección
Campo password (oculto) en reporte
Si se desea mostrar un como de entrada como texto oculto, o como un campo de password (ej. carácteres '****') debe insertar un código similar al siguiente ejemplo:
PARAMETERS: P_PASSWD(8) MODIF ID MiTexto. <--- "MiTexto" es un ID de grupo
...
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'MiTexto'. "Comprueba si el ID es = al que queremos que se oculteSCREEN-INVISIBLE = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
END-OF-SELECTION.
Wildcard
Wildcard para busquedas.
z* Que comienzan con z
*sale* Que contienen el string sale, tal como rvsale07
*f+ Que contienen una f como el carácter penúltimo, tal como rmlogifa
rp+++sch Que comienzan con rp, terminan en sch y contienen tres caracteres
cualesquiera entre medio, tal como rp012sch o rpinvsch