Bom pessoal sempre vejo o pessoal que está iniciando em ABAP ficar com estás duvida, quanto ao usar um select-option dentro de uma função. Na verda não é possivél usar um parametro diretamente como selection-option dentro de um importing ou exporting de uma FUNCTION, na verdade existe diversas formas de se fazer isso, mais demostrarei a mais simples e facil. Vale lembrar que um selection option é uma estrutura que contém os seguintes campos:
Então basta termos uma estrutura com estes campos, e ter um campo no tables com referencia a esta tabela. Segue amgumas estruturas ja prontas:
BAPI1104_SELECTIONCRITERIA Seleções para GETLIST
BAPI1172_LIFNR_RANGE Range para o fornecedor
BAPI1172_PKUMW_RANGE Range para o centro fornecedor
BAPI1172_UMLGO_RANGE Range para o depósito fornecedor
BAPI2017_GM_MATERIAL_RA Estrutura de comunicação BAPI: range para material
BAPI2017_GM_MOVE_TYPE_RA Estrutura de comunicação BAPI: range para tipo de movimento
BAPI2017_GM_PLANT_RA Estrutura de comunicação BAPI: range para centro
BAPI2017_GM_PSTNG_DATE_RA Estrutura de comunicação BAPI: range para data de lançamento
BAPI2017_GM_USERNAME_RA Estrutura de comunicação BAPI: range para nome do usuário
BAPI2021_SELCOMPCODE Seleção de empresa
BAPIDLV_RANGE_BLDAT Estrutura de seleção BAPI: data no documento
BAPIDLV_RANGE_FKSTK Estrutura de seleção BAPI: status do faturamento
BAPIDLV_RANGE_GBSTK Estrutura seleção BAPI: status global procmto.documento SD
BAPIDLV_RANGE_GRUPP Estrutura de seleção BAPI: grupo de crédito de clientes
BAPIDLV_RANGE_KUNNR Estrutura de seleção BAPI: nº de cliente / nº de fornecedor
BAPIDLV_RANGE_LDDAT Estrutura de seleção BAPI: data de carregamento
BAPIDLV_RANGE_LGORT Estrutura de seleção BAPI: depósito
BAPIDLV_RANGE_LIFSK Estrut.seleção BAPI: bloqueio nota remessa cabeç.documento
BAPIDLV_RANGE_MATKL Estrutura de seleção BAPI: grupo de mercadorias
BAPIDLV_RANGE_MATNR BAPI estrutura de seleção: nº material
BAPIDLV_RANGE_PARVW Estrutura de seleção BAPI: função do parceiro
BAPIDLV_RANGE_PERNR Estrutura de seleção BAPI: nº pessoal
BAPIDLV_RANGE_SPART BAPI Estrutura de seleção: setor de atividade
BAPIDLV_RANGE_TRAID Estrutura de seleção BAPI: identificação do transporte
BAPIDLV_RANGE_VBELN Estrutura de seleção BAPI: nº documento forneciment
BAPIDLV_RANGE_VBTYP Estrutura de seleção BAPI: categoria de documento SD
BAPIDLV_RANGE_VBTYP Estrutura de seleção BAPI: categoria de documento SD
BAPIDLV_RANGE_VKBUR BAPI Estrutura de seleção: escritório de vendas
BAPIDLV_RANGE_VKORG BAPI Estrutura de seleção: organização de vendas
BAPIDLV_RANGE_VSBED Estrutura de seleção BAPI: condição de expedição
BAPIDLV_RANGE_VSTEL Estrutura seleção BAPI: local expedição/entrada mercadorias
BAPIDLV_RANGE_VTWEG BAPI estrutura de seleção: canal de distribuição
BAPIDLV_RANGE_WERKS Estrutura de seleção BAPI: centro
Estás são as mais usadas, mais se vc precisar de alguma que não esteja aqui procure na SE11 por
*RANGE*<campo>* procure por estruturas.
Após encontrar a estrutrura de sua necessidade nos parametros tables, segue uma função com um otimo exemplo: construido: “BAPI_DELIVERY_GETLIST”.
No programa que tem o SELECT-OPTION basta fazer a seguinte logica antes da chamada da função:
Declaração:
SPAN { font-family: “Courier New”; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S32 { color: #009300; } .L1S52 { color: #0000FF; } SELECTION-SCREEN BEGIN OF BLOCK s1 WITH FRAME TITLE TEXT–001.
SELECT-OPTIONS: s_werks FOR lips-werks.
Antes da chamada da função:
Exemplo:
TABLES lips.
DATA: r_werks TYPE TABLE OF BAPIDLV_RANGE_WERKS,
l_werks TYPE BAPIDLV_RANGE_WERKS.
SELECTION-SCREEN BEGIN OF BLOCK s1 WITH FRAME TITLE TEXT–001.
SELECT-OPTIONS: s_werks FOR lips-werks.
SELECTION-SCREEN END OF BLOCK s1.
LOOP AT s_werks.
MOVE-CORRESPONDING s_werks TO l_werks.
* Apenas porque o campos low e high tem nome diferente
* se tivesse o mesmo nome no proprio MOVE-CORRESPONDING
* ja estaria correto.
MOVE: s_werks-low to l_werks-plant_low,
s_werks-high to l_werks-plant_high.
*
APPEND l_werks TO r_werks.
ENDLOOP.
CALL FUNCTION ‘YTESTEFC’
TABLES
SO_WERKS = r_werks.
_________________________________________________
Função:
*”———————————————————————-
*”*”Interface local:
*” TABLES
*” SO_WERKS STRUCTURE BAPIDLV_RANGE_WERKS
*”———————————————————————-
DATA: r_werks TYPE TABLE OF t001w,
l_werks TYPE t001w.
SELECT * from t001w INTO TABLE r_werks WHERE werks IN SO_WERKS.
ENDFUNCTION.
Filed under: Argibos ABAP - Básico, Artigos ABAP/4 - Basicos | Tagged: Select-option | Leave a comment »