Professional Documents
Culture Documents
ZCM Promedio Acum ST1 FRM
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 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.
* 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.
" 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.
wa_dynpfields-fieldname = 'FACULTAD'.
APPEND wa_dynpfields TO it_dynpfields.
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[].
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.
* 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.
ENDIF.
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.
lv_totestud = lv_totestud + 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
* ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* ENDLOOP.
ENDLOOP.
ENDLOOP.
*&---------------------------------------------------------------------*
*& 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.
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.
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.
* 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.
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.
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.
ENDIF.
ELSE.
p_noinscrip = 'X'.
ENDIF.
ELSE.
p_noinscrip = 'X'.
ENDIF.
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.
CLEAR gr_sel.
REFRESH lt_work_pindex.
IF pa_var IS INITIAL.
p_variant-report = sy-repid.
ENDIF.