27
Programación ABAP Índice:

HR- Programación ABAP - Tips

Embed Size (px)

Citation preview

Page 1: HR- Programación ABAP - Tips

Programación ABAP

Índice:

Page 2: HR- Programación ABAP - Tips

Programación ABAP

Introducción:

Estas páginas pretender servir de orientación y ayuda para aquellos programadores que no estén habituados al módulo de Recursos Humanos, ya que la programación de dicho módulo tiene algunas diferencias con el resto de módulos de SAP.

También se incluyen un conjunto de funciones que posiblemente sean en su mayoría conocidas pero que se ha considerado que pueden resultar de utilidad.

Otro de los puntos importantes para los programadores HR es la confidencialidad de datos, esto es muy importante para todos los módulos de SAP y en especial para HR ya que los datos a los que se tiene acceso son muy delicados y es muy importante para todos nuestros clientes que seamos muy serios con este tema.

Infotipos:

Un infotipo es: Una agrupación de datos homogénea en la que se recogen los datos del empleado, ya sea su posición en la empresa, sus datos fiscales, sus datos personales, etc.

Las transacciones para tratar los infotipos son :- PA20 Visualizar.- PA30 Modificar.- PA40 Medidas de personal.

La tabla Pannnn (Registro maestro de personal Infotipo nnnn) esta compuesta por:

- Campo MANDT.- Estructura PAKEY (Clave para datos maestros de personal) en la

que se guardan los datos fijos de todos los infotipos como: número de personal y fechas de validez.

- Estructura PSHD1 (Datos maestros de personal Campos de gestión) en esta se guardan datos de gestión como: fecha de la última modificación y usuario que la realizo.

- Estructura PSnnnn (Registro maestro de personal Infotipo nnnn) Esta es propia de cada uno de los infotipos.

- Estructura CI_Pnnnn esta no estará creada en un inicio, nosotros la podemos crear para ampliar el infotipo estándar y que nuestra ampliación sea siempre respetada por SAP.

Para leer los datos de estas tablas existen macros y funciones, algunas de las cuales están incluidas en este documento, pero ello no que implica que no se puedan hacer selects normales, generalmente

Page 3: HR- Programación ABAP - Tips

Programación ABAP

suelen ser para traer campos concretos no todo el registro y suelen ser select sigel.Cada intotipo tiene también su estructura Pnnnn que es idéntica a la tabla Pannnn pero que no contiene el campo mandante.

El Modulpool del Infotipo nnnn es MPnnnn00:- Generalmente como mínimo tiene dos dynpros la 2000 es la

normal y la 3000 es la del resumen.

Medidas de personal: Para no tener que acceder a cada infotipo individualmente y registrar los datos pertinentes, el sistema puede agrupar los infotipos más importantes en infogrupos a los que se accederá mediante las medidas de personal.Los procedimientos de personal, tales como la contratación de un empleado, el cambio organizativo o la baja de un empleado, se representan mediante medidas de personal individuales en la Gestión de personal. Cada medida de personal esta relacionada con un infogrupo.El infotipo 0000 guarda la medidas de personal de cada empleado.

Infogrupos: Agrupa los infotipos más importantes con el fin de guiar al usuario en el tratamiento de los datos del empleado y se ejecuta mediante de una medida de personal.Cada infogrupo contiene los infotipos que se deben actualizar para registrar la medida. Los infotipos se recuperan sucesivamente, de manera que puede actualizarlos. Por ejemplo, en la medida de personal Contratación el sistema presentará automáticamente todos los infotipos en los que se deben efectuar entradas para contratar a un empleado para que el usuario pueda actualizarlos. Esto garantiza que todos los datos básicos se registren en el sistema. Esta función facilita también la introducción de los datos de forma consistente, ya que no es necesario acceder a cada uno de los infotipos de la medida de personal individualmente.

Parar crear o ampliar infotipos: Se usan las transacciones PM01(Infotipos de PA), PPCI(Infotipos PD). Cuando creamos un infotipo con una de estas transacciones, él ya nos crea buena parte de lo necesario para su funcionamiento como pueden ser las dynpros, algunos modulos standars…

