Cerca nel blog

mercoledì 24 maggio 2023

SAP ANALYTICS: Creare una query

Sap Analytics: Creare una query


Prerequisito

L’utenza SAP deve avere il seguente ruolo: SAP_BR_ANALYTICS_SPECIALIST

 Fare riferimento alla libreria di riferimento delle app sap fiori:

http://www.sap.com/fiori-apps-library


App Custom Analytical Queries 

Query Designer è uno strumento utilizzato per il reporting e l'analisi.

Questo strumento trasforma e organizza i dati grezzi forniti dai documenti aziendali in una griglia significativa.

Query Designer fornisce i campi necessari per progettare una query. Seleziona i campi obbligatori e imposta i filtri per la tua query. È inoltre possibile visualizzare in anteprima i risultati della query. La tabella seguente mostra le attività e le opzioni corrispondenti in Progettazione query che è possibile usare per eseguire questa attività:

·       Cerca una query

·       Crea una nuova query

·       Modificare e riutilizzare la nuova query

·       Aggiungi o rimuovi campi personalizzati nella nuova query

·       Crea misure limitate, misure calcolate e filtri di input dell'utente

·       Crea gerarchie

·       Anteprima dei set di risultati dopo aver modificato la query

Dalla schermata principale, selezionare da menu a tendina di destra, “Query Design”


Quindi la nostra schermata principale, comparirà in questo modo:

 

Clicchiamo sull’APP Query analitiche personalizzate.

Per creare una nuova query, premere il pulsante “CREA”.



Inserire il nome della query che vogliamo creare, ad esempio SaldoDelConto, e il Data Source, cioè la sorgete dei dati che vogliamo visualizzare, in questo caso selezioniamo dal menu a tendina I_GLACCTBALANCECUBE.



Inseriamo un’etichetta, ad esempio “domanda di bilancio di verifica”


Passiamo al Tab “Selezione campo”, e selezioniamo i campi di nostro interesse per la query, nell’elenco di sx, si cercano i campi e una volta trovati si setta il flag “Selezione” del campo di nostro interesse, in questo modo viene inserito il campo nella lista di destra. Come vedete ho selezionato 5 campi evidenziati.

Passiamo al Tab “Visualizza”, in questo caso possiamo modificare alcune proprietà dei campi selezionati, ad esempio clicchiamo sul campo “Company Code” e modifichiamo i seguenti valori Libero -> Riga e Default -> Chiave e testo


Facciamo lo stesso anche per il campo “G/L Account” e modifichiamo i seguenti valori Libero -> Riga e Default -> Chiave e testo


Possiamo anche aggiungere delle misure calcolate


Inseriamo l’etichetta del campo “Inizio Saldo in Trans”

Il nuovo campo viene visualizzato nella schermata e lo possiamo spostare di posizione premendo il pulsante “sposta verso l’alto”


A questo punto inseriamo la formula nel campo aggiunto, premendo il pulsante elabora


Nella schermata successiva premiamo sul pulsante “Indicatori”e scegliamo “Saldo finale DT” aggiungiamo il segno “ – “ e poi selezioniamo sempre premendo il pulsante “indicatori” la voce “Importo in dare in divisa trans. Saldo”


E quindi avremo la seguente formula:

Premiamo OK. Poi selezioniamo il Tab “Filtri”.

Qui possiamo definire se qualche campo selezionato nei tab precedenti, sono anche dei parametri di input, e quindi usati per restringere la ricerca.

Selezioniamo il campo “Company” e settiamo il flag “Valore dell’inserimentp utente” e il flag “Selezione multipla” per poter inserire più valori di ricerca, ed indichiamo anche che il campo è obbligatorio.


Facciamo lo stesso per il campo “G/L Account” , settiamo il flag “Valore dell’inserimentp utente” e il flag “Selezione multipla” .

Per il campo “Ledger” , settiamo il flag “Valore dell’inserimentp utente” e il flag “Obbligatorio” , ed un valore di default ad esempio “0L”.

Per il campo “ToPostingDate” , settiamo un valore di default ad esempio “Oggi”.


Per il campo “FromPostingDate” , settiamo un valore di default ad esempio “Primo giorno del corrente mese”.


A questo punto premiamo il pulsante in basso a dx “SALBA BOZZA” . Premiano sul pulsante Anteprima. Viene visualizzata la schermata di selezione, nel campo Company inseriamo il valore 2310 e premiamo il pulsante “Avvio” avremo i dati selezionati


Adesso salviamo la nostra query come un TILE,



Inseriamo un titolo e selezioniamo il gruppo e premiamo OK



Poi pubblichiamo la nostra query, premendo il pulsante PUBBLICA


Risoluzioni di alcuni errori


In questa schermata premendo OK, non succedeva nulla.


Da SAP GUI, ho eseguito la transazione /n/IWFND/ERROR_LOG, e mi segnalava il seguente errore: “Vocabulary Annotation File 'CA_RSM_CONTEXT_ANNO_MDL' version '0001' not found on SAP GW Server”


Ho eseguito la transazione /n/IWBEP/REG_VOCAN, per capire il servizio legato all’annotazione 'CA_RSM_CONTEXT_ANNO_MDL', Quindi ho fatto un filtro sul campo Annotation Model e inserito il valore 'CA_RSM_CONTEXT_ANNO_MDL', e nel riquadro di sotto è comprarso il nome del servizio  “CA_RSM_CONTEXT_SRV”



