quarta-feira, 27 de novembro de 2013

BADI - MM - Para habilitar/desabilitar campos na tela da ordem de compra ME21(N), ME22(N)

- 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

Um comentário:

  1. Material Excelente, meus parabéns ao profissional que compartilhou essa postagem!

    ResponderExcluir