Page 4: HR- Programación ABAP - Tips

Programación ABAP

Get pernr:

Lectura de la tabla pernr que pertenece a la base de datos lógica PNP. Esta instrucción rellena todas las tablas definidas como infotypes. Si se quiere que no se rellene el infotype ha de ser node n.

Page 5: HR- Programación ABAP - Tips

Programación ABAP

Macros:

HR-READ-INFOTYPE pernr nnnn pnnnn begda endda.Selecciona los registros del infotipo que tengan como mínimo un día dentro de la fechas de selección y los pone en la tabla interna(no necesita la BD lógica, pero las tablas internas han de ser definidas de tipo pnnnn y no pannnn).Pernr: Número de personal a seleccionar.nnnn: Número del infotipo.Pnnnn: Tabla interna.Begda: fecha inicio de la selección.Endda: fecha fin de la selección.

RP_PROVIDE_FROM_LAST Pnnnn Subtipo Pn-begda Pn-endda.Pone en cabecera el último registro válido dentro del período de selección de datos leídos de la base de datos.

RP_PROVIDE_FROM_ FRST Pnnnn Space Pn-begda Pn-endda.Se pone en cabecera el primer registro válido dentro del período de selección de datos leídos de la base de datos.

Pnnnn: Tabla interna en la que se han guardado los datos leídos de la base de datos (generalmente con el evento Get Pernr).Subtipo: El subtipo que nos interesa seleccionar. En el caso de no existir subtipos o que no nos interesen en el subtipo pondremos Space.Pn-begda: Fecha inicio de nuestra selección.Pn-endda: Fecha fin de nuestra selección.

RP-READ-T001P p0001-werks p0001-btrtl reacción.Lee el registro que correspondiente de la tabla de Sociedades.

P0001-werks: división de personal.P0001-btrtl: subdivisión de personal.Reacción: en caso de que el sistema no encuentre los datos correspondientes:

X = interrupción del report acompañada de un mensaje de error.

SPACE = para SY-SUBRC se indica el valor 4.

RP-READ-ALL-TIME-ITY begda endda.Lee e inserta en la tablas definidas como infotipos de tiempos(p2001,…,p2999) todos los registros que tengan como mínimo 1 día dentro de las fechas de selección.

Page 6: HR- Programación ABAP - Tips

Programación ABAP

Funciones SAP:

ABAP_DOCU_DOWNLOAD:

Download ABAP documentation in HTML format.

APPL_LOG_DELETE:

With this function module you delete logs in the database according to specified selection conditions.

APPL_LOG_DISPLAY:

With this function module you can analyze logs in the database.

APPL_LOG_DISPLAY_INTERN:

With this function module you can analyze logs in local memory, e.g. when you have only collected log records at runtime and do not want to write to the database.

APPL_LOG_INIT:

This function module checks whether the specified object or sub-object exists and deletes all existing associated data in local memory.

APPL_LOG_READ_DB:

With this function module you read the log data in the database for an object or sub-object according to specified selection conditions.

APPL_LOG_READ_INTERN:

With this function module you read all log data whose log class has at least the specified value, from local memory, for the specified object or sub-object.

APPL_LOG_SET_OBJECT:

With this function module, you create a new object or sub-object for writing in local memory. With a flag you can control whether the APPL_LOG_WRITE_... messages are written in local memory or are output on the screen.

Page 7: HR- Programación ABAP - Tips

Programación ABAP

BDC_OBJECT_DELETE:CALL FUNCTION 'BDC_OBJECT_DELETE' EXPORTING queue_id = P_QID.

Borra el BI. En este caso también necesitamos la cola.

BDC_OBJECT_READ:SELECT SINGLE qid FROM APQI into p_qid WHERE GROUPID EQ MAPENAME.

CALL FUNCTION 'BDC_OBJECT_READ' EXPORTING QUEUE_ID = P_QID TABLES DYNPROTAB = BDCDATA.

Esta función recupera la sesión de BI. Necesita la cola del BI (QUID Cola Identificación (clave unívoca)) para recuperarlo a la tabla DYNPROTAB.El campo QUID(cola) esta en la tabla APQI y para encontrado usamos el nombre del juego de datos que se guarda en el campo GROUPID. Si la tabla bdcdata no es inicial es que hemos podido recuperar el juego de datos.