Infine ho eseguito la transazione /n/IWFND/MAINT_SERVICE, ho ricercato il servizio, l’ho selezionato e premuto il pulsante “Caricare metadati”


Svuotato la cache dei metadati eseguendo le seguenti transazioni

·       /n/IWFND/CACHE_CLEANUP

·       /n/IWBEP/CACHE_CLEANUP

Carica i metadati del servizio OData "CATALOGSERVICE" versione 2, eseguire la transazione /n/IWFND/MAINT_SERVICE, ricercare il servizio CATALOGSERVICE





mercoledì 1 marzo 2023

ABAP: Inserire/modificare l’indirizzo dell’equipment nel Tab Locazione in ABAP

 

Inserire/modificare l’indirizzo dell’equipment nel Tab Locazione in ABAP



Per gestire l’indirizzo dell’equipment nel tab LOCAZIONE, bisogna usare una serie di FM standard richiamate in successione.




Allego il programma per modificare l’indirizzo:

*&---------------------------------------------------------------------*
*& Report Z_CHANGE_ADDRESS_EQUI
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_change_address_equi.

TABLES: addr1_data.

TYPES: BEGIN OF ty_equi,
         equnr   TYPE equi-equnr,
         begru   TYPE equi-begru,
         eqtyp   TYPE equi-eqtyp,
         objnr   TYPE equi-objnr,
         iloan   TYPE equz-iloan,
         adrnri  TYPE iloa-adrnri,
         adrnr   TYPE iloa-adrnr,
         country TYPE adrc-country,
       END OF ty_equi.

PARAMETERS: p_equi  TYPE equnr,
            p_name1 TYPE addr1_data-name1,
            p_name2 TYPE addr1_data-name2,
            p_name3 TYPE addr1_data-name3,
            p_name4 TYPE addr1_data-name4,
            p_count TYPE addr1_data-country.

DATA: lt_return            TYPE bapiret2_t,
      lt_bapicusadr        TYPE STANDARD TABLE OF bapicusadr,
      lwa_bapicusadr       TYPE bapicusadr,
      lv_abort             TYPE  c,
      lwa_itob_rec         TYPE  itob,
      lwa_equipment        TYPE  ty_equi,
      equipment_attributes TYPE itob.

CONSTANTS: gc_dt_din              TYPE datbi            VALUE '99991231'.

START-OF-SELECTION.
  SELECT SINGLE
        a~equnr a~begru a~eqtyp a~objnr
         b~iloan c~adrnri c~adrnr
         g~country
      FROM equi AS a
      INNER JOIN equz AS b ON ( a~equnr = b~equnr AND
                                b~datbi = gc_dt_din )
      INNER JOIN iloa AS c ON ( b~iloan = c~iloan  )
      LEFT OUTER JOIN adrc AS g ON ( c~adrnr = g~addrnumber )
      INTO lwa_equipment
     WHERE a~equnr = p_equi.

  IF sy-subrc = 0.

    FREE: lt_return[], lt_bapicusadr[].
    CLEARlwa_bapicusadr.
    lwa_bapicusadr-name = p_name1.
    lwa_bapicusadr-name_2 = p_name2.
    lwa_bapicusadr-name_3 = p_name3.
    lwa_bapicusadr-name_4 = p_name4.
    lwa_bapicusadr-country = p_count.

    APPEND lwa_bapicusadr TO lt_bapicusadr.

    MOVE-CORRESPONDING lwa_equipment TO lwa_itob_rec.

* FM per gestire l'indirizzo (crea/modifica)
    CALL FUNCTION 'CRM_ADDRESS_CHANGE_OS'
      IMPORTING
        et_bapiret2   = lt_return
      TABLES
        it_bapicusadr = lt_bapicusadr
*       it_bapicustel =
*       it_bapicusfax =
*       it_bapiadsmtp =
      CHANGING
        ev_abort      = lv_abort
        cs_itob       = lwa_itob_rec.


    CHECK lv_abort IS INITIAL.

*Associamo l'indirizzo all'equipmeno
    CALL FUNCTION 'ITOB_EQUIPMENT_READ_SINGLE'
      EXPORTING
        i_objnr        = lwa_equipment-equnr
*      IMPORTING
*        e_object_rec   = lwa_itob_rec
      EXCEPTIONS
        not_successful = 1
        OTHERS         = 2.
    .
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.


    MOVE-CORRESPONDING lwa_itob_rec TO equipment_attributes.

    CALL FUNCTION 'ITOB_EQUIPMENT_MODIFY_SINGLE'
      EXPORTING
        i_filter_data  = abap_off
        i_write_buffer = abap_true
        i_post_buffer  = abap_true
        i_object_rec   = equipment_attributes
*      IMPORTING
*        e_object_rec   = lwa_itob_rec
      EXCEPTIONS
        not_successful = 1
        OTHERS         = 2.

    IF sy-subrc = 0.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = abap_true.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
    ENDIF.

  ENDIF.

END-OF-SELECTION.

Eseguiamo il programma inserendo i seguenti parametri di input

Otteniamo il seguente risultato