Campo Obrigatorio com condição

Boa tarde senhores, Preciso fazer esse procedimento: Quando um produto é adicionado no pedido de venda, faz uma verificação no campo B1_RASTRO do produto, Se o B1_RASTRO = 'L', Deixa o campo obrigatório C6_LOTECTL para a digitação.

Pesquisando Vi que uma forma de fazer isso é, fazendo a seguinte função dentro do X3_WHEN no campo C6_LOTECTL.

Iif(aCols[n,aScan(aHeader,{|x| AllTrim(x[2]) == "B1_RASTRO"})]$'L',.f.,.t.)

estou fazendo um prw e estou chamando ele dentro o campo c6_produto.

COMO POSSO PROSSEGUIR?

Consegui fazer funcionar , mas quando eu coloco o codigo do produto ele já avisa, não deixa ir para o outro campo

Você pode utilizar o ponto de entrada M410LIOK que é acionado na validação de linha e fazer sua validação de obrigatoriedade.

Outra coisa... para buscar valor na grid você pode utilizar a função GDFieldGet, sendo que B1_RASTRO vai ter que fazer um posicione


User Function M410LIOK()
    If INCLUI .OR. ALTERA
        If POSICIONE("SB1",1,xFilial("SB1")+GDFIELDGET("C6_PRODUTO"),"B1_RASTRO")=="L" .AND. Empty(GDFIELDGET("C6_LOTECTL"))
            //Msg aqui
            Return .F.
        EndIf
    EndIf
Return .T.