CONVERT_TO_LOCAL_CURRENCY: CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' EXPORTING date = '20020101' foreign_amount = p_valor foreign_currency = p_ori local_currency = p_cal IMPORTING local_amount = p_valor.

Convierte el importe que se pasa a foreign_amount de la moneda p_ori a la moneda p_cal y nos lo retorna por local_amount.

DAY_IN_WEEK:CALL FUNCTION 'DAY_IN_WEEK' EXPORTING datum = P_DIA

Page 8: HR- Programación ABAP - Tips

Programación ABAP

IMPORTING WOTNR = L_DIA_SEMANA..

Como parámetro de entrada tiene una fecha y de salida el día de la semana que le corresponde (en número). La función 'FIMA_X_DAY_IN_MONTH_COMPUTE' trae el día y la semana.

HR_READ_INFOTYPE:Call function ‘HR_READ_INFOTYPE’ Exporting Pernr = <persona>

Infty = ‘nnnn’Begda=<fecha_ini>Endda=<fecha_fin>

ImportingSubrc=<return>

TablesInfty_tab=<pnnnn>.

Selecciona los registros del infotipo que tengan al menos un día dentro de la fechas de selección y los pone en la tabla interna (no necesita la BD lógica), realiza una verificación de autorización.‘nnnn’: Número del infotipo a cargar.Pnnnn: tabla interna que a de estar definida como Infotypes.

MONTH_NAMES_GET:data: begin of meses occurs 0. include structure t247.data: end of meses.

CALL FUNCTION 'MONTH_NAMES_GET' EXPORTING LANGUAGE = SY-LANGU TABLES month_names = meses.

Nos devuelve en la tabla meses los nombres de todos los meses en el idioma que se le indique.

POPUP_TO_INFORM:CALL FUNCTION 'POPUP_TO_INFORM' EXPORTING titel = 'Titulo del mensaje.' txt1 = 'Mensaje informativo '

Page 9: HR- Programación ABAP - Tips

Programación ABAP

txt2 = 'aparece en una pantalla'.

Aparece en pantalla un popup informativo. POPUP_TO_CONFIRM:

CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING TEXT_QUESTION = ‘Pregunta’ TEXT_BUTTON_1 = ‘Texto del primer botón’ TEXT_BUTTON_2 = ‘Texto del segundo botón’ DISPLAY_CANCEL_BUTTON = space IMPORTING ANSWER = resp.

Nos muestra un Popup por pantalla y espera una respuesta que guarda en resp si a display_cancel_button le damos el valor Space no aparece el botón de cancelar, si no le decimos nada por defecto aparece un botón para cancelar.De este tipo hay varias funciones otro ejemplo serias ‘POPUP_TO_DECIDE_INFO’.

RP_FILL_WAGE_TYPE_TABLE:

DAta: begin of ZPPBWLA occurs 0. include STRUCTURE PBWLA.data: end of ZPPBWLA.

CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE' EXPORTING APPLI = 'E' BEGDA = p0008-begda ENDDA = '99991231' TCLAS = 'A' pernr = pernr-pernr SUBTY = '0 ' DLSPL = 'X' tables ppbwla = ZPPBWLA

Trae a la tabla ZPPBWLA todos los cc-nóminas con sus importes del infotipo 0008, en este caso, ya sean directos o indirectos dichos cc-nóminas. Puede traer otros infotipos.La función RP_EVALUATE_INDIRECTLY_P0008 es especifica para el intotipo 0008 y funciona de forma similar.

RP_GET_CURRENCY:

Page 10: HR- Programación ABAP - Tips

Programación ABAP

CALL FUNCTION 'RP_GET_CURRENCY' EXPORTING MOLGA = '04' BEGDA = sy-datum IMPORTING WAERS = moneda.

Le pasamos el agrupador de países y la fecha y nos trae la moneda que le corresponde.

