Sei sulla pagina 1di 21

***********Chamada do método

*** Internal Tables


DATA:
it_rfposxext TYPE STANDARD TABLE OF rfposxext.

*** Internal Tables


DATA:
lit_rfposxext_aux TYPE STANDARD TABLE OF rfposxext.

*** Variables
DATA:
ltp_error TYPE xfeld.

get_external_alv_data_fbl1n(
CHANGING
cit_rfposxext = lit_rfposxext_aux
ctp_error = ctp_error ).

IF lit_rfposxext_aux[] IS NOT INITIAL.


it_rfposxext[] = lit_rfposxext_aux[].
ENDIF.

get_external_alv_data_fbl3n(
CHANGING
cit_rfposxext = lit_rfposxext_aux
ctp_error = ctp_error ).

IF lit_rfposxext_aux[] IS NOT INITIAL.


APPEND LINES OF lit_rfposxext_aux TO it_rfposxext.
ENDIF.

get_external_alv_data_fbl5n(
CHANGING
cit_rfposxext = lit_rfposxext_aux
ctp_error = ctp_error ).

IF lit_rfposxext_aux[] IS NOT INITIAL.


APPEND LINES OF lit_rfposxext_aux TO it_rfposxext.
ENDIF.

"B01 Parâmetros de seleção


"B02 Informações para exportação dos dados
"B03 Seleção de partidas
"B04 Status
"B05 Tipo

*&---------------------------------------------------------------------*
* Selection Screen
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.

SELECT-OPTIONS:
s_hkont FOR bsas-hkont,
s_lifnr FOR bsak-lifnr,
s_kunnr FOR bsad-kunnr,
s_bukrs FOR bkpf-bukrs,
s_belnr FOR bkpf-belnr,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_bstat FOR bkpf-bstat,
s_bldat FOR bkpf-bldat,
s_budat FOR bkpf-budat,
s_augdt FOR bsak-augdt.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-b03.

SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE text-b04.

** Open items:
* SELECTION-SCREEN BEGIN OF LINE.
* PARAMETERS:
* p_ropsel TYPE itemset-xopsel RADIOBUTTON GROUP rad1 USER-COMMAND
rad_status.
* SELECTION-SCREEN COMMENT 3(20) text-010 FOR FIELD p_ropsel.
* SELECTION-SCREEN END OF LINE.
*
** Cleared items:
* SELECTION-SCREEN BEGIN OF LINE.
* PARAMETERS:
* p_rclsel TYPE itemset-xclsel RADIOBUTTON GROUP rad1.
* SELECTION-SCREEN COMMENT 3(25) text-011 FOR FIELD p_rclsel.
* SELECTION-SCREEN END OF LINE.
*
** All items:
* SELECTION-SCREEN BEGIN OF LINE.
* PARAMETERS:
* p_raisel TYPE itemset-xaisel RADIOBUTTON GROUP rad1 DEFAULT 'X'.
* SELECTION-SCREEN COMMENT 3(20) text-012 FOR FIELD p_raisel.
* SELECTION-SCREEN END OF LINE.

PARAMETERS:
p_ropsel TYPE itemset-xopsel RADIOBUTTON GROUP rad1 USER-COMMAND
rad_status,
p_rclsel TYPE itemset-xclsel RADIOBUTTON GROUP rad1,
p_raisel TYPE itemset-xaisel RADIOBUTTON GROUP rad1 DEFAULT 'X'.

SELECTION-SCREEN: END OF BLOCK b04.

SELECTION-SCREEN BEGIN OF BLOCK b05 WITH FRAME TITLE text-b05.

