Está en la página 1de 10

*----------------------------------------------------------------------*

* 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

También podría gustarte