RP_LAST_DAY_OF_MONTHS:call function 'RP_LAST_DAY_OF_MONTHS' exporting day_in = p_begda importing last_day_of_month = p_endda exceptions day_in_no_date = 1 others = 2.Le pasamos una fecha p_begda y nos devuelve el último día de ese mes en la variable p_endda.

WS_DOWNLOAD:CALL FUNCTION 'WS_DOWNLOAD' EXPORTING filename = downfile filetype = 'ASC' TABLES data_tab = rg.

Pasa los datos de la tabla interna RG al fichero que se le indica en el filename con el tipo filetype.

WS_FILENAME_GET:

CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_filename = ' ' def_path = 'C:' mask = maske mode = 'O' title = 'Seleccione un archivo' IMPORTING

Page 11: HR- Programación ABAP - Tips

Programación ABAP

filename = downfile EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5.

Esta función nos mostrara pantalla propia de Windows para seleccionar un fichero.Downfile es el nombre del fichero y Maske es el tipo de fichero que queremos buscar.

WS_UPLOAD:call function 'WS_UPLOAD' EXPORTING filename = p_file filetype = 'ASC' TABLES data_tab = tabla

Pasa los datos del fichero a la tabla.

Page 12: HR- Programación ABAP - Tips

Programación ABAP

Autorizaciones:

Verificación de autorización para comandos SQL.Select * from pannnn

Where pernr eq <pernr> and begda…

and endda…

AUTHORITY-CHECK object ‘P_ORGIN’id ‘INFTY’ field <infotipo>id ‘SUBTY’ field <subtipo>id ‘AUTHC’ DUMMYid ‘PERSA’ DUMMYid ‘PERSG’ DUMMYid ‘VDSK1’ DUMMY.

Después de hacer la selección de un infotipo con un comando SQL podemos chequear que el usuario tenga autorizaciones. Si no tiene autorización el sy-subrc <> 0.

Función de autorizaciones.CALL FUNCTION 'GET_AUTH_VALUES' EXPORTINGOBJECT1 = ‘parámetro’* OBJECT2 = ' '* OBJECT3 = ' '* OBJECT4 = ' '* OBJECT5 = ' '* OBJECT6 = ' '* OBJECT7 = ' ' USER = usuario TABLES VALUES = I_tab* EXCEPTIONS* USER_DOESNT_EXIST = 1* OTHERS = 2 .

Retorna todas las autorizaciones de la persona para los objetos de autorización solicidados.Parámetro: Objeto de autorización que se quiere consultar (Ej.: 'P_ORGIN' (Autorizaciones de PA)).I_tab: Tabla en la que nos retornara las autorizaciones ha de tener la estructura de la tabla del diccionario US335.

Page 13: HR- Programación ABAP - Tips

Programación ABAP

Usuario: Usuario de la persona que ejecuta el programa(sy-uname).

PROVIDE: Loop a una tabla interna definida como infotypes.- Provide * from pnnnn

Between pn-begdaAnd pn-endda.

----------- Endprovide.

Loop a la tabla pnnnn teniendo en cuenta la fechas de selección.

- Provide * from p0001 * from p0002 * from pnnnn between pn-begda and pn-endda.------------------ Endprovide.Cada partición de uno de los infotipos involucrados conduce a una partición del período de selección. En la cabecera de cada una de las tablas tendremos por cada uno de las pasadas su registro con las fechas más restrictivas de la tabla que están implicadas en el provide.

- Provide * from p0002 * from p0006 between pn-begda and pn-endda where p0006-subty = <n>.------------------

Endprovide.Igual que el anterior pero el proceso se limitan los cortes de uno de los infotipos al subtipo indicado.

Page 14: HR- Programación ABAP - Tips

Programación ABAP

Otros:

Selección de datos dependientes del tiempo: En HR es muy importante tener en cuenta la fechas ya que casi todos los datos de las tablas tiene unos periodos de validez.

RP_PROVIDE_FROM_LAST P0001 Subtipo Pn-begda Pn-enddaLa tabla t500c contiene la clave de moneda para cada país.- Buscamos la moneda que tenia a fecha de inicio del infotipo:Select single * from t500c

Where LAND1 eq 'ES'

and begda le p0001-begda

and endda ge p0001-begda.

- Buscamos las monedas que ha tenido durante la validez del infotipo:

