27 marzo, 2012

Generar un fichero externo. Programa ejemplo ZA3SOC.

Posted in Código de ejemplo a 4:49 pm por sapyabap


 
report  za3soc.

************************************************************************
***********                     TIPOS                        ***********
************************************************************************

type-pools: slis.

************************************************************************
***********                   TABLAS                         ***********
************************************************************************
tables: ska1, t001.

data: it_saldos like table of bapi1028_4 with header line.
data: it_saldos_ant like table of bapi1028_4 with header line.
data: it_saldos_ante like table of bapi1028_4 with header line.

data: begin of it_ctas occurs 0,
            saknr like bapi1028_0-gl_account.
data: end of it_ctas.

data: begin of it_datos occurs 0,

  d_paval type paval,
  saknr like bapi1028_0-gl_account,
  sdo_ini like bapi1028_4-balance,
  sdo_fin like bapi1028_4-balance,
  debe like bapi1028_4-debits_per,
  haber like bapi1028_4-credit_per,
  anyo like bapi1028_4-fisc_year.

data: end of it_datos.

data: begin of it_datos_ant occurs 0,

  d_paval type paval,
  saknr like bapi1028_0-gl_account,
  sdo_ini like bapi1028_4-balance,
  sdo_fin like bapi1028_4-balance,
  debe like bapi1028_4-debits_per,
  haber like bapi1028_4-credit_per,
  anyo like bapi1028_4-fisc_year.

data: end of it_datos_ant.

data: begin of it_aux occurs 0,

          d_paval(10)     type c,
          saknr(4)        type c,
          sdo_ini(12)     type c,
          sdo_fin(12)     type c,
          debe(12)        type c,
          haber(12)       type c,
          anyo(4)         type c.

data: end of it_aux.

************************************************************************
***********                   CLASES                         ***********
************************************************************************
class lcl_application definition.

  public section.
    methods handle_double_click2
    for event double_click of cl_gui_alv_grid
    importing e_row e_column es_row_no.

endclass.                    “lcl_application2 DEFINITION
*———————————————————————-*
*       CLASS lcl_application2 IMPLEMENTATION
*———————————————————————-*
*
*———————————————————————-*
class lcl_application implementation.
  method handle_double_click2.

  endmethod.                    “handle_double_click

endclass.                    “lcl_application2 IMPLEMENTATION

************************************************************************
***********                 VARIABLES                        ***********
************************************************************************
data: s_anyo_ant like bapi1028_4-fisc_year,
      s_anyo_ante like bapi1028_4-fisc_year,
      d_paval like t001z-paval,
      g_aplicacion type ref to lcl_application,
      g_custom_contenedor1 type ref to cl_gui_custom_container,
      g_splitter1 type ref to cl_gui_splitter_container,
      g_container_1 type ref to cl_gui_container,
      g_grid1 type ref to cl_gui_alv_grid,
      is_variant type disvariant,
      custom_container type ref to cl_gui_custom_container,
      fichero type string.
data: aux(66).
data: ok_code                        like sy-ucomm,
      old_okcode                     like sy-ucomm,
      save_ok                        like sy-ucomm,
      g_repid like sy-repid.

data: init(1),
      x_save type char01 value ‘A’.

data wa_datos like line of it_datos.
data wa_datos_ant like line of it_datos.
data wa_aux like line of it_aux.
data wa_anterior like line of it_datos.
data wa_anterior_ant like line of it_datos.

data: ls_fieldcat like lvc_s_fcat occurs 0  with header line,
      ls_layout type lvc_s_layo.

*Primer Bloque: Datos de Selección
selection-screen begin of block seleccion with frame title text-001.
parameters:
  s_plan like ska1-ktopl obligatory,
  s_soc like bapi1028_0-comp_code obligatory,
  s_anyo like bapi1028_4-fisc_year obligatory.

selection-screen end of block seleccion.

*Segundo Bloque: Datos de Fichero
selection-screen begin of block ruta with frame title text-009.
parameters:
  s_ruta(100) type c obligatory,
  s_archi(50) type c obligatory.

selection-screen end of block ruta.

start-of-selection.

  call screen ‘0100’.

*&———————————————————————*
*&      Form  OBTENER_DATOS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
form obtener_datos.

  data anterior like sy-tabix.

  clear it_datos.

  select * into corresponding fields of table it_ctas
       from ska1 as a inner join skb1 as b
         on ( a~mandt = b~mandt
         and a~saknr = b~saknr ) client specified
       where a~ktopl = s_plan
         and b~bukrs = s_soc.

  sort it_ctas.
  delete adjacent duplicates from it_ctas.

  loop at it_ctas.
