FM processo de vendas
Autor: Jocelio | Publicado: 2014-11-27T04:14:00-08:00


Olá pessoal!

Estive recentemente em um desenvolvimento para processo de vendas utilizando Functions modules e surgiram alguns problemas na hora de gerar ordem alterando as condições de preço.

Depois de muito quebrar a cabeça deu tudo certo. Abaixo o código exemplo para quem tiver passando por dificuldades na execução das FMs observar todos os parâmetros necessários preencher.



************************************************************************

****&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
****&nbsp;PROGRAMA:&nbsp;INCLUDE&nbsp;ZSDI130_F02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
****&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
****&nbsp;DESCRIÇÃO:&nbsp;-&nbsp;Projeto&nbsp;Devolução&nbsp;-&nbsp;rotinas&nbsp;para&nbsp;BAPI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
****&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
****&nbsp;AUTOR:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jocélio&nbsp;Pereira&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
****&nbsp;DATA:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30.10.2014&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
************************************************************************

*-----------------------------------------------------------------------
*&nbsp;Constantes
*-----------------------------------------------------------------------
CONSTANTS:&nbsp;c_contract&nbsp;LIKE&nbsp;vbak-vbeln&nbsp;VALUE&nbsp;'0020000720',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c_item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;vbap-posnr&nbsp;VALUE&nbsp;'000010'.

*-----------------------------------------------------------------------
*&nbsp;Estruturas
*-----------------------------------------------------------------------
*&nbsp;Estrutura&nbsp;cabeçalho&nbsp;da&nbsp;Ordem
DATA:&nbsp;st_bapisdhd1&nbsp;&nbsp;LIKE&nbsp;bapisdhd1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1x&nbsp;LIKE&nbsp;bapisdhd1x.

*-----------------------------------------------------------------------
*&nbsp;Tabelas&nbsp;Internas
*-----------------------------------------------------------------------
*&nbsp;Retorna&nbsp;mensagens&nbsp;da&nbsp;BAPI&nbsp;criar&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapiret2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Linha&nbsp;de&nbsp;Itens&nbsp;da&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapisditm&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapisditm
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.
*&nbsp;Linha&nbsp;de&nbsp;Itens&nbsp;da&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapisditmx&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapisditmx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Preços&nbsp;e&nbsp;condições&nbsp;da&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapicond&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapicond
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicond_ex&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapicond
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE&nbsp;.

*&nbsp;Funções&nbsp;de&nbsp;parceiro&nbsp;da&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapiparnr&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapiparnr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Divisões&nbsp;de&nbsp;remessa&nbsp;para&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapischdl&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapischdl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Linha&nbsp;de&nbsp;divisões&nbsp;de&nbsp;remessa&nbsp;para&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapischdlx&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapischdlx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Preços&nbsp;e&nbsp;condições&nbsp;para&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapicondx&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapicondx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Ampliações&nbsp;para&nbsp;VBAK,&nbsp;VBAP,&nbsp;VBEP
DATA:&nbsp;tbl_bapiparex&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapiparex
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Detalhes&nbsp;das&nbsp;condições&nbsp;para&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_bapisdcond&nbsp;&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapisdcond
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Retorna&nbsp;mensagens&nbsp;da&nbsp;BAPI&nbsp;criar&nbsp;Ordem&nbsp;de&nbsp;Venda
DATA:&nbsp;tbl_return_chg&nbsp;&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapiret2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Tratar&nbsp;mensagens&nbsp;de&nbsp;retorno&nbsp;da&nbsp;BAPI
DATA:&nbsp;tbl_return_bapi&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;bapiret2&nbsp;&nbsp;&nbsp;WITH&nbsp;HEADER&nbsp;LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bdcdata&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;bdcdata&nbsp;OCCURS&nbsp;0&nbsp;WITH&nbsp;HEADER&nbsp;LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bdcmsg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;TABLE&nbsp;OF&nbsp;bdcmsgcoll&nbsp;WITH&nbsp;HEADER&nbsp;LINE.&nbsp;"Mensagens

*-----------------------------------------------------------------------
*&nbsp;Variáveis
*-----------------------------------------------------------------------
DATA:&nbsp;g_vbeln_criado&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;vbak-vbeln,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_cont_price_date&nbsp;TYPE&nbsp;d.

*-----------------------------------------------------------------------
*&nbsp;Subrotinas
*-----------------------------------------------------------------------
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subtotais
*----------------------------------------------------------------------*
FORM&nbsp;montar_subtotais.

&nbsp;&nbsp;PERFORM&nbsp;limpar_estruturas_bapi.
&nbsp;&nbsp;PERFORM&nbsp;popular_tabelas_bapi.
&nbsp;&nbsp;PERFORM&nbsp;chamar_calculo_offset.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Subtotais
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Criar&nbsp;ordem&nbsp;de&nbsp;venda
*----------------------------------------------------------------------*
FORM&nbsp;criar_ordem_devolucao.

&nbsp;&nbsp;PERFORM&nbsp;limpar_estruturas_bapi.
&nbsp;&nbsp;PERFORM&nbsp;popular_tabelas_bapi.
&nbsp;&nbsp;PERFORM&nbsp;chamar_bapi_ordem_devolucao.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;criar_ordem_devolucao
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Limpar&nbsp;todas&nbsp;estruturas&nbsp;alimentadas&nbsp;para&nbsp;BAPI
*----------------------------------------------------------------------*
FORM&nbsp;limpar_estruturas_bapi.

&nbsp;&nbsp;FREE:&nbsp;tbl_bapisditm,&nbsp;&nbsp;&nbsp;tbl_bapisditmx,&nbsp;tbl_bapicond_ex,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapischdl,&nbsp;&nbsp;&nbsp;tbl_bapischdlx,&nbsp;tbl_return_chg,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicond,&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisdcond,&nbsp;tbl_bapicondx,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return_bapi,&nbsp;tbl_return,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapiparnr.

&nbsp;&nbsp;CLEAR&nbsp;g_vbeln_criado.

