Professional Documents
Culture Documents
*& Report ZFIR_RATING_CLIENTES
*&---------------------------------------------------------------------*
*& Carga Rating de Clientes
*&---------------------------------------------------------------------*
REPORT ZFIR_RATING_CLIENTES.
*&---------------------------------------------------------------------*
*& Tabelas
*&---------------------------------------------------------------------*
TABLES:
bkpf,
bsid,
bsad,
kna1.
*&---------------------------------------------------------------------*
*& Tipos
*&---------------------------------------------------------------------*
TYPE-POOLS: truxs.
TYPES:
BEGIN OF ty_chave_ge,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
regio TYPE kna1-regio,
konzs TYPE kna1-konzs,
END OF ty_chave_ge,
BEGIN OF ty_descr_ge,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ty_descr_ge.
*&---------------------------------------------------------------------*
*& Tabelas internas
*&---------------------------------------------------------------------*
DATA: it_bsxd TYPE TABLE OF bsid,
it_bkpf TYPE TABLE OF bkpf,
it_chave_ge TYPE TABLE OF ty_chave_ge,
it_descr_ge TYPE TABLE OF ty_descr_ge,
it_dados TYPE TABLE OF ZFIS_RATING_CLIENTES.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
it_msg TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Estruturas
*&---------------------------------------------------------------------*
DATA: st_bsxd TYPE bsid,
st_bkpf TYPE bkpf,
st_chave_ge TYPE ty_chave_ge,
st_descr_ge TYPE ty_descr_ge,
st_dados TYPE ZFIS_RATING_CLIENTES.
*&---------------------------------------------------------------------*
*& ALV
*&---------------------------------------------------------------------*
DATA: grid TYPE REF TO cl_gui_alv_grid.
*&---------------------------------------------------------------------*
*& Seleção
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs,
s_kunnr FOR kna1-kunnr,
s_budat FOR bkpf-budat.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_alv TYPE c RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND aaa,
p_excel TYPE c RADIOBUTTON GROUP g1,
p_csv TYPE c RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS: p_local TYPE c RADIOBUTTON GROUP g2 DEFAULT 'X' USER-COMMAND bbb,
p_servi TYPE c RADIOBUTTON GROUP g2,
p_arq TYPE localfile MODIF ID g2.
SELECTION-SCREEN END OF BLOCK b3.
*&---------------------------------------------------------------------*
*& Consistência dos parâmetros
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arq.
PERFORM diretorio.
AT SELECTION-SCREEN OUTPUT.
PERFORM modifica_tela.
*&---------------------------------------------------------------------*
*& Processo
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM campo_obrigatorio.
PERFORM selecionar_dados.
END-OF-SELECTION.
PERFORM imprimir_dados.
*&---------------------------------------------------------------------*
*& Form DIRETORIO
*&---------------------------------------------------------------------*
FORM DIRETORIO .
DATA tl_file_table TYPE filetable.
DATA: vl_window_title TYPE string,
vl_rc TYPE i.
FIELD-SYMBOLS <l_file_table> LIKE LINE OF tl_file_table.
CASE abap_true.
WHEN p_local.
CLEAR vl_window_title.
MOVE 'Informar nome do arquivo'(017) TO vl_window_title.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = vl_window_title
multiselection = abap_false
CHANGING
file_table = tl_file_table
rc = vl_rc
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RETURN.
ENDIF.
IF <l_file_table> IS ASSIGNED. UNASSIGN <l_file_table>. ENDIF.
READ TABLE tl_file_table ASSIGNING <l_file_table> INDEX 1.
IF sy-subrc EQ 0.
MOVE <l_file_table>-filename TO p_arq.
ENDIF.
WHEN p_servi.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
IMPORTING
serverfile = p_arq
EXCEPTIONS
canceled_by_user = 1
OTHERS = 2.
IF sy-subrc <> 0.
RETURN.
ENDIF.
ENDCASE.
ENDFORM. " DIRETORIO
*&---------------------------------------------------------------------*
*& Form MODIFICA_TELA
*&---------------------------------------------------------------------*
FORM MODIFICA_TELA .
LOOP AT SCREEN.
IF screen-name CS 'P_LOCAL' OR
screen-name CS 'P_SERVI' OR
screen-name CS 'P_ARQ'.
IF p_excel IS INITIAL AND
p_csv IS INITIAL.
screen-input = 0.
screen-invisible = 1.
ELSE.
screen-input = 1.
screen-invisible = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " MODIFICA_TELA
*&---------------------------------------------------------------------*
*& Form CAMPO_OBRIGATORIO
*&---------------------------------------------------------------------*
FORM CAMPO_OBRIGATORIO .
IF S_BUKRS-LOW IS INITIAL.
MESSAGE 'Campo Empresa é obrigatório!' TYPE 'I' DISPLAY LIKE 'E'.
STOP.
ELSEIF S_KUNNR-LOW IS INITIAL.
MESSAGE 'Campo Conta do Cliente é obrigatório!' TYPE 'I' DISPLAY LIKE 'E'.
STOP.
ELSEIF S_BUDAT-LOW IS INITIAL.
MESSAGE 'Campo Data de Lançamento é obrigatório!' TYPE 'I' DISPLAY LIKE 'E'.
STOP.
ENDIF.
ENDFORM. " CAMPO_OBRIGATORIO
*&---------------------------------------------------------------------*
*& Form SELECIONAR_DADOS
*&---------------------------------------------------------------------*
FORM SELECIONAR_DADOS .
CLEAR: it_bsxd, it_bkpf, it_chave_ge, it_descr_ge,
it_bsxd[], it_bkpf[], it_chave_ge[], it_descr_ge[].
SELECT *
INTO TABLE it_bsxd
FROM bsid
WHERE bukrs IN s_bukrs
AND kunnr IN s_kunnr
AND budat IN s_budat
AND blart <> 'ES'
AND shkzg = 'S'
AND umskz <> 'R'.
SELECT *
APPENDING TABLE it_bsxd
FROM bsad
WHERE bukrs IN s_bukrs
AND kunnr IN s_kunnr
AND augdt IN s_budat
AND blart <> 'ES'
AND shkzg = 'S'
AND UMSKZ <> 'R'.
IF NOT it_bsxd[] IS INITIAL.
SELECT *
INTO TABLE it_bkpf
FROM bkpf
FOR ALL ENTRIES IN it_bsxd
WHERE bukrs = it_bsxd-bukrs
AND belnr = it_bsxd-belnr
AND gjahr = it_bsxd-gjahr.
IF sy-subrc EQ 0.
PERFORM chave_grupo_empresa.
ENDIF.
ENDIF.
ENDFORM. " SELECIONAR_DADOS
*&---------------------------------------------------------------------*
*& Form CHAVE_GRUPO_EMPRESA
*&---------------------------------------------------------------------*
FORM CHAVE_GRUPO_EMPRESA .
" 5.1 CHAVE GRUPO EMPRESAS
" 5.3 NOME CLIENTE
" 5.4 REGIÃO
SELECT kunnr name1 regio konzs
INTO TABLE it_chave_ge
FROM kna1
FOR ALL ENTRIES IN it_bsxd
WHERE kunnr = it_bsxd-kunnr.
IF sy-subrc EQ 0.
PERFORM descr_grupo_empresa.
ENDIF.
ENDFORM. " CHAVE_GRUPO_EMPRESA
*&---------------------------------------------------------------------*
*& Form DESCR_GRUPO_EMPRESA
*&---------------------------------------------------------------------*
FORM DESCR_GRUPO_EMPRESA .
" 5.2 DESCRIÇÃO GRUPO EMPRESAS
SELECT kunnr name1
INTO TABLE it_descr_ge
FROM kna1
FOR ALL ENTRIES IN it_chave_ge
WHERE kunnr = it_chave_ge-konzs.
ENDFORM. " DESCR_GRUPO_EMPRESA
*&---------------------------------------------------------------------*
*& Form IMPRIMIR_DADOS
*&---------------------------------------------------------------------*
FORM IMPRIMIR_DADOS .
IF NOT p_alv IS INITIAL.
PERFORM imprimir_alv.
ELSEIF NOT p_excel IS INITIAL.
PERFORM gerar_excel.
ELSE.
PERFORM gerar_csv.
ENDIF.
ENDFORM. " IMPRIMIR_DADOS
*&---------------------------------------------------------------------*
*& Form IMPRIMIR_ALV
*&---------------------------------------------------------------------*
FORM IMPRIMIR_ALV .
PERFORM carregar_dados.
IF it_dados[] IS INITIAL.
MESSAGE 'Nenhum dado selecionado.' TYPE 'S'.
RETURN.
ENDIF.
CALL SCREEN '9000'.
ENDFORM. " IMPRIMIR_ALV
*&---------------------------------------------------------------------*
*& Form GERAR_EXCEL
*&---------------------------------------------------------------------*
FORM GERAR_EXCEL .
PERFORM carregar_dados.
IF it_dados[] IS INITIAL.
MESSAGE 'Nenhum dado selecionado.' TYPE 'S'.
RETURN.
ENDIF.
IF NOT p_local IS INITIAL.
PERFORM planilha_excel_local.
ELSE.
PERFORM planilha_excel_servidor.
ENDIF.
ENDFORM. " GERAR_EXCEL
*&---------------------------------------------------------------------*
*& Form GERAR_CSV
*&---------------------------------------------------------------------*
FORM GERAR_CSV .
PERFORM carregar_dados.
IF it_dados[] IS INITIAL.
MESSAGE 'Nenhum dado selecionado.' TYPE 'S'.
RETURN.
ENDIF.
IF NOT p_local IS INITIAL.
PERFORM gerar_csv_local.
ELSE.
PERFORM gerar_csv_servidor.
ENDIF.
ENDFORM. " GERAR_CSV
*&---------------------------------------------------------------------*
*& Form CARREGAR_DADOS
*&---------------------------------------------------------------------*
FORM CARREGAR_DADOS .
CLEAR: it_dados, it_dados[].
LOOP AT it_bsxd INTO st_bsxd.
MOVE-CORRESPONDING st_bsxd TO st_dados.
READ TABLE it_chave_ge INTO st_chave_ge
WITH KEY kunnr = st_dados-kunnr.
IF sy-subrc EQ 0.
st_dados-konzs = st_chave_ge-konzs.
st_dados-name2 = st_chave_ge-name1.
st_dados-regio = st_chave_ge-regio.
READ TABLE it_descr_ge INTO st_descr_ge
WITH KEY kunnr = st_chave_ge-konzs.
IF sy-subrc EQ 0.
st_dados-name1 = st_descr_ge-name1.
ENDIF.
ENDIF.
st_dados-venc_liq = st_bsxd-zfbdt + st_bsxd-zbd1t.
READ TABLE it_bkpf INTO st_bkpf
WITH KEY bukrs = st_bsxd-bukrs
belnr = st_bsxd-belnr
gjahr = st_bsxd-gjahr.
IF sy-subrc EQ 0.
st_dados-usnam = st_bkpf-usnam.
st_dados-bktxt = st_bkpf-bktxt.
st_dados-xref1_hd = st_bkpf-xref1_hd.
st_dados-xref2_hd = st_bkpf-xref2_hd.
ENDIF.
APPEND st_dados TO it_dados.
CLEAR st_dados.
ENDLOOP.
ENDFORM. " CARREGAR_DADOS
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS 'S9000'.
SET TITLEBAR 'T9000'.
PERFORM imprimir.
ENDMODULE. " STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
*& Form IMPRIMIR
*&---------------------------------------------------------------------*
FORM IMPRIMIR .
DATA: lt_fieldcat TYPE lvc_t_fcat,
wl_fieldcat TYPE lvc_s_fcat,
wl_layout TYPE lvc_s_layo,
wl_variant TYPE disvariant,
wl_stable TYPE lvc_s_stbl.
DATA dock TYPE REF TO cl_gui_docking_container.
IF NOT grid IS BOUND.
IF NOT grid IS BOUND.
CREATE OBJECT grid
EXPORTING
i_parent = dock.
ENDIF.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZFIS_RATING_CLIENTES'
CHANGING
ct_fieldcat = lt_fieldcat.
LOOP AT lt_fieldcat INTO wl_fieldcat.
CASE wl_fieldcat-fieldname.
WHEN 'NAME1'.
wl_fieldcat-scrtext_s = 'Dsc.GrpEmp.'.
wl_fieldcat-scrtext_m = 'Dscr.Grp.Empr.'.
wl_fieldcat-scrtext_l = 'Descrição Grupo Empresa'.
WHEN 'NAME2'.
wl_fieldcat-scrtext_s = 'Nome Cli.'.
wl_fieldcat-scrtext_m = 'Nome Cliente'.
wl_fieldcat-scrtext_l = 'Nome do Cliente'.
ENDCASE.
MODIFY lt_fieldcat FROM wl_fieldcat.
ENDLOOP.
CLEAR wl_layout.
MOVE abap_true TO: wl_layout-zebra,
wl_layout-col_opt,
wl_layout-cwidth_opt.
MOVE 'A' TO wl_layout-sel_mode.
MOVE: sy-repid TO wl_variant-report,
sy-uname TO wl_variant-username.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_save = 'A'
is_layout = wl_layout
is_variant = wl_variant
CHANGING
it_outtab = it_dados
it_fieldcatalog = lt_fieldcat
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RETURN.
ENDIF.
ELSE.
CLEAR wl_stable.
MOVE abap_true TO: wl_stable-col,
wl_stable-row.
CALL METHOD grid->refresh_table_display
EXPORTING
is_stable = wl_stable.
ENDIF.
ENDFORM. " IMPRIMIR
*&---------------------------------------------------------------------*
*& Form PLANILHA_EXCEL_LOCAL
*&---------------------------------------------------------------------*
FORM PLANILHA_EXCEL_LOCAL .
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_excel_writer TYPE REF TO zif_excel_writer.
DATA: lv_cont TYPE i VALUE 1,
lv_file TYPE xstring,
lv_bytecount TYPE i,
lt_file_tab TYPE solix_tab,
lv_full_path TYPE string.
CREATE OBJECT lo_excel.
lo_worksheet = lo_excel->get_active_worksheet( ).
" Cabeçalho
TRY .
lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_cont ip_value = 'Empresa' ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_cont ip_value = 'Local de neg
ócios' ).
lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_cont ip_value = 'Chave grupo
empresas' ).
lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_cont ip_value = 'Descrição gr
upo empresas' ).
lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_cont ip_value = 'Código do Cl
iente' ).
lo_worksheet->set_cell( ip_column = 'F' ip_row = lv_cont ip_value = 'Nome do Clie
nte' ).
lo_worksheet->set_cell( ip_column = 'G' ip_row = lv_cont ip_value = 'Número docum
ento' ).
lo_worksheet->set_cell( ip_column = 'H' ip_row = lv_cont ip_value = 'Número atrib
uição' ).
lo_worksheet->set_cell( ip_column = 'I' ip_row = lv_cont ip_value = 'Tipo documen
to' ).
lo_worksheet->set_cell( ip_column = 'J' ip_row = lv_cont ip_value = 'Número docum
ento de referência' ).
lo_worksheet->set_cell( ip_column = 'K' ip_row = lv_cont ip_value = 'Número linha
lançamento' ).
lo_worksheet->set_cell( ip_column = 'L' ip_row = lv_cont ip_value = 'Suplemento f
orma pagamento' ).
lo_worksheet->set_cell( ip_column = 'M' ip_row = lv_cont ip_value = 'Código Razão
Especial' ).
lo_worksheet->set_cell( ip_column = 'N' ip_row = lv_cont ip_value = 'Montante' ).
lo_worksheet->set_cell( ip_column = 'O' ip_row = lv_cont ip_value = 'Vencimento l
íquido' ).
lo_worksheet->set_cell( ip_column = 'P' ip_row = lv_cont ip_value = 'Data documen
to' ).
lo_worksheet->set_cell( ip_column = 'Q' ip_row = lv_cont ip_value = 'Data compens
ação' ).
lo_worksheet->set_cell( ip_column = 'R' ip_row = lv_cont ip_value = 'Número docum
ento compensação' ).
lo_worksheet->set_cell( ip_column = 'S' ip_row = lv_cont ip_value = 'Data lançame
nto' ).
lo_worksheet->set_cell( ip_column = 'T' ip_row = lv_cont ip_value = 'Número docum
ento solicitação letra de câmbio' ).
lo_worksheet->set_cell( ip_column = 'U' ip_row = lv_cont ip_value = 'Chave banco
da empresa' ).
lo_worksheet->set_cell( ip_column = 'V' ip_row = lv_cont ip_value = 'Chave conta'
).
lo_worksheet->set_cell( ip_column = 'W' ip_row = lv_cont ip_value = 'Chave referê
ncia item doc.' ).
lo_worksheet->set_cell( ip_column = 'X' ip_row = lv_cont ip_value = 'Instrução 1'
).
lo_worksheet->set_cell( ip_column = 'Y' ip_row = lv_cont ip_value = 'Chave bloque
io pagamento' ).
lo_worksheet->set_cell( ip_column = 'Z' ip_row = lv_cont ip_value = 'Texto do ite
m' ).
lo_worksheet->set_cell( ip_column = 'AA' ip_row = lv_cont ip_value = 'Região' ).
lo_worksheet->set_cell( ip_column = 'AB' ip_row = lv_cont ip_value = 'Usuário' ).
lo_worksheet->set_cell( ip_column = 'AC' ip_row = lv_cont ip_value = 'Forma de pa
gamento' ).
lo_worksheet->set_cell( ip_column = 'AD' ip_row = lv_cont ip_value = 'Centro de c
usto' ).
lo_worksheet->set_cell( ip_column = 'AE' ip_row = lv_cont ip_value = 'Texto de ca
beçalho' ).
lo_worksheet->set_cell( ip_column = 'AF' ip_row = lv_cont ip_value = 'Chave ref.1
interna cabeçalho' ).
lo_worksheet->set_cell( ip_column = 'AG' ip_row = lv_cont ip_value = 'Chave ref.2
interna cabeçalho' ).
ADD 1 TO lv_cont.
CATCH ZCX_EXCEL.
ENDTRY.
" Item
LOOP AT it_dados INTO st_dados.
TRY .
lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_cont ip_value = st_dados-
bukrs ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_cont ip_value = st_dados-
bupla ).
lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_cont ip_value = st_dados-
konzs ).
lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_cont ip_value = st_dados-
name1 ).
lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_cont ip_value = st_dados-
kunnr ).
lo_worksheet->set_cell( ip_column = 'F' ip_row = lv_cont ip_value = st_dados-
name2 ).
lo_worksheet->set_cell( ip_column = 'G' ip_row = lv_cont ip_value = st_dados-
belnr ).
lo_worksheet->set_cell( ip_column = 'H' ip_row = lv_cont ip_value = st_dados-
zuonr ).
lo_worksheet->set_cell( ip_column = 'I' ip_row = lv_cont ip_value = st_dados-
blart ).
lo_worksheet->set_cell( ip_column = 'J' ip_row = lv_cont ip_value = st_dados-
xblnr ).
lo_worksheet->set_cell( ip_column = 'K' ip_row = lv_cont ip_value = st_dados-
buzei ).
lo_worksheet->set_cell( ip_column = 'L' ip_row = lv_cont ip_value = st_dados-
uzawe ).
lo_worksheet->set_cell( ip_column = 'M' ip_row = lv_cont ip_value = st_dados-
umskz ).
lo_worksheet->set_cell( ip_column = 'N' ip_row = lv_cont ip_value = st_dados-
dmbtr ).
lo_worksheet->set_cell( ip_column = 'O' ip_row = lv_cont ip_value = st_dados-
venc_liq ).
lo_worksheet->set_cell( ip_column = 'P' ip_row = lv_cont ip_value = st_dados-
bldat ).
lo_worksheet->set_cell( ip_column = 'Q' ip_row = lv_cont ip_value = st_dados-
augdt ).
lo_worksheet->set_cell( ip_column = 'R' ip_row = lv_cont ip_value = st_dados-
augbl ).
lo_worksheet->set_cell( ip_column = 'S' ip_row = lv_cont ip_value = st_dados-
budat ).
lo_worksheet->set_cell( ip_column = 'T' ip_row = lv_cont ip_value = st_dados-
anfbn ).
lo_worksheet->set_cell( ip_column = 'U' ip_row = lv_cont ip_value = st_dados-
hbkid ).
lo_worksheet->set_cell( ip_column = 'V' ip_row = lv_cont ip_value = st_dados-
hktid ).
lo_worksheet->set_cell( ip_column = 'W' ip_row = lv_cont ip_value = st_dados-
xref3 ).
lo_worksheet->set_cell( ip_column = 'X' ip_row = lv_cont ip_value = st_dados-
dtws1 ).
lo_worksheet->set_cell( ip_column = 'Y' ip_row = lv_cont ip_value = st_dados-
zlspr ).
lo_worksheet->set_cell( ip_column = 'Z' ip_row = lv_cont ip_value = st_dados-
sgtxt ).
lo_worksheet->set_cell( ip_column = 'AA' ip_row = lv_cont ip_value = st_dados-
regio ).
lo_worksheet->set_cell( ip_column = 'AB' ip_row = lv_cont ip_value = st_dados-
usnam ).
lo_worksheet->set_cell( ip_column = 'AC' ip_row = lv_cont ip_value = st_dados-
zlsch ).
lo_worksheet->set_cell( ip_column = 'AD' ip_row = lv_cont ip_value = st_dados-
kostl ).
lo_worksheet->set_cell( ip_column = 'AE' ip_row = lv_cont ip_value = st_dados-
bktxt ).
lo_worksheet->set_cell( ip_column = 'AF' ip_row = lv_cont ip_value = st_dados-
xref1_hd ).
lo_worksheet->set_cell( ip_column = 'AG' ip_row = lv_cont ip_value = st_dados-
xref2_hd ).
ADD 1 TO lv_cont.
CATCH ZCX_EXCEL.
ENDTRY.
ENDLOOP.
CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
lv_file = lo_excel_writer->write_file( lo_excel ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_file
IMPORTING
output_length = lv_bytecount
TABLES
binary_tab = lt_file_tab.
CONCATENATE p_arq 'xlsx' INTO lv_full_path SEPARATED BY '.'.
* cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount
* filename = lv_full_
path
* filetype = 'BIN'
* CHANGING data_tab = lt_file_t
ab ).
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = lv_bytecount
filename = lv_full_path
filetype = 'BIN'
TABLES
data_tab = lt_file_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc = 0.
IF sy-batch IS INITIAL.
MESSAGE 'Arquivo gravado com sucesso!' TYPE 'S'.
ENDIF.
ELSE.
IF sy-batch IS INITIAL.
MESSAGE 'Erro ao gravar arquivo!' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDFORM. " PLANILHA_EXCEL_LOCAL
*&---------------------------------------------------------------------*
*& Form PLANILHA_EXCEL_SERVIDOR
*&---------------------------------------------------------------------*
FORM PLANILHA_EXCEL_SERVIDOR .
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_excel_writer TYPE REF TO zif_excel_writer.
DATA: lv_cont TYPE i VALUE 1,
lv_file TYPE xstring,
lv_bytecount TYPE i,
lt_file_tab TYPE solix_tab,
lv_full_path TYPE string,
lv_servidor TYPE string,
lv_msg_txt TYPE string.
CREATE OBJECT lo_excel.
lo_worksheet = lo_excel->get_active_worksheet( ).
" Cabeçalho
TRY .
lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_cont ip_value = 'Empresa' ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_cont ip_value = 'Local de neg
ócios' ).
lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_cont ip_value = 'Chave grupo
empresas' ).
lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_cont ip_value = 'Descrição gr
upo empresas' ).
lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_cont ip_value = 'Código do Cl
iente' ).
lo_worksheet->set_cell( ip_column = 'F' ip_row = lv_cont ip_value = 'Nome do Clie
nte' ).
lo_worksheet->set_cell( ip_column = 'G' ip_row = lv_cont ip_value = 'Número docum
ento' ).
lo_worksheet->set_cell( ip_column = 'H' ip_row = lv_cont ip_value = 'Número atrib
uição' ).
lo_worksheet->set_cell( ip_column = 'I' ip_row = lv_cont ip_value = 'Tipo documen
to' ).
lo_worksheet->set_cell( ip_column = 'J' ip_row = lv_cont ip_value = 'Número docum
ento de referência' ).
lo_worksheet->set_cell( ip_column = 'K' ip_row = lv_cont ip_value = 'Número linha
lançamento' ).
lo_worksheet->set_cell( ip_column = 'L' ip_row = lv_cont ip_value = 'Suplemento f
orma pagamento' ).
lo_worksheet->set_cell( ip_column = 'M' ip_row = lv_cont ip_value = 'Código Razão
Especial' ).
lo_worksheet->set_cell( ip_column = 'N' ip_row = lv_cont ip_value = 'Montante' ).
lo_worksheet->set_cell( ip_column = 'O' ip_row = lv_cont ip_value = 'Vencimento l
íquido' ).
lo_worksheet->set_cell( ip_column = 'P' ip_row = lv_cont ip_value = 'Data documen
to' ).
lo_worksheet->set_cell( ip_column = 'Q' ip_row = lv_cont ip_value = 'Data compens
ação' ).
lo_worksheet->set_cell( ip_column = 'R' ip_row = lv_cont ip_value = 'Número docum
ento compensação' ).
lo_worksheet->set_cell( ip_column = 'S' ip_row = lv_cont ip_value = 'Data lançame
nto' ).
lo_worksheet->set_cell( ip_column = 'T' ip_row = lv_cont ip_value = 'Número docum
ento solicitação letra de câmbio' ).
lo_worksheet->set_cell( ip_column = 'U' ip_row = lv_cont ip_value = 'Chave banco
da empresa' ).
lo_worksheet->set_cell( ip_column = 'V' ip_row = lv_cont ip_value = 'Chave conta'
).
lo_worksheet->set_cell( ip_column = 'W' ip_row = lv_cont ip_value = 'Chave referê
ncia item doc.' ).
lo_worksheet->set_cell( ip_column = 'X' ip_row = lv_cont ip_value = 'Instrução 1'
).
lo_worksheet->set_cell( ip_column = 'Y' ip_row = lv_cont ip_value = 'Chave bloque
io pagamento' ).
lo_worksheet->set_cell( ip_column = 'Z' ip_row = lv_cont ip_value = 'Texto do ite
m' ).
lo_worksheet->set_cell( ip_column = 'AA' ip_row = lv_cont ip_value = 'Região' ).
lo_worksheet->set_cell( ip_column = 'AB' ip_row = lv_cont ip_value = 'Usuário' ).
lo_worksheet->set_cell( ip_column = 'AC' ip_row = lv_cont ip_value = 'Forma de pa
gamento' ).
lo_worksheet->set_cell( ip_column = 'AD' ip_row = lv_cont ip_value = 'Centro de c
usto' ).
lo_worksheet->set_cell( ip_column = 'AE' ip_row = lv_cont ip_value = 'Texto de ca
beçalho' ).
lo_worksheet->set_cell( ip_column = 'AF' ip_row = lv_cont ip_value = 'Chave ref.1
interna cabeçalho' ).
lo_worksheet->set_cell( ip_column = 'AG' ip_row = lv_cont ip_value = 'Chave ref.2
interna cabeçalho' ).
ADD 1 TO lv_cont.
CATCH ZCX_EXCEL.
ENDTRY.
" Item
LOOP AT it_dados INTO st_dados.
TRY .
lo_worksheet->set_cell( ip_column = 'A' ip_row = lv_cont ip_value = st_dados-
bukrs ).
lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_cont ip_value = st_dados-
bupla ).
lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_cont ip_value = st_dados-
konzs ).
lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_cont ip_value = st_dados-
name1 ).
lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_cont ip_value = st_dados-
kunnr ).
lo_worksheet->set_cell( ip_column = 'F' ip_row = lv_cont ip_value = st_dados-
name2 ).
lo_worksheet->set_cell( ip_column = 'G' ip_row = lv_cont ip_value = st_dados-
belnr ).
lo_worksheet->set_cell( ip_column = 'H' ip_row = lv_cont ip_value = st_dados-
zuonr ).
lo_worksheet->set_cell( ip_column = 'I' ip_row = lv_cont ip_value = st_dados-
blart ).
lo_worksheet->set_cell( ip_column = 'J' ip_row = lv_cont ip_value = st_dados-
xblnr ).
lo_worksheet->set_cell( ip_column = 'K' ip_row = lv_cont ip_value = st_dados-
buzei ).
lo_worksheet->set_cell( ip_column = 'L' ip_row = lv_cont ip_value = st_dados-
uzawe ).
lo_worksheet->set_cell( ip_column = 'M' ip_row = lv_cont ip_value = st_dados-
umskz ).
lo_worksheet->set_cell( ip_column = 'N' ip_row = lv_cont ip_value = st_dados-
dmbtr ).
lo_worksheet->set_cell( ip_column = 'O' ip_row = lv_cont ip_value = st_dados-
venc_liq ).
lo_worksheet->set_cell( ip_column = 'P' ip_row = lv_cont ip_value = st_dados-
bldat ).
lo_worksheet->set_cell( ip_column = 'Q' ip_row = lv_cont ip_value = st_dados-
augdt ).
lo_worksheet->set_cell( ip_column = 'R' ip_row = lv_cont ip_value = st_dados-
augbl ).
lo_worksheet->set_cell( ip_column = 'S' ip_row = lv_cont ip_value = st_dados-
budat ).
lo_worksheet->set_cell( ip_column = 'T' ip_row = lv_cont ip_value = st_dados-
anfbn ).
lo_worksheet->set_cell( ip_column = 'U' ip_row = lv_cont ip_value = st_dados-
hbkid ).
lo_worksheet->set_cell( ip_column = 'V' ip_row = lv_cont ip_value = st_dados-
hktid ).
lo_worksheet->set_cell( ip_column = 'W' ip_row = lv_cont ip_value = st_dados-
xref3 ).
lo_worksheet->set_cell( ip_column = 'X' ip_row = lv_cont ip_value = st_dados-
dtws1 ).
lo_worksheet->set_cell( ip_column = 'Y' ip_row = lv_cont ip_value = st_dados-
zlspr ).
lo_worksheet->set_cell( ip_column = 'Z' ip_row = lv_cont ip_value = st_dados-
sgtxt ).
lo_worksheet->set_cell( ip_column = 'AA' ip_row = lv_cont ip_value = st_dados-
regio ).
lo_worksheet->set_cell( ip_column = 'AB' ip_row = lv_cont ip_value = st_dados-
usnam ).
lo_worksheet->set_cell( ip_column = 'AC' ip_row = lv_cont ip_value = st_dados-
zlsch ).
lo_worksheet->set_cell( ip_column = 'AD' ip_row = lv_cont ip_value = st_dados-
kostl ).
lo_worksheet->set_cell( ip_column = 'AE' ip_row = lv_cont ip_value = st_dados-
bktxt ).
lo_worksheet->set_cell( ip_column = 'AF' ip_row = lv_cont ip_value = st_dados-
xref1_hd ).
lo_worksheet->set_cell( ip_column = 'AG' ip_row = lv_cont ip_value = st_dados-
xref2_hd ).
ADD 1 TO lv_cont.
CATCH ZCX_EXCEL.
ENDTRY.
ENDLOOP.
CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
lv_file = lo_excel_writer->write_file( lo_excel ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_file
IMPORTING
output_length = lv_bytecount
TABLES
binary_tab = lt_file_tab.
* CONCATENATE p_arq 'xlsx' INTO lv_full_path SEPARATED BY '.'.
lv_full_path = 'C:\temp\local.xlsx'.
CONCATENATE p_arq 'xlsx' INTO lv_servidor SEPARATED BY '.'.
cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount
filename = lv_full_path
filetype = 'BIN'
CHANGING data_tab = lt_file_tab ).
CLEAR: BDCDATA, BDCDATA[], it_msg, it_msg[].
PERFORM f_bdcdata_program USING 'SAPLC13Z' '1020' 'X'.
PERFORM f_bdcdata_data USING 'BDC_CURSOR' 'RCGFILETR-IEFOW'.
PERFORM f_bdcdata_data USING 'BDC_OKCODE' '=EIMP'.
PERFORM f_bdcdata_data USING 'RCGFILETR-FTFRONT' 'C:\temp\local.xlsx'.
PERFORM f_bdcdata_data USING 'RCGFILETR-FTAPPL' lv_servidor.
PERFORM f_bdcdata_data USING 'RCGFILETR-FTFTYPE' 'BIN'.
PERFORM f_bdcdata_data USING 'RCGFILETR-IEFOW' 'X'.
CALL TRANSACTION 'CG3Z' USING BDCDATA
MODE 'N'
UPDATE 'S'
MESSAGES INTO it_msg.
CLEAR lv_msg_txt.
LOOP AT it_msg.
IF it_msg-msgtyp = 'E'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_msg-msgid
lang = 'PT'
no = it_msg-msgnr
v1 = it_msg-msgv1
v2 = it_msg-msgv2
v3 = it_msg-msgv3
v4 = it_msg-msgv4
IMPORTING
msg = lv_msg_txt
EXCEPTIONS
not_found = 1
OTHERS = 2.
ENDIF.
IF it_msg-msgtyp = 'S' AND
it_msg-msgid = 'C$' AND
it_msg-msgnr = '159'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_msg-msgid
lang = 'PT'
no = it_msg-msgnr
v1 = it_msg-msgv1
v2 = it_msg-msgv2
v3 = it_msg-msgv3
v4 = it_msg-msgv4
IMPORTING
msg = lv_msg_txt
EXCEPTIONS
not_found = 1
OTHERS = 2.
ENDIF.
ENDLOOP.
IF NOT lv_msg_txt IS INITIAL.
MESSAGE lv_msg_txt TYPE 'S'.
ENDIF.
ENDFORM. " PLANILHA_EXCEL_SERVIDOR
*&---------------------------------------------------------------------*
*& Form GERAR_CSV_LOCAL
*&---------------------------------------------------------------------*
FORM GERAR_CSV_LOCAL .
TYPES: BEGIN OF ly_rating_clientes,
bukrs TYPE c LENGTH 7,
bupla TYPE c LENGTH 17,
konzs TYPE c LENGTH 20,
name1 TYPE c LENGTH 50,
kunnr TYPE c LENGTH 17,
name2 TYPE c LENGTH 50,
belnr TYPE c LENGTH 16,
zuonr TYPE c LENGTH 17,
blart TYPE c LENGTH 14,
xblnr TYPE c LENGTH 30,
buzei TYPE c LENGTH 23,
uzawe TYPE c LENGTH 26,
umskz TYPE c LENGTH 21,
dmbtr TYPE c LENGTH 15,
venc_liq TYPE c LENGTH 28,
bldat TYPE c LENGTH 14,
augdt TYPE c LENGTH 16,
augbl TYPE c LENGTH 28,
budat TYPE c LENGTH 15,
anfbn TYPE c LENGTH 44,
hbkid TYPE c LENGTH 22,
hktid TYPE c LENGTH 11,
xref3 TYPE c LENGTH 26,
dtws1 TYPE c LENGTH 11,
zlspr TYPE c LENGTH 24,
sgtxt TYPE c LENGTH 50,
regio TYPE c LENGTH 6,
usnam TYPE c LENGTH 12,
zlsch TYPE c LENGTH 18,
kostl TYPE c LENGTH 15,
bktxt TYPE c LENGTH 18,
xref1_hd TYPE c LENGTH 29,
xref2_hd TYPE c LENGTH 29,
END OF ly_rating_clientes.
DATA: lt_dados TYPE TABLE OF ly_rating_clientes,
ls_dados TYPE ly_rating_clientes,
lt_txt TYPE truxs_t_text_data,
local_arquivo TYPE string.
" Cabeçalho
ls_dados-bukrs = 'Empresa'.
ls_dados-bupla = 'Local de negócios'.
ls_dados-konzs = 'Chave grupo empresas'.
ls_dados-name1 = 'Descrição grupo empresas'.
ls_dados-kunnr = 'Código do Cliente'.
ls_dados-name2 = 'Nome do Cliente'.
ls_dados-belnr = 'Número documento'.
ls_dados-zuonr = 'Número atribuição'.
ls_dados-blart = 'Tipo documento'.
ls_dados-xblnr = 'Número documento de referência'.
ls_dados-buzei = 'Número linha lançamento'.
ls_dados-uzawe = 'Suplemento forma pagamento'.
ls_dados-umskz = 'Código Razão Especial'.
ls_dados-dmbtr = 'Montante'.
ls_dados-venc_liq = 'Vencimento líquido'.
ls_dados-bldat = 'Data documento'.
ls_dados-augdt = 'Data compensação'.
ls_dados-augbl = 'Número documento compensação'.
ls_dados-budat = 'Data lançamento'.
ls_dados-anfbn = 'Número documento solicitação letra de câmbio'.
ls_dados-hbkid = 'Chave banco da empresa'.
ls_dados-hktid = 'Chave conta'.
ls_dados-xref3 = 'Chave referência item doc.'.
ls_dados-dtws1 = 'Instrução 1'.
ls_dados-zlspr = 'Chave bloqueio pagamento'.
ls_dados-sgtxt = 'Texto do item'.
ls_dados-regio = 'Região'.
ls_dados-usnam = 'Usuário'.
ls_dados-zlsch = 'Forma de pagamento'.
ls_dados-kostl = 'Centro de custo'.
ls_dados-bktxt = 'Texto de cabeçalho'.
ls_dados-xref1_hd = 'Chave ref.1 interna cabeçalho'.
ls_dados-xref2_hd = 'Chave ref.2 interna cabeçalho'.
APPEND ls_dados TO lt_dados.
" Item
LOOP AT it_dados INTO st_dados.
ls_dados-bukrs = st_dados-bukrs .
ls_dados-bupla = st_dados-bupla .
ls_dados-konzs = st_dados-konzs .
ls_dados-name1 = st_dados-name1 .
ls_dados-kunnr = st_dados-kunnr .
ls_dados-name2 = st_dados-name2 .
ls_dados-belnr = st_dados-belnr .
ls_dados-zuonr = st_dados-zuonr .
ls_dados-blart = st_dados-blart .
ls_dados-xblnr = st_dados-xblnr .
ls_dados-buzei = st_dados-buzei .
ls_dados-uzawe = st_dados-uzawe .
ls_dados-umskz = st_dados-umskz .
ls_dados-dmbtr = st_dados-dmbtr .
ls_dados-venc_liq = st_dados-venc_liq.
ls_dados-bldat = st_dados-bldat .
ls_dados-augdt = st_dados-augdt .
ls_dados-augbl = st_dados-augbl .
ls_dados-budat = st_dados-budat .
ls_dados-anfbn = st_dados-anfbn .
ls_dados-hbkid = st_dados-hbkid .
ls_dados-hktid = st_dados-hktid .
ls_dados-xref3 = st_dados-xref3 .
ls_dados-dtws1 = st_dados-dtws1 .
ls_dados-zlspr = st_dados-zlspr .
ls_dados-sgtxt = st_dados-sgtxt .
ls_dados-regio = st_dados-regio .
ls_dados-usnam = st_dados-usnam .
ls_dados-zlsch = st_dados-zlsch .
ls_dados-kostl = st_dados-kostl .
ls_dados-bktxt = st_dados-bktxt .
ls_dados-xref1_hd = st_dados-xref1_hd.
ls_dados-xref2_hd = st_dados-xref2_hd.
APPEND ls_dados TO lt_dados.
ENDLOOP.
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
i_field_seperator = ';'
TABLES
i_tab_sap_data = lt_dados
CHANGING
i_tab_converted_data = lt_txt
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2.
CONCATENATE p_arq 'csv' INTO local_arquivo SEPARATED BY '.'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = local_arquivo
filetype = 'ASC'
* write_field_separator = ';'
TABLES
* data_tab = lt_dados
data_tab = lt_txt
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc = 0.
IF sy-batch IS INITIAL.
MESSAGE 'Arquivo gravado com sucesso!' TYPE 'S'.
ENDIF.
ELSE.
IF sy-batch IS INITIAL.
MESSAGE 'Erro ao gravar arquivo!' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDFORM. " GERAR_CSV_LOCAL
*&---------------------------------------------------------------------*
*& Form GERAR_CSV_SERVIDOR
*&---------------------------------------------------------------------*
FORM GERAR_CSV_SERVIDOR .
DATA: servidor_arquivo TYPE string,
lv_linha TYPE string,
lv_dmbtr TYPE c LENGTH 15.
CONCATENATE p_arq 'csv' INTO servidor_arquivo SEPARATED BY '.'.
OPEN DATASET servidor_arquivo FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
CONCATENATE 'Empresa' 'Local de negócios' 'Chave grupo empresas' 'Descrição grup
o empresas' 'Código do Cliente'
'Nome do Cliente' 'Número documento' 'Número atribuição' 'Tipo docum
ento' 'Número documento de referência'
'Número linha lançamento' 'Suplemento forma pagamento' 'Código Razão
Especial' 'Montante' 'Vencimento líquido'
'Data documento' 'Data compensação' 'Número documento compensação' '
Data lançamento' 'Número documento solicitação letra de câmbio'
'Chave banco da empresa' 'Chave conta' 'Chave referência item doc.'
'Instrução 1' 'Chave bloqueio pagamento'
'Texto do item' 'Região' 'Usuário' 'Forma de pagamento' 'Centro de
custo' 'Texto de cabeçalho'
'Chave ref.1 interna cabeçalho' 'Chave ref.2 interna cabeçalho'
INTO lv_linha SEPARATED BY ';'.
TRANSFER lv_linha TO servidor_arquivo.
LOOP AT it_dados INTO st_dados.
CLEAR lv_linha.
lv_dmbtr = st_dados-dmbtr.
CONCATENATE st_dados-bukrs st_dados-bupla st_dados-konzs
st_dados-name1 st_dados-kunnr st_dados-name2
st_dados-belnr st_dados-zuonr st_dados-blart
st_dados-xblnr st_dados-buzei st_dados-uzawe
st_dados-umskz lv_dmbtr st_dados-venc_liq
st_dados-bldat st_dados-augdt st_dados-augbl
st_dados-budat st_dados-anfbn st_dados-hbkid
st_dados-hktid st_dados-xref3 st_dados-dtws1
st_dados-zlspr st_dados-sgtxt st_dados-regio
st_dados-usnam st_dados-zlsch st_dados-kostl
st_dados-bktxt st_dados-xref1_hd st_dados-xref2_hd
INTO lv_linha SEPARATED BY ';'.
TRANSFER lv_linha TO servidor_arquivo.
ENDLOOP.
CLOSE DATASET servidor_arquivo.
IF sy-subrc = 0.
IF sy-batch IS INITIAL.
MESSAGE 'Arquivo gravado com sucesso!' TYPE 'S'.
ENDIF.
ELSE.
IF sy-batch IS INITIAL.
MESSAGE 'Erro ao gravar arquivo!' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDFORM. " GERAR_CSV_SERVIDOR
*&---------------------------------------------------------------------*
*& Form F_BDCDATA_PROGRAM
*&---------------------------------------------------------------------*
FORM F_BDCDATA_PROGRAM USING VALUE(p_program)
VALUE(p_dynpro)
VALUE(p_dynbegin).
CLEAR BDCDATA.
BDCDATA-PROGRAM = p_program.
BDCDATA-DYNPRO = p_dynpro.
BDCDATA-DYNBEGIN = p_dynbegin.
APPEND BDCDATA.
ENDFORM. " F_BDCDATA_PROGRAM
*&---------------------------------------------------------------------*
*& Form F_BDCDATA_DATA
*&---------------------------------------------------------------------*
FORM F_BDCDATA_DATA USING VALUE(p_fnam)
VALUE(p_fval).
CLEAR BDCDATA.
BDCDATA-FNAM = p_fnam.
BDCDATA-FVAL = p_fval.
APPEND BDCDATA.
ENDFORM. " F_BDCDATA_DATA