- Situação, desabilitar campos nas transações de ordem de compra que devem ser habilitadas ou não para preenchimento por alguma condição especifica.
- Criar implementação para BADI ME_PROCESS_PO_CUST
- No meu exemplo vou desabilitar o campo Utilização do Material (J_1BMATUSE) referente ao item do pedido da tabela EKPO
- Depois de criado a implementação, utilizar o método
FIELDSELECTION_ITEM
- Exemplo de código.
METHOD if_ex_me_process_po_cust~fieldselection_item .
TYPE-POOLS:
mmmfd.
DATA: ls_item TYPE mepoitem.
DATA: l_campo1 TYPE char40 VALUE '(SAPLMEPO)AKTYP'.
FIELD-SYMBOLS:
<fs> LIKE LINE OF ch_fieldselection,
<ak> TYPE c.
ASSIGN (l_campo1) TO <ak>.
IF sy-subrc = 0.
CHECK <ak> <> 'A'. "Verifica se não é exibição
ELSE.
EXIT.
ENDIF.
READ TABLE ch_fieldselection ASSIGNING <fs>
WITH TABLE KEY metafield = mmmfd_mat_usage.
IF sy-subrc IS INITIAL.
<fs>-fieldstatus = '.'. " Display
ENDIF.
ENDMETHOD.
- O TYPE-POOLS MMMFD, é importante pois cada campo tem um código
constante que é definido na tabela de retorno CH_FIELDSELECTION
- No caso o campo de utilização do material é o MMMFD_MAT_USAGE
O campo FIELDSTATUS que define como o campo deve ser mostrado. Podem ser utilizados os seguintes status.
+ (sinal de soma) = Campo obrigatório
. (ponto) = Campo de entrada
* (Asterisco) = Campo somente para visualização
- (sinal de menos) = Campo não é visualizado
Material Excelente, meus parabéns ao profissional que compartilhou essa postagem!
ResponderExcluir