Select * from t500c into table itab

where land1 eq ‘ES’ and begda le p0001-begda and endda ge p0001-endda.- Buscamos las monedas que ha tenido sin contar la validez del

infotipo:Select * from t500c into table itab where land1 eq ‘ES’ begda lt p0001-begda and endda gt p0001-endda.

Estructuras repetidas en infotipos:- Área de trabajo:data: begin of vacaciones, uar like p0005-uar01,

uan like p0005-uan01,ube like p0005-ube01,uen like p0005-uen01,uab like p0005-uab01,

end of vacaciones.- Lectura del registro.- Carga de los datos en la tabla que hemos creado

do 6 times varying vacaciones from p0005-uar01 next p0005-uar02.

Page 15: HR- Programación ABAP - Tips

Programación ABAP

--------enddo.

Se repite 6 veces ya que es el número de veces que se repiten la estructura en el infotipo.La estructura de repetición del infotipo 5 se segmenta y se pone a disposición den bloques en el área de trabajo.Con from <nombre de campo> se marca el punto de arranque en la memoria principal.Next <nombre de campo> determina el incremento para los siguientes puntos de arranque.

Lectura del Cluster de nómina:Es donde están guardados todos los datos de la nómina del empleado. Está compuesto de distintas estructuras.En primer lugar se ha de leer la RGDIR del empleado que representa la raíz del árbol del cual cuelgan el resto de estructuras, para ello tenemos unas macros.cd-key-pernr = pernr.rp-imp-c2-cd-nobuff.Si no se ha producido ningún error ( rp-imp-cd-subrc = 0 ), leemos la tabla que nos interese (las macros pueden depender de la tabla que se quiera leer, este ejemplo es para la RT).rx-key-pernr = pernr.unpack rgdir-seqnr to rx-key-seqno.rp-imp-c2-re.

Esto hay que hacerlo por cada uno de los periodos(registros) de la RGDIR que se quiera leer.sort rgdir by fpper descending inper descending fpend descending. loop at rgdir where fpbeg <= pn-begda and fpend >= pn-endda and SRTZA = 'A'.

fpbeg: Fecha inicio.fpend: Fecha fin.srtza: Estado de la nomina (A: Actual).Ya tenemos la RT cargada para poder leerla.Podemos hacer un loop o lo que nos interese con ella.Estas macros necesitan unas variables que están definidas en unos includes (para el caso anterior).RPPPXD10RPPPXD00RPC2RX00RPC2REE0

Page 16: HR- Programación ABAP - Tips

Programación ABAP

RPC2CD00RPPPXM00

Lectura del Cluster de nómina simulada:En este caso lo que vamos a hacer es lanzar nosotros una simulación de nómina (lanzarla en proceso de test) y leer el resultado. Este resultado se guarda internamente en la base de datos pero no en el cluster del empleado.

data: begin of i_rt occurs 150,include structure pc207.

data: end of i_rt.

* Preparamos lo que nos hace falta para luego recuperar la rt simulada clear l_clave. concatenate '%' itab_pernr-pernr l_periodo l_ejercicio '%' into l_clave. concatenate 'RT' itab_pernr-pernr l_periodo l_ejercicio sy-uzeitinto l_area_memoria_rt.

select srtfd aedat into (l_srtfd, l_aedat) from indx where relid eq 'ST' and srtfd like l_clave and srtf2 eq 0. endselect. wa_indx-aedat = sy-datum.

export i_rt from i_rt to database indx(st) from wa_indx id l_area_memoria_rt.

* Lanzamos el rpcalce0 para cada empleado SUBMIT RPCALCE0 WITH PNPXABKR = L_ABKRS WITH PNPPERNR-low = itab_pernr-pernr WITH SCHEMA = 'ZFIN'

WITH TST_ON = 'X' with PNPTIMRA = 'X' with PNPPABRP = l_periodo with PNPPABRJ = l_ejercicio

exporting list to memory with PRT_PROT eq ' ' with ECALLED = 'X'

Page 17: HR- Programación ABAP - Tips

Programación ABAP

* via selection-screen AND RETURN.

