You are on page 1of 27

*&---------------------------------------------------------------------*

*& Include ZCM_PROMEDIO_ACUM_ST1_FRM


*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form busca_programas
*&---------------------------------------------------------------------*
* Busca programas academicos
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM busca_programas .
* Determina si serequiere buscar facultades
IF facultad IS NOT INITIAL AND r_fac[] IS INITIAL.
wa_fac-sign = 'I'.
wa_fac-option = 'EQ'.
wa_fac-low = facultad.
APPEND wa_fac TO it_fac.
r_fac = wa_fac.
APPEND r_fac.
IF nomfac IS INITIAL.
SELECT SINGLE stext INTO nomfac
FROM hrp1000
WHERE plvar = lv_plvar
AND otype = 'O'
AND objid = facultad
AND begda <= sy-datum
AND endda >= sy-datum.
ENDIF.
ENDIF.

* Busca textos de a�os


IF p_djahr IS NOT INITIAL.
SELECT SINGLE peryt INTO bezjahr FROM t7piqyeart
WHERE spras = sy-langu
AND peryr = p_djahr .
ENDIF.

* Busca textos de periodos


IF p_perid IS NOT INITIAL.
SELECT SINGLE perit INTO bezperid FROM t7piqperiodt
WHERE spras = sy-langu
AND perid = p_perid .
ENDIF.

* Busca programas
IF it_programas[] IS INITIAL.
CALL FUNCTION 'ZFM_CM_BUSCA_PROGRAMAS'
EXPORTING
i_facultad = it_fac
TABLES
et_programas = it_programas.

ENDIF.
DELETE it_programas WHERE objid NOT IN so_prog.

ENDFORM. " programas


*&---------------------------------------------------------------------*
*& Form INIT
*&---------------------------------------------------------------------*
* Busquedas iniciales a utilizar en toda la ejecuci�n
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init .
***************
REFRESH: r_perid.
CLEAR: r_perid.

* read plvar
CALL FUNCTION 'HRIQ_CHECK_PLVAR'
IMPORTING
plvar = lv_plvar
EXCEPTIONS
cancelled = 1
invalid_plvar = 2
no_authority = 3
OTHERS = 4.

IF sy-subrc <> 0.
MESSAGE e001(hrpiq000).
ENDIF.

* read otypes
CALL FUNCTION 'HRIQ_OTYPE_T77S0_READ'
IMPORTING
otype_o = lv_piqo
otype_e = lv_piqe
otype_eo = lv_piqeo
otype_st = lv_piqst
otype_sc = lv_piqsc
otype_cs = lv_piqcs
otype_sm = lv_piqsm.

ENDFORM. " INIT


*&---------------------------------------------------------------------*
*& Form GET_VALOR_FACUL
*&---------------------------------------------------------------------*
* Trae ayuda para facultades
*----------------------------------------------------------------------*
* <--P_FACULTAD text
* <--P_NOMFAC text
*----------------------------------------------------------------------*
FORM get_valor_facul CHANGING p_facultad
p_nomfac.
" Variables Locales.
DATA: ls_objec TYPE objec.

" Interfaz ayuda de entrada (F4) para OBJID como una lista
CALL FUNCTION 'HRIQ_OBJID_REQUEST'
EXPORTING
plvar = '01'
otype = 'O'
seark = 'fa*'
IMPORTING
sel_object = ls_objec " �rea de trabajo para base de datos
EXCEPTIONS
cancelled = 1
wrong_condition = 2
nothing_found = 3
illegal_mode = 4
internal_error = 5
OTHERS = 6.

" Validamos si la ejecucion de la BAPI tubo exito.


IF sy-subrc = 0.
" Limpiamos variables
CLEAR: so_prog, wa_facultades.
" Limpiamos tabla interas.
REFRESH: it_facultades, gt_hrp1001, gt_hrp1000, so_prog.
" Pasamos el dato seleccionado al parametro de salida.
p_facultad = ls_objec-objid.
p_nomfac = ls_objec-stext.
ENDIF.
ENDFORM. " GET_VALOR_FACUL
*&---------------------------------------------------------------------*
*& Form GET_VALOR_PROG
*&---------------------------------------------------------------------*
* Trae ayuda para programas
*----------------------------------------------------------------------*
* <--P_SO_PROG_LOW text
*----------------------------------------------------------------------*
FORM get_valor_prog.
DATA : wa_dynpfields TYPE dynpread,
it_dynpfields LIKE TABLE OF wa_dynpfields.
DATA: la_prog LIKE LINE OF so_prog.

REFRESH: it_return_tab, it_programas_tmp.


**************************************************
IF it_fac[] IS INITIAL.

wa_dynpfields-fieldname = 'FACULTAD'.
APPEND wa_dynpfields TO it_dynpfields.

CALL FUNCTION 'DYNP_VALUES_READ'


EXPORTING
dyname = sy-cprog "program name
dynumb = '1000' "screen number
TABLES
dynpfields = it_dynpfields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.

READ TABLE it_dynpfields INDEX 1 INTO wa_dynpfields.


IF sy-subrc EQ 0.
IF wa_dynpfields-fieldvalue IS NOT INITIAL.
wa_fac-sign = 'I'.
wa_fac-option = 'EQ'.
wa_fac-low = wa_dynpfields-fieldvalue.
APPEND wa_fac TO it_fac.

r_fac = wa_fac.
APPEND r_fac.
ENDIF.
ENDIF.
ENDIF.
CALL FUNCTION 'ZFM_CM_BUSCA_PROGRAMAS'
EXPORTING
i_facultad = it_fac
TABLES
et_programas = it_programas_tmp.

