Sumario:
Este artigo descreva a manipulação do de texto em transações standard.
Sobre o Autor:
Uderson Luis Fermino, formado em Ciências da Computação pela Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participação em grandes projetos envolvendo estas tecnologias. É consultor ABAP com experiências em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE, HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM, NETWEAVER (JCO, BSP, WebDynpro).
Email:
Para que possa ficar fácil o entendimento usaremos a transação VA01 com exemplo, porém serve para todas as transações:
Informações necessárias:
Para coletar as informações do texto é necessário utilizar a transação READ_TEXT ou READ_TEXT_INLINE.
Gravar Texto usar função SAVE_TEXT, exemplo de automatização de texto na VA01:
DATA: BEGIN OF it_usina OCCURS 0, RAZAO LIKE ysd0013_tb-razao,
ENDERECO LIKE ysd0013_tb-endereco, BAIRRO LIKE ysd0013_tb-bairro,
CIDADE LIKE ysd0013_tb-cidade, CNPJ LIKE ysd0013_tb-cnpj, IE LIKE ysd0013_tb-ie, END OF it_usina.
DATA: BEGIN OF wa_usina. INCLUDE STRUCTURE it_usina. DATA: END OF wa_usina.
IF ( sy-tcode EQ 'VA01' AND v_usina IS INITIAL ) OR ( sy-tcode EQ 'VA02' AND sy-ucomm EQ 'T/09' ).
"Só exibe popup para material 112 e qtd preenchida. IF xvbap-matnr EQ '000000000000000112'.
IF NOT xvbap-kwmeng IS INITIAL.
SELECT razao endereco bairro cidade cnpj ie FROM ysd0013_tb
INTO TABLE it_usina
WHERE escritorio EQ vbak-vkbur AND bloqueio NE 'X'.
"Monta nome das colunas t_title-text1 = 'Razão Social'. t_title-text2 = 'CNPJ'.
"Monta popup com as usinas selecionadas LOOP AT it_usina. it_usina_aux-razao = it_usina-razao. it_usina_aux-cnpj = it_usina-cnpj. APPEND it_usina_aux. CLEAR it_usina_aux. ENDLOOP. "Exibe popup
CALL FUNCTION 'TR_F4_HELP' EXPORTING
is_sel_title1 = t_title iv_start_column = 10 iv_start_row = 10 TABLES it_sel_table = it_usina_aux CHANGING cv_selected_index = v_index EXCEPTIONS no_lines = 1 no_line_picked = 2 OTHERS = 3. IF sy-subrc EQ 0.
"Busca Usina selecionada
READ TABLE it_usina_aux INDEX v_index.
IF sy-subrc IS INITIAL.
READ TABLE it_usina WITH KEY cnpj = it_usina_aux-cnpj.
IF sy-subrc IS INITIAL.
v_usina = 'X'. "Flag para não pedir escolha da Usina novamente.
ELSE.
MESSAGE s208(00) DISPLAY LIKE 'E' WITH 'USINA não selecionada! Pressione ENTER p/ escolher.'.
ENDIF.
ELSE.
MESSAGE s208(00) DISPLAY LIKE 'E' WITH 'USINA não selecionada! Pressione ENTER p/ escolher.'.
ENDIF.
ELSE.
MESSAGE s208(00) DISPLAY LIKE 'E' WITH 'USINA não selecionada! Pressione ENTER p/ escolher.'.
ENDIF.
ENDIF.
ENDIF.
*&---* *& Form pf_write_auto_text
*&---*
* do cabeçalho na VA01
*---* * --> p1 vbeln = numero do pedido
*---* * Autor: Uderson Luis Fermino 13/05/2009
*---* FORM pf_write_auto_text using v_vbeln.
DATA: zthead TYPE thead, zzthead TYPE thead,
it_text TYPE STANDARD TABLE OF tline INITIAL SIZE 0, wa_text TYPE tline,
zlprio LIKE vbap-lprio, z_check(1) TYPE C,
l_name LIKE thead-tdname, z_check_text TYPE tline,
z_check2(1) TYPE C,
v_pt(1) TYPE C value 'P', "Idioma
v_as(1) TYPE C value '*', "Todos os tipos de formatação v_memory TYPE thead-tdname value 'XXXXXXXXXX'. "Name do objeto
CLEAR: zthead, zzthead, it_text, wa_text, zlprio, z_check, l_name, z_check_text, z_check2.
"Texto que deverão aparecer na descrição
wa_text-tdformat = v_as . wa_text-tdline = wa_usina-razao. APPEND wa_text TO it_text .
wa_text-tdformat = v_as . wa_text-tdline = wa_usina-endereco. APPEND wa_text TO it_text .
wa_text-tdformat = v_as . wa_text-tdline = wa_usina-bairro. APPEND wa_text TO it_text .
wa_text-tdformat = v_as . wa_text-tdline = wa_usina-cidade. APPEND wa_text TO it_text .
wa_text-tdformat = v_as . wa_text-tdline = wa_usina-cnpj. APPEND wa_text TO it_text .
wa_text-tdformat = v_as . wa_text-tdline = wa_usina-ie. APPEND wa_text TO it_text .
zthead-tdobject = 'VBBK' . "Objeto VBBK é apenas para o cabeçalho do pedido
zthead-tdname = v_memory . "name XXXXXXXXX será trocado pelo VA01 no momento de salvar
zthead-tdid = 'ZTNF' . "ID para o texto da NF zthead-tdspras = sy-langu . "Idioma
IF sy-tcode EQ 'VA01'. "Quando for va01 verifica se não contém texto escritos antes da insersão
CALL FUNCTION 'READ_TEXT' EXPORTING
ID = zthead-tdid LANGUAGE = v_pt
name = v_memory object = zthead-tdobject TABLES LINES = it_text EXCEPTIONS ID = 1 LANGUAGE = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 OTHERS = 8. "realiza gravação
CALL FUNCTION 'SAVE_TEXT' EXPORTING HEADER = zthead INSERT = 'X' TABLES LINES = it_text . "Se Va02
"Coleta
l_name = v_vbeln .
CALL FUNCTION 'READ_TEXT' EXPORTING ID = zthead-tdid LANGUAGE = v_pt name = l_name object = zthead-tdobject TABLES LINES = it_text EXCEPTIONS ID = 1 LANGUAGE = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 OTHERS = 8.
APPEND wa_text TO it_text. zzthead-tdobject = 'VBBK' . zzthead-tdname = l_name . zzthead-tdid = 'ZTNF' .
zzthead-tdspras = sy-langu .
CALL FUNCTION 'SAVE_TEXT' EXPORTING HEADER = zzthead INSERT = 'X' TABLES LINES = it_text . ENDIF. ENDFORM .