* Prepara los datos para recuperar la rt simulada select srtfd aedat into (l_srtfd, l_aedat) from indx where relid eq 'ST' and srtfd like l_clave. if l_srtfd cp 'RT*'. l_area_memoria_rt = l_srtfd. endif. endselect.

* Recuperamos la rt simulada import i_rt = i_rt from database indx(st) id l_area_memoria_rt to wa_indx.

Para que esto funcione hay que mandar la RT a la tabla INDX cuando se este simulando.

Llamadas a subrutinas en tiempo de ejecución: En la tabla t596f se guardan el procedimiento(subrutina) (t596f-modna) y el programa en el que esta(t596f-pgmna).Perfom (t596f-modna) in program (t596f-pgmna) using …

Lectura de características: La función ‘HR_FEATURE_BACKFIELD’ lee características, cada característica necesita una estructura determinada esta estará en la tabla T549D(Índice de características) en el campo STRUC. La transacción para poder ver las características es PE03.

move-corresponding psyst to pme17.move-corresponding t001p to pme17.call funtion ‘HR_FEATURE_BACKFIELD’

exportingfeature = ‘PLOGI’struc_content = pme17

importingback = l_back.

Page 18: HR- Programación ABAP - Tips

Programación ABAP

Llamamos a la característica plogi con la estructura pme17 anteriormente rellenada y nos retorna el valor en l_back. (El tipo de valor de retorno depende de la característica).

Ordenes de transportes:

Es importante tener mucho cuidad cuando se incluye un programa en una orden de transporte ya que sino luego nos puede causar muchos problema.- En primer lugar no utilizar una orden en la que el contenido no

este relacionado con lo que estamos tratando en ese momento ya que puede darse la situación de que se tenga que transportar algo de lo que hay dentro y no otra de las partes.

- Cuando estemos creando tablas y elementos de datos tener muy presente el orden en el que se ha de transportar. O bien creamos una orden para los elementos otra para las tablas y otra para los reports y se transportan en este orden o una para todo pero en este caso hemos de tener claro que después no tendremos que transportar antes la tabla para parametrizarla o cosas por el estilo.

- Programas con includes. En este caso todo lo que tenemos son reports pero el orden también es muy importante ya que o bien lo pasamos todo junto o tendremos que tener en cuenta que es lo que necesita cada include(Ej. Si en uno declaramos la variables muy posiblemente sea el primero que se tiene que transportar).

- Cuando nos creemos una tarea en la orden de un compañero siempre comentar con el que es lo que tenemos que hacer y que el nos cuente que es lo que hay en la orden para después no tener problemas con el transporte.

- A la hora de rellenar la descripción de la orden de transporte intentar que sea clara y poner al inicio el modulo. Si además podemos indicar que contiene mejor(Ej. Include con definición de datos).

Modulpools:

Los modulopools son un conjunto de varios elementos: Programa principal Dynpros Status GUI Títulos GUI Módulos PBO: Módulos PAI Includes

Page 19: HR- Programación ABAP - Tips

Programación ABAP

Por esta razón es importante que estén bien estructurados ya que sino es así después nos resulta muy difícil encontrar algo y sobre todo si es otro compañero el que ha de buscarlo.

Programa principal tendrá definidos todos los includes.- Las Dynpros, los Status GUI y lo Títulos GUI serán todos del

programa principal.- Los Módulos PBO y PAI tendrán nombres claros y a ser posible que

incluyan el número de la dynpro a la que pertenecen.- Los includes es lo que mejor hay que estructurar, crear tantos

como sea necesario, pero sin pasarnos, en principio uno para los módulos PBO, otro para los PAI, otro en el que definiremos nuestros procedimientos(Forms) y otro para la definición de datos.

User Exit:- Son puertas que nos deja SAP para que introduzcamos código de

cliente a programas standars, que serán respetados en los parches que mande SAP.

- Estas user exit SAP las coloca donde considera que nos pueden ser útiles. Nosotros solo podemos usarlas en el caso de que estén colocadas donde nos hacen falta, si las que hay no nos sirven no podemos hacer nada (tocar el código standar que se recomienda no hacer a no ser que sea imprescindible).