*    IF it_ctas-saknr = ‘0057288888’ OR it_ctas-saknr = ‘0079300000’ OR it_ctas-saknr = ‘0079300001’.

*    ENDIF.

    s_anyo_ant = s_anyo – 1.
    s_anyo_ante = s_anyo_ant – 1.

    call function ‘BAPI_GL_GETGLACCPERIODBALANCES’
      exporting
        companycode      = s_soc
        glacct           = it_ctas-saknr
        fiscalyear       = s_anyo
        currencytype     = ’10’ “Moneda de la sociedad
      tables
        account_balances = it_saldos.

*    IF it_saldos[] IS NOT INITIAL.

    loop at it_saldos.

      wa_datos-debe = wa_datos-debe + it_saldos-debits_per.
      wa_datos-haber = wa_datos-haber + it_saldos-credit_per.

      if it_saldos-fis_period = ’16’.
        wa_datos-sdo_fin = it_saldos-balance.
      endif.

    endloop.

    call function ‘BAPI_GL_GETGLACCPERIODBALANCES’
      exporting
        companycode      = s_soc
        glacct           = it_ctas-saknr
        fiscalyear       = s_anyo_ant
        currencytype     = ’10’ “Moneda de la sociedad
      tables
        account_balances = it_saldos_ant.

*    IF it_saldos_ant[] IS NOT INITIAL.
      read table it_saldos_ant with key fis_period = ’16’.
      if sy-subrc = 0.
        wa_datos-sdo_ini = it_saldos_ant-balance.
      endif.

** nif sdad, num cuenta y ejercicio para it_datos.
      select single paval into d_paval from t001z
                    where bukrs = s_soc and party = ‘SAP001’.

      wa_datos-d_paval = d_paval.
      wa_datos-saknr = it_ctas-saknr+2(4).
      wa_datos-anyo = s_anyo.

*        APPEND wa_datos TO it_datos.
*    ELSE.
*      wa_datos-sdo_ini = ‘0’.
*      SELECT SINGLE paval INTO d_paval FROM t001z
*                 WHERE bukrs = s_soc AND party = ‘SAP001′.
*
*      wa_datos-d_paval = d_paval.
*      wa_datos-saknr = it_ctas-saknr+2(4).
*      wa_datos-anyo = s_anyo.
*
**        APPEND wa_datos TO it_datos.
*    ENDIF.
*    ENDIF.
*      CLEAR wa_datos.

    loop at it_saldos_ant.

      wa_datos_ant-debe = wa_datos_ant-debe + it_saldos_ant-debits_per.
      wa_datos_ant-haber = wa_datos_ant-haber + it_saldos_ant-credit_per.

      if it_saldos_ant-fis_period = ’16’.
        wa_datos_ant-sdo_fin = it_saldos_ant-balance.
      endif.

    endloop.

    call function ‘BAPI_GL_GETGLACCPERIODBALANCES’
      exporting
        companycode      = s_soc
        glacct           = it_ctas-saknr
        fiscalyear       = s_anyo_ante
        currencytype     = ’10’ “Moneda de la sociedad
      tables
        account_balances = it_saldos_ante.

*    IF it_saldos_ante[] IS NOT INITIAL.
      read table it_saldos_ante with key fis_period = ’16’.
      if sy-subrc = 0.
        wa_datos_ant-sdo_ini = it_saldos_ante-balance.
      endif.

** nif sdad, num cuenta y ejercicio para it_datos.
      select single paval into d_paval from t001z
                    where bukrs = s_soc and party = ‘SAP001’.

      wa_datos_ant-d_paval = d_paval.
      wa_datos_ant-saknr = it_ctas-saknr+2(4).
      wa_datos_ant-anyo = s_anyo_ant.

*        APPEND wa_datos_ant TO it_datos_ant.