it_programas[] = it_programas_tmp[].

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = 'OBJID'
window_title = 'Lista de Programas solicitada'
value_org = 'S'
multiple_choice = 'X'
TABLES
value_tab = it_programas_tmp
return_tab = it_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc = 0.
LOOP AT it_return_tab INTO wa_return_tab.
CLEAR so_prog.
so_prog-sign = 'I'.
so_prog-option = 'EQ'.
READ TABLE so_prog INTO la_prog WITH KEY low = wa_return_tab-fieldval.
IF sy-subrc NE 0.
so_prog-low = wa_return_tab-fieldval.
APPEND so_prog.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " GET_VALOR_PROG
*&---------------------------------------------------------------------*
*& Form BUSCA_PLAN_ESTUDIOS
*&---------------------------------------------------------------------*
* Busca plan de estudios
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM busca_plan_estudios .
LOOP AT it_programas INTO wa_programas.
wa_codplan-sobid = wa_programas-objid.
APPEND wa_codplan TO it_codplan.
ENDLOOP.

IF it_codplan[] IS NOT INITIAL.

SELECT otype objid plvar rsign


relat istat endda sclas
sobid
INTO TABLE it_planest
FROM hrp1001
FOR ALL ENTRIES IN it_codplan
WHERE otype = lv_piqcs
AND plvar = lv_plvar
AND rsign = 'A'
AND relat = '514'
AND istat = '1'
AND seqnr = 0
AND sobid = it_codplan-sobid.

IF it_planest[] IS NOT INITIAL.


* Busca textos del plan de estudios
SELECT plvar otype objid istat
endda short stext
INTO TABLE it_txtplanest
FROM hrp1000
FOR ALL ENTRIES IN it_planest
WHERE otype = lv_piqcs
AND objid = it_planest-objid
AND plvar = lv_plvar
AND istat = '1'
AND endda = '99991231'
AND langu = sy-langu.
ENDIF.
ENDIF.
ENDFORM. " BUSCA_PLAN_ESTUDIOS
*&---------------------------------------------------------------------*
*& Form BUSCA_ESTUDIANTES
*&---------------------------------------------------------------------*
* Busca Estudiantes
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM busca_estudiantes .
LOOP AT it_planest INTO wa_planest.
wa_codest-sobid = wa_planest-objid.
APPEND wa_codest TO it_codest.
ENDLOOP.

IF it_codest[] IS NOT INITIAL.


* Busca enlace del plan de estudios con estudiantes
SELECT otype objid plvar rsign
relat istat endda sclas
sobid
INTO TABLE it_idstudent
FROM hrp1001
FOR ALL ENTRIES IN it_codest
WHERE otype = lv_piqst
AND plvar = lv_plvar
AND rsign = 'A'
AND relat = '517'
AND istat = '1'
AND seqnr = 0
AND sclas = lv_piqcs
AND sobid = it_codest-sobid.
ENDIF.
IF it_idstudent[] IS NOT INITIAL.
* Busca datos del estudiante
SELECT plvar otype objid istat
endda short stext
INTO TABLE it_student
FROM hrp1000
FOR ALL ENTRIES IN it_idstudent
WHERE otype = lv_piqst AND
objid = it_idstudent-objid AND
plvar = lv_plvar AND
istat = '1' AND
endda = '99991231'.
ENDIF.
ENDFORM. " BUSCA_ESTUDIANTES
*&---------------------------------------------------------------------*
*& Form MATERIAS
*&---------------------------------------------------------------------*
* Busca Materias
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM materias .
IF it_programas[] IS NOT INITIAL.
* trae las materias de un programa
SELECT otype objid plvar rsign
relat istat priox begda
endda varyf seqnr infty
otjid subty sclas sobid
prozt adatanr
INTO TABLE it_materias
FROM hrp1001
FOR ALL ENTRIES IN it_programas
WHERE otype = lv_piqsc AND
objid = it_programas-objid AND "pgrma
plvar = lv_plvar AND
rsign = 'A' AND
relat = '500' AND
istat = '1' AND
endda = '99991231' AND
sclas = lv_piqsm.
ENDIF.

IF it_materias[] IS NOT INITIAL.


LOOP AT it_materias INTO wa_materias.
wa_codmat-objid = wa_materias-sobid.
APPEND wa_codmat TO it_codmat.
ENDLOOP.
* Busca nombre de materias
SELECT plvar otype objid
istat endda stext short
INTO TABLE it_nommateria
FROM hrp1000
FOR ALL ENTRIES IN it_codmat
WHERE plvar = lv_plvar AND
otype = lv_piqsm AND
objid = it_codmat-objid AND
istat = '1' AND
endda = '99991231'.
ENDIF.
ENDFORM. " MATERIAS
*&---------------------------------------------------------------------*
*& Form MATERIAS_ESTUDIANTE
*&---------------------------------------------------------------------*
* Busca materias por estudiante
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM materias_estudiante .

READ TABLE it_period INTO wa_period INDEX 1.

IF it_codmat[] IS NOT INITIAL.


* los estudiantes de materias del prog
SELECT otype objid plvar rsign
relat istat priox begda
endda varyf seqnr infty
otjid subty sclas sobid
prozt adatanr
FROM hrp1001
INTO TABLE it_matestud
FOR ALL ENTRIES IN it_codmat
WHERE otype = lv_piqsm AND
objid = it_codmat-objid AND
plvar = lv_plvar AND
rsign = 'B' AND
relat = '506' AND
istat = '1' AND
begda >= wa_period-begda AND
endda <= wa_period-endda AND
sclas = lv_piqst.
ENDIF.
ENDFORM. " MATERIAS_ESTUDIANTE
*&---------------------------------------------------------------------*
*& Form FECHAS_PROGRAMA
*&---------------------------------------------------------------------*
* Determinas fechas de validez de programas
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fechas_programa .

* Llenar tabla lt_akadjahr a�o y periodo academico para procesar


* en el programa las fechas validas de cada peridodo academico

* SELECT SINGLE *
* FROM t7piqyearprd
* INTO wa_yearprd
* WHERE peryr EQ p_djahr
* AND perid EQ p_perid.
*
* IF sy-subrc = 0.
* LOOP AT it_programas INTO wa_programas.
* CLEAR wa_fecprog.
*
* CALL FUNCTION 'ZCM_ACAD_READ_TIMELIMITS'
* EXPORTING
* lv_plvar = lv_plvar
* lv_piqsc = lv_piqsc
* lv_objidsc = wa_programas-objid
* peryr = wa_yearprd-peryr
* perid = wa_yearprd-perid
* IMPORTING
* ca_lbegda = wa_fecprog-fecini
* ca_lendda = wa_fecprog-fecfin
* EXCEPTIONS
* no_data_found = 1
* OTHERS = 2.
*
* IF sy-subrc = 0.
* wa_fecprog-objid = wa_programas-objid.
* wa_fecprog-peryr = wa_yearprd-peryr.
* wa_fecprog-perid = wa_yearprd-perid.
* APPEND wa_fecprog TO it_fecprog.
* ENDIF.
* ENDLOOP.
* ENDIF.