- Las user exit pueden ser procedimientos(performs) que el programa original llame pero no estén creados, en este caso lo que tendremos que hacer es crear el procedimiento con el código que necesitemos. También puede ser que los procedimientos se seleccionen de una tabla en tal caso lo que habrá que hacer es parametrizar la tabla con nuestro procedimiento. Y otra posibilidad es que sea una función la que llame a un report y al crearlo nosotros introducimos nuestro código.

Nomenclaturas:

A continuación se detalla el convenio de nomenclaturas a utilizar para denominar los diferentes tipos de objetos SAP creados por el cliente,

Page 20: HR- Programación ABAP - Tips

Programación ABAP

a no ser que el cliente i/o jefe de proyecto den una nomenclatura propia para dicho proyecto.

Objeto Nomenclatura Contador Longitud

Programa ABAP ZHRAA NNN *(AA = Módulo) 8Tabla Transparente ZHR NN 5Dynpros Adicionales (nº) 9000-9999 4Clase Desarrollo Z XXX 4Módulo Funciones Z_HR NNNN 8Grupo Funciones ZH NN 4Infotipo Propio (nº) 9000-9999 4Module Pool Propio ZHRAAnnnn00 NNNN *(corresponde a ‘nnnn’) 11Includes Module Pool ZHRAAXXXX NN (10:DATA, 20:PAI, 30:PBO,

40:Rutinas)11

Dynpros Module Pool 1000-2000-3000 *Numeración Estándar SAP 4Dominio ZHR XXXXXXX 10Elemento de Datos ZHR XXXXXXX 10

Donde :‘AA’ = Código del Módulo dentro de HR al que pertenece.‘NN’ = Código numérico libre.‘XX’ = Código alfanumérico libre.Las entradas en negrita son fijas y corresponden a la denominación del módulo.

Page 21: HR- Programación ABAP - Tips

Programación ABAP

Plantilla de programas

************************************************************************* PROGRAM ZHR***** - Título ** ** Descripción ** ** ************************************************************************** AUTOR: PLAUT CONSULTING(FDG) FECHA: DD.MM.AAAA *************************************************************************program zxxxxxxx* no standard page heading* line-size 80 .

************************************************************************** INCLUDES **************************************************************************

*include <icon>.

************************************************************************** DEFINICIÓN DE TABLAS DDIC **************************************************************************tables: pernr, ………..

************************************************************************** DEFINICIÓN DE INFOTIPOS **************************************************************************Infotypes: nnnn name XXXXX, ……………….************************************************************************** DEFINICIÓN DE CONSTANTES ***************************************************************************data: .

************************************************************************** DEFINICIÓN DE VARIABLES ***************************************************************************data: .

************************************************************************** DEFINICIÓN DE TABLAS INTERNAS *************************************************************************** Descripción*data: begin of itab_xxxxx occurs 1000,* aa,* bb,* end of itab_xxxxx.

************************************************************************** DEFINICIÓN DE ESTRUCTURAS *************************************************************************** Estructura con los datos de estatus del centro (en listado detallado)*data: begin of struct_xxxx.* include structure i_xxxx.*data: end of struct_xxxx.

************************************************************************** SELECTION-SCREEN **

Page 22: HR- Programación ABAP - Tips

Programación ABAP

*************************************************************************selection-screen begin of block ....* parameters: p_* select-options: so_*selection-screen end of block ....

*********************************************************************************************** PROCESO PRINCIPAL ****************************************************************************************************

************************************************************************** AT SELECTION-SCREEN **************************************************************************at selection-screen.

************************************************************************** INITIALIZATION **************************************************************************initialization.

************************************************************************** START-OF-SELECTION **************************************************************************start-of-selection.

************************************************************************** Lectura de la Base de datos lógica **************************************************************************Get pernr. provide * from Pnnnn between PN-begda and PN-endda. _________

Endprovide.

************************************************************************** AT LINE-SELECTION **************************************************************************at line-selection.

************************************************************************** TOP-OF-PAGE **************************************************************************top-of-page.

************************************************************************** END-OF-PAGE **************************************************************************end-of-page.

************************************************************************** RUTINAS ADICIONALES **************************************************************************