*    ELSE.
*      wa_datos_ant-sdo_ini = ‘0’.
*      SELECT SINGLE paval INTO d_paval FROM t001z
*                 WHERE bukrs = s_soc AND party = ‘SAP001’.
*
*      wa_datos_ant-d_paval = d_paval.
*      wa_datos_ant-saknr = it_ctas-saknr+2(4).
*      wa_datos_ant-anyo = s_anyo_ant.
*
**        APPEND wa_datos_ant TO it_datos_ant.
*    ENDIF.

    if wa_datos_ant-debe = ‘0’ and wa_datos_ant-haber = ‘0’ and wa_datos_ant-sdo_fin = ‘0’
        AND wa_datos_ant-sdo_ini = ‘0’ AND wa_datos-debe = ‘0’ AND wa_datos-haber = ‘0’
        and wa_datos-sdo_fin = ‘0’ and wa_datos-sdo_ini = ‘0’.
      continue.
    else.

      append wa_datos to it_datos.
      append wa_datos_ant to it_datos_ant.
    endif.
    clear wa_datos_ant.
    clear wa_datos.
*    ENDIF.

  endloop.

  clear it_datos.
  clear it_datos_ant.

************ OBTENEMOS SALDOS POR CUENTA ******************************
  read table it_datos index 1 into wa_anterior.

  loop at it_datos.

    if it_datos-saknr = wa_anterior-saknr.

      wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos-sdo_ini * 100 ).
      perform signo_delante changing wa_aux-sdo_ini.

      wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos-sdo_fin * 100 ).
      perform signo_delante changing wa_aux-sdo_fin.

      wa_aux-debe = wa_aux-debe + ( it_datos-debe * 100 ).
      perform signo_delante changing wa_aux-debe.

      wa_aux-haber = wa_aux-haber + ( it_datos-haber * 100 ).
      perform signo_delante changing wa_aux-haber.

      if wa_aux-d_paval is initial.
        wa_aux-d_paval = it_datos-d_paval.
        shift wa_aux-d_paval right deleting trailing space.
        wa_aux-saknr = it_datos-saknr.
        shift wa_aux-saknr right deleting trailing space.
        wa_aux-anyo = it_datos-anyo.
        shift wa_aux-anyo right deleting trailing space.
      endif.
    else.

      append wa_aux to it_aux.
      clear wa_aux.

      wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos-sdo_ini * 100 ).
      perform signo_delante changing wa_aux-sdo_ini.

      wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos-sdo_fin * 100 ).
      perform signo_delante changing wa_aux-sdo_fin.

      wa_aux-debe = wa_aux-debe + ( it_datos-debe * 100 ).
      perform signo_delante changing wa_aux-debe.

      wa_aux-haber = wa_aux-haber + ( it_datos-haber * 100 ).
      perform signo_delante changing wa_aux-haber.

      if wa_aux-d_paval is initial.
        wa_aux-d_paval = it_datos-d_paval.
        shift wa_aux-d_paval right deleting trailing space.
        wa_aux-saknr = it_datos-saknr.
        shift wa_aux-saknr right deleting trailing space.
        wa_aux-anyo = it_datos-anyo.
        shift wa_aux-anyo right deleting trailing space.
      endif.

    endif.

    wa_anterior = it_datos.

  endloop.
************************************

  append wa_aux to it_aux.

******28.07.2011*******************************************************
  clear wa_aux.
  clear wa_anterior.
  read table it_datos_ant index 1 into wa_anterior.

  loop at it_datos_ant.

    read table it_aux with key saknr = it_datos_ant-saknr.
    if sy-subrc = 0.

      if it_datos_ant-saknr = wa_anterior-saknr.

        wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos_ant-sdo_ini * 100 ).
        perform signo_delante changing wa_aux-sdo_ini.

        wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos_ant-sdo_fin * 100 ).
        perform signo_delante changing wa_aux-sdo_fin.

        wa_aux-debe = wa_aux-debe + ( it_datos_ant-debe * 100 ).
        perform signo_delante changing wa_aux-debe.

        wa_aux-haber = wa_aux-haber + ( it_datos_ant-haber * 100 ).
        perform signo_delante changing wa_aux-haber.

        if wa_aux-d_paval is initial.
          wa_aux-d_paval = it_datos_ant-d_paval.
          shift wa_aux-d_paval right deleting trailing space.
          wa_aux-saknr = it_datos_ant-saknr.
          shift wa_aux-saknr right deleting trailing space.
          wa_aux-anyo = it_datos_ant-anyo.
          shift wa_aux-anyo right deleting trailing space.
        endif.
      else.

        append wa_aux to it_aux.
        clear wa_aux.

        wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos_ant-sdo_ini * 100 ).
        perform signo_delante changing wa_aux-sdo_ini.

        wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos_ant-sdo_fin * 100 ).
        perform signo_delante changing wa_aux-sdo_fin.

        wa_aux-debe = wa_aux-debe + ( it_datos_ant-debe * 100 ).
        perform signo_delante changing wa_aux-debe.

        wa_aux-haber = wa_aux-haber + ( it_datos_ant-haber * 100 ).
        perform signo_delante changing wa_aux-haber.

        if wa_aux-d_paval is initial.
          wa_aux-d_paval = it_datos_ant-d_paval.
          shift wa_aux-d_paval right deleting trailing space.
          wa_aux-saknr = it_datos_ant-saknr.
          shift wa_aux-saknr right deleting trailing space.
          wa_aux-anyo = it_datos_ant-anyo.
          shift wa_aux-anyo right deleting trailing space.
        endif.

      endif.

      wa_anterior = it_datos_ant.
    else.
      continue.
    endif.
  endloop.