PARAMETERS:
p_cnorm TYPE itemset-xnorm AS CHECKBOX DEFAULT 'X' USER-COMMAND
cktype_xnorm,
p_cshbv TYPE itemset-xshbv AS CHECKBOX DEFAULT ' ' USER-COMMAND
cktype_xshbv,
p_cmerk TYPE itemset-xmerk AS CHECKBOX DEFAULT ' ' USER-COMMAND
cktype_xmerk,
p_cpark TYPE itemset-xpark AS CHECKBOX DEFAULT ' ' USER-COMMAND
cktype_xpark,
p_capit TYPE itemset-xapit NO-DISPLAY,"AS CHECKBOX DEFAULT ' '
USER-COMMAND cktype_xapit,
p_carit TYPE itemset-xarit NO-DISPLAY."AS CHECKBOX DEFAULT ' '
USER-COMMAND cktype_xarit.

SELECTION-SCREEN: END OF BLOCK b05.

SELECTION-SCREEN: END OF BLOCK b03.

SELECTION-SCREEN: END OF BLOCK b01.

************************************Class Definition

*&---------------------------------------------------------------------*
*& Method GET_EXTERNAL_ALV_DATA
*&---------------------------------------------------------------------*
* Get external ALV data
*----------------------------------------------------------------------*
* --> ITP_PROGRAM = ABAP Program Name
* --> IIT_SELTAB = ABAP: General Structure for PARAMETERS
* and SELECT-OPTIONS
* <-- CDR_DATA = Retrivied data
* <-- CTP_ERROR = Indicates if an error occurred
*----------------------------------------------------------------------*
METHODS get_external_alv_data
IMPORTING
itp_program TYPE reposrc-progname
iit_seltab TYPE rsparams_tt
CHANGING
cdr_data TYPE REF TO data
ctp_error TYPE xfeld.

*&---------------------------------------------------------------------*
*& Method GET_EXTERNAL_ALV_DATA_FBL1N
*&---------------------------------------------------------------------*
* Get external ALV data - FBL1N
*----------------------------------------------------------------------*
* <-- CIT_RFPOSXEXT = Estrutura de saída das transações FBL1N,
* FBL3N e FBL5N
* <-- CTP_ERROR = Indicates if an error occurred
*----------------------------------------------------------------------*
METHODS get_external_alv_data_fbl1n
CHANGING
cit_rfposxext TYPE it_rfposxext
ctp_error TYPE xfeld.

*&---------------------------------------------------------------------*
*& Method GET_EXTERNAL_ALV_DATA_FBL1N
*&---------------------------------------------------------------------*
* Get external ALV data - FBL3N
*----------------------------------------------------------------------*
* <-- CIT_RFPOSXEXT = Estrutura de saída das transações FBL1N,
* FBL3N e FBL5N
* <-- CTP_ERROR = Indicates if an error occurred
*----------------------------------------------------------------------*
METHODS get_external_alv_data_fbl3n
CHANGING
cit_rfposxext TYPE it_rfposxext
ctp_error TYPE xfeld.

*&---------------------------------------------------------------------*
*& Method GET_EXTERNAL_ALV_DATA_FBL5N
*&---------------------------------------------------------------------*
* Get external ALV data - FBL5N
*----------------------------------------------------------------------*
* <-- CIT_RFPOSXEXT = Estrutura de saída das transações FBL1N,
* FBL3N e FBL5N
* <-- CTP_ERROR = Indicates if an error occurred
*----------------------------------------------------------------------*
METHODS get_external_alv_data_fbl5n
CHANGING
cit_rfposxext TYPE it_rfposxext
ctp_error TYPE xfeld.

************************************Class Implementation

"--

METHOD get_external_alv_data.

*** Variables
DATA:
ltp_msg TYPE string.

*** References
DATA:
lo_salv_bs_sc_runtime_info TYPE REF TO cx_salv_bs_sc_runtime_info.

FREE:
cdr_data.

CLEAR:
ctp_error.

"Inibe a exibição do ALV e armazena os dados na memória


cl_salv_bs_runtime_info=>set(
EXPORTING
display = abap_false
metadata = abap_false
data = abap_true ).

"Chamada do programa passando os parâmetros selecionados


SUBMIT (itp_program)
WITH SELECTION-TABLE iit_seltab
AND RETURN.

"Recuperando da memória o resultado do ALV.


TRY.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = cdr_data ).

