1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

UPC Adicionar Campos Browse CE0814

Discussão em 'EMS , HCM e Totvs 11' iniciado por lcpaulino, Dezembro 1, 2020.

  1. lcpaulino

    lcpaulino Membro Participativo

    Olá, estou tentando fazer uma UPC para adicionar Campos no Browse do CE0814, bom, adicionar os campos eu já consegui, contudo, não estou conseguindo pegar os registros de cada linha do Browse para que eu possa fazer uma lógica para a partir do registro de cada linha eu buscar a informação que eu quero gravar nas colunas que eu criei.
    Abaixo segue a UPC que para adição dos campo que eu quero, porém, os dados das colunas criadas estão fixos, mas o objetivo é pegar os dados da tabela movto-estoq:

    Alguém pode me dar uma luz ?

    Obrigado


    upload_2020-12-1_10-42-43.png

    /*************************************************************************************
    INCLUDES
    *************************************************************************************/
    {include/i-prgvrs.i upc-esce0814-u01.p 2.06.00.000}

    /*************************************************************************************
    PARAMETROS
    *************************************************************************************/
    define input parameter p-ind-event as character no-undo.
    define input parameter p-ind-object as character no-undo.
    define input parameter p-wgh-object as handle no-undo.
    define input parameter p-wgh-frame as widget-handle no-undo.
    define input parameter p-cod-table as character no-undo.
    define input parameter p-row-table as rowid no-undo.



    /*************************************************************************************
    Variaveis
    *************************************************************************************/

    DEFINE NEW GLOBAL SHARED VARIABLE H_Browse_UPC_ce0814 AS HANDLE NO-UNDO.

    DEFINE VARIABLE H_objeto AS HANDLE NO-UNDO.


    /*************************************************************************************
    MAIN-BLOCK
    *************************************************************************************/

    IF p-ind-event = "INITIALIZE" AND
    p-ind-object = "BROWSER" AND
    p-cod-table = "movto-estoq" THEN DO:

    /* localizar o field-group */
    H_objeto = p-wgh-frame:FIRST-CHILD.
    /* localizar o primeiro widget da frame */
    H_objeto = H_objeto:FIRST-CHILD.

    /* localizar cada objeto da frame*/
    DO WHILE VALID-HANDLE(H_objeto):

    /* se o objeto tiver o nome br-table, entao achou */
    IF H_objeto:NAME = 'br-table' THEN DO:
    ASSIGN H_Browse_UPC_ce0814 = H_objeto.

    /* adicionar os campos */
    H_Browse_UPC_ce0814:ADD-CALC-COLUMN("DATE", "99/99/9999", STRING(TODAY), "Data Criacao", 4).
    H_Browse_UPC_ce0814:ADD-CALC-COLUMN("CHAR", "X(8)", STRING("15:00:00"), "Hora Criacao", 5).
    H_Browse_UPC_ce0814:ADD-CALC-COLUMN("CHAR", "X(15)", STRING("Usuario.Teste"), "Usuario", 6).
    END.

    /* vai pro proximo widget */
    H_objeto = H_objeto:NEXT-SIBLING.

    END.
    END.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Olá, tenta criar um gatilho para row-display ...

    on row-display of H_Browse_UPC_ce0814 do:

    aqui vc pega o handle das colunas que vc criou, faz o for each que for necessario e preencher os campos.

    end.
  3. lcpaulino

    lcpaulino Membro Participativo

    Depois de alguma pesquisa, cheguei ao código abaixo (não sei se é a maneira mais eficiente, mas funcionou):


    /*************************************************************************************
    INCLUDES
    *************************************************************************************/
    {include/i-prgvrs.i upc-esce0814-u01.p 2.06.00.000}

    /*************************************************************************************
    PARAMETROS
    *************************************************************************************/
    define input parameter p-ind-event as character no-undo.
    define input parameter p-ind-object as character no-undo.
    define input parameter p-wgh-object as handle no-undo.
    define input parameter p-wgh-frame as widget-handle no-undo.
    define input parameter p-cod-table as character no-undo.
    define input parameter p-row-table as rowid no-undo.


    /*************************************************************************************
    Variaveis LOCAIS
    *************************************************************************************/
    DEFINE VARIABLE h-br-table AS WIDGET-HANDLE NO-UNDO.
    DEFINE VARIABLE h-Buffer AS WIDGET-HANDLE NO-UNDO.
    DEFINE VARIABLE wh-field-nr-trans AS WIDGET-HANDLE NO-UNDO.

    /*************************************************************************************
    Variaveis GLOBAIS
    *************************************************************************************/
    DEFINE NEW GLOBAL SHARED VAR wh-esce0814-qr-cond AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VAR wh-esce0814-br-usuario AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VAR wh-esce0814-br-dt-criacao AS WIDGET-HANDLE NO-UNDO.
    DEFINE NEW GLOBAL SHARED VAR wh-esce0814-br-hr-criacao AS WIDGET-HANDLE NO-UNDO.


    /*************************************************************************************
    MAIN-BLOCK
    *************************************************************************************/

    IF p-ind-event = "BEFORE-INITIALIZE" AND
    p-ind-object = "BROWSER" AND
    p-cod-table = "movto-estoq" THEN DO:

    RUN findWidget (INPUT "br-table",
    INPUT "browse",
    INPUT p-wgh-frame,
    OUTPUT h-br-table).

    IF VALID-HANDLE(h-br-table) THEN DO:

    ASSIGN wh-esce0814-qr-cond = h-br-table.

    ASSIGN wh-esce0814-br-usuario = h-br-table:ADD-CALC-COLUMN("CHAR","X(15)","","Usuario",21).
    ASSIGN wh-esce0814-br-dt-criacao = h-br-table:ADD-CALC-COLUMN("DATE","99/99/9999","","Data da Criacao",22).
    ASSIGN wh-esce0814-br-hr-criacao = h-br-table:ADD-CALC-COLUMN("CHAR","X(15)","","Hora da Criacao",23).

    ASSIGN wh-esce0814-qr-cond = wh-esce0814-qr-cond:QUERY NO-ERROR.

    ON 'row-display':U OF h-br-table PERSISTENT RUN upc\upc-esce0814-u01.p (INPUT "pi-row-display",
    INPUT 'browser',
    INPUT p-wgh-object ,
    INPUT p-wgh-frame,
    INPUT p-cod-table,
    INPUT p-row-table).
    END.
    END.


    IF p-ind-event = "pi-row-display"
    AND p-ind-object = "Browser" THEN DO:

    IF VALID-HANDLE(wh-esce0814-qr-cond) THEN DO:

    ASSIGN h-Buffer = wh-esce0814-qr-cond:GET-BUFFER-HANDLE(2) NO-ERROR.

    IF h-Buffer:NAME = "movto-estoq" THEN DO:

    ASSIGN wh-field-nr-trans = h-Buffer:BUFFER-FIELD("nr-trans").

    FOR FIRST movto-estoq FIELDS(usuario) USE-INDEX nr-trans NO-LOCK
    WHERE movto-estoq.nr-trans = INT(wh-field-nr-trans:BUFFER-VALUE):

    ASSIGN wh-esce0814-br-usuario :SCREEN-VALUE = movto-estoq.usuario
    wh-esce0814-br-dt-criacao:SCREEN-VALUE = STRING(movto-estoq.dt-criacao,'99/99/9999')
    wh-esce0814-br-hr-criacao:SCREEN-VALUE = movto-estoq.hr-trans.
    END.
    END.
    END.
    END.



    PROCEDURE findWidget:
    /*
    * PARAMETROS:
    * c-widget-name: nome do widget a ser localizado
    * c-widget-type: tipo do widget a ser localizado
    * h-start-widget: container para procurar o widget
    * h-widget: widget encontrado
    */

    DEFINE INPUT PARAMETER c-widget-name AS CHAR NO-UNDO.
    DEFINE INPUT PARAMETER c-widget-type AS CHAR NO-UNDO.
    DEFINE INPUT PARAMETER h-start-widget AS HANDLE NO-UNDO.
    DEFINE OUTPUT PARAMETER h-widget AS HANDLE NO-UNDO.

    DO WHILE VALID-HANDLE(h-start-widget):
    IF h-start-widget:NAME = c-widget-name AND
    h-start-widget:TYPE = c-widget-type THEN DO:
    ASSIGN h-widget = h-start-widget:HANDLE.
    LEAVE.
    END.

    IF h-start-widget:TYPE = "field-group":u OR
    h-start-widget:TYPE = "frame":u OR
    h-start-widget:TYPE = "dialog-box":u THEN DO:

    RUN findWidget (INPUT c-widget-name,
    INPUT c-widget-type,
    INPUT h-start-widget:FIRST-CHILD,
    OUTPUT h-widget).

    if VALID-HANDLE(h-widget) THEN
    LEAVE.
    END.
    ASSIGN h-start-widget = h-start-widget:NEXT-SIBLING.
    END.
    END PROCEDURE.

Compartilhe esta Página