ENDFORM.
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Popular&nbsp;tabelas&nbsp;da&nbsp;BAPI
*----------------------------------------------------------------------*
FORM&nbsp;popular_tabelas_bapi&nbsp;.

&nbsp;&nbsp;PERFORM&nbsp;popular_cabecalho_bapi.
&nbsp;&nbsp;PERFORM&nbsp;montar_parceiro_bapi.
&nbsp;&nbsp;PERFORM&nbsp;montar_itens_bapi.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;popular_tabelas_bapi
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construir&nbsp;cabeçalho&nbsp;da&nbsp;BAPI&nbsp;ordem&nbsp;de&nbsp;venda
*----------------------------------------------------------------------*
FORM&nbsp;popular_cabecalho_bapi&nbsp;.

&nbsp;&nbsp;CLEAR&nbsp;st_bapisdhd1.
&nbsp;&nbsp;IF&nbsp;gw_pre_registro-tipo&nbsp;=&nbsp;'C'.
&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;gw_pre_registro-serie&nbsp;=&nbsp;space.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gw_pre_registro-serie&nbsp;=&nbsp;0.
&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1-doc_type&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'ZDCE'.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Tipo&nbsp;ordem
&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1-ord_reason&nbsp;&nbsp;=&nbsp;gw_pre_registro-abgru.
&nbsp;&nbsp;&nbsp;&nbsp;CONCATENATE&nbsp;gw_pre_registro-nfenum
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'-'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gw_pre_registro-serie(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTO&nbsp;st_bapisdhd1-ref_doc_l.
&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1-purch_date&nbsp;&nbsp;=&nbsp;gw_pre_registro-docdat.

&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1x-updateflag&nbsp;=&nbsp;'I'.
&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1x-doc_type&nbsp;&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1x-ord_reason&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1x-ref_doc_l&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;st_bapisdhd1x-purch_date&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;ENDIF.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;popular_cabecalho_bapi
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Montar&nbsp;parceiros&nbsp;do&nbsp;cliente
*----------------------------------------------------------------------*
FORM&nbsp;montar_parceiro_bapi&nbsp;.

&nbsp;&nbsp;CLEAR&nbsp;tbl_bapiparnr.
&nbsp;&nbsp;tbl_bapiparnr-partn_role&nbsp;&nbsp;&nbsp;=&nbsp;'AG'.
&nbsp;&nbsp;tbl_bapiparnr-partn_numb&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-kunnr.
&nbsp;&nbsp;APPEND&nbsp;tbl_bapiparnr.

&nbsp;&nbsp;CLEAR&nbsp;tbl_bapiparnr.
&nbsp;&nbsp;tbl_bapiparnr-partn_role&nbsp;&nbsp;&nbsp;=&nbsp;'WE'.
&nbsp;&nbsp;tbl_bapiparnr-partn_numb&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-kunnr.
&nbsp;&nbsp;APPEND&nbsp;tbl_bapiparnr.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;montar_bapi_parceiro
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Montar&nbsp;Itens&nbsp;da&nbsp;BAPI
*----------------------------------------------------------------------*
FORM&nbsp;montar_itens_bapi&nbsp;.

&nbsp;&nbsp;DATA:&nbsp;l_matnr&nbsp;LIKE&nbsp;mara-matnr,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lv_item&nbsp;TYPE&nbsp;i.

&nbsp;&nbsp;"&nbsp;Itens&nbsp;de&nbsp;devolução&nbsp;validados
&nbsp;&nbsp;LOOP&nbsp;AT&nbsp;gt_itens_valida&nbsp;INTO&nbsp;gs_itens_valida.

&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'CONVERSION_EXIT_ALPHA_INPUT'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;&nbsp;=&nbsp;gs_itens_valida-matnr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;=&nbsp;l_matnr.

&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_bapisditm.
&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;10&nbsp;TO&nbsp;lv_item.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-itm_number&nbsp;&nbsp;=&nbsp;lv_item.

&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-ref_doc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;gs_itens_valida-refkey.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-ref_doc_it&nbsp;&nbsp;=&nbsp;gs_itens_valida-refitm.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-ref_doc_ca&nbsp;&nbsp;=&nbsp;'M'.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Fatura

&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-material&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;l_matnr.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-target_qty&nbsp;&nbsp;=&nbsp;gs_itens_valida-menge.
*&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-target_qu&nbsp;&nbsp;&nbsp;=&nbsp;gs_itens_valida-meins.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-sales_unit&nbsp;&nbsp;=&nbsp;gs_itens_valida-meins.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditm-price_date&nbsp;&nbsp;=&nbsp;gs_itens_valida-prsdt.

&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_bapisditm.

&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_bapisditmx.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-itm_number&nbsp;=&nbsp;lv_item.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-ref_doc&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-ref_doc_it&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-ref_doc_ca&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-updateflag&nbsp;=&nbsp;'I'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-material&nbsp;&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-target_qty&nbsp;=&nbsp;'X'.
*&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-target_qu&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-sales_unit&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapisditmx-price_date&nbsp;=&nbsp;'X'.

&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_bapisditmx.

&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Monta&nbsp;divisão&nbsp;de&nbsp;remessa
&nbsp;&nbsp;&nbsp;&nbsp;PERFORM&nbsp;montar_divisao_remessa_bapi&nbsp;USING&nbsp;lv_item.

&nbsp;&nbsp;&nbsp;&nbsp;PERFORM&nbsp;montar_condicoes_bapi&nbsp;USING&nbsp;lv_item.

&nbsp;&nbsp;&nbsp;&nbsp;gs_itens_valida-kposn&nbsp;=&nbsp;lv_item.
&nbsp;&nbsp;&nbsp;&nbsp;MODIFY&nbsp;gt_itens_valida&nbsp;FROM&nbsp;gs_itens_valida.

&nbsp;&nbsp;ENDLOOP.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;montar_bapi_itens
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Montar&nbsp;BAPI&nbsp;divisão&nbsp;de&nbsp;remessas
*----------------------------------------------------------------------*
FORM&nbsp;montar_divisao_remessa_bapi&nbsp;USING&nbsp;us_item.

&nbsp;&nbsp;CLEAR&nbsp;tbl_bapischdl.
&nbsp;&nbsp;tbl_bapischdl-itm_number&nbsp;&nbsp;=&nbsp;us_item.
&nbsp;&nbsp;tbl_bapischdl-req_qty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;gs_itens_valida-menge.
&nbsp;&nbsp;tbl_bapischdl-sched_line&nbsp;&nbsp;=&nbsp;'0001'.
&nbsp;&nbsp;tbl_bapischdl-req_date&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;sy-datum.
&nbsp;&nbsp;APPEND&nbsp;tbl_bapischdl.

&nbsp;&nbsp;CLEAR&nbsp;tbl_bapischdlx.
&nbsp;&nbsp;tbl_bapischdlx-itm_number&nbsp;&nbsp;=&nbsp;us_item.
&nbsp;&nbsp;tbl_bapischdlx-sched_line&nbsp;&nbsp;=&nbsp;'0001'.
&nbsp;&nbsp;tbl_bapischdlx-req_qty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;tbl_bapischdlx-req_date&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;APPEND&nbsp;tbl_bapischdlx.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;montar_bapi_divisao_remessa
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Montar&nbsp;CONDIÇÕES
*----------------------------------------------------------------------*
FORM&nbsp;montar_condicoes_bapi&nbsp;USING&nbsp;us_item.

&nbsp;&nbsp;CLEAR&nbsp;tbl_bapicond.
&nbsp;&nbsp;tbl_bapicond-itm_number&nbsp;=&nbsp;us_item.
&nbsp;&nbsp;tbl_bapicond-cond_st_no&nbsp;=&nbsp;10.
&nbsp;&nbsp;tbl_bapicond-cond_count&nbsp;=&nbsp;1.
&nbsp;&nbsp;tbl_bapicond-cond_type&nbsp;&nbsp;=&nbsp;'PR00'.
&nbsp;&nbsp;tbl_bapicond-cond_updat&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;tbl_bapicond-cond_value&nbsp;=&nbsp;gs_itens_valida-sap_netpr&nbsp;*&nbsp;'0.1'.
&nbsp;&nbsp;tbl_bapicond-cond_unit&nbsp;&nbsp;=&nbsp;gs_itens_valida-sap_meins.
&nbsp;&nbsp;APPEND&nbsp;tbl_bapicond.

&nbsp;&nbsp;CLEAR&nbsp;tbl_bapicondx.
&nbsp;&nbsp;tbl_bapicondx-itm_number&nbsp;=&nbsp;us_item.
&nbsp;&nbsp;tbl_bapicondx-cond_st_no&nbsp;=&nbsp;10.
&nbsp;&nbsp;tbl_bapicondx-cond_count&nbsp;=&nbsp;1.
&nbsp;&nbsp;tbl_bapicondx-cond_type&nbsp;&nbsp;=&nbsp;'PR00'.
&nbsp;&nbsp;tbl_bapicondx-updateflag&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;tbl_bapicondx-cond_value&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;APPEND&nbsp;tbl_bapicondx.

ENDFORM.
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chamar&nbsp;a&nbsp;BAPI&nbsp;para&nbsp;Ordem&nbsp;de&nbsp;Vendas
*----------------------------------------------------------------------*
FORM&nbsp;chamar_bapi_ordem_devolucao&nbsp;.
&nbsp;&nbsp;DATA&nbsp;&nbsp;lv_tabix&nbsp;TYPE&nbsp;sy-index.
&nbsp;&nbsp;DATA:&nbsp;st_head_chg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;bapisdh1x,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_logic_switch&nbsp;TYPE&nbsp;bapisdls.

&nbsp;&nbsp;st_logic_switch-pricing&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'C'.
*&nbsp;&nbsp;st_logic_switch-cond_handl&nbsp;=&nbsp;'X'.

&nbsp;&nbsp;CLEAR&nbsp;g_vbeln_criado.
&nbsp;&nbsp;FREE&nbsp;tbl_return.

&nbsp;&nbsp;"&nbsp;Mostrar&nbsp;andamento&nbsp;na&nbsp;barra&nbsp;de&nbsp;status
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SAPGUI_PROGRESS_INDICATOR'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percentage&nbsp;=&nbsp;25
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'Gerando&nbsp;ordem&nbsp;de&nbsp;devolução'.

&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SD_SALESDOCUMENT_CREATE'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_header_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_header_inx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1x
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logic_switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_logic_switch
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;business_object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'BUS2102'
&nbsp;&nbsp;&nbsp;&nbsp;IMPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;salesdocument_ex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;g_vbeln_criado
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_items_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditm
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_items_inx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditmx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_partners&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapiparnr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_schedules_in&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapischdl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_schedules_inx&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapischdlx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_conditions_in&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapicond
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_conditions_inx&nbsp;&nbsp;=&nbsp;tbl_bapicondx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conditions_ex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapicond_ex.

*&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'BAPI_CUSTOMERRETURN_CREATE'
*&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_header_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_header_inx&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1x
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logic_switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_logic_switch
*&nbsp;&nbsp;&nbsp;&nbsp;IMPORTING
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;salesdocument&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;g_vbeln_criado
*&nbsp;&nbsp;&nbsp;&nbsp;TABLES
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_items_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditm
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_items_inx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditmx
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_conditions_in&nbsp;=&nbsp;tbl_bapicond
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_partners&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapiparnr
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_schedules_in&nbsp;&nbsp;=&nbsp;tbl_bapischdl
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_schedules_inx&nbsp;=&nbsp;tbl_bapischdlx.

&nbsp;&nbsp;"&nbsp;Encontrou&nbsp;erro&nbsp;então&nbsp;mostra
&nbsp;&nbsp;APPEND&nbsp;LINES&nbsp;OF&nbsp;tbl_return_bapi&nbsp;TO&nbsp;tbl_return.

***&nbsp;Mensagens&nbsp;de&nbsp;sucesso!
&nbsp;&nbsp;IF&nbsp;g_vbeln_criado&nbsp;IS&nbsp;NOT&nbsp;INITIAL.

&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;tbl_return&nbsp;WHERE&nbsp;type&nbsp;EQ&nbsp;'S'&nbsp;OR&nbsp;type&nbsp;EQ&nbsp;'W'.

&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_return.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'SU'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'S'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'000'.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v1&nbsp;&nbsp;&nbsp;=&nbsp;g_vbeln_criado.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v2&nbsp;&nbsp;&nbsp;=&nbsp;'Ordem&nbsp;de&nbsp;devolução&nbsp;gerada&nbsp;com&nbsp;Sucesso!'.
&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_return.

&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;"&nbsp;Mostra&nbsp;mensagem&nbsp;de&nbsp;sucesso
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'C14ALD_BAPIRET2_SHOW'
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_bapiret2_tab&nbsp;=&nbsp;tbl_return.

&nbsp;&nbsp;"&nbsp;Não&nbsp;encontrou&nbsp;erro&nbsp;então&nbsp;comita
&nbsp;&nbsp;IF&nbsp;g_vbeln_criado&nbsp;IS&nbsp;NOT&nbsp;INITIAL.

&nbsp;&nbsp;"&nbsp;Mostrar&nbsp;andamento&nbsp;na&nbsp;barra&nbsp;de&nbsp;status
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SAPGUI_PROGRESS_INDICATOR'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percentage&nbsp;=&nbsp;70
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'Ordem&nbsp;de&nbsp;devolução&nbsp;gerada&nbsp;-&nbsp;atualizando&nbsp;tabelas'.

&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Comit
&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'BAPI_TRANSACTION_COMMIT'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait&nbsp;=&nbsp;'X'.

&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Atualizar&nbsp;tabela&nbsp;nf&nbsp;devoluções
&nbsp;&nbsp;&nbsp;&nbsp;gw_pre_registro-vbeln&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;g_vbeln_criado.
&nbsp;&nbsp;&nbsp;&nbsp;gw_pre_registro-situacao&nbsp;=&nbsp;'L'.
&nbsp;&nbsp;&nbsp;&nbsp;MODIFY&nbsp;zsdt016&nbsp;FROM&nbsp;gw_pre_registro.

&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Atualizar&nbsp;tabela&nbsp;interna
&nbsp;&nbsp;&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;gt_pre_registro&nbsp;TRANSPORTING&nbsp;NO&nbsp;FIELDS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;KEY&nbsp;mandt&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-mandt
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfenum&nbsp;&nbsp;=&nbsp;gw_pre_registro-nfenum
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serie&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-serie
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cgc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-cgc
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kunnr&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-kunnr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;branch&nbsp;&nbsp;=&nbsp;gw_pre_registro-branch
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tipo&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-tipo.
&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;EQ&nbsp;0.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MODIFY&nbsp;gt_pre_registro&nbsp;FROM&nbsp;gw_pre_registro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INDEX&nbsp;sy-tabix.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PERFORM&nbsp;recarrega_dados_ordem.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Carregar&nbsp;dados&nbsp;diretamente&nbsp;da&nbsp;Ordem
&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;&nbsp;&nbsp;sy-ucomm&nbsp;=&nbsp;'COCKPIT_FC2'.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Chamar&nbsp;tela&nbsp;documento&nbsp;SD
&nbsp;&nbsp;&nbsp;&nbsp;PERFORM&nbsp;chama_cockpit_tab.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Pular&nbsp;para&nbsp;TAB&nbsp;'Lançar'
&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;METHOD&nbsp;cl_gui_cfw=&gt;flush.

&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;"&nbsp;Mostrar&nbsp;andamento&nbsp;na&nbsp;barra&nbsp;de&nbsp;status
*&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SAPGUI_PROGRESS_INDICATOR'
*&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percentage&nbsp;=&nbsp;70
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'Ordem&nbsp;de&nbsp;devolução&nbsp;gerada&nbsp;-&nbsp;atualizando&nbsp;condições'.

*&nbsp;&nbsp;"&nbsp;Atualiza&nbsp;nova&nbsp;ordem&nbsp;criada&nbsp;com&nbsp;condições&nbsp;de&nbsp;preço
*&nbsp;&nbsp;PERFORM&nbsp;atualiza_ordem_devolucao.

&nbsp;&nbsp;"&nbsp;Mostrar&nbsp;andamento&nbsp;na&nbsp;barra&nbsp;de&nbsp;status
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SAPGUI_PROGRESS_INDICATOR'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percentage&nbsp;=&nbsp;95
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'Processo&nbsp;finalizado'.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;chamar_bapi_ordem_devolucao
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calcula&nbsp;o&nbsp;campo&nbsp;offset&nbsp;com&nbsp;as&nbsp;condições&nbsp;de&nbsp;preço
*----------------------------------------------------------------------*
FORM&nbsp;chamar_calculo_offset&nbsp;.
&nbsp;&nbsp;DATA&nbsp;&nbsp;lv_tabix&nbsp;TYPE&nbsp;sy-index.
&nbsp;&nbsp;DATA:&nbsp;st_head_chg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;bapisdh1x,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_logic_switch&nbsp;TYPE&nbsp;bapisdls.

&nbsp;&nbsp;st_logic_switch-pricing&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'B'.
*&nbsp;&nbsp;st_logic_switch-cond_handl&nbsp;=&nbsp;'X'.

&nbsp;&nbsp;FREE&nbsp;tbl_return.

&nbsp;&nbsp;"&nbsp;Mostrar&nbsp;andamento&nbsp;na&nbsp;barra&nbsp;de&nbsp;status
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SAPGUI_PROGRESS_INDICATOR'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percentage&nbsp;=&nbsp;25
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'Calculando&nbsp;campo&nbsp;OFFSET'.
*
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SD_SALESDOCUMENT_CREATE'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_header_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_header_inx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1x
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logic_switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_logic_switch
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;business_object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'BUS2102'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testrun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'X'
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_items_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditm
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_items_inx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditmx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_partners&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapiparnr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_schedules_in&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapischdl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_schedules_inx&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapischdlx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_conditions_in&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapicond
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sales_conditions_inx&nbsp;&nbsp;=&nbsp;tbl_bapicondx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conditions_ex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapicond_ex.
*&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'BAPI_CUSTOMERRETURN_CREATE'
*&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_header_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_header_inx&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_bapisdhd1x
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logic_switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_logic_switch
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testrun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'X'
*&nbsp;&nbsp;&nbsp;&nbsp;TABLES
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_items_in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditm
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_items_inx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisditmx
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_conditions_in&nbsp;=&nbsp;tbl_bapicond
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_partners&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapiparnr
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_schedules_in&nbsp;&nbsp;=&nbsp;tbl_bapischdl
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return_schedules_inx&nbsp;=&nbsp;tbl_bapischdlx.

***&nbsp;Mensagens&nbsp;de&nbsp;erro!
&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;tbl_return&nbsp;WITH&nbsp;KEY&nbsp;type&nbsp;=&nbsp;'E'.
&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;EQ&nbsp;0.

&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;tbl_return&nbsp;WHERE&nbsp;type&nbsp;EQ&nbsp;'S'.

&nbsp;&nbsp;ELSE.

&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;Alterando&nbsp;tabela&nbsp;valida&nbsp;com&nbsp;subtotais
&nbsp;&nbsp;&nbsp;&nbsp;LOOP&nbsp;AT&nbsp;gt_itens_valida&nbsp;INTO&nbsp;gs_itens_valida.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lv_tabix&nbsp;=&nbsp;sy-tabix.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;tbl_bapicond_ex
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;KEY&nbsp;itm_number&nbsp;=&nbsp;gs_itens_valida-kposn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cond_type&nbsp;&nbsp;=&nbsp;'SKTO'.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;EQ&nbsp;0.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gs_itens_valida-kawrt&nbsp;=&nbsp;tbl_bapicond_ex-conbaseval."&nbsp;*&nbsp;'0.1'.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MODIFY&nbsp;gt_itens_valida&nbsp;FROM&nbsp;gs_itens_valida
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INDEX&nbsp;lv_tabix.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.
&nbsp;&nbsp;&nbsp;&nbsp;ENDLOOP.

&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;DELETE&nbsp;tbl_return&nbsp;WHERE&nbsp;type&nbsp;EQ&nbsp;'S'.

&nbsp;&nbsp;"&nbsp;Mostra&nbsp;mensagem&nbsp;de&nbsp;sucesso
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'C14ALD_BAPIRET2_SHOW'
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_bapiret2_tab&nbsp;=&nbsp;tbl_return.

&nbsp;&nbsp;"&nbsp;Mostrar&nbsp;andamento&nbsp;na&nbsp;barra&nbsp;de&nbsp;status
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'SAPGUI_PROGRESS_INDICATOR'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percentage&nbsp;=&nbsp;70
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'Campo&nbsp;OFFSET&nbsp;calculado&nbsp;com&nbsp;sucesso'.

ENDFORM.
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Atualiza&nbsp;nova&nbsp;ordem&nbsp;criada&nbsp;com&nbsp;as&nbsp;condições&nbsp;de&nbsp;preço
*----------------------------------------------------------------------*
FORM&nbsp;atualiza_ordem_devolucao&nbsp;.

&nbsp;&nbsp;CHECK&nbsp;g_vbeln_criado&nbsp;IS&nbsp;NOT&nbsp;INITIAL.

&nbsp;&nbsp;PERFORM&nbsp;pegar_condicao_preco.
&nbsp;&nbsp;PERFORM&nbsp;monta_condicoes_bapi.
&nbsp;&nbsp;PERFORM&nbsp;chamar_bapi_muda_ord_devolucao.

&nbsp;&nbsp;CLEAR&nbsp;g_vbeln_criado.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;atualiza_ordem_devolucao
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pegar&nbsp;as&nbsp;condições&nbsp;de&nbsp;preço&nbsp;geradas&nbsp;na&nbsp;ordem&nbsp;anteriormente
*----------------------------------------------------------------------*
FORM&nbsp;pegar_condicao_preco&nbsp;.

*&nbsp;É&nbsp;preciso&nbsp;obter&nbsp;manualmente&nbsp;os&nbsp;preços&nbsp;relevantes&nbsp;condições&nbsp;que&nbsp;o&nbsp;BAPI
*&nbsp;BAPISDORDER_GETDETAILEDLIST&nbsp;causa&nbsp;problemas&nbsp;quando&nbsp;chamamos&nbsp;o&nbsp;BAPI
*&nbsp;BAPI_SALESORDER_CREATEFROMDAT2&nbsp;e&nbsp;BAPI_SALESORDER_CHANGE&nbsp;(eu&nbsp;acho&nbsp;que
*&nbsp;isto&nbsp;é&nbsp;devido&nbsp;ao&nbsp;fato&nbsp;de&nbsp;estes&nbsp;BAPIs&nbsp;pertencem&nbsp;à&nbsp;mesma&nbsp;função
*&nbsp;Grupo&nbsp;e&nbsp;deve&nbsp;haver&nbsp;algumas&nbsp;estruturas&nbsp;comuns&nbsp;que&nbsp;não&nbsp;são&nbsp;apuradas
*&nbsp;fazendo-nos&nbsp;todos&nbsp;os&nbsp;tipos&nbsp;de&nbsp;dor&nbsp;quando&nbsp;tentamos&nbsp;e&nbsp;ligue&nbsp;para&nbsp;o&nbsp;próximo&nbsp;BAPI)

&nbsp;&nbsp;DATA:&nbsp;tbl_konv&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;konv&nbsp;WITH&nbsp;HEADER&nbsp;LINE.
&nbsp;&nbsp;DATA:&nbsp;tbl_komv&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;komv&nbsp;WITH&nbsp;HEADER&nbsp;LINE.
&nbsp;&nbsp;DATA:&nbsp;tbl_vbak&nbsp;TYPE&nbsp;STANDARD&nbsp;TABLE&nbsp;OF&nbsp;vbak&nbsp;WITH&nbsp;HEADER&nbsp;LINE.

*&nbsp;Pricing&nbsp;Condition&nbsp;Master
&nbsp;&nbsp;DATA:&nbsp;BEGIN&nbsp;OF&nbsp;tbl_t685a&nbsp;OCCURS&nbsp;0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kschl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;t685a-kschl,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kaend_wrt&nbsp;LIKE&nbsp;t685a-kaend_wrt,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;OF&nbsp;tbl_t685a.

&nbsp;&nbsp;SELECT&nbsp;*
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTO&nbsp;TABLE&nbsp;tbl_vbak
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;vbak
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;vbeln&nbsp;=&nbsp;g_vbeln_criado.

&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;tbl_vbak&nbsp;INDEX&nbsp;1.

&nbsp;&nbsp;SELECT&nbsp;*
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTO&nbsp;TABLE&nbsp;tbl_konv
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;konv
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;knumv&nbsp;=&nbsp;tbl_vbak-knumv&nbsp;AND
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kschl&nbsp;=&nbsp;'PR00'.

&nbsp;&nbsp;CHECK&nbsp;sy-subrc&nbsp;EQ&nbsp;0.

*&nbsp;We&nbsp;now&nbsp;need&nbsp;to&nbsp;make&nbsp;sure&nbsp;we&nbsp;only&nbsp;bring&nbsp;across&nbsp;the&nbsp;Condition&nbsp;Types&nbsp;that
*&nbsp;are&nbsp;EDITABLE.&nbsp;If&nbsp;we&nbsp;bring&nbsp;across&nbsp;non&nbsp;editable&nbsp;conditions&nbsp;(such&nbsp;as
*&nbsp;'ZPR1')&nbsp;the&nbsp;Change&nbsp;Sales&nbsp;Order&nbsp;BAPI&nbsp;will&nbsp;fail
&nbsp;&nbsp;SELECT&nbsp;kschl&nbsp;kaend_wrt
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTO&nbsp;TABLE&nbsp;tbl_t685a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;t685a
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;ALL&nbsp;ENTRIES&nbsp;IN&nbsp;tbl_konv
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;kappl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQ&nbsp;'V'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;&nbsp;"Vendas
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kschl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQ&nbsp;tbl_konv-kschl&nbsp;&nbsp;AND
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kaend_wrt&nbsp;EQ&nbsp;'X'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;."AND&nbsp;&nbsp;"Valor&nbsp;é&nbsp;editável
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kmanu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NE&nbsp;'D'.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Processado&nbsp;manualmente

*&nbsp;Prepara&nbsp;para&nbsp;Binary&nbsp;Search
&nbsp;&nbsp;SORT&nbsp;tbl_t685a&nbsp;BY&nbsp;kschl.

&nbsp;&nbsp;LOOP&nbsp;AT&nbsp;tbl_konv.
&nbsp;&nbsp;&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;tbl_t685a&nbsp;WITH&nbsp;KEY&nbsp;kschl&nbsp;=&nbsp;tbl_konv-kschl&nbsp;BINARY&nbsp;SEARCH.
&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;EQ&nbsp;0.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVE-CORRESPONDING&nbsp;tbl_konv&nbsp;TO&nbsp;tbl_komv.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_komv.
&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.
&nbsp;&nbsp;ENDLOOP.

&nbsp;&nbsp;CHECK&nbsp;NOT&nbsp;tbl_komv[]&nbsp;IS&nbsp;INITIAL.

*&nbsp;Maper&nbsp;KOMV&nbsp;dentro&nbsp;da&nbsp;estrutura&nbsp;BAPISDCOND
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'MAP_INT_TO_EXT_STRUCTURE'
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fxvbak&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_vbak
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fxkomv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_komv
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fxbapikomv&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapisdcond
&nbsp;&nbsp;&nbsp;&nbsp;EXCEPTIONS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entry_missing&nbsp;=&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;2.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;pegar_condicao_preco
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Poe&nbsp;os&nbsp;novos&nbsp;preços&nbsp;na&nbsp;condição&nbsp;PR00
*----------------------------------------------------------------------*
FORM&nbsp;monta_condicoes_bapi&nbsp;.

&nbsp;&nbsp;LOOP&nbsp;AT&nbsp;tbl_bapisdcond.
&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_bapicond.

&nbsp;&nbsp;&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;gt_itens_valida&nbsp;INTO&nbsp;gs_itens_valida
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;KEY&nbsp;kposn&nbsp;=&nbsp;tbl_bapisdcond-itm_number.
&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;EQ&nbsp;0.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVE-CORRESPONDING&nbsp;tbl_bapisdcond&nbsp;TO&nbsp;tbl_bapicond.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicond-cond_updat&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicond-cond_value&nbsp;=&nbsp;gs_itens_valida-sap_netpr.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicond-cond_unit&nbsp;&nbsp;=&nbsp;gs_itens_valida-sap_meins.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_bapicond.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_bapicondx.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-itm_number&nbsp;=&nbsp;tbl_bapicond-itm_number.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-cond_st_no&nbsp;=&nbsp;tbl_bapicond-cond_st_no.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-cond_count&nbsp;=&nbsp;tbl_bapicond-cond_count.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-cond_type&nbsp;&nbsp;=&nbsp;tbl_bapicond-cond_type.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-updateflag&nbsp;=&nbsp;'U'.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-cond_value&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_bapicondx-cond_unit&nbsp;&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_bapicondx.
&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;ENDLOOP.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;monta_condicoes_bapi
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chamar&nbsp;BAPI&nbsp;para&nbsp;atualizar&nbsp;valores&nbsp;da&nbsp;ordem&nbsp;de&nbsp;venda
*----------------------------------------------------------------------*
FORM&nbsp;chamar_bapi_muda_ord_devolucao&nbsp;.

&nbsp;&nbsp;DATA:&nbsp;st_head_chg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIKE&nbsp;bapisdh1x,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_logic_switch&nbsp;TYPE&nbsp;bapisdls.


&nbsp;&nbsp;CHECK&nbsp;NOT&nbsp;g_vbeln_criado&nbsp;IS&nbsp;INITIAL.

&nbsp;&nbsp;st_head_chg-updateflag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'U'.
&nbsp;&nbsp;st_logic_switch-pricing&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'B'.
*&nbsp;&nbsp;st_logic_switch-cond_handl&nbsp;=&nbsp;'X'.

&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'BAPI_SALESORDER_CHANGE'
&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;salesdocument&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;g_vbeln_criado
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;order_header_inx&nbsp;=&nbsp;st_head_chg
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logic_switch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;st_logic_switch
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return_chg
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conditions_in&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapicond
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conditions_inx&nbsp;&nbsp;&nbsp;=&nbsp;tbl_bapicondx.

&nbsp;&nbsp;"&nbsp;Encontrou&nbsp;erro&nbsp;então&nbsp;mostra
&nbsp;&nbsp;LOOP&nbsp;AT&nbsp;tbl_return_chg
&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;type&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;&nbsp;&nbsp;MESSAGE&nbsp;tbl_return_chg-message&nbsp;TYPE&nbsp;'I'.
&nbsp;&nbsp;ENDLOOP.

&nbsp;&nbsp;"&nbsp;Não&nbsp;encontrou&nbsp;erro&nbsp;então&nbsp;comita
&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;tbl_return_chg&nbsp;TRANSPORTING&nbsp;NO&nbsp;FIELDS
&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;KEY&nbsp;type&nbsp;=&nbsp;'E'.
&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;NE&nbsp;0.
&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'BAPI_TRANSACTION_COMMIT'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait&nbsp;=&nbsp;'X'.
&nbsp;&nbsp;ENDIF.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;chamar_bapi_muda_ord_devolucao
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Estruturando&nbsp;BAPI&nbsp;e&nbsp;Retorno&nbsp;da&nbsp;BAPI
*----------------------------------------------------------------------*
FORM&nbsp;chama_batch_vl01n&nbsp;USING&nbsp;us_vbeln.
&nbsp;&nbsp;DATA&nbsp;lv_remessa&nbsp;TYPE&nbsp;vbeln.

&nbsp;&nbsp;REFRESH&nbsp;tbl_return.
&nbsp;&nbsp;CLEAR&nbsp;bdcmsg.

&nbsp;&nbsp;"&nbsp;Executa&nbsp;batch&nbsp;input&nbsp;para&nbsp;EM
&nbsp;&nbsp;PERFORM&nbsp;batch_input_vl01n&nbsp;USING&nbsp;us_vbeln.

&nbsp;&nbsp;"&nbsp;Monta&nbsp;mensagens&nbsp;retornadas
&nbsp;&nbsp;LOOP&nbsp;AT&nbsp;bdcmsg.

&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_return.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;bdcmsg-msgid.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;bdcmsg-msgnr.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v1&nbsp;=&nbsp;bdcmsg-msgv1.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v2&nbsp;=&nbsp;bdcmsg-msgv2.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v3&nbsp;=&nbsp;bdcmsg-msgv3.
&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v4&nbsp;=&nbsp;bdcmsg-msgv4.
&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'BAPI_MESSAGE_GETDETAIL'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return-id
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return-number
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textformat&nbsp;=&nbsp;''
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message_v1&nbsp;=&nbsp;tbl_return-message_v1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message_v2&nbsp;=&nbsp;tbl_return-message_v2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message_v3&nbsp;=&nbsp;tbl_return-message_v3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message_v4&nbsp;=&nbsp;tbl_return-message_v4
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMPORTING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;tbl_return-message.

&nbsp;&nbsp;&nbsp;&nbsp;MOVE&nbsp;bdcmsg-msgtyp&nbsp;TO&nbsp;tbl_return-type.
&nbsp;&nbsp;&nbsp;&nbsp;MOVE&nbsp;'SU'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO&nbsp;tbl_return-id.
&nbsp;&nbsp;&nbsp;&nbsp;MOVE&nbsp;'000'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO&nbsp;tbl_return-number.

&nbsp;&nbsp;&nbsp;&nbsp;CLEAR:&nbsp;tbl_return-message_v1&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v2&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v3&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v4&nbsp;.

&nbsp;&nbsp;&nbsp;&nbsp;TRY.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v1&nbsp;=&nbsp;tbl_return-message(50).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v2&nbsp;=&nbsp;tbl_return-message+50(50).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v3&nbsp;=&nbsp;tbl_return-message+100(50).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tbl_return-message_v4&nbsp;=&nbsp;tbl_return-message+150(10).
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CATCH&nbsp;cx_root.
&nbsp;&nbsp;&nbsp;&nbsp;ENDTRY.

&nbsp;&nbsp;&nbsp;&nbsp;CLEAR&nbsp;tbl_return-message.
&nbsp;&nbsp;&nbsp;&nbsp;APPEND&nbsp;tbl_return.

&nbsp;&nbsp;ENDLOOP.

&nbsp;&nbsp;"&nbsp;Remessa
&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;bdcmsg&nbsp;INDEX&nbsp;1.
&nbsp;&nbsp;IF&nbsp;bdcmsg-msgtyp&nbsp;=&nbsp;'S'.
&nbsp;&nbsp;&nbsp;&nbsp;lv_remessa&nbsp;=&nbsp;bdcmsg-msgv2.
&nbsp;&nbsp;ENDIF.


&nbsp;&nbsp;"&nbsp;Mostra&nbsp;mensagem&nbsp;de&nbsp;sucesso
&nbsp;&nbsp;CALL&nbsp;FUNCTION&nbsp;'C14ALD_BAPIRET2_SHOW'
&nbsp;&nbsp;&nbsp;&nbsp;TABLES
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_bapiret2_tab&nbsp;=&nbsp;tbl_return.

&nbsp;&nbsp;"&nbsp;Atualizando&nbsp;tabelas
&nbsp;&nbsp;gw_pre_registro-vgbel&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_remessa.
&nbsp;&nbsp;MODIFY&nbsp;zsdt016&nbsp;FROM&nbsp;gw_pre_registro.&nbsp;&nbsp;&nbsp;"&nbsp;Atualizar&nbsp;tabela&nbsp;nf&nbsp;devoluções

&nbsp;&nbsp;"&nbsp;Atualizar&nbsp;tabela&nbsp;interna
&nbsp;&nbsp;READ&nbsp;TABLE&nbsp;gt_pre_registro&nbsp;TRANSPORTING&nbsp;NO&nbsp;FIELDS
&nbsp;&nbsp;&nbsp;&nbsp;WITH&nbsp;KEY&nbsp;mandt&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-mandt
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nfenum&nbsp;&nbsp;=&nbsp;gw_pre_registro-nfenum
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serie&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-serie
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cgc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-cgc
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kunnr&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-kunnr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;branch&nbsp;&nbsp;=&nbsp;gw_pre_registro-branch
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tipo&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;gw_pre_registro-tipo.
&nbsp;&nbsp;IF&nbsp;sy-subrc&nbsp;EQ&nbsp;0.
&nbsp;&nbsp;&nbsp;&nbsp;MODIFY&nbsp;gt_pre_registro&nbsp;FROM&nbsp;gw_pre_registro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INDEX&nbsp;sy-tabix.
&nbsp;&nbsp;ENDIF.

&nbsp;&nbsp;"&nbsp;Aualizando&nbsp;tela
&nbsp;&nbsp;CALL&nbsp;METHOD&nbsp;cl_gui_cfw=&gt;flush.


ENDFORM.
*&amp;---------------------------------------------------------------------*
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BATCH&nbsp;input&nbsp;para&nbsp;Entrada&nbsp;de&nbsp;Mercadoria
*----------------------------------------------------------------------*
FORM&nbsp;batch_input_vl01n&nbsp;&nbsp;USING&nbsp;p_vbeln&nbsp;TYPE&nbsp;vbak-vbeln.
&nbsp;&nbsp;DATA:&nbsp;lv_data&nbsp;&nbsp;TYPE&nbsp;c&nbsp;LENGTH&nbsp;10,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lv_vstel&nbsp;TYPE&nbsp;vstel.

&nbsp;&nbsp;SELECT&nbsp;SINGLE&nbsp;vstel&nbsp;FROM&nbsp;vbap
&nbsp;&nbsp;&nbsp;&nbsp;INTO&nbsp;lv_vstel
&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;vbeln&nbsp;=&nbsp;p_vbeln.

&nbsp;&nbsp;CHECK&nbsp;sy-subrc&nbsp;EQ&nbsp;0.

&nbsp;&nbsp;REFRESH:&nbsp;bdcdata.
&nbsp;&nbsp;WRITE&nbsp;sy-datum&nbsp;TO&nbsp;lv_data.
&nbsp;&nbsp;PERFORM&nbsp;bdc_dynpro&nbsp;USING&nbsp;'SAPMV50A'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'4001'.
&nbsp;&nbsp;PERFORM&nbsp;bdc_field&nbsp;&nbsp;USING:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_CURSOR'&nbsp;&nbsp;&nbsp;&nbsp;'LV50C-VBELN'&nbsp;&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_OKCODE'&nbsp;&nbsp;&nbsp;&nbsp;'/00'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'LIKP-VSTEL'&nbsp;&nbsp;&nbsp;&nbsp;lv_vstel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'LV50C-DATBI'&nbsp;&nbsp;&nbsp;lv_data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'LV50C-VBELN'&nbsp;&nbsp;&nbsp;p_vbeln&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.

&nbsp;&nbsp;PERFORM&nbsp;bdc_dynpro&nbsp;USING&nbsp;'SAPMV50A'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'1000'.
&nbsp;&nbsp;PERFORM&nbsp;bdc_field&nbsp;USING:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_OKCODE'&nbsp;&nbsp;'=WABU_T'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_SUBSCR'&nbsp;&nbsp;'SAPMV50A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1502SUBSCREEN_HEADER'&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_SUBSCR'&nbsp;&nbsp;'SAPMV50A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1102SUBSCREEN_BODY'&nbsp;&nbsp;&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_SUBSCR'&nbsp;&nbsp;'SAPMV50A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0611SUBSCREEN_BOTTOM'&nbsp;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'BDC_SUBSCR'&nbsp;&nbsp;'SAPMV50A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1708SUBSCREEN_ICONBAR'.

&nbsp;&nbsp;REFRESH&nbsp;bdcmsg.
&nbsp;&nbsp;CALL&nbsp;TRANSACTION&nbsp;'VL01N'&nbsp;USING&nbsp;bdcdata&nbsp;MODE&nbsp;'P'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MESSAGES&nbsp;INTO&nbsp;bdcmsg.

&nbsp;&nbsp;COMMIT&nbsp;WORK&nbsp;AND&nbsp;WAIT.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;BATCH_INPUT_VL01N


************************************************************************
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROTINA&nbsp;-&nbsp;'BDC_DYNPRO'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
************************************************************************

FORM&nbsp;bdc_dynpro&nbsp;USING&nbsp;program&nbsp;dynpro.

&nbsp;&nbsp;CLEAR&nbsp;bdcdata.

&nbsp;&nbsp;bdcdata-program&nbsp;&nbsp;=&nbsp;program.
&nbsp;&nbsp;bdcdata-dynpro&nbsp;&nbsp;&nbsp;=&nbsp;dynpro.
&nbsp;&nbsp;bdcdata-dynbegin&nbsp;=&nbsp;'X'.

&nbsp;&nbsp;APPEND&nbsp;bdcdata.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"BDC_DYNPRO

************************************************************************
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROTINA&nbsp;-&nbsp;'BDC_FIELD'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
************************************************************************

FORM&nbsp;bdc_field&nbsp;USING&nbsp;fnam&nbsp;fval.

&nbsp;&nbsp;CLEAR&nbsp;bdcdata.

&nbsp;&nbsp;bdcdata-fnam&nbsp;=&nbsp;fnam.
&nbsp;&nbsp;bdcdata-fval&nbsp;=&nbsp;fval.

&nbsp;&nbsp;APPEND&nbsp;bdcdata.

ENDFORM.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"BDC_FIELD

************************************************************************
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROTINA&nbsp;-&nbsp;'BDC_TRANSACTION'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*
************************************************************************