* Busca periodos para planes de estudio

SELECT otype objid plvar begda endda ayear perid


INTO TABLE it_period
FROM hrp1771
FOR ALL ENTRIES IN it_planest
WHERE otype = lv_piqcs
AND plvar = lv_plvar
AND objid = it_planest-objid
AND prs_state = 'A'
AND istat = '1'
AND ayear = p_djahr
AND perid = p_perid.
ENDFORM. " FECHAS_PROGRAMA
*&---------------------------------------------------------------------*
*& Form CALIFICACIONES
*&---------------------------------------------------------------------*
* Busca calificaciones estudiante
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM calificaciones .

LOOP AT it_matestud INTO wa_matestud.


wa_en_matnota-agrrealo = wa_matestud-objid.
wa_en_matnota-sobid = wa_matestud-sobid.
APPEND wa_en_matnota TO it_en_matnota.
ENDLOOP.
* trae los registros de notas
* Se considera que la facultad tomada tiene en sus programas
* el mismo periodo
READ TABLE it_period INTO wa_period INDEX 1.
* fecini = wa_fecprog-fecini.
* fecfin = wa_fecprog-fecfin.

IF it_en_matnota[] IS NOT INITIAL.


SELECT DISTINCT
agrid agrplvar agrotype agrrealo
infty rsign relat istat
priox begda endda varyf
seqnr sclas sobid
FROM piqdbagr_assignm
INTO TABLE it_notas
FOR ALL ENTRIES IN it_en_matnota
WHERE agrplvar = lv_plvar AND
agrotype = lv_piqsm AND
agrrealo = it_en_matnota-agrrealo AND
begda >= wa_period-begda AND
endda <= wa_period-endda AND
sclas = lv_piqst AND
sobid = it_en_matnota-sobid .

SORT it_notas BY agrid.

DELETE ADJACENT DUPLICATES FROM it_notas COMPARING agrid.

ENDIF.

* LOOP AT it_notas INTO wa_notas.


*
* CLEAR: wa_appraisal, wa_text.
*
* CALL FUNCTION 'HRIQ_AGR_APPRAISAL_GET'
* EXPORTING
* i_agrid = wa_notas-agrid
* i_element_detail = 'X'
* i_langu = sy-langu
* IMPORTING
* e_appraisal = wa_appraisal
* e_text = wa_text
* EXCEPTIONS
* nothing_found = 1
* OTHERS = 2.
* IF sy-subrc = 0.
* IF wa_appraisal-agrstat NE 'HOMO'.
* APPEND wa_appraisal TO it_appraisal.
* ENDIF.
* ENDIF.
* ENDLOOP.
ENDFORM. " CALIFICACIONES
*&---------------------------------------------------------------------*
*& Form PREPARA_DATOS
*&---------------------------------------------------------------------*
* Prepara informaci�n para salida de reportes
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepara_datos .
DATA: v_noinscrip(1) TYPE c.
" Programas
LOOP AT it_programas INTO wa_programas.
CLEAR wa_materias.
" Materias por programa
LOOP AT it_materias INTO wa_materias WHERE objid = wa_programas-objid.
CLEAR wa_planest.

CLEAR wa_idstudent.
" Id de estudiantes
READ TABLE it_idstudent INTO wa_idstudent WITH KEY objid = wa_materias-sobid.
IF sy-subrc = 0.

CLEAR wa_student.
" Estudiantes
READ TABLE it_student INTO wa_student WITH KEY objid = wa_idstudent-objid.
" Planes de estudio
READ TABLE it_planest INTO wa_planest WITH KEY objid = wa_idstudent-sobid.
CLEAR wa_period.
" Verifica periodo del plan
READ TABLE it_period INTO wa_period WITH KEY objid = wa_planest-objid
BINARY SEARCH.
IF sy-subrc = 0.
CLEAR wa_txtplanest.
READ TABLE it_txtplanest INTO wa_txtplanest WITH KEY objid = wa_planest-
objid.

IF sy-subrc = 0.
" Busca periodos estudiante
CLEAR v_noinscrip.
PERFORM periodos_estudiante USING wa_idstudent-objid
wa_programas-objid
CHANGING v_noinscrip.

CHECK v_noinscrip IS INITIAL. " Valida que existe inscripci�n


" Busca notas de estudiante
PERFORM busca_notas USING wa_idstudent-objid.
CHECK lt_work_pindex[] IS NOT INITIAL.

lv_totestud = lv_totestud + 1.

" Insert l�nea de reporte x estudiante


APPEND INITIAL LINE TO gti_salida1 ASSIGNING <sal1>.

" Determina si el promedio es por cr�ditos


CLEAR: wa_hrp1735, lv_creditos.
READ TABLE it_hrp1735 INTO wa_hrp1735 WITH KEY objid = wa_programas-
objid BINARY SEARCH.
IF sy-subrc = 0.
lv_creditos = 'X'.
ELSE.
CLEAR lv_creditos.
ENDIF.
<sal1>-cedula = wa_student-short. " Identificaci�n Estudiante.
<sal1>-idsap = wa_idstudent-objid. " ID SAP
<sal1>-nomest = wa_student-stext. " Nombre del estudiante
<sal1>-peryr = wa_period-ayear. " A�o acad�mico
<sal1>-perid = wa_period-perid. " Per�odo acad�mico
lv_tipo_prom = 'AN'. " Promedio acumulado periodo Anterior
CLEAR lv_promedio.
PERFORM busca_promedios USING wa_idstudent-objid
lv_creditos
lv_tipo_prom
CHANGING lv_promedio.

