Creare Campo custom in Tabella FMBL e visualizzarlo nella FMBB
Per
Aggiungere un campo custom non editabile da poter visualizzare sulla
transazione SAP FMBB (Budgeting Workbench) bisogna modificare la Customer Include CI_FMBL
contenuta all’interno della tabella FMBL
: Gestione fondi: righe doc. budget (documenti di acq.)
Dalla transazione SE11, nel campo tipo dati inserite CI_FMBL e premete il pulsante Modifica:
Nella struttura che stiamo modificando inseriamo il nostro campo custom, salviamo e attiviamo, in questo modo avremo il nuovo campo anche sulla tabella FMBL:
Dopo l’aggiunta
del campo e lanciando la transazione FMBB, il campo che è stato aggiunto
verrà visualizzato sulle posizioni:
Per rendere
tale campo non editabile e per far si che in fase di parcheggio tale campo sia sempre visualizzabile alla fine della
tabella degli item (usando il campo col_pos della fieldcat)bisogna creare
un enhancment implicito all’interno dell’include LFMBWBF05 alla fine della form update_structure.
Creato
l’Enhancment bisogna agire sulla tabella della fiedlcat dal nome c_t_field_catalog andando a modificare
la proprità edit del campo custom
nel seguente modo:
ENHANCEMENT 1 ZHEN_FM_FIELDCAT_CORRISPETTIVO. "active version
if sy-tcode eq 'FMBB'.
if not c_t_field_catalog[] is INITIAL.
READ TABLE c_t_field_catalog ASSIGNING FIELD-SYMBOL(<fs_fieldcatalog>)
if sy-tcode eq 'FMBB'.
if not c_t_field_catalog[] is INITIAL.
READ TABLE c_t_field_catalog ASSIGNING FIELD-SYMBOL(<fs_fieldcatalog>)
WITH KEY fieldname = 'ZPERC_CORRISPETTIVO'.
if <fs_fieldcatalog> is ASSIGNED.
CLEAR : <fs_fieldcatalog>-edit.
if <fs_fieldcatalog> is ASSIGNED.
CLEAR : <fs_fieldcatalog>-edit.
<fs_fieldcatalog>-outputlen = '15'.
<fs_fieldcatalog>-col_pos = '33'.
endif.
endif.
endif.
ENDENHANCEMENT.
<fs_fieldcatalog>-col_pos = '33'.
endif.
endif.
endif.
ENDENHANCEMENT.
ENDFORM.
I
dati presenti all’interno del DB vengono riportati all’interno della tabella c_t_doc_lines e per essere mostrati a
video bisogna riportarli all’interno della tabella c_t_alv. Le due tabelle possono essere messe in relazione con il
campo docln.
Di seguito il codice
relativo dell’enhancment:
ENHANCEMENT 1 ZHEN_FM_POP_CORRISPETTIVO. "active version
if sy-tcode eq 'FMBB' and not c_t_doc_lines[] is INITIAL and not c_t_alv[] is INITIAL.
loop at c_t_doc_lines ASSIGNING FIELD-SYMBOL(<fs_doc_line>).
READ TABLE c_t_alv ASSIGNING FIELD-SYMBOL(<fs_c_t_alv>)
WITH KEY docln = <fs_doc_line>-docln.
if <fs_c_t_alv> is ASSIGNED.
<fs_c_t_alv>-zperc_corr = <fs_doc_line>-zperc_corr.
endif.
ENDLOOP.
UNASSIGN : <fs_doc_line>,
<fs_c_t_alv>.
endif.
ENDENHANCEMENT.
loop at c_t_doc_lines ASSIGNING FIELD-SYMBOL(<fs_doc_line>).
READ TABLE c_t_alv ASSIGNING FIELD-SYMBOL(<fs_c_t_alv>)
WITH KEY docln = <fs_doc_line>-docln.
if <fs_c_t_alv> is ASSIGNED.
<fs_c_t_alv>-zperc_corr = <fs_doc_line>-zperc_corr.
endif.
ENDLOOP.
UNASSIGN : <fs_doc_line>,
<fs_c_t_alv>.
endif.
ENDENHANCEMENT.
Nella BAPI STANDARD per la creazione del documento che simula la FMBB BAPI_0050_CREATE bisogna valorizza la struttura EXTENSION_IN nel seguente modo, 1 record per i campi custom di testata se ci sono, e tanti record quanti sono le posizione per i campi custom di posizione:
In particolare i campi obbligatori da inserire per i campi cusotmo di posizione oltre al campo creato bisogna valorizzare l'item e RPMAX =016. Esempio:
Nel caso si dovessero effettuare dei controlli sui campi custom bisogna creare un enhancement della BADI BAPI_0050 nel metodo CRATE_IN
METHOD if_ex_bapi_0050~create_in.
DATA: rec_fmbh TYPE fmbh.
DATA: rec_head TYPE bapi_0050_header.
DATA: rec_mes TYPE bapiret2.
DATA: rec_ext TYPE bapiparex.
******Sivestri.
Data : t_ritem TYPE BAPI_0050_ITEM,
t_sitem TYPE BAPI_0050_ITEM.
IF headerdata-doctype = 'Z002'.
EXIT.
ENDIF.
READ TABLE extension_in INTO rec_ext WITH KEY structure = 'BAPI_TE_FMBH'.
****** Vietri
IF headerdata-PROCESS <> 'ENTR'.
IF sy-subrc = 0.
SELECT SINGLE * FROM fmbh INTO rec_fmbh WHERE
zid_impegno = rec_ext-valuepart1+52(16).
IF sy-subrc = 0.
rec_mes-type = 'E'.
rec_mes-id = 'DB'.
rec_mes-number = '000'.
rec_mes-message = 'Id impegno già utilizzato.'.
APPEND rec_mes TO return.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD if_ex_bapi_0050~create_in.
DATA: rec_fmbh TYPE fmbh.
DATA: rec_head TYPE bapi_0050_header.
DATA: rec_mes TYPE bapiret2.
DATA: rec_ext TYPE bapiparex.
******Sivestri.
Data : t_ritem TYPE BAPI_0050_ITEM,
t_sitem TYPE BAPI_0050_ITEM.
IF headerdata-doctype = 'Z002'.
EXIT.
ENDIF.
READ TABLE extension_in INTO rec_ext WITH KEY structure = 'BAPI_TE_FMBH'.
****** Vietri
IF headerdata-PROCESS <> 'ENTR'.
IF sy-subrc = 0.
SELECT SINGLE * FROM fmbh INTO rec_fmbh WHERE
zid_impegno = rec_ext-valuepart1+52(16).
IF sy-subrc = 0.
rec_mes-type = 'E'.
rec_mes-id = 'DB'.
rec_mes-number = '000'.
rec_mes-message = 'Id impegno già utilizzato.'.
APPEND rec_mes TO return.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
Ringrazio il collega Marco Savastano per questa documentazione.
EBOOK: le mie guide sono visualizzabili cliccando sui link:
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
SE MI CONTATTATE IN PRIVATO, PAGATE LA META' DEL PREZZO DI AMAZON, E POTETE SCEGLIERE IL FORMATO WORD o PDF.
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<
Ebook: SAP CDS: https://www.amazon.it/dp/B0B9BD1RN3#customerReviews
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews
Ebook: SAP EWM: https://www.amazon.it/dp/B0CL6TXP1V#customerReviews
Nessun commento:
Posta un commento