segunda-feira, 25 de outubro de 2021

Adicionando anexo em Doc. contábil - utilizando a funcionalidade standard GOS (Generic Object Services)

 Precisei fazer isso para um programa Z que lista doc. contábil e o usuário queria anexar arquivos nos doc. contábeis.



DATA(lo_gos) = NEW cl_gos_srv_attachment_create( ).

DATA: l_sib    TYPE sibflporb,
      l_ip     TYPE swc_value,
      l_status TYPE sgs_status,
      l_icon   TYPE sgs_icon.


"Empresa + Doc.contábil + Exercicio
l_sib-instid = '100010000592332021'.
l_sib-typeid = 'BKPF'.
l_sib-catid = 'BO'.

"igual ao L_SIB-INSTID
l_ip = '100010000592332021'.

lo_gos->set_object(
EXPORTING is_lporb = l_sib
          ip_default_attribute = l_ip
  IMPORTING
          ep_status = l_status
          ep_icon = l_icon ).

lo_gos->execute( ).

"Não esquecer do COMMIT
COMMIT WORK AND WAIT.

UKM_CASE - Incluindo botão adicional na tela de solicitação de crédito

 Transação SCASE_CUSTOMIZING


- Definir um código de função primeiro



- Criar perfil da função 


- Implementar BADI

    - Definição SCMG_CASE_FCODE_S






quinta-feira, 14 de outubro de 2021

BADI - Transação UKM_CASE - Preenchimento de campos na inicialização

 Definição SCMG_INITIALIZE_C

Implementação com filtro. No caso da UKM_CASE


Implementação do método.

No meu caso, defini um valor padrão para o segmento de crédito '0000'

    DATA: l_help           TYPE string.

    TRY.
        CALL METHOD im_case->get_single_attribute_value
          EXPORTING
            im_srmadid = 'FCR_SEGMENT'
          RECEIVING
            re_value   = l_help.

        IF l_help IS INITIAL.
          l_help = '0000'.
        ENDIF.

*     set currency to prevent UI-error due to initial currency
        CALL METHOD im_case->set_single_attribute_value
          EXPORTING
            im_value   = l_help
            im_srmadid = 'FCR_SEGMENT'.

      CATCH cx_srm_framework .
      CATCH cx_scmg_case_attribute .
    ENDTRY.


RESULTADO.



quarta-feira, 13 de outubro de 2021

CL_SALV_TABLE - Filtro dentro de evento hotspot - erro na atualização da tela

 Situação de tela com 2 ALV em tela SPLIT, no ALV superior com campo hotspot, e no ALV inferior lista de itens do item superior selecionado.

 ALV inferior utilizando classes SALV, tentei utilizar o filtro, mas a tela não atualizava, tentei forçar o PBO utilizando o método 

CALL METHOD cl_gui_cfw=>set_new_ok_code

 EXPORTING

          new_code = 'REFRESH'.

mas também não funcionou.

Para resolver tive que carregar os dados novamente com o filtro. Um detalhe é q tive q carregar todos os dados, anteriormente tentei montar uma tabela interna com o filtro, até atualizava a tela, mas não sei o que acontece mas ao rolar o scroll lateral no final da página dava um DUMP, me parece q ele se perde no contador de linhas. Mas sempre carregando tudo funciona sem problema.


  READ TABLE gt_dados INDEX fu_row-index
                      INTO DATA(ls_dados).

  CHECK sy-subrc = 0.

  DATA(lo_filters) = o_alv_item->get_filters( ).
  lo_filters->remove_filter('MATNR').

  l_low =  ls_dados-matnr.
  lo_filters->add_filter(
  columnname = 'MATNR'
  low = l_low
  ).

  o_alv_item->set_data( CHANGING t_table = gt_acdoca ).

  o_alv_item->refresh( ).