Pada kasus ini kita akan coba mengambil data dari transaksi FBL1N dengan menggunakan RFC.
OK langsung saja kita buat RFCnya. Masuk ke T-Code SE37 lalu kita beri nama ZFBL1N. Sebelumnya jangan lupa untuk membuat Function Grupnya terlebih dahulu. Selanjutnya masuk ke Tab Import dan masukkan parameter seperti gambar di bawah ini :
Lalu masuk ke Tab Export dan isikan seperti pada gambar berikut :
Selanjutnya masuk ke Tab Tables lalu isikan seperti gambar di bawah ini :
Lalu masuk ke Tab Source code lalu isikan code seperti di bawah ini :
type-pools : slis.
data: text type c length 10,
cek type c length 1,
lt_selscreen type table of rsparams with header line .
clear : cek.
if p_bukrs is not initial.
lt_selscreen-selname = 'KD_BUKRS'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = p_bukrs.
append lt_selscreen. clear lt_selscreen.
else.
cek = 'X'.
t_return-type = 'E'.
t_return-message = 'Company Code harus diisi'.
endif.
if p_bukrs is not initial.
lt_selscreen-selname = 'KD_LIFNR'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = p_lifnr.
append lt_selscreen. clear lt_selscreen.
else.
cek = 'X'.
t_return-type = 'E'.
t_return-message = 'Vendor harus diisi'.
endif.
if x_aisel is not initial.
lt_selscreen-selname = 'X_AISEL'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_aisel.
append lt_selscreen. clear lt_selscreen.
endif.
if p_budat_high is not initial.
lt_selscreen-selname = 'SO_BUDAT'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'BT'.
lt_selscreen-low = p_budat_low.
lt_selscreen-high = p_budat_high.
append lt_selscreen. clear lt_selscreen.
elseif p_budat_low is not initial.
lt_selscreen-selname = 'SO_BUDAT'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = p_budat_low.
append lt_selscreen. clear lt_selscreen.
endif.
if x_norm is initial and
x_shbv is initial and
x_merk is initial and
x_park is initial and
x_apar is initial.
cek = 'X'.
t_return-type = 'E'.
t_return-message = 'Select at least one item type'.
else.
if x_norm is not initial.
lt_selscreen-selname = 'X_NORM'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_shbv is not initial.
lt_selscreen-selname = 'X_SHBV'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_merk is not initial.
lt_selscreen-selname = 'X_MERK'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_park is not initial.
lt_selscreen-selname = 'X_PARK'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_apar is not initial.
lt_selscreen-selname = 'X_APAR'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
endif.
field-symbols < lt_pay_data > type any table.
field-symbols : < lt_data > type any .
data lr_pay_data type ref to data.
if cek is initial.
cl_salv_bs_runtime_info=>set( exporting display = abap_false
metadata = abap_false
data = abap_true ).
submit rfitemap with selection-table lt_selscreen and return.
try.
cl_salv_bs_runtime_info=>get_data_ref( importing r_data = lr_pay_data ).
catch cx_salv_bs_sc_runtime_info.
message 'Unable to retrieve ALV data' type 'E'.
endtry.
cl_salv_bs_runtime_info=>clear_all( ).
if lr_pay_data is not initial.
assign lr_pay_data->* to < lt_pay_data >.
loop at < lt_pay_data > assigning < lt_data >.
move-corresponding < lt_data > to t_data .
append t_data.
endloop.
endif.
endif.
data: text type c length 10,
cek type c length 1,
lt_selscreen type table of rsparams with header line .
clear : cek.
if p_bukrs is not initial.
lt_selscreen-selname = 'KD_BUKRS'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = p_bukrs.
append lt_selscreen. clear lt_selscreen.
else.
cek = 'X'.
t_return-type = 'E'.
t_return-message = 'Company Code harus diisi'.
endif.
if p_bukrs is not initial.
lt_selscreen-selname = 'KD_LIFNR'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = p_lifnr.
append lt_selscreen. clear lt_selscreen.
else.
cek = 'X'.
t_return-type = 'E'.
t_return-message = 'Vendor harus diisi'.
endif.
if x_aisel is not initial.
lt_selscreen-selname = 'X_AISEL'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_aisel.
append lt_selscreen. clear lt_selscreen.
endif.
if p_budat_high is not initial.
lt_selscreen-selname = 'SO_BUDAT'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'BT'.
lt_selscreen-low = p_budat_low.
lt_selscreen-high = p_budat_high.
append lt_selscreen. clear lt_selscreen.
elseif p_budat_low is not initial.
lt_selscreen-selname = 'SO_BUDAT'.
lt_selscreen-kind = 'S'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = p_budat_low.
append lt_selscreen. clear lt_selscreen.
endif.
if x_norm is initial and
x_shbv is initial and
x_merk is initial and
x_park is initial and
x_apar is initial.
cek = 'X'.
t_return-type = 'E'.
t_return-message = 'Select at least one item type'.
else.
if x_norm is not initial.
lt_selscreen-selname = 'X_NORM'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_shbv is not initial.
lt_selscreen-selname = 'X_SHBV'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_merk is not initial.
lt_selscreen-selname = 'X_MERK'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_park is not initial.
lt_selscreen-selname = 'X_PARK'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
if x_apar is not initial.
lt_selscreen-selname = 'X_APAR'.
lt_selscreen-kind = 'P'.
lt_selscreen-sign = 'I'.
lt_selscreen-option = 'EQ'.
lt_selscreen-low = x_norm.
append lt_selscreen. clear lt_selscreen.
endif.
endif.
field-symbols < lt_pay_data > type any table.
field-symbols : < lt_data > type any .
data lr_pay_data type ref to data.
if cek is initial.
cl_salv_bs_runtime_info=>set( exporting display = abap_false
metadata = abap_false
data = abap_true ).
submit rfitemap with selection-table lt_selscreen and return.
try.
cl_salv_bs_runtime_info=>get_data_ref( importing r_data = lr_pay_data ).
catch cx_salv_bs_sc_runtime_info.
message 'Unable to retrieve ALV data' type 'E'.
endtry.
cl_salv_bs_runtime_info=>clear_all( ).
if lr_pay_data is not initial.
assign lr_pay_data->* to < lt_pay_data >.
loop at < lt_pay_data > assigning < lt_data >.
move-corresponding < lt_data > to t_data .
append t_data.
endloop.
endif.
endif.
Tidak ada komentar:
Posting Komentar