CATCH cx_salv_bs_sc_runtime_info INTO lo_salv_bs_sc_runtime_info.


ltp_msg = lo_salv_bs_sc_runtime_info->get_text( ).
ctp_error = abap_true.
MESSAGE ltp_msg TYPE 'E'.
* MESSAGE `Unable to retrieve ALV data` TYPE 'E'.
ENDTRY.

"Limpa a configuração feita no ALV


cl_salv_bs_runtime_info=>clear_all( ).

ENDMETHOD. " GET_EXTERNAL_ALV_DATA

"--

METHOD get_external_alv_data_fbl1n.

*** Internal Tables


DATA:
lit_seltab TYPE STANDARD TABLE OF rsparams.

*** Work Areas


DATA:
lwa_seltab TYPE rsparams.

*** Pointers
FIELD-SYMBOLS:
<lit_data> TYPE STANDARD TABLE,
<lwa_data> TYPE any,
<lwa_rfposxext> LIKE LINE OF cit_rfposxext,
<lwa_lifnr> LIKE LINE OF s_lifnr,
<lwa_bukrs> LIKE LINE OF s_bukrs,
<lwa_gjahr> LIKE LINE OF s_gjahr,
<lwa_bldat> LIKE LINE OF s_bldat,
<lwa_budat> LIKE LINE OF s_budat,
<lwa_augdt> LIKE LINE OF s_augdt.

*** Variables
DATA:
ltp_error TYPE xfeld.

*** References
DATA:
ldr_data TYPE REF TO data,
ldr_wa TYPE REF TO data.

REFRESH:
cit_rfposxext.

IF s_lifnr[] IS NOT INITIAL.

LOOP AT s_lifnr ASSIGNING <lwa_lifnr>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_lifnr> TO lwa_seltab.


lwa_seltab-selname = 'KD_LIFNR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'KD_LIFNR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_bukrs[] IS NOT INITIAL.

LOOP AT s_bukrs ASSIGNING <lwa_bukrs>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_bukrs> TO lwa_seltab.

lwa_seltab-selname = 'KD_BUKRS'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'KD_BUKRS'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_gjahr[] IS NOT INITIAL.

LOOP AT s_gjahr ASSIGNING <lwa_gjahr>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_gjahr> TO lwa_seltab.

lwa_seltab-selname = 'KD_GJAHR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'KD_GJAHR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_bldat[] IS NOT INITIAL.

LOOP AT s_bldat ASSIGNING <lwa_bldat>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_bldat> TO lwa_seltab.

lwa_seltab-selname = 'KD_BLDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'KD_BLDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_budat[] IS NOT INITIAL.

LOOP AT s_budat ASSIGNING <lwa_budat>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_budat> TO lwa_seltab.

lwa_seltab-selname = 'KD_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'KD_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_OPSEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_ropsel.
APPEND lwa_seltab TO lit_seltab.

* lwa_seltab-selname = 'PA_STIDA'.
* lwa_seltab-kind = 'P'.
* lwa_seltab-sign = 'I'.
* lwa_seltab-option = 'EQ'.
* lwa_seltab-low = p_stida.
* APPEND lwa_seltab TO lit_seltab.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_CLSEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_rclsel.
APPEND lwa_seltab TO lit_seltab.

IF s_augdt[] IS NOT INITIAL.

LOOP AT s_augdt ASSIGNING <lwa_augdt>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_augdt> TO lwa_seltab.

lwa_seltab-selname = 'SO_AUGDT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SO_AUGDT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

* lwa_seltab-selname = 'PA_STID2'.
* lwa_seltab-kind = 'P'.
* lwa_seltab-sign = 'I'.
* lwa_seltab-option = 'EQ'.
* lwa_seltab-low = p_stid2.
* APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_AISEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_raisel.
APPEND lwa_seltab TO lit_seltab.

IF s_budat[] IS NOT INITIAL.

LOOP AT s_budat ASSIGNING <lwa_budat>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_budat> TO lwa_seltab.

