venerdì 24 luglio 2009

Ottenere n° spool

A volte può essere necessario ottenere il numero di spool appena creato utilizzando solo la descrizione dello spool. Per far ciò è possibile utilizzare la funzione standard

CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS'
EXPORTING
* ALLCLIENTS = ' '
* AUTHORITY = ' '
* DATATYPE = '*'
* HAS_OUTPUT_REQUESTS = '*'
* RQ0NAME = '*'
* RQ1NAME = '*'
rq2name = rq2name
* RQDEST = '*'
* RQIDENT = 0
* RQOWNER = SY-UNAME
TABLES
spoolrequests = t_spool
* EXCEPTIONS
* NO_PERMISSION = 1
* OTHERS = 2 .


In particolare io avevo assegnato alla variabile rq2name il numero dell'oridne di acquisto

MOVE tb_ekko-ebeln TO rq2name.

Creare messaggio sulla NAST

Per poter generare un messaggio sulla tabella di sistema NAST è possibile utilizzare il seguente codice:

DATA: XNAST LIKE VNAST OCCURS 20 WITH HEADER LINE.

Per prima cosa devono essere selezionate dalla tabella t685b le caratteristiche del messaggio che vogliamo creare; nel mio caso era un messaggio custom (v_kschl = 'ZPDF').

SELECT SINGLE * FROM t685b
WHERE kappl = 'EF' AND kschl = v_kschl.


Successivamente è necessario valorizzare la tabella interna che conterrà tutte le info del messaggio che stiamo creando:

xnast-kappl = 'EF'.
xnast-mandt = sy-mandt.
xnast-objky = tb_ekko-ebeln.
xnast-kschl = 'ZPDF'.
xnast-spras = sy-langu.
xnast-erdat = '20080202'.
xnast-nacha = t685b-nacha .
xnast-anzal = 0 .
xnast-vsztp = t685b-vsztp .
xnast-usnam = sy-uname .
xnast-ldest = 'LOCL'.
xnast-objtype = 'BUS2012'.
xnast-nauto = 'X'.
xnast-vstat = '0'.
xnast-dsuf2 = tb_ekko-ebeln.
xnast-tdid ='BEWG'.
xnast-tdspras = 'IT'.
xnast-tdreceiver = sy-uname .
xnast-tdcovtitle = 'NEW PURCHASE ORDER PRINTOUT'.

APPEND xnast.

Una volta valorizzata la tabella dovranno essere chiamate le seguenti funzioni:

CALL FUNCTION 'RV_MESSAGES_INSERT'
TABLES
tab_xnast = xnast
EXCEPTIONS
OTHERS = 1.

CALL FUNCTION 'RV_MESSAGES_UPDATE'
EXPORTING
msg_kappl = xnast-kappl
msg_no_update_task = 'X'
EXCEPTIONS
OTHERS = 1.

giovedì 23 luglio 2009

Importare un file xls in una tabella interna

Per porter importare un file excel in una tabella interna è possibile utilizzare la seguente funzione:

DATA
: tb_excel TYPE alsmex_tabline OCCURS 0.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 2
i_begin_row = 3
i_end_col = 6
i_end_row = 10000
TABLES
intern = tb_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.


E' necessario dichiarare l'area in cui si trovano i dati.
Una volta eseguita la funzone verrà valorizzata la tabella tb_excel . Questa tabella ha una riga per ogni cella letta nel file xls.
La riga della tabella è strutturata con 3 valori: riga, colonna e valore.

Per porter splittare i dati nel modo corretto è possibile usare questo semplice loop:

FIELD-SYMBOLS (c) TYPE any.

LOOP AT tb_excel INTO wa_excel.
ASSIGN COMPONENT wa_excel-col OF STRUCTURE wa_xls TO (c) .
IF sy-subrc = 0.
MOVE wa_excel-value TO (c).
ENDIF.
AT END OF row.
APPEND wa_xls TO tb_xls.
CLEAR wa_xls.
ENDAT.
ENDLOOP.


L'oggetto tb_xls è la tabella che identifica correttamente una riga del nostro xls. Nel mio caso particolare la struttura era formata da :

DATA: BEGIN OF tb_xls OCCURS 0.
DATA: kunnr TYPE kunnr,
zkprot TYPE zkprot,
zkddef(10),
barcode TYPE bds_bar_in-barcode,
tipo .
DATA: END OF tb_xls.

martedì 21 luglio 2009

export e import da memory

Se si ha la necessità di esportare dati da programmi che non condividono la stessa area di memoria è possibile utilizzare le seguenti istruzioni:

nel programma principale usare:

export wa_ktokk to MEMORY ID 'ZZKTOKK'.


Nel secondo programma sarà possibile chiamare l'istruzione:

import wa_ktokk from MEMORY ID 'ZZKTOKK'.


NB: non è un caso che i nomi delle variabili siano gli stessi; è necessario che siano uguali!!!

giovedì 16 luglio 2009

Evidenziare CR

Un modo molto comodo di dare visibilità alle CR nella propria lista è aggiungere alla descrizione il codice @0A@ in modo da far comparire un semaforo di colore rosso.

Ecco il risultato:


Un elenco di codici di icone:

ICON_GREEN_LIGHT Semaf.verde;procedere;corretto @08@
ICON_YELLOW_LIGHT Semaforo giallo; attenzione @09@
ICON_RED_LIGHT Semaforo rosso; stop; errato @0A@

Per visualizzare l'eleco completo dei codici icona, dall'help selezionare "list of icons" e successivamente leggere nella colonna "interno" la coppia di lettere.