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_gosNEW cl_gos_srv_attachment_create).

DATAl_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'

    DATAl_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_filterso_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_dataCHANGING t_table gt_acdoca ).

  o_alv_item->refresh).