lwa_seltab-selname = 'SO_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SO_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_NORM'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cnorm.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_SHBV'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cshbv.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_MERK'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cmerk.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_PARK'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cpark.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_APAR'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_carit.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'PA_GRID'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = 'Y'.
APPEND lwa_seltab TO lit_seltab.

get_external_alv_data(
EXPORTING
itp_program = 'RFITEMAP'
iit_seltab = lit_seltab
CHANGING
cdr_data = ldr_data
ctp_error = ltp_error ).

CHECK ltp_error IS INITIAL.

ASSIGN ldr_data->* TO <lit_data>.

"Criando em tempo real a tabela interna <LIT_DATA> com os dados recuperados do


ALV
CREATE DATA ldr_wa LIKE LINE OF <lit_data>.
ASSIGN ldr_wa->* TO <lwa_data>.

LOOP AT <lit_data> ASSIGNING <lwa_data>.

UNASSIGN <lwa_rfposxext>.
INSERT INITIAL LINE INTO TABLE cit_rfposxext ASSIGNING <lwa_rfposxext>.
MOVE-CORRESPONDING <lwa_data> TO <lwa_rfposxext>.

ENDLOOP.

ENDMETHOD. " GET_EXTERNAL_ALV_DATA_FBL1N

"--

METHOD get_external_alv_data_fbl3n.

*** Internal Tables


DATA:
lit_seltab TYPE STANDARD TABLE OF rsparams.

*** Work Areas


DATA:
lwa_seltab TYPE rsparams.

*** Pointers
FIELD-SYMBOLS:
<lit_data> TYPE STANDARD TABLE,
<lwa_data> TYPE any,
<lwa_rfposxext> LIKE LINE OF cit_rfposxext,
<lwa_hkont> LIKE LINE OF s_hkont,
<lwa_bukrs> LIKE LINE OF s_bukrs,
<lwa_gjahr> LIKE LINE OF s_gjahr,
<lwa_bldat> LIKE LINE OF s_bldat,
<lwa_budat> LIKE LINE OF s_budat,
<lwa_augdt> LIKE LINE OF s_augdt.

*** Variables
DATA:
ltp_error TYPE xfeld.

*** References
DATA:
ldr_data TYPE REF TO data,
ldr_wa TYPE REF TO data.

REFRESH:
cit_rfposxext.

IF s_hkont[] IS NOT INITIAL.

LOOP AT s_hkont ASSIGNING <lwa_hkont>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_hkont> TO lwa_seltab.

lwa_seltab-selname = 'SD_SAKNR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SD_SAKNR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_bukrs[] IS NOT INITIAL.

LOOP AT s_bukrs ASSIGNING <lwa_bukrs>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_bukrs> TO lwa_seltab.

lwa_seltab-selname = 'SD_BUKRS'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.
CLEAR lwa_seltab.
lwa_seltab-selname = 'SD_BUKRS'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_gjahr[] IS NOT INITIAL.

LOOP AT s_gjahr ASSIGNING <lwa_gjahr>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_gjahr> TO lwa_seltab.

lwa_seltab-selname = 'SD_GJAHR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SD_GJAHR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

* IF s_bldat[] IS NOT INITIAL.


*
* LOOP AT s_bldat ASSIGNING <lwa_bldat>.
*
* CLEAR:
* lwa_seltab.
*
* MOVE-CORRESPONDING <lwa_bldat> TO lwa_seltab.
*
* lwa_seltab-selname = 'SD_BLDAT'.
* lwa_seltab-kind = 'S'.
* APPEND lwa_seltab TO lit_seltab.
*
* ENDLOOP.
*
* ELSE.
*
* CLEAR lwa_seltab.
* lwa_seltab-selname = 'SD_BLDAT'.
* lwa_seltab-kind = 'S'.
* APPEND lwa_seltab TO lit_seltab.
*
* ENDIF.

IF s_budat[] IS NOT INITIAL.

LOOP AT s_budat ASSIGNING <lwa_budat>.


CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_budat> TO lwa_seltab.