************************************************

  append wa_aux to it_aux.
  clear wa_aux.

*******************************************
  sort it_aux by saknr anyo.
****28.07.2011**************************************************************
**para quitar espacios entre campos de la tabla de salida.

  loop at it_aux.
    concatenate it_aux-d_paval it_aux-saknr it_aux-sdo_ini
                it_aux-sdo_fin it_aux-debe it_aux-haber it_aux-anyo
                into aux.

  endloop.
endform.                    ” OBTENER_DATOS
*&———————————————————————*
*&      Form  CREAR_FIELDCAT
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
form crear_fieldcat .

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘D_PAVAL’.
  ls_fieldcat-reptext   = text-008.
  ls_fieldcat-scrtext_l = text-008.
  ls_fieldcat-scrtext_m = text-008.
  ls_fieldcat-scrtext_s = text-008.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘SAKNR’.
  ls_fieldcat-reptext   = text-002.
  ls_fieldcat-scrtext_l = text-002.
  ls_fieldcat-scrtext_m = text-002.
  ls_fieldcat-scrtext_s = text-002.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘SDO_INI’.
  ls_fieldcat-reptext   = text-003.
  ls_fieldcat-scrtext_l = text-003.
  ls_fieldcat-scrtext_m = text-003.
  ls_fieldcat-scrtext_s = text-003.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘SDO_FIN’.
  ls_fieldcat-reptext   = text-004.
  ls_fieldcat-scrtext_l = text-004.
  ls_fieldcat-scrtext_m = text-004.
  ls_fieldcat-scrtext_s = text-004.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘DEBE’.
  ls_fieldcat-reptext   = text-005.
  ls_fieldcat-scrtext_l = text-005.
  ls_fieldcat-scrtext_m = text-005.
  ls_fieldcat-scrtext_s = text-005.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘HABER’.
  ls_fieldcat-reptext   = text-006.
  ls_fieldcat-scrtext_l = text-006.
  ls_fieldcat-scrtext_m = text-006.
  ls_fieldcat-scrtext_s = text-006.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname = ‘ANYO’.
  ls_fieldcat-reptext   = text-007.
  ls_fieldcat-scrtext_l = text-007.
  ls_fieldcat-scrtext_m = text-007.
  ls_fieldcat-scrtext_s = text-007.
  ls_fieldcat-just = ‘RIGHT’.
  append ls_fieldcat.

endform.                    ” CREAR_FIELDCAT
*&———————————————————————*
*&      Form  MOSTRAR_SALIDA
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
form mostrar_salida .

  perform crear_fieldcat.
  perform layout using ls_layout.

  is_variant-report    = sy-repid.
  is_variant-handle    = sy-dynnr.

  call method g_grid1->set_table_for_first_display
    exporting
*      i_structure_name     = ‘IT_DATOS1’
      is_layout            = ls_layout
*      it_toolbar_excluding = t_toolbar_excl
      is_variant           = is_variant
      i_save               = x_save
    changing
      it_outtab            = it_aux[]
      it_fieldcatalog      = ls_fieldcat[].

endform.                    ” MOSTRAR_SALIDA
*&———————————————————————*
*&      Form  LAYOUT
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_LS_LAYOUT  text
*———————————————————————-*
form layout  using  p_layout type lvc_s_layo.

  p_layout-grid_title = text-010.
  p_layout-zebra      = ‘X’.
  p_layout-cwidth_opt = ‘X’.

