giovedì 2 febbraio 2017

SM30 custom

*----------------------------------------------------------------------*
* DECLARATIONS                                                         *
*----------------------------------------------------------------------*
DATA: gr_dref TYPE REF TO data,
      gr_alv  TYPE REF TO cl_salv_table.

FIELD-SYMBOLS: <gf_tab> TYPE STANDARD TABLE.

*----------------------------------------------------------------------*
* LAYOUT                                                               *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: pa_tab TYPE tabname OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
* PROGRAM BODY                                                         *
*----------------------------------------------------------------------*
START-OF-SELECTION.

  CREATE DATA gr_dref TYPE TABLE OF (pa_tab).
  ASSIGN gr_dref->* TO <gf_tab>.
  SELECT *
    FROM (pa_tab)
    INTO TABLE <gf_tab>.


END-OF-SELECTION.

  PERFORM output_alv.

*----------------------------------------------------------------------*
* FORM OUTPUT_ALV                                                      *
*----------------------------------------------------------------------*
FORM output_alv.

  TYPE-POOLS slis.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv,
        lt_fieldcat TYPE slis_t_fieldcat_alv,
        ls_layout   TYPE slis_layout_alv,
        ls_glay     TYPE lvc_s_glay.

  CLEAR lt_fieldcat[].
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name   = sy-cprog
      i_structure_name = pa_tab
      i_inclname       = sy-cprog
    CHANGING
      ct_fieldcat      = lt_fieldcat.

  ls_fieldcat-edit = 'X'.
  MODIFY lt_fieldcat FROM ls_fieldcat
                     TRANSPORTING edit
                     WHERE col_pos > 0.

  ls_layout-colwidth_optimize = 'X'.
  ls_layout-zebra = 'X'.

  ls_glay-edt_cll_cb = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-cprog
      i_callback_pf_status_set = 'PF_STATUS_SET'
      i_callback_user_command  = 'USER_COMMAND'
      i_callback_top_of_page   = 'TOP_OF_PAGE'
      i_background_id          = 'ALV_BACKGROUND'
      i_grid_settings          = ls_glay
      is_layout                = ls_layout
      it_fieldcat              = lt_fieldcat
      i_save                   = 'A'
    TABLES
      t_outtab                 = <gf_tab>.

ENDFORM.                    "output_alv

*----------------------------------------------------------------------*
* FORM PF_STATUS_SET                                                   *
*----------------------------------------------------------------------*
FORM pf_status_set USING p_extab TYPE slis_t_extab.

  SET PF-STATUS 'ZSTANDARD' EXCLUDING p_extab.

ENDFORM.                    "pf_status_set

*----------------------------------------------------------------------*
* FORM USER_COMMAND                                                    *
*----------------------------------------------------------------------*
FORM user_command USING p_ucomm    LIKE sy-ucomm
                        p_selfield TYPE slis_selfield.

  FIELD-SYMBOLS: <lf_line> TYPE any.

  CASE p_ucomm.
    WHEN '&SAVE'.
      DELETE FROM (pa_tab).
      LOOP AT <gf_tab> ASSIGNING <lf_line>.
        MODIFY (pa_tab) FROM <lf_line>.
      ENDLOOP.
    WHEN '&APPEND'.
      APPEND INITIAL LINE TO <gf_tab>.
      p_selfield-refresh = 'X'.
    WHEN '&DEL'.
      DELETE <gf_tab> INDEX p_selfield-tabindex.
      p_selfield-refresh = 'X'.
  ENDCASE.

ENDFORM.                    "user_command

*----------------------------------------------------------------------*
* FORM TOP_OF_PAGE                                                     *
*----------------------------------------------------------------------*
FORM top_of_page.

  DATA: lt_listheader TYPE slis_t_listheader,
        ls_listheader TYPE slis_listheader.

  ls_listheader-typ = 'H'.
  ls_listheader-info = pa_tab.
  APPEND ls_listheader TO lt_listheader.

  ls_listheader-typ = 'A'.
  CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum+0(4)
    INTO ls_listheader-info SEPARATED BY '/'.
  CONCATENATE ':' ls_listheader-info
    INTO ls_listheader-info SEPARATED BY space.
  CONCATENATE 'Data'(a01) ls_listheader-info
    INTO ls_listheader-info.
  APPEND ls_listheader TO lt_listheader.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_listheader
      i_logo             = 'BENETTON_LOGO'.

ENDFORM.                    "top_of_page

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

lunedì 30 gennaio 2017

Esportare un file di Excel in formato XML

