HCM CC0300B - Criar folder novo via UPC após folder Narrativa

Discussão em 'EMS , HCM e Totvs 11' iniciado por Marcelo Goncalves, Dezembro 29, 2023.

  1. Marcelo Goncalves

    Marcelo Goncalves Membro Participativo

    Bom dia pessoal!
    Estou com uma dúvida: Como posso criar um novo folder com alguns campos de uma tabela externa(específica) via upc dentro dessa tela CC0300B?
    Tentei criar em menu ambiente de testes mas não funcionou!
    Basicamente seria o seguinte: Ao inicializar a tela CC0300B, apareça uma nova guia depois da Narrativa e ao clicar nela, sejam populados os dados de uma tabela específica.
    Agradeço pela ajuda!
    Feliz 2024 a todos!
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Eu já fiz UPC para CD0134 e CN0201 com criação de folder, só que existe 2 tipos de programas com folder.

    Sabe me dizer se o CC0300b é do mesmo tipo de folder dos que citei?
  3. Marcelo Goncalves

    Marcelo Goncalves Membro Participativo

    Bom dia Rafael,

    A tela no caso é essa, com as guias de Ordem até Narrativa. A guia(folder) que preciso criar seria WebOrder depois da Narrativa.
    upload_2023-12-29_11-56-11.png
    rafael.andrade curtiu isso.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Mais ou menos assim ...
    Código:
        run get-link-handle in adm-broker-hdl(p-wgh-object,
                                              'page-source':u,
                                              output c-folder).
        assign h-folder = widget-handle(c-folder) no-error.
    
        if valid-handle(h-folder) then do:
            run create-folder-page  in h-folder(3,'Detalhe':u).
            run create-folder-label in h-folder(3,'Detalhe':u).
    
            run select-page         in p-wgh-object(3).
            run init-object         in p-wgh-object('cstbrw/cst0053b01.w':u,
                                                    p-wgh-frame,
                                                    'Layout= ':u,
                                                    output h-viewer).
    
            run set-position        in h-viewer (3, 3).
    
            run get-link-handle     in adm-broker-hdl(p-wgh-object,
                                                      'container-target':u,
                                                      output c-objects).
    
            do i-objects = 1 to num-entries(c-objects):
                assign h-object = widget-handle(entry(i-objects, c-objects)).
                if index(h-object:private-data, 'invwr/v01in530.w') <> 0 then do:
                    run add-link in adm-broker-hdl(h-object, "Record":u, h-viewer).
                    run add-link in adm-broker-hdl(h-object,"state":u, h-viewer).
                    run add-link in adm-broker-hdl (h-object, "GROUP-ASSIGN":U, h-viewer).
                end.
            end.
    
            run dispatch in h-viewer ("initialize":U).
            run select-page in p-wgh-object(1).
        end.
    
    rafael.andrade curtiu isso.
  5. Marcelo Goncalves

    Marcelo Goncalves Membro Participativo

    Opa! Vou ajustar, testar e retorno aqui pra vocês! Muito obrigado pela ajuda!
    rafael.andrade curtiu isso.
  6. Marcelo Goncalves

    Marcelo Goncalves Membro Participativo

    @bootstrapmaster,

    Ajustei o código co mo exemplo que você mandou, mas não está criando o folder. Coloquei umas mensagens para verificar o status(comentadas), mas não apareceu a guia. Entra certinho na UPC que associei à tela no bas_prog_dtsul, mas não cria a aba "Web Order JP". :(
    Segue o código implementado:
    /*********************************************************************************
    **
    ** Programa...: upc_folder.p
    ** Author.....:
    ** Descricao..: Criar nova Folder na tela CC0300B.
    ** Data.......: 28/12/2023
    **
    *********************************************************************************/
    /* Parameter Definitions ****************************************************/
    define input parameter p-ind-event as character.
    define input parameter p-ind-object as character.
    define input parameter p-wgh-object as handle.
    define input parameter p-wgh-frame as widget-handle.
    define input parameter p-cod-table as character.
    define input parameter p-row-table as rowid.
    def var c-objeto as char no-undo.
    /* Global Variable Definitions **********************************************/
    define new global shared var h-folder-upc as handle no-undo.
    define new global shared var h-viewer as handle no-undo.
    define new global shared var adm-broker-hdl as handle no-undo.
    DEFINE NEW GLOBAL SHARED VAR wh-window AS HANDLE NO-UNDO.
    /* Variable Definitions *****************************************************/
    define var c-folder as character no-undo.
    define var c-objects as character no-undo.
    define var i-objects as integer no-undo.
    define var h-object as handle no-undo.
    define var l-record as logical no-undo initial no.
    define var l-group-assign as logical no-undo initial no.
    /*****************************************************************************************************/
    assign c-objects = entry(num-entries(p-wgh-object:file-name, "~/"), p-wgh-object:file-name, "~/").
    def new global shared var h-sel as handle no-undo.
    assign c-objects = entry(num-entries(p-wgh-object:private-data, "~/"), p-wgh-object:private-data, "~/").
    /* message "EVENTO" p-ind-event skip */
    /* "OBJETO" p-ind-object skip */
    /* "NOME OBJ" c-objects skip */
    /* "FRAME" p-wgh-frame skip */
    /* "TABELA" p-cod-table skip */
    /* "ROWID" string(p-row-table) view-as alert-box. */
    /* MESSAGE "P-Ind-Object: " P-Ind-Object VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. */
    If P-Ind-Object = "CONTAINER" Then do:
    assign wh-window = p-wgh-object.
    RUN get-link-handle IN adm-broker-hdl (p-wgh-object, 'PAGE-SOURCE':U, OUTPUT c-folder).
    Assign h-folder-upc = Widget-Handle(c-Folder) No-Error.
    /* MESSAGE "h-folder-upc: " h-folder-upc VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. */
    If Valid-Handle(h-folder-upc) Then
    Do:
    RUN create-folder-page IN h-folder-upc (7, "Web Order JP":U).
    RUN create-folder-label IN h-folder-upc (7, "Web Order JP":U).
    RUN select-page IN wh-window (7).
    RUN init-object IN p-wgh-object ('ccp/cc0300b.r':U,
    p-wgh-frame,
    "WEBORDERJP":U,
    OUTPUT h-viewer).
    RUN set-position IN h-folder-upc (7, 4).
    RUN get-link-handle IN adm-broker-hdl (p-wgh-object,
    'CONTAINER-TARGET':U,
    OUTPUT c-objects).
    do i-objects = 1 to num-entries(c-objects):
    assign h-object = widget-handle(entry(i-objects, c-objects)).
    MESSAGE "Verificando h-object: " h-object VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
    if index(h-object:private-data, 'ccp/cc0300b.r') <> 0 then do:
    run add-link in adm-broker-hdl(h-object, "Record":u, h-viewer).
    run add-link in adm-broker-hdl(h-object,"state":u, h-viewer).
    run add-link in adm-broker-hdl (h-object, "GROUP-ASSIGN":U, h-viewer).
    end.
    end.
    RUN dispatch IN h-folder-upc ("initialize":U).
    RUN select-page IN p-wgh-object (7).

    End.
    End.

Compartilhe esta Página