endform.                    ” LAYOUT
*&———————————————————————*
*&      Module  STATUS  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
module status output.
  set pf-status ‘100’.
  set titlebar ‘100’.

  if init is initial.
*   Container de la dynpro
    perform obtener_datos.

    create object g_custom_contenedor1
    exporting container_name = ‘CUSTOM_CONTAINER1’.

*   Creamos el splitter con 2 filas y una columna
    create object g_splitter1
    exporting parent = g_custom_contenedor1
      rows    = 1
      columns = 1.

*   Creamos los contenedores  (aqui irá el grid1)
    call method g_splitter1->get_container
      exporting
        row       = 1
        column    = 1
      receiving
        container = g_container_1.

*  Creamos los Grid
    create object g_grid1
    exporting i_parent = g_container_1.

    create object g_aplicacion.
    init = ‘X’.

    perform mostrar_salida.

  else.
    call method g_grid1->refresh_table_display.
  endif.
endmodule.                 ” STATUS  OUTPUT
*&———————————————————————*
*&      Module  USER_COMMAND_0100  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
module user_command_0100 input.
  save_ok = sy-ucomm.

  case save_ok.
    when ‘BACK’.
      set screen 0.
    when ‘CANC’ or ‘EXIT’.
      leave to screen 0.
    when ‘FICHERO’.
      perform crear_fichero tables it_aux.
  endcase.
endmodule.                 ” USER_COMMAND_0100  INPUT
*&———————————————————————*
*&      Form  SIGNO_DELANTE
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_WA_AUX_SDO_INI  text
*———————————————————————-*
form signo_delante changing valor.
  if valor < 0.

    call function ‘CLOI_PUT_SIGN_IN_FRONT’
      changing
        value = valor.
  endif.
  shift valor right deleting trailing space.

endform.                    ” SIGNO_DELANTE
*&———————————————————————*
*&      Form  CREAR_FICHERO
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_IT_AUX  text
*———————————————————————-*
form crear_fichero  tables t_aux structure it_aux.

  concatenate s_ruta ‘\’ s_archi into fichero.
  condense fichero no-gaps.

  call function ‘GUI_DOWNLOAD’
    exporting
*   BIN_FILESIZE                    =
      filename                      = fichero
     filetype                       = ‘BIN’
*   APPEND                          = ‘ ‘
*   WRITE_FIELD_SEPARATOR           = ‘ ‘
*   HEADER                          = ’00’
*   TRUNC_TRAILING_BLANKS           = ‘ ‘
*   WRITE_LF                        = ‘X’
*   COL_SELECT                      = ‘ ‘
*   COL_SELECT_MASK                 = ‘ ‘
*   DAT_MODE                        = ‘ ‘
*   CONFIRM_OVERWRITE               = ‘ ‘
*   NO_AUTH_CHECK                   = ‘ ‘
*   CODEPAGE                        = ‘ ‘
*   IGNORE_CERR                     = ABAP_TRUE
*   REPLACEMENT                     = ‘#’
*   WRITE_BOM                       = ‘ ‘
*   TRUNC_TRAILING_BLANKS_EOL       = ‘X’
*   WK1_N_FORMAT                    = ‘ ‘
*   WK1_N_SIZE                      = ‘ ‘
*   WK1_T_FORMAT                    = ‘ ‘
*   WK1_T_SIZE                      = ‘ ‘
*   WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
*   SHOW_TRANSFER_STATUS            = ABAP_TRUE
* IMPORTING
*   FILELENGTH                      =
    tables
      data_tab                        = t_aux
*   FIELDNAMES                      =
   exceptions
     file_write_error                = 1
     no_batch                        = 2
     gui_refuse_filetransfer         = 3
     invalid_type                    = 4
     no_authority                    = 5
     unknown_error                   = 6
     header_not_allowed              = 7
     separator_not_allowed           = 8
     filesize_not_allowed            = 9
     header_too_long                 = 10
     dp_error_create                 = 11
     dp_error_send                   = 12
     dp_error_write                  = 13
     unknown_dp_error                = 14
     access_denied                   = 15
     dp_out_of_memory                = 16
     disk_full                       = 17
     dp_timeout                      = 18
     file_not_found                  = 19
     dataprovider_exception          = 20
     control_flush_error             = 21
     others                          = 22
            .
  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.                    ” CREAR_FICHERO
