Function com Select-Option


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:

SIGN   = I – Incluir, E- Excluir
OPT     =  EQ = Igual, NE =Diferente, LE Menor Igual,  GE Maior Igual, etc….
LOW    =  Valor inicial
HIGH  =  Valor Final

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 TEXT001.
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 TEXT001.

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.

SELECTfrom t001w INTO TABLE r_werks WHERE werks IN SO_WERKS.

ENDFUNCTION.

Design a site like this with WordPress.com
Iniciar