Errorlog com MVC utilizando as tabelas SC5 e SC6

Estou tentando criar um MVC das tabelas SC6 e SC5.

Consigo visualizar os registros no browse, mas quando chamo as funções para alterar ou visualizar algum pedido, recebo um errorlog com a seguinte mensagem: "invalid field name in Alias SC6->C6_CODINF"

Já usei o mesmo código, trocando apenas as tabelas (SF2 e SD2 por exemplo) e funcionou.

Tentei rodar o código em uma outra base e também recebi o mesmo errorlog.

Segue o código que estou utilizando.


#include 'protheus.ch'
#include 'FWMVCDEF.CH'

user function ZMVCSC5()
    //Declarando o browse
    Local oBrowse

    //Setando o browe e apontando para SC5
    oBrowse := FWMBrowse():New()
    oBrowse:SetAlias('SC5')

    //Ativando o browse
    oBrowse:Activate()
return NIL

/*--------------------------------------------------------------------------------------*
| Func:    MenuDef                                                                            |
| Desc:                                                                                    |
*--------------------------------------------------------------------------------------*/
Static Function MenuDef()
    Local aRotina := {}

    aAdd( aRotina, { 'Visualizar'    , 'VIEWDEF.ZMVCSC5', 0, 2, 0, NIL } )     
    aAdd( aRotina, { 'Alterar'       , 'VIEWDEF.ZMVCSC5', 0, 4, 0, NIL } ) 
    aAdd( aRotina, { 'Excluir'         , 'VIEWDEF.ZMVCSC5', 0, 5, 0, NIL } )
    aAdd( aRotina, { 'Imprimir'     , 'VIEWDEF.ZMVCSC5', 0, 8, 0, NIL } )
    aAdd( aRotina, { 'Copiar'         , 'VIEWDEF.ZMVCSC5', 0, 9, 0, NIL } )     
    aAdd( aRotina, { 'Pesquisar'     , 'VIEWDEF.ZMVCSC5', 0, 1, 0, NIL } )    
    aAdd( aRotina, { 'Legenda'       , 'VIEWDEF.ZMVCSC5', 0, 10, 0, NIL } )    

Return aRotina

/*--------------------------------------------------------------------------------------*
| Func:    ModelDef                                                                        |
| Desc:                                                                                    |
*--------------------------------------------------------------------------------------*/

Static Function ModelDef()        
    Local oModel := Nil

    //Estutura da tabela pai a ser utilizada no model -> cabeçalho SC5
    Local oStrSC5 := FWFormStruct(1,"SC5")

    //Estrutura da tabela filha a ser utilizada no model -> linhas SC6
    Local oStrSC6 := FWFormStruct(1,"SC6")

    oModel := MPFormModel():New("MD_PVS") 

    oModel:addFields('SC5MASTER',,oStrSC5)            

    //Adiciona o grid
    oModel:addGrid('SC6DETAIL','SC5MASTER',oStrSC6)        

    //Definindo o relacionamento das linhas com o cabeçalho
    oModel:SetRelation( 'SC6DETAIL', {{'C6_FILIAL', 'xFilial( "SC6" )' }, {'C6_NUM', 'C5_NUM'}} , SC6->(IndexKey(16)))

    //Definindo a chave primária do modelo
    oModel:SetPrimaryKey( { "C5_FILIAL", "C5_NUM" } )

    //Definindo a descrição do modelo de dados
    oModel:SetDescription( "Pedidos de venda" )

    //Definindo a descrição do componente SC5 -> cabeçalho
    oModel:GetModel( "SC5MASTER" ):SetDescription( 'Cabeçalho PV' )    

    //Definindo a descrição do componente SC6 -> linhas
    oModel:GetModel("SC6DETAIL"):SetDescription( "Linhas PV" )

    //Não permite a inserção de uma nova linha no grid, nem a remoção de uma linha existente
    oModel:GetModel("SC6DETAIL"):SetNoInsertLine(.T.)

    //Não permite a inserção de uma nova linha no grid, nem a remoção de uma linha existente
    oModel:GetModel("SC6DETAIL"):SetNoDeleteLine(.T.)

    //Não permite a edição de itens no grid
    oModel:GetModel("SC6DETAIL"):SetNoUpdateLine(.T.)

Return oModel

Static Function ViewDef()
    Local oModel := ModelDef()

    //Definindo a estrutura que será exibida na view para a tabela SC5
    Local oStSC5 := FWFormStruct(2, "SC5",{|cCampo| Alltrim(cCampo)$'C5_NUM'}) 

    //Definindo a estrutura que será exibida na view para a tabela SC6
    Local oStrSC6 := FWFormStruct(2, "SC6",{|cCampo| Alltrim(cCampo)$'C6_PRODUTO'})

    //Definindo a view
    Local oView := Nil

    oView := FWFormView():New()

    //Setando o modelo que será utilizado na view
    oView:SetModel(oModel)        

    //Vinculando o FwFormStruct a view
    oView:AddField("VIEW_SC5", oStSC5, "SC5MASTER")

    //Vinculando o FwFormStruct a view
    oView:AddGrid('VIEW_SC6' , oStrSC6,'SC6DETAIL')

    //Definindo caixa horizontal superior
    oView:CreateHorizontalBox("SUPERIOR",40)

    //Definindo caixa horizontal inferior
    oView:CreateHorizontalBox("INFERIOR",60)

    //Vinculando a view do cabeçalho a caixa superior
    oView:SetOwnerView("VIEW_SC5","SUPERIOR")

    //Vinculando a view com grid a parte inferior
    oView:SetOwnerView("VIEW_SC6","INFERIOR")

    //Definindo o título
    oView:EnableTitleView('VIEW_SC5', 'Ajusta PV')

    oView:SetCloseOnOk({||.T.})    

Return oView

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Thyago, por favor, coloca o error.log completo pra gente analisar.

Olá Daniel, editei o chamado e adicionei o errorlog como anexo.

Olá, conforme analise na inicialização de algum campo definido noo dicionário está sendo ponterado o valor de meoria exemplo: SC6->C6_CODINF e nesse caso com arquitetura MVC não utilizamos valores de campos em memoria, sendo assim o sistema apresenta a mensagem "invalid field name in Alias SC6->C6_CODINF"

Bom dia pessoal ! Eu desenvolvi uma tela em MVC relacionei as tabelas SC5 e SC6 e tive o mesmo error.log apresentado pelo colega. O erro ocorria ao visualizar qualquer registro.

Pesquisei de todas forma uma maneira de retirar o campo C6_CODINF do meu browse, mas nao obtive sucesso. Como não tenho muito conhecimento em MVC, a solução foi alterar o X3_RELACAO do campo C6_CODINF conforme a minha necessidade:

IIf (!(FunName () $ "HWPACKLIS") , E_MSMM(SC6->C6_CODINF,80) , "")

Se alguem souber outra forma de retirar os campos de um browse MVC, ou de modificar o X3_RELACAO no browse, sem precisar mexer diretamente no SX3 eu agradeço.