*&———————————————————————*
*&      Form  DATOS_POR_ANYO
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
*FORM datos_anyo_actual USING s_anyo s_anyo_ant CHANGING it_datos.
*
*  s_anyo_ant = s_anyo – 1.
*
*  CALL FUNCTION ‘BAPI_GL_GETGLACCPERIODBALANCES’
*    EXPORTING
*      companycode      = s_soc
*      glacct           = it_ctas-saknr
*      fiscalyear       = s_anyo
*      currencytype     = ’10’ “Moneda de la sociedad
*    TABLES
*      account_balances = it_saldos.
*
*  IF it_saldos[] IS NOT INITIAL.
*
*    LOOP AT it_saldos.
*
*      wa_datos-debe = wa_datos-debe + it_saldos-debits_per.
*      wa_datos-haber = wa_datos-haber + it_saldos-credit_per.
*
*      IF it_saldos-fis_period = ’16’.
*        wa_datos-sdo_fin = it_saldos-balance.
*      ENDIF.
*
*    ENDLOOP.
*
*    CALL FUNCTION ‘BAPI_GL_GETGLACCPERIODBALANCES’
*      EXPORTING
*        companycode      = s_soc
*        glacct           = it_ctas-saknr
*        fiscalyear       = s_anyo_ant
*        currencytype     = ’10’ “Moneda de la sociedad
*      TABLES
*        account_balances = it_saldos_ant.
*
*    IF it_saldos_ant[] IS NOT INITIAL.
*      READ TABLE it_saldos_ant WITH KEY fis_period = ’16’.
*      IF sy-subrc = 0.
*        wa_datos-sdo_ini = it_saldos_ant-balance.
*      ENDIF.
**      ENDIF.
*
*** nif sdad, num cuenta y ejercicio para it_datos.
*      SELECT SINGLE paval INTO d_paval FROM t001z
*                    WHERE bukrs = s_soc AND party = ‘SAP001′.
*
*      wa_datos-d_paval = d_paval.
*      wa_datos-saknr = it_ctas-saknr+2(4).
*      wa_datos-anyo = s_anyo.
*
*      APPEND wa_datos TO it_datos.
*
*    ENDIF.
*  ENDIF.
*  CLEAR wa_datos.
*  CLEAR it_datos.
*
*  READ TABLE it_datos INDEX 1 INTO wa_anterior.
*
*  LOOP AT it_datos.
*
*    IF it_datos-saknr = wa_anterior-saknr.
*
*      wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos-sdo_ini * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_ini.
*
*      wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos-sdo_fin * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_fin.
*
*      wa_aux-debe = wa_aux-debe + ( it_datos-debe * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-debe.
*
*      wa_aux-haber = wa_aux-haber + ( it_datos-haber * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-haber.
*
*      IF wa_aux-d_paval IS INITIAL.
*        wa_aux-d_paval = it_datos-d_paval.
*        SHIFT wa_aux-d_paval RIGHT DELETING TRAILING space.
*        wa_aux-saknr = it_datos-saknr.
*        SHIFT wa_aux-saknr RIGHT DELETING TRAILING space.
*        wa_aux-anyo = it_datos-anyo.
*        SHIFT wa_aux-anyo RIGHT DELETING TRAILING space.
*      ENDIF.
*    ELSE.
*
*      APPEND wa_aux TO it_aux.
*      CLEAR wa_aux.
*
*      wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos-sdo_ini * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_ini.
*
*      wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos-sdo_fin * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_fin.
*
*      wa_aux-debe = wa_aux-debe + ( it_datos-debe * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-debe.
*
*      wa_aux-haber = wa_aux-haber + ( it_datos-haber * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-haber.
*
*      IF wa_aux-d_paval IS INITIAL.
*        wa_aux-d_paval = it_datos-d_paval.
*        SHIFT wa_aux-d_paval RIGHT DELETING TRAILING space.
*        wa_aux-saknr = it_datos-saknr.
*        SHIFT wa_aux-saknr RIGHT DELETING TRAILING space.
*        wa_aux-anyo = it_datos-anyo.
*        SHIFT wa_aux-anyo RIGHT DELETING TRAILING space.
*      ENDIF.
*
*    ENDIF.
*
*    wa_anterior = it_datos.
*
*  ENDLOOP.
*ENDFORM.                    ” DATOS_POR_ANYO
**&———————————————————————*
**&      Form  DATOS_ANYO_ANTERIOR
**&———————————————————————*
**       text
**———————————————————————-*
**      –>P_S_ANYO_ANT  text
**      –>P_S_ANYO_ANTE  text
**———————————————————————-*
*FORM datos_anyo_anterior  USING s_anyo_ant s_anyo_ante.
*  s_anyo_ante = s_anyo_ant – 1.
*  LOOP AT it_saldos_ant.
*
*    wa_datos_ant-debe = wa_datos_ant-debe + it_saldos_ant-debits_per.
*    wa_datos_ant-haber = wa_datos_ant-haber + it_saldos_ant-credit_per.
*
*    IF it_saldos_ant-fis_period = ’16’.
*      wa_datos_ant-sdo_fin = it_saldos_ant-balance.
*    ENDIF.
*
*  ENDLOOP.
*
*  CALL FUNCTION ‘BAPI_GL_GETGLACCPERIODBALANCES’
*    EXPORTING
*      companycode      = s_soc
*      glacct           = it_ctas-saknr
*      fiscalyear       = s_anyo_ante
*      currencytype     = ’10’ “Moneda de la sociedad
*    TABLES
*      account_balances = it_saldos_ante.
*
*  IF it_saldos_ante[] IS NOT INITIAL.
*    READ TABLE it_saldos_ante WITH KEY fis_period = ’16’.
*    IF sy-subrc = 0.
*      wa_datos_ant-sdo_ini = it_saldos_ante-balance.
*    ENDIF.
**      ENDIF.
*
*** nif sdad, num cuenta y ejercicio para it_datos.
*    SELECT SINGLE paval INTO d_paval FROM t001z
*                  WHERE bukrs = s_soc AND party = ‘SAP001’.
*
*    wa_datos_ant-d_paval = d_paval.
*    wa_datos_ant-saknr = it_ctas-saknr+2(4).
*    wa_datos_ant-anyo = s_anyo_ant.
*
*    APPEND wa_datos_ant TO it_datos_ant.
*  ENDIF.
**  ENDIF.
*
*  CLEAR wa_datos_ant.
*  CLEAR it_datos_ant.
*
*  READ TABLE it_datos_ant INDEX 1 INTO wa_anterior_ant.
*
*  LOOP AT it_datos_ant.
*
*    IF it_datos_ant-saknr = wa_anterior_ant-saknr.
*
*      wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos_ant-sdo_ini * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_ini.
*
*      wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos_ant-sdo_fin * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_fin.
*
*      wa_aux-debe = wa_aux-debe + ( it_datos_ant-debe * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-debe.
*
*      wa_aux-haber = wa_aux-haber + ( it_datos_ant-haber * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-haber.
*
*      IF wa_aux-d_paval IS INITIAL.
*        wa_aux-d_paval = it_datos_ant-d_paval.
*        SHIFT wa_aux-d_paval RIGHT DELETING TRAILING space.
*        wa_aux-saknr = it_datos_ant-saknr.
*        SHIFT wa_aux-saknr RIGHT DELETING TRAILING space.
*        wa_aux-anyo = it_datos_ant-anyo.
*        SHIFT wa_aux-anyo RIGHT DELETING TRAILING space.
*      ENDIF.
*    ELSE.
*
*      APPEND wa_aux TO it_aux.
*      CLEAR wa_aux.
*
*      wa_aux-sdo_ini = wa_aux-sdo_ini + ( it_datos_ant-sdo_ini * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_ini.
*
*      wa_aux-sdo_fin = wa_aux-sdo_fin + ( it_datos_ant-sdo_fin * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-sdo_fin.
*
*      wa_aux-debe = wa_aux-debe + ( it_datos_ant-debe * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-debe.
*
*      wa_aux-haber = wa_aux-haber + ( it_datos_ant-haber * 100 ).
*      PERFORM signo_delante CHANGING wa_aux-haber.
*
*      IF wa_aux-d_paval IS INITIAL.
*        wa_aux-d_paval = it_datos_ant-d_paval.
*        SHIFT wa_aux-d_paval RIGHT DELETING TRAILING space.
*        wa_aux-saknr = it_datos_ant-saknr.
*        SHIFT wa_aux-saknr RIGHT DELETING TRAILING space.
*        wa_aux-anyo = it_datos_ant-anyo.
*        SHIFT wa_aux-anyo RIGHT DELETING TRAILING space.
*      ENDIF.
*
*    ENDIF.
*
*    wa_anterior = it_datos_ant.
*
*  ENDLOOP.
*ENDFORM.                    ” DATOS_ANYO_ANTERIOR

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: