terça-feira, 7 de junho de 2016

CEST (Código Especificador ST) - Configuração aparecer na transação J1BxN

  Fiz as aplicações das notas do CEST só que o campo novo criado não aparecia na tela da J1B3n e afins. Tive que debugar para ver porquê não estava aparecendo.

 Esse campo apesar de estar na estrutura da J_1BNFLIN é mostrada na verdade na tela de impostos. do item. É dentro de uma subtela 3211 que está dentro da subtela 3210.

Para aparecer tem q ver qual o grupo de tela que está sendo usado na subtela 3210.

Na SM30 na visão J_1BNFW_SCGAITV


No meu caso no grupo 5.

aí tem que ir na SM30 na view  J_1BNFW_SCCITV
Por default acho q tem um item em branco e mais dois controles de tela a 0001 e 0002.





marcar o item geralmente o branco e clicar em detalhes. e marcar o item 5 para exibir e salvar


Essas telas de baixo são só um informativo do código (para eu me lembrar)


 

Durante o processamento da tela é feito uma verificação, primeiro com o número do controle de tela o Imp.ISS e o tipo de item da NF, se não achar verifca o controle de tela e o ISS e assim por diante.
a variável MV_SCN_I_CONT_ID que está no codigo acima geralmente está em branco, na configuração tem um campo para preencher o grpo de tela, mas não aceita, não sei porque, então geralmente vem em branco a questão do ISS depende da nota inclusive o tipo do item da NF.





segunda-feira, 11 de abril de 2016

Status GUI - botão dinâmico

Criar variável global no programa principal com o tipo SMP_DYNTXT.

Exemplo.

DATA: zz_stgui_din TYPE smp_dyntxt.


No STATUS GUI criar um botão novo tipo texto dinâmico.

No exemplo abaixo criei o ST_DIN



 Na próxima tela é só colocar o nome do campo criado no programa.


 ================================================

No programa no PBO antes da chamada do SET PF-STATUS 'XXXX', inserir o código como o exemplo abaixo, identificando os parâmetros do botão.

    zz_stgui_din-text = '<descrição do botão>'.
   
zz_stgui_din-
icon_id = '<icone do botão>'.
   
zz_stgui_din-
icon_text = '<texto do botão>'.
   
zz_stgui_din-
quickinfo = '<texto informativo>'. 


sexta-feira, 19 de fevereiro de 2016

ALV - Seleção de linhas pela linha agrupada (subtotal)

  Quando é feito o agrupamento no ALV de subtotal, como na imagem abaixo.



No meu caso eu tenho um botão q é executado dependendo dos itens selecionados, da forma normal eu teria q selecionar as linhas sem subtotal para que o método GET_SELECTED_ROWS selecionasse as linhas corretas. Mas existe uma forma de selecionar apenas a linhas de subtotal, dessa forma se as linhas estivessem comprimidas é possível selecionar somente as linhas de subtotal sem precisar expandí-las.

Para isso utilizar o método GET_SUBTOTALS em parceria com a GET_SELECTED_ROWS.

Quando é selecionado uma linha de subtotal o método GET_SELECTED_ROWS retorna 2 tabelas.
Na tabela ET_INDEX_ROWS o campo ROWTYPE vem preenchido, nos itens normais esse campo vem em branco.

Então tenho o seguinte, tem que pegar as linhas selecionadas que tem o campo ROWTYPE preenchido, nessas linhas o campo INDEX não se refere a linha da tabela interna do ALV da tela, esse INDEX é referente ao indice da tabela ET_GROUPLEVELS do método GET_SUBTOTALS.

Essa tabela  ET_GROUPLEVELS carregado.

 O INDEX é o indice da tabela interna.
O INDEX_FROM é a linha do ALV inicial do SUBTOTAL
O INDEX_TO é a linha do ALV final do SUBTOTAL.


a principio meu código ficou assim.

  DATAlo_c00 TYPE REF TO data,
        lo_c01 TYPE REF TO data,
        lo_c02 TYPE REF TO data,
        lo_c03 TYPE REF TO data,
        lo_c04 TYPE REF TO data,
        lo_c05 TYPE REF TO data,
        lo_c06 TYPE REF TO data,
        lo_c07 TYPE REF TO data,
        lo_c08 TYPE REF TO data,
        lo_c09 TYPE REF TO data.

  DATA lt_grp TYPE lvc_t_grpl.

  DATAlw_grp     TYPE lvc_s_grpl,
        lw_row     TYPE lvc_s_row,
        lw_row_aux TYPE lvc_s_row.

  CLEAR lt_grp.

  CALL METHOD o_alv->get_subtotals
    IMPORTING
      ep_collect00   lo_c00
      ep_collect01   lo_c01
      ep_collect02   lo_c02
      ep_collect03   lo_c03
      ep_collect04   lo_c04
      ep_collect05   lo_c05
      ep_collect06   lo_c06
      ep_collect07   lo_c07
      ep_collect08   lo_c08
      ep_collect09   lo_c09
      et_grouplevels lt_grp.

  LOOP AT ft_row INTO lw_row
                  WHERE rowtype IS NOT INITIAL.

    READ TABLE lt_grp INTO lw_grp INDEX lw_row-index.
    CHECK sy-subrc 0.
    DO.

      CLEAR lw_row_aux.
      lw_row_aux-index lw_grp-index_from.
      APPEND lw_row_aux TO ft_row.
      IF lw_grp-index_from >= lw_grp-index_to.
        EXIT.
      ENDIF.
      ADD TO lw_grp-index_from.

    ENDDO.

  ENDLOOP.

  DELETE ft_row
   WHERE rowtype IS NOT INITIAL.