lwa_seltab-selname = 'SD_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SD_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_OPSEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_ropsel.
APPEND lwa_seltab TO lit_seltab.

* lwa_seltab-selname = 'PA_STIDA'.
* lwa_seltab-kind = 'P'.
* lwa_seltab-sign = 'I'.
* lwa_seltab-option = 'EQ'.
* lwa_seltab-low = p_cstida.
* APPEND lwa_seltab TO lit_seltab.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_CLSEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_rclsel.
APPEND lwa_seltab TO lit_seltab.

IF s_augdt[] IS NOT INITIAL.

LOOP AT s_augdt ASSIGNING <lwa_augdt>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_augdt> TO lwa_seltab.

lwa_seltab-selname = 'SO_AUGDT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.
ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SO_AUGDT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

* lwa_seltab-selname = 'PA_STID2'.
* lwa_seltab-kind = 'P'.
* lwa_seltab-sign = 'I'.
* lwa_seltab-option = 'EQ'.
* lwa_seltab-low = p_cstid2.
* APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_AISEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_raisel.
APPEND lwa_seltab TO lit_seltab.

IF s_budat[] IS NOT INITIAL.

LOOP AT s_budat ASSIGNING <lwa_budat>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_budat> TO lwa_seltab.

lwa_seltab-selname = 'SO_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SO_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_NORM'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cnorm.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_SHBV'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cshbv.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_MERK'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cmerk.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_PARK'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cpark.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_APAR'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_carit.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'PA_GRID'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = 'Y'.
APPEND lwa_seltab TO lit_seltab.

get_external_alv_data(
EXPORTING
itp_program = 'RFITEMGL'
iit_seltab = lit_seltab
CHANGING
cdr_data = ldr_data
ctp_error = ltp_error ).

CHECK ltp_error IS INITIAL.

ASSIGN ldr_data->* TO <lit_data>.

"Criando em tempo real a tabela interna <LIT_DATA> com os dados recuperados do


ALV
CREATE DATA ldr_wa LIKE LINE OF <lit_data>.
ASSIGN ldr_wa->* TO <lwa_data>.

LOOP AT <lit_data> ASSIGNING <lwa_data>.

UNASSIGN <lwa_rfposxext>.
INSERT INITIAL LINE INTO TABLE cit_rfposxext ASSIGNING <lwa_rfposxext>.
MOVE-CORRESPONDING <lwa_data> TO <lwa_rfposxext>.

ENDLOOP.

ENDMETHOD. " GET_EXTERNAL_ALV_DATA_FBL3N

"--

METHOD get_external_alv_data_fbl5n.

*** Internal Tables


DATA:
lit_seltab TYPE STANDARD TABLE OF rsparams.

*** Work Areas


DATA:
lwa_seltab TYPE rsparams.

*** Pointers
FIELD-SYMBOLS:
<lit_data> TYPE STANDARD TABLE,
<lwa_data> TYPE any,
<lwa_rfposxext> LIKE LINE OF cit_rfposxext,
<lwa_kunnr> LIKE LINE OF s_kunnr,
<lwa_bukrs> LIKE LINE OF s_bukrs,
<lwa_gjahr> LIKE LINE OF s_gjahr,
<lwa_bldat> LIKE LINE OF s_bldat,
<lwa_budat> LIKE LINE OF s_budat,
<lwa_augdt> LIKE LINE OF s_augdt.

*** Variables
DATA:
ltp_error TYPE xfeld.

*** References
DATA:
ldr_data TYPE REF TO data,
ldr_wa TYPE REF TO data.

REFRESH:
cit_rfposxext.

IF s_kunnr[] IS NOT INITIAL.

LOOP AT s_kunnr ASSIGNING <lwa_kunnr>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_kunnr> TO lwa_seltab.

lwa_seltab-selname = 'DD_KUNNR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.
ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'DD_KUNNR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_bukrs[] IS NOT INITIAL.

LOOP AT s_bukrs ASSIGNING <lwa_bukrs>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_bukrs> TO lwa_seltab.