<sal1>-promacan = lv_promedio. " Promedio acumulado periodo anterior

lv_tipo_prom = 'PE'. " Promedio del periodo


CLEAR lv_promedio.
PERFORM busca_promedios USING wa_idstudent-objid
lv_creditos
lv_tipo_prom
CHANGING lv_promedio.

<sal1>-proper = lv_promedio. " Promedio del periodo

lv_tipo_prom = 'AC'. " Promedio acumulado actual


CLEAR lv_promedio.
PERFORM busca_promedios USING wa_idstudent-objid
lv_creditos
lv_tipo_prom
CHANGING lv_promedio.

<sal1>-promacac = lv_promedio. " Promedio acumulado actual

<sal1>-codplan = wa_planest-objid. " ID plan de estudios


<sal1>-desplan = wa_txtplanest-stext. " Texto plan de estudios

" Determina prograsi�n cualitativa


PERFORM progresion_cualitativa USING wa_idstudent-objid
CHANGING <sal1>-progcual " Resultado
progresi�n cualitativa
<sal1>-semestre. " Indica el
semestre del estudiante
IF p_mat = 'X'.
* CLEAR wa_materias.

* " Materias por programa


* LOOP AT it_materias INTO wa_materias WHERE objid = wa_programas-
objid.
CLEAR wa_nommateria.
READ TABLE it_nommateria INTO wa_nommateria WITH KEY objid =
wa_materias-sobid.
CLEAR wa_codmat.

CLEAR: wa_matestud, wa_hrp1741.


" Busca cr�ditos
READ TABLE it_hrp1741 INTO wa_hrp1741 WITH KEY objid = wa_materias-
sobid BINARY SEARCH.
" Materias por estudiante
LOOP AT it_matestud INTO wa_matestud WHERE objid = wa_materias-sobid
AND sobid = wa_idstudent-objid
AND begda >= wa_period-begda
AND endda <= wa_period-endda.
CLEAR wa_notas.
" Notas
LOOP AT it_notas INTO wa_notas WHERE agrrealo = wa_matestud-objid
AND sobid = wa_idstudent-objid
AND begda >= wa_period-begda
AND endda <= wa_period-endda.
" Calificaciones
CLEAR wa_work_pindex.
READ TABLE lt_work_pindex INTO wa_work_pindex WITH KEY agrid =
wa_notas-agrid BINARY SEARCH.
IF sy-subrc = 0.
* REPLACE ',' WITH '.' INTO wa_appraisal-gradesym.
CONDENSE wa_work_pindex-gradesym NO-GAPS.
CHECK wa_work_pindex-gradesym(1) CA '0123456789'.
REPLACE ',' WITH '.' INTO wa_work_pindex-gradesym.

READ TABLE gti_salida2 INTO wa_salida2 WITH KEY facultad =


facultad
codplan =
wa_planest-objid
codprog =
wa_programas-objid
semestre =
<sal1>-semestre
codmateria =
wa_matestud-otjid BINARY SEARCH.
IF sy-subrc NE 0.
" Insert l�nea de reporte x estudiante
APPEND INITIAL LINE TO gti_salida2 ASSIGNING <sal2>.
ELSE.
READ TABLE gti_salida2 ASSIGNING <sal2> INDEX sy-tabix.
ENDIF.
IF <sal2> IS ASSIGNED.
<sal2>-peryr = wa_yearprd-peryr. " A�o acad�mico
<sal2>-facultad = facultad. " ID objeto
<sal2>-nomfacul = nomfac. " Denominaci�n de objeto
<sal2>-codplan = wa_planest-objid. " ID Plan
<sal2>-desplan = wa_txtplanest-stext. " Texto plan
<sal2>-codprog = wa_programas-objid. " ID programa
<sal2>-desprog = wa_programas-stext. " Texto programa
<sal2>-semestre = <sal1>-semestre. " Indica el semestre
del estudiante
<sal2>-codmateria = wa_matestud-objid. " ID omateria
<sal2>-desmateria = wa_nommateria-stext. " Denominaci�n de
Materia
<sal2>-cpopt = wa_hrp1741-cpopt. " Valor �ptimo de
cr�ditos
<sal2>-cpunit = wa_hrp1741-cpunit. " Unidad de medida
para cr�ditos
<sal2>-totestud = <sal2>-totestud + 1." Total Estudiantes
* <sal2>-sumnotas = <sal2>-sumnotas + wa_appraisal-
gradesym. " Sumatoria de notas
<sal2>-sumnotas = <sal2>-sumnotas + wa_work_pindex-
gradesym. " Sumatoria de notas
* <sal2>-prommat = " Promedio materia

ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
* ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* ENDLOOP.
ENDLOOP.
ENDLOOP.

LOOP AT gti_salida2 ASSIGNING <sal2>.


IF <sal2>-totestud NE 0.
<sal2>-prommat = <sal2>-sumnotas / <sal2>-totestud." Promedio materia
ENDIF.
ENDLOOP.
ENDFORM. " PREPARA_DATOS
*&---------------------------------------------------------------------*
*& Form GENERA_REPORTE
*&---------------------------------------------------------------------*
* Genera salida ALV
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM genera_reporte .
CALL SCREEN 9000.
ENDFORM. " GENERA_REPORTE

*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Estatus y Title GUI - log ALV
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
SET PF-STATUS 'GS_0001'.
IF p_est IS NOT INITIAL.
SET TITLEBAR 'GT_0001' WITH 'Estudiantes'.
ELSE.
SET TITLEBAR 'GT_0001' WITH 'Materias'.
ENDIF.
ENDMODULE. "status_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Module ALV OUTPUT
*&---------------------------------------------------------------------*
*& Muestra reporte ALV con Log
*&---------------------------------------------------------------------*
MODULE alv OUTPUT.

********************* ALV de cabecera ***********************


" Arma ALV de cabecera
CREATE OBJECT go_container_cab
EXPORTING
container_name = 'CONTAINER_ALV'.

" ALV dinamico


CREATE OBJECT go_top
EXPORTING
style = 'ALV_GRID'.

" Control de divisor de cabecera


