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.
venerdì 24 luglio 2009
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.
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:
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.
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)
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!!!
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.
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.
Iscriviti a:
Post (Atom)