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 1/3 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