lwa_seltab-selname = 'DD_BUKRS'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'DD_BUKRS'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_gjahr[] IS NOT INITIAL.

LOOP AT s_gjahr ASSIGNING <lwa_gjahr>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_gjahr> TO lwa_seltab.

lwa_seltab-selname = 'DD_GJAHR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'DD_GJAHR'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_bldat[] IS NOT INITIAL.


LOOP AT s_bldat ASSIGNING <lwa_bldat>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_bldat> TO lwa_seltab.

lwa_seltab-selname = 'DD_BLDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'DD_BLDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

IF s_budat[] IS NOT INITIAL.

LOOP AT s_budat ASSIGNING <lwa_budat>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_budat> TO lwa_seltab.

lwa_seltab-selname = 'DD_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'DD_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_OPSEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_ropsel.
APPEND lwa_seltab TO lit_seltab.

* lwa_seltab-selname = 'PA_STIDA'.
* lwa_seltab-kind = 'P'.
* lwa_seltab-sign = 'I'.
* lwa_seltab-option = 'EQ'.
* lwa_seltab-low = p_cstida.
* APPEND lwa_seltab TO lit_seltab.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_CLSEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_rclsel.
APPEND lwa_seltab TO lit_seltab.

IF s_augdt[] IS NOT INITIAL.

LOOP AT s_augdt ASSIGNING <lwa_augdt>.

CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_augdt> TO lwa_seltab.

lwa_seltab-selname = 'SO_AUGDT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SO_AUGDT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

* lwa_seltab-selname = 'PA_STID2'.
* lwa_seltab-kind = 'P'.
* lwa_seltab-sign = 'I'.
* lwa_seltab-option = 'EQ'.
* lwa_seltab-low = p_cstid2.
* APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_AISEL'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_raisel.
APPEND lwa_seltab TO lit_seltab.

IF s_budat[] IS NOT INITIAL.

LOOP AT s_budat ASSIGNING <lwa_budat>.


CLEAR:
lwa_seltab.

MOVE-CORRESPONDING <lwa_budat> TO lwa_seltab.

lwa_seltab-selname = 'SO_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDLOOP.

ELSE.

CLEAR lwa_seltab.
lwa_seltab-selname = 'SO_BUDAT'.
lwa_seltab-kind = 'S'.
APPEND lwa_seltab TO lit_seltab.

ENDIF.

CLEAR:
lwa_seltab.

lwa_seltab-selname = 'X_NORM'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cnorm.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_SHBV'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cshbv.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_MERK'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cmerk.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_PARK'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_cpark.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'X_APAR'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = p_capit.
APPEND lwa_seltab TO lit_seltab.

lwa_seltab-selname = 'PA_GRID'.
lwa_seltab-kind = 'P'.
lwa_seltab-sign = 'I'.
lwa_seltab-option = 'EQ'.
lwa_seltab-low = 'Y'.
APPEND lwa_seltab TO lit_seltab.

get_external_alv_data(
EXPORTING
itp_program = 'RFITEMAR'
iit_seltab = lit_seltab
CHANGING
cdr_data = ldr_data
ctp_error = ltp_error ).

CHECK ltp_error IS INITIAL.

ASSIGN ldr_data->* TO <lit_data>.

"Criando em tempo real a tabela interna <LIT_DATA> com os dados recuperados do


ALV
CREATE DATA ldr_wa LIKE LINE OF <lit_data>.
ASSIGN ldr_wa->* TO <lwa_data>.

LOOP AT <lit_data> ASSIGNING <lwa_data>.

UNASSIGN <lwa_rfposxext>.
INSERT INITIAL LINE INTO TABLE cit_rfposxext ASSIGNING <lwa_rfposxext>.
MOVE-CORRESPONDING <lwa_data> TO <lwa_rfposxext>.

ENDLOOP.

ENDMETHOD. " GET_EXTERNAL_ALV_DATA_FBL5N

"--

Potrebbero piacerti anche