Deixar como global.
Nesse caso se eu tenho um objeto de autorização para criar/modificar e exibir. Se estiver como exibir eu desativo os botões, no caso tenho o botão standard e outro customizado.
Deixar como global.
Nesse caso se eu tenho um objeto de autorização para criar/modificar e exibir. Se estiver como exibir eu desativo os botões, no caso tenho o botão standard e outro customizado.
Na verdade testei somente no UPDATE mas acho q funcion no CREATE tbm.
A validação de dados de entrada não é feito qdo se clica no botão de update, é feita antes.. eu me bati um monte para fazer essa validação
Adicionando campos no cabeçalho.
Resultado
========================================
Adionando abas
Resultado
Código exemplo abaixo, pegando dados de remessa
sELECT likp~vbeln,
likp~ernam,
       lips~matnr,
       lips~lfimg
  INTO TABLE @DATA(lt_likp)
types: begin of ty_doc,
bukrs type bukrs,
belnr type belnr_d,
gjahr type gjahr,
buzei type buzei,
end of ty_doc.
data t_doc type STANDARD TABLE OF ty_doc WITH DEFAULT KEY.
t_doc = value #(
( bukrs = '1000' belnr = '1' gjahr = '2025' buzei = 1 )
( bukrs = '1000' belnr = '1' gjahr = '2025' buzei = 2 )
( bukrs = '1000' belnr = '1' gjahr = '2025' buzei = 3 )
( bukrs = '1000' belnr = '2' gjahr = '2025' buzei = 1 )
( bukrs = '1000' belnr = '3' gjahr = '2025' buzei = 1 )
( bukrs = '1000' belnr = '3' gjahr = '2025' buzei = 2 )
( bukrs = '2000' belnr = '4' gjahr = '2025' buzei = 1 )
( bukrs = '2000' belnr = '5' gjahr = '2025' buzei = 1 )
( bukrs = '2000' belnr = '6' gjahr = '2025' buzei = 1 )
( bukrs = '3000' belnr = '7' gjahr = '2025' buzei = 1 )
( bukrs = '3000' belnr = '7' gjahr = '2025' buzei = 2 )
( bukrs = '3000' belnr = '8' gjahr = '2025' buzei = 1 )
).
BREAK-POINT.
loop at t_doc into data(ls_doc) GROUP BY ls_doc-bukrs into data(lv_bukrs).
loop at group lv_bukrs into data(lv_docs).
if 1 = 1.
endif.
endloop.
endloop.
Transações importantes
BOBX - Estruturas dos BOPF
BOBT - Teste de estrutura BOPF
Ex: /SCMTMS/TOR
Transação BOBX
- Clicar na estrutura desejada
BOBT - teste de query
Do lado esquerdo na BOBT tem as queries disponíveis.
Do lado direito na BOBX a localização das querys disponíveis na visão de estrutura
Pegando exemplo de dados da remessa na query PLANNING_ATTRIBUTES
Registros encontrados
Fazendo pelo código do programa
"Service Manager
DATA(lo_srv_mgr) = /bobf/cl_tra_serv_mgr_factory=>get_service_manager( /SCMTMS/IF_TOR_C=>sc_bo_key ).
DATA(lv_bo_name) = /SCMTMS/IF_TOR_C=>sc_bo_name.
data(lv_attname) =  /SCMTMS/IF_TOR_C=>sc_query_attribute-root-planning_attributes-trq_base_btd_id.
*"Selection Parameters
DATA(lt_selpar) = VALUE /bobf/t_frw_query_selparam( ( attribute_name = lv_attname
                                                      sign = 'I'
                                                      option = 'EQ'
                                                      low = '0080000180' ) ).
*"Query key
data lt_key TYPE /BOBF/T_FRW_KEY.
data lt_docref type /scmtms/t_tor_root_k.
"Execução da query
lo_srv_mgr->query( EXPORTING iv_query_key = /scmtms/if_tor_c=>sc_query-root-planning_attributes
                             "it_filter_key =
                             it_selection_parameters = lt_selpar
                             "is_query_options =
                             iv_fill_data = abap_true
                             "it_requested_attributes =
                   IMPORTING "eo_message = DATA(lo_message)
                      et_key = lt_key
                      et_data = lt_docref
                      ).
====== Abaixo de onde vem as informações na BOBX
====== Para ler os dados da estrutura abaixo do ROOT.
Transação BOBT
========= Código ==========
Como faz parte da estrutura ROOT pega os dados a partir das chaves retornadas da leitura do root
DELETE lt_key WHERE key not in lt_r_key.
data lt_doc_tr type /SCMTMS/T_TOR_ITEM_TR_K.
  lo_srv_mgr->retrieve_by_association(
      EXPORTING
        iv_node_key             = /scmtms/if_tor_c=>sc_node-root
        it_key                  = lt_key                             " Key Table
        iv_edit_mode            = /bobf/if_conf_c=>sc_edit_read_only " Change Mode
        iv_fill_data            = abap_true                          " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
        iv_association = /scmtms/if_tor_c=>sc_association-root-item_tr_main
      IMPORTING
        "eo_message              = lo_message                         " Interface of Message Object
        et_data                 = lt_doc_tr
        et_failed_key           = DATA(lt_failed_key)                " Key Table
    ).
E assim sucessivamente, com outras estruturas sob o mesmo nó
data lt_doc_tr_seal type /SCMTMS/T_TOR_SEAL_K.
  lo_srv_mgr->retrieve_by_association(
      EXPORTING
        iv_node_key             = /scmtms/if_tor_c=>sc_node-root
        it_key                  = lt_key                             " Key Table
        iv_edit_mode            = /bobf/if_conf_c=>sc_edit_read_only " Change Mode
        iv_fill_data            = abap_true                          " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
        iv_association = /scmtms/if_tor_c=>sc_association-root-seal
      IMPORTING
        "eo_message              = lo_message                         " Interface of Message Object
        et_data                 = lt_doc_tr_seal
        et_failed_key           = lt_failed_key                " Key Table
    ).
data lt_doc_tr_item type /SCMTMS/T_TOR_ITEM_TR_K.
  lo_srv_mgr->retrieve_by_association(
      EXPORTING
        iv_node_key             = /scmtms/if_tor_c=>sc_node-root
        it_key                  = lt_key                             " Key Table
        iv_edit_mode            = /bobf/if_conf_c=>sc_edit_read_only " Change Mode
        iv_fill_data            = abap_true                          " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
        iv_association = /scmtms/if_tor_c=>sc_association-root-item_tr
      IMPORTING
        "eo_message              = lo_message                         " Interface of Message Object
        et_data                 = lt_doc_tr_item
        et_failed_key           = lt_failed_key                " Key Table
    ).