Documentos de Académico
Documentos de Profesional
Documentos de Cultura
* Tipo Objeto : Reporte
*
* Programa : ZSKCFIR0002
*
*
*
* Proyecto : SKC
*
* Fecha : 17-03-2014
*
* Empresa : xxxxxxxxxxx
*
* Funcionales : xxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxxxs
*
* Desarrollador : Sergio Martín
*
*
*
* Descripción general del proceso:
*
* Corregir folios de sociedad CC03.
*
*
*
*----------------------------------------------------------------------*
* Modificaciones:
*
*
*
* Fecha Autor Descripción
*
* dd.mm.aaaa xxxxxxxxx xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*
*
*
*----------------------------------------------------------------------*
REPORT ZSKCFIR0002.
*----------------------------------------------------------------------*
* Tablas BD
*----------------------------------------------------------------------*
TABLES: bkpf, vbrk, ZTFOLIOS_CC03.
*----------------------------------------------------------------------*
* Tablas internas
*----------------------------------------------------------------------*
DATA: BEGIN OF ti_bkpf OCCURS 0.
INCLUDE STRUCTURE bkpf .
DATA: END OF ti_bkpf.
DATA: BEGIN OF ti_bkpf2 OCCURS 0.
INCLUDE STRUCTURE bkpf .
DATA: END OF ti_bkpf2.
DATA: BEGIN OF ti_vbrk OCCURS 0.
INCLUDE STRUCTURE vbrk .
DATA: END OF ti_vbrk.
DATA: BEGIN OF ti_folios OCCURS 0.
INCLUDE STRUCTURE ZTFOLIOS_CC03.
DATA: END OF ti_folios.
DATA: BEGIN OF ti_output OCCURS 0.
INCLUDE STRUCTURE ZTFOLIOS_CC03.
DATA: END OF ti_output.
*----------------------------------------------------------------------*
* Definiciones
*----------------------------------------------------------------------*
DATA: lv_registros(7) TYPE n.
DATA: G_REPID LIKE SY-REPID.
DATA: wa_bkpf LIKE bkpf.
DATA: wa_vbrk LIKE vbrk.
DATA: vl_gjahr LIKE bkpf-gjahr.
DATA: l_texto(120) TYPE c.
* definiciones BI
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: gt_mensajes LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF messtab OCCURS 10.
INCLUDE STRUCTURE bdcmsgcoll.
DATA END OF messtab.
DATA: bdc_mode(1) TYPE C VALUE 'N',
pa_modo LIKE CTU_PARAMS-DISMODE,
flag(1),
aux type i,
valor type p decimals 0,
contador TYPE i,
Vkotabnr LIKE RV13A-KOTABNR,
v_id(100) TYPE C,
gv_leidas LIKE sy-dbcnt.
*-----------------------------------------------------------------------
* DeclaraciÛn de ALV
*-----------------------------------------------------------------------
TYPE-POOLS: slis. "Grupo de tipos para ALV
DATA: fieldcat TYPE slis_fieldcat_alv OCCURS 0 WITH HEADER LINE
.
DATA: layout TYPE slis_layout_alv.
DATA: repid LIKE sy-repid.
DATA: events TYPE slis_t_event.
DATA: list_top_of_page TYPE slis_t_listheader.
*----------------------------------------------------------------------*
* Parametros
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS : so_bldat FOR bkpf-bldat OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS: pa_test TYPE xfeld.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* Inicializacion
*----------------------------------------------------------------------*
INITIALIZATION.
G_REPID = SY-REPID.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
*--Leer tabla de folios CC03
REFRESH ti_folios.
SELECT * FROM ZTFOLIOS_CC03
APPENDING CORRESPONDING FIELDS OF TABLE ti_folios
WHERE bukrs = 'CC03'.
*--Leer BKPF según parametros ingresados
SELECT * FROM bkpf
APPENDING CORRESPONDING FIELDS OF TABLE ti_bkpf
WHERE bukrs = 'CC03'
AND bldat IN so_bldat.
*--Proceso principal
PERFORM proceso_principal.
*--listado procesados
PERFORM listado_alv.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form PROCESO_PRINCIPAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROCESO_PRINCIPAL .
*--recorrer registros de bkpf seleccionados buscando referencia
LOOP AT ti_bkpf.
CLEAR l_texto.
READ TABLE ti_folios WITH KEY xblnr = ti_bkpf-xblnr.
IF sy-subrc EQ 0.
*-----modifica registro factura
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ti_folios-vbeln
IMPORTING
OUTPUT = ti_folios-vbeln.
CLEAR ti_vbrk.
REFRESH ti_vbrk.
SELECT * FROM vbrk
APPENDING CORRESPONDING FIELDS OF TABLE ti_vbrk
WHERE vbeln = ti_folios-vbeln.
IF sy-subrc = 0.
LOOP AT ti_vbrk.
MOVE ti_folios-xblnr TO ti_vbrk-xblnr.
MODIFY ti_vbrk.
CLEAR vl_gjahr.
vl_gjahr = ti_vbrk-fkdat+0(4).
ENDLOOP.
ELSE.
CONCATENATE 'Nro.' ti_folios-belnr 'no encontrado en BKPF'
INTO l_texto SEPARATED BY SPACE.
ENDIF.
*-----modifica registro contable
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ti_folios-belnr
IMPORTING
OUTPUT = ti_folios-belnr.
CLEAR ti_bkpf2.
REFRESH ti_bkpf2.
SELECT * FROM bkpf
APPENDING CORRESPONDING FIELDS OF TABLE ti_bkpf2
WHERE bukrs = ti_folios-bukrs
AND belnr = ti_folios-belnr
AND gjahr = vl_gjahr.
IF sy-subrc = 0.
PERFORM bi_fb02.
PERFORM ejecuta_transaccion_test.
ELSE.
CONCATENATE 'Nro.' ti_folios-belnr 'no encontrado en BKPF'
INTO l_texto SEPARATED BY SPACE.
ENDIF.
*-----si no es ejecución de prueba
IF pa_test <> 'X'.
READ TABLE ti_vbrk INDEX 1.
MODIFY VBRK FROM ti_vbrk.
COMMIT WORK AND WAIT.
PERFORM ejecuta_transaccion.
ENDIF.
*-----datos para alv
READ TABLE ti_bkpf2 INDEX 1.
MOVE ti_folios-bukrs TO ti_output-bukrs.
MOVE ti_folios-xblnr TO ti_output-xblnr.
MOVE ti_folios-belnr TO ti_output-belnr.
MOVE ti_bkpf2-bldat TO ti_output-bldat.
MOVE ti_bkpf2-budat TO ti_output-budat.
MOVE ti_folios-vbeln TO ti_output-vbeln.
MOVE l_texto TO ti_output-l_texto.
APPEND ti_output.
ENDIF.
ENDLOOP.
ENDFORM. " PROCESO_PRINCIPAL
*----------------------------------------------------------------------*
* bdc_dynpro
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. " BDC_DYNPRO
*----------------------------------------------------------------------*
* bdc_field
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form EJECUTA_TRANSACCION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM EJECUTA_TRANSACCION .
CLEAR gt_mensajes[].
refresh gt_mensajes.
pa_modo = 'N'.
CALL TRANSACTION 'FB02' USING bdcdata
MODE pa_modo
UPDATE 'A'
MESSAGES INTO gt_mensajes.
LOOP AT gt_mensajes WHERE msgid = 'E'.
CLEAR l_texto.
MESSAGE ID gt_mensajes-MSGID TYPE gt_mensajes-MSGTYP
NUMBER gt_mensajes-MSGNR WITH gt_mensajes-MSGV1 INTO l_texto.
ENDLOOP.
CLEAR bdcdata.
REFRESH bdcdata.
ENDFORM. "EJECUTA_TRANSACCION
*&---------------------------------------------------------------------*
*& Form BI_FB02
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BI_FB02 .
perform bdc_dynpro using 'SAPMF05L' '0100'.
perform bdc_field using 'BDC_CURSOR' 'RF05L-BELNR'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'RF05L-BELNR' ti_folios-
belnr.
perform bdc_field using 'RF05L-BUKRS' ti_folios-
bukrs.
perform bdc_field using 'RF05L-GJAHR' vl_gjahr.
perform bdc_dynpro using 'SAPMF05L' '0700'.
perform bdc_field using 'BDC_CURSOR' 'BKPF-BELNR'.
perform bdc_field using 'BDC_OKCODE' '=VK'.
perform bdc_dynpro using 'SAPMF05L' '1710'.
perform bdc_field using 'BDC_CURSOR' 'BKPF-XBLNR'.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'BKPF-XBLNR' ti_folios-
xblnr.
* perform bdc_field using 'BKPF-XREF1_HD' '0040000014
'.
perform bdc_dynpro using 'SAPMF05L' '0700'.
perform bdc_field using 'BDC_CURSOR' 'BKPF-BELNR'.
perform bdc_field using 'BDC_OKCODE' '=AE'.
ENDFORM. " BI_FB02
*&---------------------------------------------------------------------*
*& Form EJECUTA_TRANSACCION_TEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EJECUTA_TRANSACCION_TEST .
CLEAR gt_mensajes[].
refresh gt_mensajes.
pa_modo = 'N'.
CALL TRANSACTION 'FB02' USING bdcdata
MODE pa_modo
UPDATE 'L'
MESSAGES INTO gt_mensajes.
LOOP AT gt_mensajes WHERE msgid = 'E'.
CLEAR l_texto.
MESSAGE ID gt_mensajes-MSGID TYPE gt_mensajes-MSGTYP
NUMBER gt_mensajes-MSGNR WITH gt_mensajes-MSGV1 INTO l_texto.
ENDLOOP.
CLEAR bdcdata.
REFRESH bdcdata.
ENDFORM. " EJECUTA_TRANSACCION_TEST
*&---------------------------------------------------------------------*
*& Form LISTADO_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LISTADO_ALV .
TYPE-POOLS: slis.
INCLUDE <icon>.
INCLUDE <symbol>.
DATA : gt_fieldcat TYPE slis_t_fieldcat_alv, "fieldattributes
gs_layout TYPE slis_layout_alv, "list layout
gt_events TYPE slis_t_event, "list events
gt_sp_group TYPE slis_t_sp_group_alv, "list groups
g_repid LIKE sy-repid, "reportname
gt_list_top_of_page TYPE slis_t_listheader, "top-of-page
g_save(1) TYPE c, "variants
gx_variant LIKE disvariant, "variants
g_variant LIKE disvariant, "variants
g_exit(1) TYPE c,
gs_keyinfo TYPE slis_keyinfo_alv, "relation
"between header + item table
g_tabname_header TYPE slis_tabname, "name header
g_tabname_item TYPE slis_tabname, "name item
wa_colorf TYPE slis_specialcol_alv, "color info
once TYPE c.
*CONSTANTS : gc_formname_top_of_page TYPE slis_formname
* VALUE 'TOP_OF_PAGE',
* gc_formname_end_of_list TYPE slis_formname
* VALUE 'END_OF_LIST'.
PERFORM eventos.
PERFORM build_layout.
PERFORM alv_fieldcat USING fieldcat.
PERFORM cargalv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form EVENTOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM eventos .
DATA: ls_event TYPE slis_alv_event.
MOVE slis_ev_top_of_page TO ls_event-name.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO events.
ENDFORM. " CABECERA
*&---------------------------------------------------------------------*
*& Form ALV_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELDCAT text
*----------------------------------------------------------------------*
FORM alv_fieldcat USING p_fieldcat.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BUKRS'.
ls_fieldcat-seltext_m = 'Sociedad'.
ls_fieldcat-just = 'L'.
APPEND ls_fieldcat TO fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BELNR'.
ls_fieldcat-seltext_m = 'Doc. cont.'.
ls_fieldcat-just = 'L'.
APPEND ls_fieldcat TO fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BLDAT'.
ls_fieldcat-seltext_m = 'Creacion'.
ls_fieldcat-just = 'R'.
APPEND ls_fieldcat TO fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BUDAT'.
ls_fieldcat-seltext_m = 'Contabilizacion'.
ls_fieldcat-just = 'R'.
APPEND ls_fieldcat TO fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_m = 'Doc. Factura'.
ls_fieldcat-just = 'R'.
APPEND ls_fieldcat TO fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'L_TEXTO'.
ls_fieldcat-seltext_m = 'Observacion'.
ls_fieldcat-just = 'L'.
APPEND ls_fieldcat TO fieldcat.
ENDFORM. " ALV_FIELDCAT
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_layout .
layout-no_colhead = space.
layout-zebra = 'X'.
layout-no_vline = space.
layout-no_input = space.
layout-colwidth_optimize = 'X'.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form CARGALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM cargalv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
* i_callback_pf_status_set = 'PF_STATUS_SET'
it_fieldcat = fieldcat[]
is_layout = layout
i_save = 'X'
TABLES
t_outtab = ti_output
EXCEPTIONS
program_error = 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.
ENDFORM. " CARGALV
*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = list_top_of_page.
ENDFORM