CREATE OBJECT go_splitter
EXPORTING
parent = go_container_cab
rows = 2
columns = 1.

" Control de divisor de cabecera


CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cont_det.

" Control de divisor de cabecera


CALL METHOD go_splitter->set_row_height
EXPORTING
id = 1
height = 20.
" Control de divisor de cabecera
CALL METHOD go_splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = go_cont_det_datos.

" Control de divisor de cabecera


CALL METHOD go_splitter->set_width
EXPORTING
width = 100.

" Arma Grid de alv


CREATE OBJECT go_grid_cab
EXPORTING
i_parent = go_cont_det_datos.

PERFORM mostrar_cabecera.
IF p_est IS NOT INITIAL.
* Busca informaci�n del cat�logo
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSTCM_REP_PROMEDIOS'
CHANGING
ct_fieldcat = gti_field_texts
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

PERFORM ajusta_catalogo TABLES gti_field_texts.

" Crea ALV con la estructura e informaci�n


CALL METHOD go_grid_cab->set_table_for_first_display
CHANGING
it_fieldcatalog = gti_field_texts
it_outtab = gti_salida1.

" Limpia memoria.


cl_gui_cfw=>flush( ).
ELSE.
* Busca informaci�n del cat�logo
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSTCM_REP_PROM_MATERIA'
CHANGING
ct_fieldcat = gti_field_texts
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

PERFORM ajusta_catalogo TABLES gti_field_texts.


PERFORM fill_layout USING go_layout go_variant.

" Crea ALV con la estructura e informaci�n


CALL METHOD go_grid_cab->set_table_for_first_display
EXPORTING
i_save = 'A'
is_layout = go_layout
is_variant = go_variant
i_buffer_active = 'X'
CHANGING
it_fieldcatalog = gti_field_texts
it_outtab = gti_salida2.

" Limpia memoria.


cl_gui_cfw=>flush( ).
ENDIF.
ENDMODULE. "alv OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* Valida botones de usuario en ALV
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
DATA: okcode TYPE sy-ucomm.

CASE okcode.
WHEN 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'CNCL'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'END'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE. "user_command_9000 INPUT

*&---------------------------------------------------------------------*
*& Form AJUSTA_CATALOGO
*&---------------------------------------------------------------------*
*& Ajusta nombres de camos en ALV
*&---------------------------------------------------------------------*
* -->P_GTI_FIELD_TEXTS Cat�logo ajustado
*&---------------------------------------------------------------------*
FORM ajusta_catalogo TABLES p_gti_field_texts STRUCTURE lvc_s_fcat.
FIELD-SYMBOLS: <lfs_cat> TYPE lvc_s_fcat.
DATA: l_reptext TYPE lvc_s_fcat-reptext.

LOOP AT p_gti_field_texts ASSIGNING <lfs_cat>.


CLEAR l_reptext.
CASE <lfs_cat>-fieldname.
WHEN 'CODPLAN'.
l_reptext = 'C�d.Plan'.
WHEN 'DESPLAN'.
l_reptext = 'Nombre Plan'.
WHEN 'FACULTAD'.
l_reptext = 'Facultad'.
WHEN 'NOMFACUL'.
l_reptext = 'Nombre Facultad'.
WHEN 'CODPROG'.
l_reptext = 'C�digo Programa'.
WHEN 'DESPROG'.
l_reptext = 'Descripci�n Programa'.
WHEN 'CODMATERIA'.
l_reptext = 'C�digo Materia'.
WHEN 'DESMATERIA'.
l_reptext = 'Descripci�n Materia'.
WHEN 'CPOPT'.
l_reptext = 'Cr�ditos Materia'.
ENDCASE.

IF l_reptext IS NOT INITIAL.


<lfs_cat>-reptext = l_reptext.
<lfs_cat>-scrtext_l = l_reptext.
<lfs_cat>-scrtext_m = l_reptext.
<lfs_cat>-scrtext_s = l_reptext.
ENDIF.
ENDLOOP.
ENDFORM. "ajusta_catalogo
*&---------------------------------------------------------------------*
*& Form MOSTRAR_CABECERA
*&---------------------------------------------------------------------*
* Genera cabecera de reporte
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM mostrar_cabecera .
DATA: l_texto_low TYPE sdydo_text_element.
DATA: l_texto_high TYPE sdydo_text_element.
DATA: l_ta TYPE REF TO cl_dd_table_element.
DATA: l_col1 TYPE REF TO cl_dd_area.
DATA: l_col2 TYPE REF TO cl_dd_area.
DATA: l_text1 TYPE sdydo_text_element,
l_text2 TYPE sdydo_text_element,
l_text3 TYPE sdydo_text_element,
l_text4 TYPE sdydo_text_element,
l_text5 TYPE sdydo_text_element,
l_fecha(10) TYPE c,
l_hora(8) TYPE c,
l_txt_soc(60).

CONCATENATE 'Facultad:' facultad '-' nomfac


INTO l_text1 SEPARATED BY space.
CONCATENATE 'Periodo cierre notas:'
bezjahr '-' bezperid
INTO l_text2 SEPARATED BY space.

WRITE sy-datlo TO l_fecha DD/MM/YYYY.


WRITE sy-timlo TO l_hora.
* l_text2 = text-003.
" Variante con fecha y hora de ejecucion.
CONCATENATE: 'Fecha y Hora proceso:' "Fecha
l_fecha
l_hora
INTO l_text3
SEPARATED BY space.
" Variante con el nombre de usuario de ejecucion.
CONCATENATE 'Usuario proceso:'
sy-uname
INTO l_text4
SEPARATED BY space.

" Crear el documento


CREATE OBJECT go_dd_cabecera.
" Crear la tabla
CALL METHOD go_dd_cabecera->add_table
EXPORTING
no_of_columns = 2
width = '100%'
border = '0'
IMPORTING
table = l_ta.
" Divide el porcentaje de la tabla para campos de cabecera
CALL METHOD l_ta->add_column
EXPORTING
width = '50%'
IMPORTING
column = l_col1.
" Divide el porcentaje de la tabla para campos de cabecera
CALL METHOD l_ta->add_column
EXPORTING
width = '50%'
IMPORTING
column = l_col2.