*----------------------------------------------------------------------*
* DECLARATIONS                                                         *
*----------------------------------------------------------------------*
DATA: BEGIN OF gs_out,
        [...]
      END OF gs_out.

DATA: gt_out LIKE STANDARD TABLE OF gs_out.

*----------------------------------------------------------------------*
* LAYOUT                                                               *
*----------------------------------------------------------------------*
PARAMETERS: pa_file TYPE STRING.

*----------------------------------------------------------------------*
* FORM OUTPUT_XLS                                                      *
*----------------------------------------------------------------------*
FORM output_XLS.

  DATA: lv_xml     TYPE STRING,
        lo_xml_doc TYPE REF TO CL_XML_DOCUMENT,
        lv_file    TYPE LOCALFILE.

  CALL TRANSFORMATION id
     SOURCE data_node = gt_out
     RESULT XML lv_xml.

  CREATE OBJECT lo_xml_doc.
  lo_xml_doc->parse_string( lv_xml ).
  lv_file = pa_file.
  lo_xml_doc->export_to_file( lv_file ).

ENDFORM.                    "output_xls

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

domenica 29 gennaio 2017

Il giorno dei Trifidi, John Wyndham

Il giorno dei Trifidi
Di John Wyndham
Editore: Fanucci


Lingua: Italiano | Numero di pagine: 313 | Isbn-10: 8834710177 | Data di pubblicazione: 2004-xx-xx | Traduttore: Maurizio Nati | Genere: Narrativa & Letteratura - Horror - Fantascienza

giovedì 26 gennaio 2017

Copiare le varianti

*----------------------------------------------------------------------*
* DECLARATIONS                                                         *
*----------------------------------------------------------------------*
TABLES: ltdx.

DATA: gt_ltdx  LIKE ltdx  OCCURS 0,
      gt_ltdxt LIKE ltdxt OCCURS 0,
      gs_ltdx  LIKE LINE OF gt_ltdx,
      gs_ltdxt LIKE LINE OF gt_ltdxt,
      gt_vari  LIKE vari  OCCURS 0,
      gt_varit LIKE varit OCCURS 0,
      gt_varid LIKE varid OCCURS 0,
      gv_msg   TYPE string.

*----------------------------------------------------------------------*
* LAYOUT                                                               *
*----------------------------------------------------------------------*
PARAMETERS: pa_repid LIKE ltdx-report OBLIGATORY,
            pa_rfc   LIKE rfcdes-rfcdest.
SELECTION-SCREEN SKIP.
PARAMETERS: rb_vari RADIOBUTTON GROUP rbg1,
            pa_vari LIKE vari-variant.
SELECTION-SCREEN SKIP.
PARAMETERS: rb_ltdx  RADIOBUTTON GROUP rbg1,
            pa_lvari LIKE ltdx-variant,
            pa_user  LIKE ltdx-username.
SELECT-OPTIONS so_user FOR ltdx-username.

*----------------------------------------------------------------------*
* EVENTS                                                               *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  IF so_user[] IS NOT INITIAL AND
     pa_user IS INITIAL.
    MESSAGE 'Scegliere un utente da cui copiare' TYPE 'E'.
  ENDIF.

*----------------------------------------------------------------------*
* PROGRAM BODY                                                         *
*----------------------------------------------------------------------*
START-OF-SELECTION.

  IF rb_ltdx = 'X'.

    CALL FUNCTION 'ZRFC_READ_LTDX'
      DESTINATION pa_rfc
      EXPORTING
        i_repid    = pa_repid
        i_username = pa_user
        i_variant  = pa_lvari
      TABLES
        t_ltdx     = gt_ltdx
        t_ltdxt    = gt_ltdxt.

    IF gt_ltdx[] IS NOT INITIAL.
      LOOP AT so_user.
        LOOP AT gt_ltdx INTO gs_ltdx WHERE username = pa_user.
          gs_ltdx-username = so_user-low.
          APPEND gs_ltdx TO gt_ltdx.
        ENDLOOP.
        LOOP AT gt_ltdxt INTO gs_ltdxt WHERE username = pa_user.
          gs_ltdxt-username = so_user-low.
          APPEND gs_ltdxt TO gt_ltdxt.
        ENDLOOP.
      ENDLOOP.
      MODIFY ltdx FROM TABLE gt_ltdx.
      MODIFY ltdxt FROM TABLE gt_ltdxt.
      gv_msg = 'Copia completata'.
    ELSE.
      gv_msg = 'Nessun dato da copiare'.
    ENDIF.

  ELSE.

    CALL FUNCTION 'ZRFC_READ_VARI'
      DESTINATION pa_rfc
      EXPORTING
        i_repid   = pa_repid
        i_variant = pa_vari
      TABLES
        t_vari    = gt_vari
        t_varit   = gt_varit
        t_varid   = gt_varid.

    IF gt_vari[] IS NOT INITIAL.
      MODIFY vari FROM TABLE gt_vari.
      MODIFY varit FROM TABLE gt_varit.
      MODIFY varid FROM TABLE gt_varid.
      gv_msg = 'Copia completata'.
    ELSE.
      gv_msg = 'Nessun dato da copiare'.
    ENDIF.

  ENDIF.