" Agregando espacio a la Columna 1 Fila 1


CALL METHOD l_col1->add_gap
EXPORTING
width = 0.
" Agregando texto a la Columna 1 Fila 1
CALL METHOD l_col1->add_text
EXPORTING
text = l_text1
sap_fontsize = 'LARGE'
sap_emphasis = 'Strong'.
" Creando una fila...
CALL METHOD l_col1->new_line.
" Agregando espacio a la Columna 1 Fila 2
CALL METHOD l_col1->add_gap
EXPORTING
width = 0.
" Creando una fila...
CALL METHOD l_col1->new_line.
" Agregando texto a la Columna 1 Fila 2
CALL METHOD l_col1->add_text
EXPORTING
text = l_text2.

" Creando una fila...


CALL METHOD l_col1->new_line.
" Agregando texto a la Columna 1 Fila 2
CALL METHOD l_col1->add_text
EXPORTING
text = l_text3.

" Creando una fila...


CALL METHOD l_col1->new_line.
" Agregando texto a la Columna 1 Fila 2
CALL METHOD l_col1->add_text
EXPORTING
text = l_text4.

" merge document


CALL METHOD go_dd_cabecera->merge_document.
" display documents
CALL METHOD go_dd_cabecera->display_document
EXPORTING
parent = go_cont_det
EXCEPTIONS
html_display_error = 1.
ENDFORM. " MOSTRAR_CABECERA
*&---------------------------------------------------------------------*
*& Form CREDITOS
*&---------------------------------------------------------------------*
* Busca cr�ditos por programa
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM creditos .
* Determina si el promedio es por cr�ditos
IF it_programas[] IS NOT INITIAL.
SELECT objid
INTO TABLE it_hrp1735
FROM hrp1735
FOR ALL ENTRIES IN it_programas
WHERE plvar = lv_plvar
AND otype = lv_piqsc
AND objid = it_programas-objid.
ENDIF.

* Busca cr�ditos
IF it_codmat[] IS NOT INITIAL.
SELECT objid cpopt cpunit
INTO TABLE it_hrp1741
FROM hrp1741
FOR ALL ENTRIES IN it_codmat
WHERE plvar = lv_plvar
AND otype = lv_piqsm
AND objid = it_codmat-objid.
ENDIF.
ENDFORM. " CREDITOS
*&---------------------------------------------------------------------*
*& Form BUSCA_PROMEDIOS
*&---------------------------------------------------------------------*
* Determina promedios para estudiante
*----------------------------------------------------------------------*
* -->P_WA_PROGRAMAS_OBJID text
* -->P_WA_IDSTUDENT_OBJID text
* -->P_LV_CREDITOS text
* -->P_LV_TIPO_PROM text
* <--P_LV_PROMEDIO text
*----------------------------------------------------------------------*
FORM busca_promedios USING p_wa_idstudent_objid
p_lv_creditos
p_lv_tipo_prom
CHANGING p_lv_promedio.

DATA: lv_point TYPE piqsi2_calcpointid.


REFRESH: it_parametro, it_indices, it_return.

CASE p_lv_tipo_prom.
WHEN 'AN'. " Promedio acumulado periodo Anterior
it_parametro[] = it_parametro_ant[].
CASE p_lv_creditos.
WHEN 'X'.
lv_point = 'ZGPB'.
WHEN OTHERS.
lv_point = 'ZPR2'.
ENDCASE.
WHEN 'PE'. " Promedio del periodo
it_parametro[] = it_parametro_per[].
CASE p_lv_creditos.
WHEN 'X'.
lv_point = 'ZGPA'.
WHEN OTHERS.
lv_point = 'ZPR1'.
ENDCASE.
WHEN 'AC'. " Promedio acumulado actual
it_parametro[] = it_parametro_act[].
CASE p_lv_creditos.
WHEN 'X'.
lv_point = 'ZGPB'.
WHEN OTHERS.
lv_point = 'ZPR2'.
ENDCASE.
ENDCASE.

IF it_parametro[] IS NOT INITIAL AND lt_work_pindex[] IS NOT INITIAL.


* CALL FUNCTION 'HRIQ_AW_PERF_INDEX_GET_RFC'
* EXPORTING
* calculation_point = lv_point
* planversion = lv_plvar
* studentobjectid = p_wa_idstudent_objid
* TABLES
* add_filter_parameters = it_parametro
* perf_indices = it_indices
* return = it_return.
* calculate performance indices
CALL FUNCTION 'HRIQ_AW_PINDEX_CALCULATE'
EXPORTING
iv_calc_point = lv_point
it_academic_work = lt_work_pindex
* it_pindex_list = it_pindex_list
it_parameter = it_parametro
IMPORTING
et_pindex = it_indices
EXCEPTIONS
no_pindex_assigned = 1
invalid_pindex = 2
calculation_error = 3
OTHERS = 4.

* READ TABLE it_return INTO wa_return WITH KEY type = 'E'.


* IF sy-subrc NE 0.
LOOP AT it_indices ASSIGNING <indices>.
REPLACE ',' WITH '.' INTO <indices>-gradesym.
CASE <indices>-acadpi_id.
WHEN 'ZPROSIM1' OR 'ZPRO_GPA' OR 'ZPROSIM2' OR 'ZPRO_GPA1'.
p_lv_promedio = <indices>-gradesym.
ENDCASE.
ENDLOOP.
ENDIF.
* ENDIF.
ENDFORM. " BUSCA_PROMEDIOS
*&---------------------------------------------------------------------*
*& Form PERIODOS_ESTUDIANTE
*&---------------------------------------------------------------------*
* Determina periodos y registros de estudiantes
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM periodos_estudiante USING p_student_objid
p_program_objid
CHANGING p_noinscrip.

DATA: zindex LIKE sy-tabix,


zanoini LIKE sy-datum(4),
zanoant LIKE sy-datum(4),
zperant LIKE t7piqperiod-perid,
zanofin LIKE sy-datum(4).