END-OF-SELECTION.
  MESSAGE gv_msg TYPE 'I'.



FUNCTION zrfc_read_ltdx.
*"----------------------------------------------------------------------
*"*"Interfaccia locale:
*"  IMPORTING
*"     VALUE(I_REPID) TYPE  REPID
*"     VALUE(I_USERNAME) TYPE  SLIS_USER
*"     VALUE(I_VARIANT) TYPE  SLIS_VARI
*"  TABLES
*"      T_LTDX STRUCTURE  LTDX
*"      T_LTDXT STRUCTURE  LTDXT
*"----------------------------------------------------------------------

  RANGES: lr_user FOR ltdx-username,
          lr_vari FOR ltdx-variant.

  IF i_username IS NOT INITIAL.
    lr_user-sign   = 'I'.
    lr_user-option = 'EQ'.
    lr_user-low = i_username.
    APPEND lr_user.
  ENDIF.
  IF i_variant IS NOT INITIAL.
    lr_vari-sign   = 'I'.
    lr_vari-option = 'EQ'.
    lr_vari-low = i_variant.
    APPEND lr_vari.
  ENDIF.

  SELECT *
    FROM ltdx
    INTO TABLE t_ltdx
   WHERE report   = i_repid
     AND username IN lr_user
     AND variant  IN lr_vari.

  SELECT *
    FROM ltdxt
    INTO TABLE t_ltdxt
   WHERE report   = i_repid
     AND username IN lr_user
     AND variant  IN lr_vari.

ENDFUNCTION.



FUNCTION ZRFC_READ_VARI.
*"----------------------------------------------------------------------
*"*"Interfaccia locale:
*"  IMPORTING
*"     VALUE(I_REPID) TYPE  VARI_REPRT
*"     VALUE(I_VARIANT) TYPE  VARIANT
*"  TABLES
*"      T_VARI STRUCTURE  VARI
*"      T_VARIT STRUCTURE  VARIT
*"      T_VARID STRUCTURE  VARID
*"----------------------------------------------------------------------

  RANGES: lr_vari FOR vari-variant.

  IF i_variant IS NOT INITIAL.
    lr_vari-sign   = 'I'.
    lr_vari-option = 'EQ'.
    lr_vari-low = i_variant.
    APPEND lr_vari.
  ENDIF.

  SELECT *
    FROM vari
    INTO TABLE t_vari
   WHERE report  = i_repid
     AND variant IN lr_vari.

  SELECT *
    FROM varit
    INTO TABLE t_varit
   WHERE report  = i_repid
     AND variant IN lr_vari.

  SELECT *
    FROM varid
    INTO TABLE t_varid
   WHERE report  = i_repid
     AND variant IN lr_vari.

ENDFUNCTION.

mercoledì 25 gennaio 2017

L'ultima profezia del mondo degli uomini - L'epilogo, Silvana De Mari

L'ultima profezia del mondo degli uomini - L'epilogo
Di Silvana De Mari
Editore: Fanucci Editore


Lingua: Italiano | Numero di pagine: 297 | Isbn-13: 9788834721186 | Data di pubblicazione: 2012-11-xx | Genere: Fantasy

giovedì 12 gennaio 2017

Stardust, Neil Gaiman

Stardust
Di Neil Gaiman
Editore: Arnoldo Mondadori (Oscar Bestsellers, 1569)


Lingua: Italiano | Numero di pagine: 252 | Isbn-10: 8804547103 | Data di pubblicazione: 2005-05-xx | Traduttore: Maurizio Bartocci | Genere: Narrativa & Letteratura - Fantasy - Adolescenti

martedì 10 gennaio 2017

La bambina che salvava i libri, Markus Zusak

La bambina che salvava i libri
Di Markus Zusak
Editore: Frassinelli (Narrativa; 330)


Lingua: Italiano | Numero di pagine: 564 | Isbn-13: 9788888320397 | Data di pubblicazione: 01/01/2009 | Traduttore: Gian M. Giunghese | Genere: Narrativa & Letteratura - Storia - Fantasy