DATA: lv_periodo_d TYPE piqprog_gr_perid,


lv_periodo_h TYPE piqprog_gr_perid,
lv_periodo TYPE piqprog_gr_perid.

REFRESH: it_parametro_per, it_parametro_act, it_parametro_ant.

CASE wa_yearprd-perid.
WHEN '001' OR '004'. "Primer semestre
lv_periodo_d = '001'.
lv_periodo_h = '004'."Vacaciones 2 jun
lv_periodo = '001'.
WHEN '002' OR '003'. "Segundo periodo
lv_periodo_d = '002'."Vacaciones 1 ene
lv_periodo_h = '003'.
lv_periodo = '003'.
WHEN '005'.
lv_periodo_d = '005'.
lv_periodo_h = '005'."Periodo anual
lv_periodo = '005'.
WHEN OTHERS.
lv_periodo_d = wa_yearprd-perid.
lv_periodo_h = wa_yearprd-perid.
lv_periodo = lv_periodo_d.
ENDCASE.

" Promedio del periodo


APPEND INITIAL LINE TO it_parametro_per ASSIGNING <param>.
<param>-param = 'ZACAD_YEAR98'.
<param>-param_value = wa_yearprd-peryr.

APPEND INITIAL LINE TO it_parametro_per ASSIGNING <param>.


<param>-param = 'ZACAD_YEAR99'.
<param>-param_value = wa_yearprd-peryr.

APPEND INITIAL LINE TO it_parametro_per ASSIGNING <param>.


<param>-param = 'ZACAD_SESSION98'.
<param>-param_value = lv_periodo_d.

APPEND INITIAL LINE TO it_parametro_per ASSIGNING <param>.


<param>-param = 'ZACAD_SESSION99'.
<param>-param_value = lv_periodo_h.

APPEND INITIAL LINE TO it_parametro_per ASSIGNING <param>.


<param>-param = 'ZESTUDIANTE'.
<param>-param_value = p_student_objid.

APPEND INITIAL LINE TO it_parametro_per ASSIGNING <param>.


<param>-param = 'ZPROGRAMA'.
<param>-param_value = p_program_objid.

* leer las entradas de per�odos para el estudiante (pej semestres)


REFRESH: it_registrations.

CALL FUNCTION 'HRIQ_STUDENT_REGIST_READ'


EXPORTING
iv_plvar = lv_plvar
iv_st_objid = p_student_objid
iv_sc_objid = p_program_objid
iv_status_attend = 'X'
iv_status_leave = 'X'
iv_base_auth = 'DISP'
iv_with_stru_auth = 'X'
IMPORTING
et_registrations = it_registrations.

IF it_registrations[] IS NOT INITIAL.


READ TABLE it_registrations ASSIGNING <registration> INDEX 1.
IF sy-subrc = 0.
MOVE <registration>-peryr TO zanoini.
ENDIF.
* tomar el ultimo periodo cursado
SORT it_registrations DESCENDING BY peryr perid.
READ TABLE it_registrations ASSIGNING <registration> INDEX 1.
IF sy-subrc = 0.
MOVE <registration>-peryr TO zanofin.
ENDIF.
* Periodo anterior al solicitado
SORT it_registrations ASCENDING BY peryr perid.

READ TABLE it_registrations ASSIGNING <registration>


WITH KEY peryr = p_djahr
perid = p_perid.
IF sy-subrc = 0.
* Restar uno al indice para tomar el registro anterior en periodo
zindex = sy-tabix - 1.
READ TABLE it_registrations ASSIGNING <registration> INDEX zindex.
IF sy-subrc = 0.
MOVE <registration>-perid TO zperant.
MOVE <registration>-peryr TO zanoant.
* asignar periodo anterior
CASE zperant. "zanoant. 20/10/2006
WHEN '001' OR '004'. "Primer semestre
lv_periodo_d = '001'.
lv_periodo_h = '004'."Vacaciones 2 jun
lv_periodo = '001'.
WHEN '002' OR '003'. "Segundo periodo
lv_periodo_d = '002'."Vacaciones 1 ene
lv_periodo_h = '003'.
lv_periodo = '003'.
WHEN '005'.
lv_periodo_d = '005'.
lv_periodo_h = '005'."Periodo anual
lv_periodo = '005'.
WHEN OTHERS.
lv_periodo_d = zperant. "zanoant.
lv_periodo_h = zperant. "zanoant.
lv_periodo = lv_periodo_d. "????
ENDCASE.

ENDIF.
ELSE.
p_noinscrip = 'X'.
ENDIF.

" Promedio acumulado actual

APPEND INITIAL LINE TO it_parametro_act ASSIGNING <param>.


<param>-param = 'ZACAD_YEAR98'.
<param>-param_value = zanoini.

APPEND INITIAL LINE TO it_parametro_act ASSIGNING <param>.


<param>-param = 'ZACAD_YEAR99'.
<param>-param_value = zanofin.

APPEND INITIAL LINE TO it_parametro_act ASSIGNING <param>.


<param>-param = 'ZACAD_SESSION98'.
<param>-param_value = lv_periodo_d.

APPEND INITIAL LINE TO it_parametro_act ASSIGNING <param>.


<param>-param = 'ZACAD_SESSION99'.
<param>-param_value = lv_periodo_h.
APPEND INITIAL LINE TO it_parametro_act ASSIGNING <param>.
<param>-param = 'ZESTUDIANTE'.
<param>-param_value = p_student_objid.

APPEND INITIAL LINE TO it_parametro_act ASSIGNING <param>.


<param>-param = 'ZPROGRAMA'.
<param>-param_value = p_program_objid.

" Promedio acumulado periodo Anterior

APPEND INITIAL LINE TO it_parametro_ant ASSIGNING <param>.


<param>-param = 'ZACAD_YEAR98'.
<param>-param_value = zanoini.

APPEND INITIAL LINE TO it_parametro_ant ASSIGNING <param>.


<param>-param = 'ZACAD_YEAR99'.
<param>-param_value = zanoant.

APPEND INITIAL LINE TO it_parametro_ant ASSIGNING <param>.


<param>-param = 'ZACAD_SESSION98'.
<param>-param_value = lv_periodo_d.

APPEND INITIAL LINE TO it_parametro_ant ASSIGNING <param>.


<param>-param = 'ZACAD_SESSION99'.
<param>-param_value = lv_periodo_h.

APPEND INITIAL LINE TO it_parametro_ant ASSIGNING <param>.


<param>-param = 'ZESTUDIANTE'.
<param>-param_value = p_student_objid.

APPEND INITIAL LINE TO it_parametro_ant ASSIGNING <param>.


<param>-param = 'ZPROGRAMA'.
<param>-param_value = p_program_objid.

ELSE.
p_noinscrip = 'X'.
ENDIF.

ENDFORM. " PROMEDIOS_ESTUDIANTE


*&---------------------------------------------------------------------*
*& Form PROGRESION_CUALITATIVA
*&---------------------------------------------------------------------*
* Determina la progresi�n cualitativa
*----------------------------------------------------------------------*
* -->P_WA_IDSTUDENT_OBJID text
* <--P_<SAL1>_PROGCUAL text
*----------------------------------------------------------------------*
FORM progresion_cualitativa USING p_wa_idstudent_objid
CHANGING p_progcual
p_semestre.

DATA: it_progression_txt TYPE STANDARD TABLE OF bapiprog_group_result_txt,


it_progression_results TYPE STANDARD TABLE OF bapiprog_group_result,
wa_progression_results TYPE bapiprog_group_result,
wa_progression_txt TYPE bapiprog_group_result_txt.

* RANGES: r_resul FOR bapiprog_group_result-progression_result.


* r_resul-sign = 'I'.
* r_resul-option = 'EQ'.
* r_resul-low = 'BUEN'. APPEND r_resul.
* r_resul-low = 'EXCE'. APPEND r_resul.
* r_resul-low = 'PRIM'. APPEND r_resul.
* r_resul-low = 'PRU0'. APPEND r_resul.
* r_resul-low = 'PRU1'. APPEND r_resul.
* r_resul-low = 'PERP'. APPEND r_resul.

CALL FUNCTION 'BAPI_STUDENTPROGRESULTS_GET'


EXPORTING
objectid = p_wa_idstudent_objid
keydate = sy-datum
read_texts = 'X'
language = sy-langu
TABLES
progression_results = it_progression_results
progression_results_txt = it_progression_txt
return = it_return.

* LOOP AT it_progression_txt INTO wa_progression_txt WHERE progression_result IN


r_resul.
LOOP AT it_progression_txt INTO wa_progression_txt.
IF wa_progression_txt-progression_result(1) NA '0123456789'.
p_progcual = wa_progression_txt-progression_result_txt.
ENDIF.
ENDLOOP.

LOOP AT it_progression_results INTO wa_progression_results WHERE


progression_category = '1'.
p_semestre = wa_progression_results-progression_result.
EXIT.
ENDLOOP.
ENDFORM. " PROGRESION_CUALITATIVA
*&---------------------------------------------------------------------*
*& Form CLEAR
*&---------------------------------------------------------------------*
* Limpia variables y tablas internas
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM clear .

REFRESH:
it_hrp1735 ,
it_hrp1741,
it_return_tab,
it_planest,
it_codplan,
it_codest,
it_codmat,
it_idstudent,
it_student,
it_txtplanest,
it_materias,
it_nommateria,
it_matestud,
it_period,
it_en_matnota,
it_notas,
it_appraisal,
it_parametro,
it_parametro_ant,
it_parametro_per,
it_parametro_act,
it_indices,
it_return,
it_registrations.

CLEAR:

wa_hrp1735,
wa_hrp1741,
lv_error,
wa_return_tab,
wa_planest,
wa_codplan,
wa_codest,
wa_codmat,
wa_idstudent,
wa_student,
wa_txtplanest,
wa_materias,
wa_nommateria,
wa_matestud,
wa_period,
wa_en_matnota,
wa_notas,
wa_appraisal,
wa_text,
lv_creditos,
lv_promedio,
lv_tipo_prom,
wa_yearprd,
wa_return,
lv_totestud.

ENDFORM. " CLEAR


*&---------------------------------------------------------------------*
*& Form BUSCA_NOTAS
*&---------------------------------------------------------------------*
* Busca notas de estudiante
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM busca_notas USING p_idstudent_objid.

CLEAR gr_sel.
REFRESH lt_work_pindex.

CREATE OBJECT gr_sel


EXPORTING
iv_plvar = lv_plvar
iv_stobjid = p_idstudent_objid
iv_keydate = sy-datum
iv_check = iv_check
EXCEPTIONS
invalid_plvar = 1
student_not_found = 2
invalid_date = 3
no_studies_for_student = 4
internal_error = 5
OTHERS = 6.

* get academic work records assigned to program type


CALL METHOD gr_sel->get_all_work_for_rfc
IMPORTING
et_all_work_pindex = lt_work_pindex
EXCEPTIONS
internal_error = 1
OTHERS = 2.

DELETE lt_work_pindex WHERE peryr NE p_djahr AND perid NE p_perid.

ENDFORM. " BUSCA_NOTAS


*----------------------------------------------------------------------*
* Form FILL_LAYOUT
*----------------------------------------------------------------------*
FORM fill_layout USING p_layout TYPE lvc_s_layo
p_variant TYPE disvariant.
p_layout-no_vgridln = 'X'.
* p_layout-no_hgridln = on.
p_layout-no_merging = 'X'.
* p_layout-no_toolbar = on.
p_layout-sel_mode = 'C'.
p_layout-info_fname = 'INFO'.

IF pa_var IS INITIAL.
p_variant-report = sy-repid.
ENDIF.

ENDFORM. " FILL_LAYOUT


*&---------------------------------------------------------------------*
*& Form ALV_F4
*&---------------------------------------------------------------------*
*& Trae variantes de layout creadas para el reporte
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM alv_f4 .
go_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = go_variant
i_save = 'A'
IMPORTING
es_variant = go_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
pa_var = go_variant-variant.
ENDIF.
ENDFORM. "alv_f4

You might also like