0% found this document useful (0 votes)
136 views39 pages

ABAP Form Functions for File Handling

1. The document contains code for uploading a file from a local PC to an ABAP system and parsing the data into internal tables. 2. It defines forms for selecting a local file, checking if the file exists, uploading the file contents via a GUI service, and splitting each file line into fields to populate a internal table. 3. The fields are then appended to an internal table that serves as the output parameter for returning the parsed file data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
136 views39 pages

ABAP Form Functions for File Handling

1. The document contains code for uploading a file from a local PC to an ABAP system and parsing the data into internal tables. 2. It defines forms for selecting a local file, checking if the file exists, uploading the file contents via a GUI service, and splitting each file line into fields to populate a internal table. 3. The fields are then appended to an internal table that serves as the output parameter for returning the parsed file data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 39

*&---------------------------------------------------------------------*

*& Include ZRFFOUS_COM_RETORNO_FORM


*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form ZF_CHECK_TABLA_PARAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_PARAM text
*----------------------------------------------------------------------*
form zf_check_tabla_param changing pto_param type ty_t_param.

data: ls_param type zfi_param.

constants: lc_docu type fieldname value 'DOCU',


lc_cuent_d type fieldname value 'CUENTAD',
lc_cuent_h type fieldname value 'CUENTAH',
lc_division type fieldname value 'DIVISION',
lc_divisa type fieldname value 'DIVISA'.

select mandt
repid
fieldname
datbi
item
datab
sign
opt
low
high
from zfi_param
into table pto_param
where repid eq sy-repid and
datbi >= sy-datum.

if sy-subrc eq 0.
sort pto_param by fieldname.
read table gt_param into ls_param with key fieldname = lc_docu binary search.
if sy-subrc eq 0.
move: ls_param-low to gv_docu.
clear ls_param.
endif.

* SORT pto_param BY fieldname.


read table gt_param into ls_param with key fieldname = lc_cuent_d binary
search.
if sy-subrc eq 0.
move: ls_param-low to gv_cuenta_d.
clear ls_param.
endif.

read table gt_param into ls_param with key fieldname = lc_cuent_h binary
search.
if sy-subrc eq 0.
move: ls_param-low to gv_cuenta_h.
clear ls_param.
endif.
read table gt_param into ls_param with key fieldname = lc_division binary
search.
if sy-subrc eq 0.
move: ls_param-low to gv_division.
clear ls_param.
endif.

read table gt_param into ls_param with key fieldname = lc_divisa binary search.
if sy-subrc eq 0.
move: ls_param-low to gv_divisa.
clear ls_param.
endif.

endif.
endform. " zf_check_tabla_param

*&---------------------------------------------------------------------*
*& Form ZF_GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LV_LOCATION text
* <--P_PAR_FILE text
*----------------------------------------------------------------------*
form zf_get_file using pi_location type dxfields-location
changing po_par_file type dxfields-longpath.

data: lt_file_table type filetable,


lv_rc type i.

call method cl_gui_frontend_services=>file_open_dialog


exporting
file_filter = '*.csv|*.CSV'
* with_encoding =
* initial_directory =
* multiselection =
changing
file_table = lt_file_table
rc = lv_rc
* user_action =
* file_encoding =
exceptions
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
others = 5.

if sy-subrc eq 0.

read table lt_file_table into po_par_file index 1.


else.

message id sy-msgid type sy-msgty number sy-msgno


with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

endform. " ZF_GET_FILE


*&---------------------------------------------------------------------*
*& Form ZF_UPLOAD_PC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PAR_FILE text
* <--P_GT_COMDATA text
*----------------------------------------------------------------------*
form zf_upload_pc using pi_par_file type dxfields-longpath
changing pto_comdata type ty_t_compdata
po_file_no_exist type flag.

constants: lc_separator type c value ','.

types: begin of ty_data_tab,


line type string.
types: end of ty_data_tab.
data: lt_data_tab type table of ty_data_tab.

data: ls_comdata like line of gt_comdata.


field-symbols: <lfs_data_tab> type ty_data_tab.

data: "lv_file TYPE string,


lv_file_exist type string.
* MOVE: pi_par_file TO lv_file. "24.11.2017

"DATA: l_existe TYPE abap_bool. "24.11.2017

*--------------------------------------------------------------------*
data: lv_result type abap_bool.
"lv_file_exist TYPE string.
move: pi_par_file to lv_file_exist.

********** CALL FUNCTION 'FILE_VALIDATE_NAME'


********** EXPORTING
********** logical_filename = 'EHS_FTFRONT_2'
********** CHANGING
********** physical_filename = pi_par_file
********** EXCEPTIONS
********** logical_filename_not_found = 1
********** validation_failed = 2
********** OTHERS = 3.
********** IF sy-subrc EQ 0.

call method cl_gui_frontend_services=>file_exist


exporting
file = lv_file_exist
receiving
result = lv_result
exceptions
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
others = 5.

if sy-subrc eq 0 and lv_result eq abap_true.


*--------------------------------------------------------------------*
call method cl_gui_frontend_services=>gui_upload
exporting
filename = lv_file_exist
filetype = 'ASC'
has_field_separator = lc_separator "'X' "lc_separator
* header_length = 0
read_by_line = 'X'
* dat_mode = SPACE
* codepage = SPACE
ignore_cerr = abap_true
replacement = '#'
* virus_scan_profile =
* isdownload = SPACE
* IMPORTING
* filelength =
* header =
changing
data_tab = lt_data_tab
* isscanperformed = SPACE
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
others = 19.

if sy-subrc eq 0.

loop at lt_data_tab assigning <lfs_data_tab>.

* REPLACE ALL OCCURENCES OF '"' IN <lfs_data_tab>-line WITH ''.


* SPLIT <lfs_data_tab>-line AT ',' INTO ls_comdata-sociedad
split <lfs_data_tab>-line at ';' into ls_comdata-sociedad
ls_comdata-vendor_id
ls_comdata-vendor_name
ls_comdata-payment_number
ls_comdata-processed_date
ls_comdata-payment_amount
ls_comdata-issued_amount.
* ls_comdata-payment_amount
* ls_comdata-payment_date
* ls_comdata-vendor_adress1
* ls_comdata-vendor_adress2
* ls_comdata-vendor_city
* ls_comdata-vendor_state
* ls_comdata-vendor_zip
* ls_comdata-invoice_number
* ls_comdata-invoice_date
* ls_comdata-invoice_amount
* ls_comdata-invoice_discount
* ls_comdata-invoice_net
* ls_comdata-invoice_comments
* ls_comdata-pm.

append ls_comdata to gt_comdata.


endloop.

else.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
else. "12.01.2018
move: abap_true to po_file_no_exist.
call function 'POPUP_TO_DISPLAY_TEXT'
exporting
* TITEL = ' '
textline1 = text-i02.
endif.
* ENDIF. "24.11.2017
endform. " ZF_UPLOAD_PC

*&---------------------------------------------------------------------*
*& Form ZF_UPLOAD_SERVER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PAR_FILE text
* <--P_GT_COMDATA text
*----------------------------------------------------------------------*
form zf_upload_server using pi_par_file type dxfields-longpath
changing pto_comdata type ty_t_compdata.

data: ls_comdata like line of gt_comdata.


data: ls_file like line of gt_comdata.

open dataset pi_par_file for input in text mode encoding default.

if sy-subrc is not initial.


*MESSAGE e002(ypap_cust_prog). "Error creation failed.

else.

while ( sy-subrc eq 0 ).
read dataset pi_par_file into ls_file.
if not ls_file is initial.

split ls_file at ';' into ls_comdata-sociedad


ls_comdata-vendor_id
ls_comdata-vendor_name
ls_comdata-payment_number
ls_comdata-processed_date
ls_comdata-payment_amount
ls_comdata-issued_amount.
* ls_comdata-payment_amount
* ls_comdata-payment_date
* ls_comdata-vendor_adress1
* ls_comdata-vendor_adress2
* ls_comdata-vendor_city
* ls_comdata-vendor_state
* ls_comdata-vendor_zip
* ls_comdata-invoice_number
* ls_comdata-invoice_date
* ls_comdata-invoice_amount
* ls_comdata-invoice_discount
* ls_comdata-invoice_net
* ls_comdata-invoice_comments
* ls_comdata-pm.

append ls_comdata to gt_comdata.


endif.
clear ls_comdata.
endwhile.
endif.

close dataset pi_par_file.


endform. " ZF_UPLOAD_SERVER

*&---------------------------------------------------------------------*
*& Form ZF_ABD_BSIS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form zf_abd_bsis. "USING pi_test TYPE flag.

field-symbols: "<lfs_comdata> TYPE zfi_compdata_retorno, "zfi_compdata.


<lfs_comdata_fb05> type tyt_comdata_fb05.

data: ls_comdata type zfi_compdata_retorno, "zfi_compdata.


ls_comdata_fb05 type tyt_comdata_fb05,
ls_comdata_err type tyt_comdata_fb05.

data: "lt_bsis TYPE STANDARD TABLE OF bsis,


ls_bsis type bsis,
ls_bsak type bsak,
ls_param type zfi_param.

data: lv_gjahr type gjahr.


data: lv_belnr type belnr_d,
lv_hkont type hkont.
data: ls_bkpf type bkpf.
data: lv_subrc type sy-subrc.
* DATA: lt_return TYPE TABLE OF bapiret2.

constants: lc_cuentad type fieldname value 'CUENTAD'.

sort gt_param by fieldname.


read table gt_param into ls_param with key fieldname = lc_cuentad binary search.

loop at gt_comdata into ls_comdata. "ASSIGNING <lfs_comdata>.


clear: ls_bsis,
ls_bkpf,
ls_bsak,
lv_gjahr,
lv_belnr.

move: ls_comdata-payment_number(8) to lv_belnr.

call function 'CONVERSION_EXIT_ALPHA_INPUT'


exporting
input = ls_param-low
importing
output = lv_hkont.

call function 'CONVERSION_EXIT_ALPHA_INPUT'


exporting
input = lv_belnr
importing
output = lv_belnr.

concatenate '20' ls_comdata-payment_number+8(2) into lv_gjahr.


* CONCATENATE '20' <lfs_comdata>-payment_number+8(2) INTO lv_gjahr.

* SELECT * UP TO 1 ROWS
clear: lv_subrc,
ls_bsis.
perform zf_bsis using ls_comdata-sociedad
lv_hkont
lv_gjahr
lv_belnr
changing ls_bsis
lv_subrc.

* SELECT SINGLE *
* FROM bsis
* INTO ls_bsis
* WHERE bukrs = ls_comdata-sociedad AND "<lfs_comdata>-sociedad AND
* hkont = lv_hkont AND "'40170000' AND
* gjahr = lv_gjahr AND "<lfs_comdata>-processed_date+6(4) AND --> año
* belnr = lv_belnr. "<lfs_comdata>-payment_number(8).
** belnr = ls_comdata-payment_number(8). "<lfs_comdata>-
payment_number(8).
** ENDSELECT.
*
if lv_subrc eq 0. "sy-subrc EQ 0. "Existe en la BSIS
clear: lv_subrc,
ls_bsak.
perform zf_bsak using ls_comdata-sociedad
ls_comdata-vendor_id
lv_gjahr
lv_belnr
changing ls_bsak
lv_subrc.

* SELECT SINGLE *
** SELECT * UP TO 1 ROWS
* FROM bsak
* INTO ls_bsak
* WHERE bukrs EQ ls_comdata-sociedad AND "<lfs_comdata>-sociedad AND
* lifnr EQ ls_comdata-vendor_id AND "<lfs_comdata>-vendor_id AND
* umsks EQ abap_false AND
* umskz EQ abap_false AND
* gjahr EQ lv_gjahr AND "<lfs_comdata>-processed_date+6(4) AND
* belnr EQ lv_belnr. "<lfs_comdata>-payment_number(8).
** ENDSELECT.

if lv_subrc eq 0. "sy-subrc EQ 0. "SI existe en bsak


"Verificamos que no se ha dado de alta previamente

clear: lv_subrc,
ls_bkpf.
perform zf_bkpf using ls_comdata-sociedad
ls_comdata-payment_number
changing ls_bkpf
lv_subrc.
*
if lv_subrc eq 0. "sy-subrc EQ 0.
"Se realiza en el caso C
move-corresponding ls_comdata to ls_comdata_fb05.
move: ls_bkpf-belnr to ls_comdata_fb05-belnr.
move: 'C' to ls_comdata_fb05-a_b.
append ls_comdata_fb05 to gt_comdata_fb05.
append ls_bsis to gt_bsis.
append ls_bsak to gt_bsak.
else.
"Se realiza en el caso A
move-corresponding ls_comdata to ls_comdata_fb05.
move: 'A' to ls_comdata_fb05-a_b.
append ls_comdata_fb05 to gt_comdata_fb05. "gt_comdata_bapi.
append ls_bsis to gt_bsis.
append ls_bsak to gt_bsak.
endif.

else. "NO existe en bsak


"Error en listado E1: Pago check/payment distinto proveedor
move-corresponding ls_comdata to ls_comdata_fb05.
* ls_bkpf-belnr to ls_comdata_err-belnr.
move: '1' to ls_comdata_fb05-a_b.
* APPEND ls_comdata TO gt_comdata_err.

clear: lv_subrc,
ls_bkpf.
perform zf_bkpf using ls_comdata-sociedad
ls_comdata-payment_number
changing ls_bkpf
lv_subrc.

if lv_subrc eq 0. "sy-subrc EQ 0.
move: '2' to ls_comdata_fb05-a_b,
ls_bkpf-belnr to ls_comdata_fb05-belnr.
append ls_comdata to gt_comdata_err.
else.
move: 'B' to ls_comdata_fb05-a_b, "<lfs_comdata_fb05>-a_b.
'1' to ls_comdata_fb05-msg.
* MOVE: '4' TO ls_comdata_fb05-a_b. "<lfs_comdata_fb05>-a_b.
append ls_comdata_fb05 to gt_comdata_bapi.
endif.

endif.
*--------------------------------------------------------------------*
else. "No existe en BSIS

clear: ls_bsak.
* SELECT * UP TO 1 ROWS
* FROM bsak
* INTO ls_bsak
* WHERE bukrs EQ ls_comdata-sociedad AND "<lfs_comdata>-sociedad AND
* lifnr EQ ls_comdata-vendor_id AND "<lfs_comdata>-vendor_id AND
* umsks EQ abap_false AND
* umskz EQ abap_false AND
* gjahr EQ lv_gjahr AND "<lfs_comdata>-processed_date+6(4) AND
* belnr EQ lv_belnr. "<lfs_comdata>-payment_number(8).
* ENDSELECT.

* IF sy-subrc EQ 0.
* "Error: Pago ya compensado. Registro previamente procesado E03
* MOVE-CORRESPONDING ls_comdata TO ls_comdata_err.
* MOVE: '3' TO ls_comdata_err-a_b,
* ls_bkpf-belnr TO ls_comdata_err-belnr.
* APPEND ls_comdata_err TO gt_comdata_err.
* ELSE.
* Leemos BKPF

clear: lv_subrc,
ls_bkpf.
perform zf_bkpf using ls_comdata-sociedad
ls_comdata-payment_number
changing ls_bkpf
lv_subrc.

if lv_subrc eq 0. "sy-subrc EQ 0.
*Si EXISTE poner error -> Pago check/payment en doc: BKPF-BELNR ya existe. E05
move-corresponding ls_comdata to ls_comdata_err.
move: '5' to ls_comdata_err-a_b,
ls_bkpf-belnr to ls_comdata_err-belnr.
append ls_comdata_err to gt_comdata_err.
else.
"Doc.creado = documento creado E04
move-corresponding ls_comdata to ls_comdata_fb05.
move: 'B' to ls_comdata_fb05-a_b,
'4' to ls_comdata_fb05-msg.
* Doc.creado = documento creado por la BAPI
append ls_comdata_fb05 to gt_comdata_bapi.
endif.
* ENDIF.
endif.
** SELECT * UP TO 1 ROWS
*** SELECT SINGLE *
** FROM bsak
** INTO ls_bsak
** WHERE bukrs EQ ls_comdata-sociedad AND "<lfs_comdata>-sociedad AND
** lifnr EQ ls_comdata-vendor_id AND "<lfs_comdata>-vendor_id AND
** umsks EQ abap_false AND
** umskz EQ abap_false AND
** gjahr EQ lv_gjahr AND "<lfs_comdata>-processed_date+6(4) AND
** belnr EQ lv_belnr. "<lfs_comdata>-payment_number(8).
** ENDSELECT.
**
** IF sy-subrc EQ 0.
** APPEND ls_comdata TO gt_comdata_fb05.
*** APPEND <lfs_comdata> TO gt_comdata_fb05.
** APPEND ls_bsis TO gt_bsis.
** APPEND ls_bsak TO gt_bsak.
** ELSE.
** MOVE-CORRESPONDING: ls_comdata TO ls_comdata_fb05.
*** MOVE: <lfs_comdata> TO <lfs_comdata_fb05>.
**
** MOVE: 'D' TO ls_comdata_fb05-a_b.
*** MOVE: 'B' TO <lfs_comdata_fb05>-a_b.
**
** APPEND ls_comdata_fb05 TO gt_comdata_bapi.
*** APPEND <lfs_comdata> TO gt_comdata_bapi.
** ENDIF.

* ELSE. "NO Existe en la BSIS


** "Si no existe registro en bsis CASO B
** MOVE-CORRESPONDING ls_comdata TO ls_comdata_fb05.
*** MOVE-CORRESPONDING <lfs_comdata> TO <lfs_comdata_fb05>.
**
** MOVE: 'A' TO ls_comdata_fb05-a_b.
*** MOVE: 'A' TO <lfs_comdata_fb05>-a_b.
** APPEND ls_comdata_fb05 TO gt_comdata_bapi.
*** APPEND <lfs_comdata> TO gt_comdata_bapi.
**
*** PERFORM zf_call_bapi_acc_document USING pi_test
*** CHANGING lt_return.
* ENDIF.

endloop.

endform. " ZF_ABD_BSIS


*&---------------------------------------------------------------------*
*& Form ZF_BAPI_ACC_DOCUMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LT_RETURN text
*----------------------------------------------------------------------*
form zf_call_bapi_acc_document "USING pi_test TYPE flag
changing pto_return type bapiret2_t.

perform zf_bapi_acc_docment "USING 'BAPI_ACC_DOCUMENT_POST'


changing pto_return.

endform. " ZF_CALL_BAPI_ACC_DOCUMENT

*&---------------------------------------------------------------------*
*& Form ZF_BAPI_ACC_DOCMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0394 text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_bapi_acc_docment "USING pi_function TYPE string "value(p_0394) TYPE
string
changing pto_return type bapiret2_t.

data: lv_belnr type belnr_d.


data : ls_return like line of pto_return,
lv_error type flag.
data: ls_header type bapiache09.
data: lt_accountgl type table of bapiacgl09,
ls_accountgl type bapiacgl09,
lt_currency type table of bapiaccr09,
ls_currency type bapiaccr09.

* DATA: ls_param TYPE zfi_param.

constants: lc_docu type fieldname value 'DOCU',


lc_cuent_d type fieldname value 'CUENTAD',
lc_cuent_h type fieldname value 'CUENTAH',
lc_division type fieldname value 'DIVISION',
lc_divisa type fieldname value 'DIVISA'.

field-symbols: <lfs_comdata> type tyt_comdata_fb05."zfi_compdata_retorno.

data: ls_comdata_alv type zfi_compdata_alv.

sort pto_return by type.


loop at gt_comdata_bapi assigning <lfs_comdata>.

refresh: lt_accountgl,
lt_currency.
*--------------------------------------------------------------------*
"DOCUMENTHEADER
*--------------------------------------------------------------------*
clear: "ls_param,
ls_header,
lv_belnr.

move: <lfs_comdata>-payment_number(8) to lv_belnr.

call function 'CONVERSION_EXIT_ALPHA_INPUT'


exporting
input = lv_belnr
importing
output = lv_belnr.

* SORT gt_param BY fieldname.


* READ TABLE gt_param INTO ls_param WITH KEY fieldname = lc_docu.
move: sy-uname to ls_header-username,
'COMPDATA' to ls_header-header_txt,
<lfs_comdata>-sociedad to ls_header-comp_code,
<lfs_comdata>-processed_date+6(4) to ls_header-fisc_year,
<lfs_comdata>-processed_date(2) to ls_header-fis_period,
gv_docu to ls_header-doc_type,
* ls_param-low TO ls_header-doc_type,
* <lfs_comdata>-payment_number TO ls_header-doc_type,
lv_belnr to ls_header-ref_doc_no .
move: <lfs_comdata>-payment_number to ls_header-ref_doc_no.

concatenate text-t05 <lfs_comdata>-processed_date into ls_header-header_txt


separated by space.

concatenate: <lfs_comdata>-processed_date+6(4)
<lfs_comdata>-processed_date(2)
<lfs_comdata>-processed_date+3(2)
into ls_header-doc_date.
move: ls_header-doc_date to ls_header-pstng_date.

*--------------------------------------------------------------------*
"ACCOUNGL
*--------------------------------------------------------------------*
clear: "ls_param,
ls_accountgl.
* SORT gt_param BY fieldname.
* READ TABLE gt_param INTO ls_param WITH KEY fieldname = lc_cuent_d.

move: '0000000001' to ls_accountgl-itemno_acc,


gv_cuenta_d to ls_accountgl-gl_account.
* ls_param-low TO ls_accountgl-gl_account.

if <lfs_comdata>-a_b eq 'A'.
concatenate text-t06 <lfs_comdata>-payment_number
into ls_accountgl-item_text separated by space.
else.
concatenate text-t07 <lfs_comdata>-payment_number
text-t08
into ls_accountgl-item_text separated by space.
endif.

move: ls_header-doc_date to ls_accountgl-value_date,


"lv_belnr TO ls_accountgl-ref_key_3.
<lfs_comdata>-payment_number to ls_accountgl-ref_key_3. "Cambio
08/11/2017

* CLEAR: ls_param.
* SORT gt_param BY fieldname.
* READ TABLE gt_param INTO ls_param WITH KEY fieldname = lc_division.

move: gv_division to ls_accountgl-bus_area.


* MOVE: ls_param-low TO ls_accountgl-bus_area.

append ls_accountgl to lt_accountgl.


*--------------------------------------------------------------------*
clear: "ls_param,
ls_accountgl.

move: '0000000002' to ls_accountgl-itemno_acc.

* SORT gt_param BY fieldname.


* READ TABLE gt_param INTO ls_param WITH KEY fieldname = lc_cuent_h.

move: gv_cuenta_h to ls_accountgl-gl_account .


* MOVE: ls_param-low TO ls_accountgl-gl_account .

concatenate: text-t06 <lfs_comdata>-payment_number


into ls_accountgl-item_text separated by space.

* CLEAR: ls_param.
* SORT gt_param BY fieldname.
* READ TABLE gt_param INTO ls_param WITH KEY fieldname = lc_division.

move: gv_division to ls_accountgl-bus_area,


"lv_belnr TO ls_accountgl-ref_key_3.
<lfs_comdata>-payment_number to ls_accountgl-ref_key_3."Cambio 08/11/2017

* MOVE: ls_param-low TO ls_accountgl-bus_area.


append ls_accountgl to lt_accountgl.
*--------------------------------------------------------------------*
"CURRENCYAMOUNT
*--------------------------------------------------------------------*
clear: ls_currency.

move: '0000000001' to ls_currency-itemno_acc.

" CLEAR: "ls_param.


* SORT gt_param BY fieldname.
* READ TABLE gt_param INTO ls_param WITH KEY fieldname = lc_divisa.

move: gv_divisa to ls_currency-currency.


replace all occurrences of ',' in <lfs_comdata>-issued_amount with space.
* REPLACE ALL OCCURRENCES OF ',' IN <lfs_comdata>-issued_amount WITH '.'.
move: <lfs_comdata>-issued_amount to ls_currency-amt_doccur.

append ls_currency to lt_currency.


*--------------------------------------------------------------------*
* CLEAR: lS_currency.
move: '0000000002' to ls_currency-itemno_acc,
<lfs_comdata>-issued_amount to ls_currency-amt_doccur.
multiply ls_currency-amt_doccur by -1.
append ls_currency to lt_currency.

* CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'


call function 'BAPI_ACC_DOCUMENT_POST'
exporting
documentheader = ls_header
tables
accountgl = lt_accountgl
currencyamount = lt_currency
return = pto_return.
* SORT pto_return BY type.
loop at pto_return into ls_return. "WHERE type = 'A' OR
"type = 'E'.
if ls_return-type eq 'A' or
ls_return-type eq 'B'.
lv_error = 'X'.
exit.
endif.
endloop.

move: <lfs_comdata>-sociedad to ls_comdata_alv-sociedad,


<lfs_comdata>-vendor_id to ls_comdata_alv-vendor_id,
<lfs_comdata>-payment_number to ls_comdata_alv-payment_number,
<lfs_comdata>-processed_date to ls_comdata_alv-processed_date,
<lfs_comdata>-payment_amount to ls_comdata_alv-payment_amount.
* <lfs_comdata>-issued_amount TO ls_comdata_alv-issued_amount.
replace all occurrences of '.' in <lfs_comdata>-issued_amount with ','.
move: <lfs_comdata>-issued_amount to ls_comdata_alv-issued_amount.

if lv_error is initial .

commit work and wait.

read table pto_return into ls_return with key type = 'S'


id = 'RW'
number = '605' binary search.
if sy-subrc eq 0.
move: ls_return-message_v2(10) to ls_comdata_alv-doc_cont,
icon_green_light to ls_comdata_alv-icon.

if <lfs_comdata>-msg eq '1'.
"Pago check/payment distinto proveedor. Doc.creado &
move: text-t01 to ls_comdata_alv-texto.
concatenate text-e01 text-e04 into ls_comdata_alv-texto separated by '.
'.
replace all occurrences of '&' in ls_comdata_alv-texto with ls_return-
message_v2(10).

else.
if <lfs_comdata>-msg eq '4'.
"Doc.creado &
move: text-e04 to ls_comdata_alv-texto.
replace all occurrences of '&' in ls_comdata_alv-texto with ls_return-
message_v2(10).
endif.
endif.

* IF <lfs_comdata>-a_b EQ 'A'.
* MOVE: text-t01 TO ls_comdata_alv-texto.
* ELSE.
* MOVE: text-t02 TO ls_comdata_alv-texto.
* ENDIF.

endif.

else.
rollback work.
endif.
append ls_comdata_alv to gt_comdata_alv.
endloop.

endform. " ZF_BAPI_ACC_DOCMENT


*&---------------------------------------------------------------------*
*& Form ZF_CALL_FB05
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_BSIS text
* <--P_GT_RETURN text
*----------------------------------------------------------------------*
form zf_call_fb05 using pti_bsis type tt_bsis
pti_bsak type tt_bsak
changing pto_return type bapiret2_t.

field-symbols: <lfs_comdata> type tyt_comdata_fb05. "zfi_compdata_retorno.

loop at gt_comdata_fb05 assigning <lfs_comdata>.

if <lfs_comdata>-a_b eq 'C'.

if <lfs_comdata>-payment_amount eq <lfs_comdata>-issued_amount.
perform zf_fb05_iguales_c using <lfs_comdata>
* gt_bkpd
changing pto_return.

else.
perform zf_fb05_distintos_c using <lfs_comdata>
changing pto_return.
endif.
else.

if <lfs_comdata>-payment_amount eq <lfs_comdata>-issued_amount.

perform zf_fb05_iguales using <lfs_comdata>


pti_bsis
changing pto_return.
else.

perform zf_fb05_distintos using <lfs_comdata>


pti_bsak
changing pto_return.
endif.
endif.
endloop.
endform. " ZF_CALL_FB05
*&---------------------------------------------------------------------*
*& Form ZF_FB05_IGUALES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PTI_BSIS text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_fb05_iguales using psi_com type tyt_comdata_fb05 "zfi_compdata_retorno
pti_bsis type tt_bsis
changing pto_return type bapiret2_t.

data: ls_msg type bdcmsgcoll.

data: ls_options type ctu_params. "Se cambia like por type 15.01.2018
data: ls_bsis type bsis.
data: lv_xblnr type xblnr1,
lv_bktxt type bktxt,
lv_date(10) type c.
data: lv_belnr type belnr_d.
data: ls_comdata_alv type zfi_compdata_alv.
data: lv_issued_amoun type char16.
data: lv_payment_amount type wrbtr,
lv_issued_amount type wrbtr.
refresh: gt_bdc, gt_msg.

ls_options-dismode = 'N'.
ls_options-updmode = 'S'.
ls_options-nobinpt = 'X'.
ls_options-racommit = 'X'.

move: psi_com-payment_number(8) to lv_belnr.


call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = lv_belnr
importing
output = lv_belnr.

sort pti_bsis by belnr.


read table pti_bsis into ls_bsis with key belnr = lv_belnr binary search.
"psi_com-payment_number.

concatenate ls_bsis-xblnr ls_bsis-gjahr into lv_xblnr.


concatenate text-t05 psi_com-processed_date into lv_bktxt separated by space.
concatenate psi_com-processed_date+3(2)
psi_com-processed_date(2)
psi_com-processed_date+6(4)
into lv_date separated by '.'.

clear: lv_issued_amoun.
move: psi_com-issued_amount to lv_issued_amoun.
replace all occurrences of ',' in lv_issued_amoun with space.
replace all occurrences of '.' in lv_issued_amoun with ','.

* REPLACE ALL OCCURRENCES OF ',' IN psi_com-issued_amount WITH space.


* REPLACE ALL OCCURRENCES OF '.' IN psi_com-issued_amount WITH ','.

perform zf_bdc_dynpro using: 'SAPMF05A' '0122' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-NEWKO' changing gt_bdc,
'BDC_OKCODE' '/00' changing gt_bdc,
'BKPF-BLDAT' lv_date changing gt_bdc, "--> DEL
FICHERO PROCESSED_DATE ls_bsis-bldat
* 'BKPF-BLDAT' '06.11.2017' CHANGING gt_bdc, "--> DEL
FICHERO
'BKPF-BLART' gv_docu changing gt_bdc,
* 'BKPF-BLART' 'ZP' CHANGING gt_bdc,
'BKPF-BUKRS' psi_com-sociedad changing gt_bdc, "-->
DEL FICHERO ¿¿¿???? ls_bsis-bukrs
* 'BKPF-BUKRS' 'X0' CHANGING gt_bdc, "--> bsis-bukrs
¿¿¿????
'BKPF-BUDAT' lv_date changing gt_bdc, "--> DEL
FICHERO PROCESSED_DATE ls_bsis-budat
* 'BKPF-BUDAT' '06.11.2017' CHANGING gt_bdc, "--> DEL
FICHERO
'BKPF-MONAT' psi_com-processed_date(2) changing
gt_bdc, "--> PROCESSED_DATE
* 'BKPF-MONAT' '11' CHANGING gt_bdc, "--> bsis-monat
'BKPF-WAERS' ls_bsis-waers changing gt_bdc, "-->
bsis-waers
* 'BKPF-WAERS' 'USD' CHANGING gt_bdc, "--> bsis-waers
'BKPF-XBLNR' psi_com-payment_number changing gt_bdc,
"--> bsis-xbelnr + bsis-gjahr
**** 'BKPF-XBLNR' ls_bsis-belnr CHANGING gt_bdc, "-->
bsis-xbelnr + bsis-gjahr
* 'BKPF-XBLNR' '20000021-R' CHANGING gt_bdc, "-->
bsis-xbelnr + bsis-gjahr
'BKPF-BKTXT' lv_bktxt changing gt_bdc, "--> "'Comdata
Retorno
'RF05A-XPOS1(01)' ' ' changing gt_bdc,
'RF05A-XPOS1(02)' ' ' changing gt_bdc,
'RF05A-XPOS1(03)' ' ' changing gt_bdc,
'RF05A-XPOS1(04)' 'X' changing gt_bdc,
* 'BKPF-AUGTX' psi_com-payment_number CHANGING gt_bdc,
"Modif 30.11.2017
'RF05A-AUGTX' psi_com-payment_number changing gt_bdc,
* 'BKPF-BKTXT' '20000021-T' CHANGING gt_bdc, "-->
"'Comdata Retorno
'RF05A-NEWBS' '50' changing gt_bdc, "--> fijo
'RF05A-NEWKO' gv_cuenta_h changing gt_bdc. "--> tabla
parametros
* 'RF05A-NEWKO' '572704AM' CHANGING gt_bdc. "--> tabla
parametros

perform zf_bdc_dynpro using: 'SAPMF05A' '0300' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-VALUT' changing gt_bdc,
'BDC_OKCODE' '=COBL_MORE' changing gt_bdc,
'BSEG-WRBTR' lv_issued_amoun changing gt_bdc, "-->
fichero Issued_Amount
* 'BSEG-WRBTR' psi_com-issued_amount CHANGING gt_bdc,
"--> fichero Issued_Amount
* 'BSEG-WRBTR' '5690' CHANGING gt_bdc, "--> fichero
Issued_Amount
'BSEG-VALUT' lv_date changing gt_bdc. "-->
PROCESSED_DATE
* 'BSEG-VALUT' '06.11.2017' CHANGING gt_bdc. "-->
PROCESSED_DATE

perform zf_bdc_dynpro using: 'SAPLKACB' '0002' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'COBL-GSBER' changing gt_bdc,
'BDC_OKCODE' '=ENTE' changing gt_bdc,
'COBL-GSBER' ls_bsis-gsber changing gt_bdc. "-->
bsis-gsber
* 'COBL-GSBER' 'WC0' CHANGING gt_bdc. "--> bsis-gsber

perform zf_bdc_dynpro using: 'SAPMF05A' '0300' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-WRBTR' changing gt_bdc,
'BDC_OKCODE' '=SL' changing gt_bdc,
'BSEG-WRBTR' lv_issued_amoun changing gt_bdc, "-->
fichero Issued_Amount
* 'BSEG-WRBTR' psi_com-issued_amount CHANGING gt_bdc,
"--> fichero Issued_Amount
* 'BSEG-WRBTR' '5.690,00' CHANGING gt_bdc, "-->
fichero Issued_Amount
'BSEG-VALUT' lv_date changing gt_bdc. "-->
PROCESSED_DATE
* 'BSEG-VALUT' '06.11.2017' CHANGING gt_bdc. "-->
PROCESSED_DATE

perform zf_bdc_dynpro using: 'SAPMF05A' '0710' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-AGKON' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-AGBUK' psi_com-sociedad changing gt_bdc,"-->
DEL FICHERO SOCIEDAD
'RF05A-AGKON' gv_cuenta_d changing gt_bdc,"--> tabla
parametros
* 'RF05A-AGKON' '40170000' CHANGING gt_bdc,"--> tabla
parametros
'RF05A-XFIFO' 'X' changing gt_bdc, "Indicador:
Reparto automático por antigüedad
'RF05A-XAUTS' ' ' changing gt_bdc, "Indicador:
Busqueda automatica
'RF05A-AGKOA' 'S' changing gt_bdc,
'RF05A-XNOPS' 'X' changing gt_bdc,
'RF05A-XPOS1(01)' '' changing gt_bdc,
'RF05A-XPOS1(03)' 'X' changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0731' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-SEL01(01)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-SEL01(01)' ls_bsis-belnr changing gt_bdc."-->
BSIS-BELNR
* 'RF05A-SEL01(01)' '20000021' CHANGING gt_bdc."-->
BSIS-BELNR

perform zf_bdc_dynpro using: 'SAPDF05X' '3100' changing gt_bdc.


perform zf_bdc_field using: 'BDC_OKCODE' '=BU' changing gt_bdc,
'BDC_CURSOR' 'RF05A-ABPOS' changing gt_bdc,
'RF05A-ABPOS' '1' changing gt_bdc.

call function 'AUTHORITY_CHECK_TCODE'


exporting
tcode = 'FB05'
exceptions
ok = 1
not_ok = 2
others = 3.

if sy-subrc = 1.

call transaction 'FB05' using gt_bdc


messages into gt_msg
options from ls_options.

* PERFORM zf_msg_fb05 USING gt_msg


* psi_com
* text-t04.

sort gt_msg by msgid msgnr.


read table gt_msg into ls_msg with key msgid = 'F5'
msgnr = '312' binary search.

if sy-subrc eq 0.

move: icon_green_light to ls_comdata_alv-icon,


ls_msg-msgv1 to ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.
else.
move: icon_red_light to ls_comdata_alv-icon,
* LS_msg-msgv1 TO ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.
endif.

clear: lv_payment_amount,
lv_issued_amount.

*pack: "psi_com-payment_amount to lv_payment_amount,


* psi_com-issued_amount to lv_issued_amount.

move: psi_com-sociedad to ls_comdata_alv-sociedad,


psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount.

***************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-


payment_amount WITH ','.
***************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-issued_amount
WITH ','.

append ls_comdata_alv to gt_comdata_alv.


else.
"Falta autorizacion
move: psi_com-sociedad to ls_comdata_alv-sociedad,
psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount,
icon_red_light to ls_comdata_alv-icon,
text-e06 to ls_comdata_alv-texto.

**************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-payment_amount


WITH ','.
**************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-issued_amount
WITH ','.

append ls_comdata_alv to gt_comdata_alv.


endif.

endform. " ZF_FB05_IGUALES

*&---------------------------------------------------------------------*
*& Form ZF_FB05_DISTINTOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<LFS_COMDATA> text
* -->P_PTI_BSIS text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_fb05_distintos using psi_com type tyt_comdata_fb05 "zfi_compdata_retorno
* pti_bsis TYPE tt_bsis
pti_bsak type tt_bsak
changing pto_return type bapiret2_t.

data: ls_msg type bdcmsgcoll.


data: ls_options like ctu_params.
* DATA: ls_bsis TYPE bsis.
data: ls_bsak type bsak.
data: lv_xblnr type xblnr1,
lv_bktxt type bktxt,
lv_date(10) type c.
data: lv_belnr type belnr_d.
data: ls_comdata_alv type zfi_compdata_alv.

" DATA: "LV_BKTXT TYPE BKTXT,


"lv_augtx TYPE augtx_f05a.

data: lv_wrbtr type wrbtr,


lv_wrbtr_c(13),
lv_newbs type newbs.
data: lv_payment_amount type wrbtr,
lv_issued_amount type wrbtr.

data: lv_payment type char16,


lv_issued type char16.

refresh: gt_bdc, gt_msg.

ls_options-dismode = 'N'.
ls_options-updmode = 'S'.
ls_options-nobinpt = 'X'.
ls_options-racommit = 'X'.

move: psi_com-payment_number(8) to lv_belnr.

call function 'CONVERSION_EXIT_ALPHA_INPUT'


exporting
input = lv_belnr
importing
output = lv_belnr.

sort pti_bsak by belnr.


read table pti_bsak into ls_bsak with key belnr = lv_belnr binary search.
"psi_com-payment_number.

concatenate ls_bsak-xblnr ls_bsak-gjahr into lv_xblnr.


* CONCATENATE psi_com-payment_number(8) '-T' INTO lv_bktxt.
* CONCATENATE psi_com-payment_number(8) '-C' INTO lv_augtx.
concatenate text-t05 psi_com-processed_date into lv_bktxt separated by space.
concatenate psi_com-processed_date+3(2)
psi_com-processed_date(2)
psi_com-processed_date+6(4)
into lv_date separated by '.'.

*--------------------------------------------------------------------*
**** REPLACE ALL OCCURRENCES OF ',' IN psi_com-payment_amount WITH '.'.
"16.11.2017
**** REPLACE ALL OCCURRENCES OF ',' IN psi_com-issued_amount WITH '.'. "16.11.2017
***

*** MOVE: psi_com-payment_amount TO lv_payment,


*** psi_com-issued_amount TO lv_issued.
***
*** REPLACE ALL OCCURRENCES OF ',' IN lv_payment WITH space.
*** REPLACE ALL OCCURRENCES OF ',' IN lv_issued WITH space.
***
*** replace all occurrences of '.' in lv_payment with ','.
*** replace all occurrences of '.' in lv_issued with ','.
***
*** CLEAR: lv_payment_amount,
*** lv_issued_amount.
***
**** PACK: lv_payment TO lv_payment_amount,
**** lv_issued TO lv_issued_amount.
*--------------------------------------------------------------------*
move: psi_com-payment_amount to lv_payment,
psi_com-issued_amount to lv_issued.

replace all occurrences of ',' in lv_payment with space.


* REPLACE ALL OCCURRENCES OF '.' IN lv_payment WITH ','.
replace all occurrences of ',' in lv_issued with space.
* REPLACE ALL OCCURRENCES OF '.' IN lv_issued WITH ','.

clear: lv_payment_amount,
lv_issued_amount.

pack: lv_payment to lv_payment_amount,


lv_issued to lv_issued_amount.

*--------------------------------------------------------------------*
if lv_payment_amount > lv_issued_amount.
* IF psi_com-payment_amount > psi_com-issued_amount.
move: '31' to lv_newbs.
lv_wrbtr = lv_payment_amount - lv_issued_amount.
* lv_wrbtr = lv_payment_amount - lv_issued_amount.
* lv_wrbtr = psi_com-payment_amount - psi_com-issued_amount.

else.
move: '21' to lv_newbs.
lv_wrbtr = lv_issued_amount - lv_payment_amount.
* lv_wrbtr = lv_issued_amount - lv_payment_amount.
* lv_wrbtr = psi_com-issued_amount - psi_com-payment_amount.
endif.

replace all occurrences of '.' in lv_issued with ','.


*--------------------------------------------------------------------*
perform zf_bdc_dynpro using: 'SAPMF05A' '0122' changing gt_bdc.
perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-NEWKO' changing gt_bdc,
'BDC_OKCODE' '/00' changing gt_bdc,
'BKPF-BLDAT' lv_date changing gt_bdc,
'BKPF-BLART' gv_docu changing gt_bdc,
'BKPF-BUKRS' psi_com-sociedad changing gt_bdc,
'BKPF-BUDAT' lv_date changing gt_bdc,
'BKPF-MONAT' psi_com-processed_date(2) changing
gt_bdc,
'BKPF-WAERS' ls_bsak-waers changing gt_bdc,
'BKPF-XBLNR' psi_com-payment_number changing gt_bdc,
* 'BKPF-XBLNR' ls_bsak-belnr CHANGING gt_bdc,
'BKPF-BKTXT' lv_bktxt changing gt_bdc,
'RF05A-XPOS1(01)' ' ' changing gt_bdc,
'RF05A-XPOS1(02)' ' ' changing gt_bdc,
'RF05A-XPOS1(03)' ' ' changing gt_bdc,
'RF05A-XPOS1(04)' 'X' changing gt_bdc,
'RF05A-AUGTX' psi_com-payment_number changing gt_bdc,
'RF05A-NEWBS' '50' changing gt_bdc,
'RF05A-NEWKO' gv_cuenta_h changing gt_bdc.

replace all occurrences of '.' in psi_com-issued_amount with ','.

perform zf_bdc_dynpro using: 'SAPMF05A' '0300' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-WRBTR' changing gt_bdc,
'BDC_OKCODE' '=COBL_MORE' changing gt_bdc,
'BSEG-WRBTR' lv_issued changing gt_bdc, "Issued
Amount -------------------
* 'BSEG-WRBTR' psi_com-issued_amount CHANGING gt_bdc,
"Issued Amount -------------------
'BSEG-VALUT' lv_date changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPLKACB' '0002' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'COBL-GSBER' changing gt_bdc,
'BDC_OKCODE' '=ENTE' changing gt_bdc,
'COBL-GSBER' ls_bsak-gsber changing gt_bdc.

write: lv_wrbtr to lv_wrbtr_c.


* REPLACE ALL OCCURRENCES OF '.' IN lv_wrbtr_c WITH ','.

perform zf_bdc_dynpro using: 'SAPMF05A' '0300' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-VALUT' changing gt_bdc,
'BDC_OKCODE' '/00' changing gt_bdc,
'BSEG-WRBTR' lv_issued changing
gt_bdc,"--------------------------------
* 'BSEG-WRBTR' psi_com-issued_amount CHANGING
gt_bdc,"--------------------------------
* 'BSEG-WRBTR' lv_wrbtr_c CHANGING
gt_bdc,"--------------------------------
'BSEG-VALUT' lv_date changing gt_bdc,
'RF05A-NEWBS' lv_newbs changing gt_bdc,
'RF05A-NEWKO' ls_bsak-lifnr changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0302' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-ZLSCH' changing gt_bdc,
'BDC_OKCODE' '=SL' changing gt_bdc,
'BSEG-WRBTR' lv_wrbtr_c changing gt_bdc, "lv_newbs
CHANGING gt_bdc, -----------------------------
'BSEG-MWSKZ' '**' changing gt_bdc,
'BSEG-GSBER' 'WC0' changing gt_bdc,
'BSEG-ZTERM' 'D030' changing gt_bdc,
'BSEG-ZBD1T' '30' changing gt_bdc,
'BSEG-ZFBDT' lv_date changing gt_bdc,
'BSEG-ZLSCH' 'V' changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0710' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-XPOS1(03)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-AGBUK' psi_com-sociedad changing gt_bdc,
'RF05A-AGKON' gv_cuenta_d changing gt_bdc,
'RF05A-XFIFO' 'X' changing gt_bdc, "Indicador:
Reparto automático por antigüedad
'RF05A-XAUTS' ' ' changing gt_bdc, "Indicador:
Busqueda automatica
'RF05A-AGKOA' 'S' changing gt_bdc,
'RF05A-XNOPS' 'X' changing gt_bdc,
'RF05A-XPOS1(01)' '' changing gt_bdc,
'RF05A-XPOS1(03)' 'X' changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0731' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-SEL01(01)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-SEL01(01)' ls_bsak-belnr changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPDF05X' '3100' changing gt_bdc.


perform zf_bdc_field using: 'BDC_OKCODE' '=BU' changing gt_bdc,
'BDC_CURSOR' 'RF05A-ABPOS' changing gt_bdc,
'RF05A-ABPOS' '1' changing gt_bdc.

call function 'AUTHORITY_CHECK_TCODE'


exporting
tcode = 'FB05'
exceptions
ok = 1
not_ok = 2
others = 3.

if sy-subrc = 1.
call transaction 'FB05' using gt_bdc
messages into gt_msg
options from ls_options.

* PERFORM zf_msg_fb05 USING gt_msg


* psi_com
* text-t03.

sort gt_msg by msgid msgnr.


read table gt_msg into ls_msg with key msgid = 'F5'
msgnr = '312' binary search.

if sy-subrc eq 0.

move: icon_green_light to ls_comdata_alv-icon,


ls_msg-msgv1 to ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.

else.
move: icon_red_light to ls_comdata_alv-icon,
* LS_msg-msgv1 TO ls_comdata_alv-doc_cont,
text-t03 to ls_comdata_alv-texto.
endif.

move: psi_com-sociedad to ls_comdata_alv-sociedad,


psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount.
***************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-
payment_amount WITH ','.
***************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-issued_amount
WITH ','.

append ls_comdata_alv to gt_comdata_alv.


else.
"Falta autorizacion
move: psi_com-sociedad to ls_comdata_alv-sociedad,
psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount,
icon_red_light to ls_comdata_alv-icon,
text-e06 to ls_comdata_alv-texto.

******************* REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-


payment_amount WITH ','.
******************* REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-
issued_amount WITH ','.

append ls_comdata_alv to gt_comdata_alv.


endif.
endform. " ZF_FB05_DISTINTOS

*&---------------------------------------------------------------------*
*& Form ZF_BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0339 text
* -->P_0340 text
* <--P_GT_BDC_TABLE text
*----------------------------------------------------------------------*
form zf_bdc_dynpro using pi_programa type bdc_prog "Se pone el type [Kiuwan]
pi_dynpro type bdc_dynr "Se pone el type [Kiuwan]
changing pto_bdc type tab_bdcdata.

clear gs_bdc_table.
gs_bdc_table-program = pi_programa.
gs_bdc_table-dynpro = pi_dynpro.
gs_bdc_table-dynbegin = 'X'.
append gs_bdc_table to pto_bdc.

endform. " ZF_BDC_DYNPRO

*&---------------------------------------------------------------------*
*& Form ZF_BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form zf_bdc_field using pi_fnam "value(fnam)
pi_fval "value(fval)
changing pto_bdc type tab_bdcdata.

clear gs_bdc_table.
gs_bdc_table-fnam = pi_fnam.
gs_bdc_table-fval = pi_fval.
append gs_bdc_table to pto_bdc.
endform. "zf_bdc_field
*&---------------------------------------------------------------------*
*& Form ZF_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form zf_display.

data: gr_table type ref to cl_salv_table.


data: gr_functions type ref to cl_salv_functions_list.

cl_salv_table=>factory( importing r_salv_table = gr_table


changing t_table = gt_comdata_alv ).

gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
gr_table->display( ).

endform. " ZF_DISPLAY


*&---------------------------------------------------------------------*
*& Form ZF_REGISTROS_ERR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form zf_registros_err.

data: ls_comdata_err type tyt_comdata_fb05,


ls_comdata_alv type zfi_compdata_alv.

"DATA: lv_texto TYPE char20.

loop at gt_comdata_err into ls_comdata_err.

case: ls_comdata_err-a_b.

when '3'.
"Pago ya compensado. Registro previamente procesado
move: text-e03 to ls_comdata_alv-texto.

when '4'.
"Pago check/payment distinto proveedor en doc: & ya existe
concatenate: text-e01 text-e02 into ls_comdata_alv-texto.
replace all occurrences of '&' in ls_comdata_alv-texto with ls_comdata_err-
belnr.

when '5'.
"Pago check/payment en doc: & ya existe
move: text-e05 to ls_comdata_alv-texto.
replace all occurrences of '&' in ls_comdata_alv-texto with ls_comdata_err-
belnr.
*
* WHEN OTHERS.

endcase.

move: ls_comdata_err-sociedad to ls_comdata_alv-sociedad,


ls_comdata_err-vendor_id to ls_comdata_alv-vendor_id,
ls_comdata_err-payment_number to ls_comdata_alv-payment_number,
ls_comdata_err-processed_date to ls_comdata_alv-processed_date,
ls_comdata_err-payment_amount to ls_comdata_alv-payment_amount,
icon_red_light to ls_comdata_alv-icon.

replace all occurrences of '.' in ls_comdata_err-issued_amount with ','.

move: ls_comdata_err-issued_amount to ls_comdata_alv-issued_amount.


append ls_comdata_alv to gt_comdata_alv.
endloop.

endform. " ZF_REGISTROS_ERR


*&---------------------------------------------------------------------*
*& Form ZF_FB05_IGUALES_C
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<LFS_COMDATA> text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_fb05_iguales_c using psi_com type tyt_comdata_fb05
changing pto_return type bapiret2_t.

data: ls_msg type bdcmsgcoll.

data: ls_options like ctu_params.


data: ls_bkpf type bkpf.
data: lv_xblnr type xblnr1,
lv_bktxt type bktxt,
lv_date(10) type c.
data: lv_belnr type belnr_d.
data: ls_comdata_alv type zfi_compdata_alv.
refresh: gt_bdc, gt_msg.

ls_options-dismode = 'N'.
ls_options-updmode = 'S'.
ls_options-nobinpt = 'X'.
ls_options-racommit = 'X'.

sort gt_bkpf by xblnr.


read table gt_bkpf into ls_bkpf with key xblnr = psi_com-payment_number
binary search.

move: psi_com-payment_number(8) to lv_belnr.


call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = lv_belnr
importing
output = lv_belnr.
concatenate psi_com-processed_date+3(2)
psi_com-processed_date(2)
psi_com-processed_date+6(4)
into lv_date separated by '.'.

concatenate text-t05 psi_com-processed_date into lv_bktxt separated by space.

perform zf_bdc_dynpro using:'SAPMF05A' '0122' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-XPOS1(04)' changing gt_bdc,
'BDC_OKCODE' '=SL' changing gt_bdc,
'BKPF-BLDAT' lv_date changing gt_bdc,
'BKPF-BLART' gv_docu changing gt_bdc,
* 'BKPF-BLART' 'zv' changing gt_bdc,
'BKPF-BUKRS' psi_com-sociedad changing gt_bdc,
'BKPF-BUDAT' lv_date changing gt_bdc,
'BKPF-MONAT' psi_com-processed_date(2) changing
gt_bdc,
'BKPF-WAERS' ls_bkpf-waers changing gt_bdc,
* 'BKPF-WAERS' 'USD' CHANGING gt_bdc,
'BKPF-XBLNR' psi_com-payment_number changing gt_bdc,
* 'BKPF-XBLNR' '0020000020' CHANGING gt_bdc,
'BKPF-BKTXT' lv_bktxt changing gt_bdc,
'RF05A-XPOS1(01)' ' ' changing gt_bdc,
'RF05A-XPOS1(02)' ' ' changing gt_bdc,
'RF05A-XPOS1(03)' ' ' changing gt_bdc,
'RF05A-XPOS1(04)' 'X' changing gt_bdc,
* 'BKPF-BKTXT' '20000020-T' CHANGING gt_bdc,
'RF05A-AUGTX' psi_com-payment_number changing gt_bdc.

perform zf_bdc_dynpro using:'SAPMF05A' '0710' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-XPOS1(03)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-AGBUK' psi_com-sociedad changing gt_bdc,
'RF05A-AGKON' gv_cuenta_d changing gt_bdc,
* 'RF05A-AGKON' '40170000' CHANGING gt_bdc,
'RF05A-XFIFO' 'X' changing gt_bdc, "Indicador:
Reparto automático por antigüedad
'RF05A-XAUTS' ' ' changing gt_bdc, "Indicador:
Busqueda automatica
'RF05A-AGKOA' 'S' changing gt_bdc,
'RF05A-XNOPS' 'X' changing gt_bdc,
'RF05A-XPOS1(01)' '' changing gt_bdc,
'RF05A-XPOS1(03)' 'X' changing gt_bdc.

perform zf_bdc_dynpro using:'SAPMF05A' '0731' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-SEL01(02)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-SEL01(01)' lv_belnr changing gt_bdc,
* 'RF05A-SEL01(01)' '20000020' CHANGING gt_bdc,
'RF05A-SEL01(02)' ls_bkpf-belnr changing gt_bdc.
* 'RF05A-SEL01(02)' '20000062' CHANGING gt_bdc.

perform zf_bdc_dynpro using:'SAPDF05X' '3100' changing gt_bdc.


perform zf_bdc_field using: """"'BDC_OKCODE' '=BU' CHANGING gt_bdc,
'BDC_CURSOR' 'RF05A-ABPOS' changing gt_bdc,
'RF05A-ABPOS' '1' changing gt_bdc.

call function 'AUTHORITY_CHECK_TCODE'


exporting
tcode = 'FB05'
exceptions
ok = 1
not_ok = 2
others = 3.

if sy-subrc = 1.

call transaction 'FB05' using gt_bdc


messages into gt_msg
options from ls_options.

* PERFORM zf_msg_fb05 USING gt_msg


* psi_com
* text-t04.

sort gt_msg by msgid msgnr.


read table gt_msg into ls_msg with key msgid = 'F5'
msgnr = '312' binary search.

if sy-subrc eq 0.

move: icon_green_light to ls_comdata_alv-icon,


ls_msg-msgv1 to ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.

else.
move: icon_red_light to ls_comdata_alv-icon,
* LS_msg-msgv1 TO ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.
endif.
********************* DATA: lv_payment_amount TYPE wrbtr,
********************* lv_issued_amount TYPE wrbtr.
********************* CLEAR: lv_payment_amount,
********************* lv_issued_amount.

*pack: "psi_com-payment_amount to lv_payment_amount,


* psi_com-issued_amount to lv_issued_amount.

move: psi_com-sociedad to ls_comdata_alv-sociedad,


psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount.

******************* REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-


payment_amount WITH ','.
******************* REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-
issued_amount WITH ','.

append ls_comdata_alv to gt_comdata_alv.


else.
"Falta autorizacion
move: psi_com-sociedad to ls_comdata_alv-sociedad,
psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount,
icon_red_light to ls_comdata_alv-icon,
text-e06 to ls_comdata_alv-texto.

**************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-payment_amount


WITH ','.
**************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-issued_amount
WITH ','.

append ls_comdata_alv to gt_comdata_alv.


endif.
endform. " ZF_FB05_IGUALES_C
*&---------------------------------------------------------------------*
*& Form ZF_FB05_DISTINTOS_C
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<LFS_COMDATA> text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_fb05_distintos_c using psi_com type tyt_comdata_fb05
changing pto_return type bapiret2_t.

data: lv_payment_amount type wrbtr,


lv_issued_amount type wrbtr.

data: lv_payment(16) type c,


lv_issued(16) type c.

move: psi_com-payment_amount to lv_payment,


psi_com-issued_amount to lv_issued.

* REPLACE ALL OCCURRENCES OF ',' IN psi_com-payment_amount WITH '.'. "16.11.2017


* REPLACE ALL OCCURRENCES OF ',' IN psi_com-issued_amount WITH '.'. "16.11.2017
replace all occurrences of ',' in lv_payment with space.
replace all occurrences of ',' in lv_issued with space.

clear: lv_payment_amount,
lv_issued_amount.

pack: lv_payment to lv_payment_amount,


lv_issued to lv_issued_amount.

if lv_payment_amount > lv_issued_amount.

perform zf_fb05_c_distintos_may using psi_com


"lv_payment_amount
lv_issued_amount
lv_issued
changing pto_return. "TYPE bapiret2_t.
*FB05_C_MAYOR
else.
*FB05_C_MENOR
perform zf_fb05_c_distintos_men using psi_com
"lv_payment_amount
lv_issued_amount
lv_issued
changing pto_return. "TYPE bapiret2_t.
endif.
endform. " ZF_FB05_DISTINTOS_C
*&---------------------------------------------------------------------*
*& Form ZF_BSIS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LS_COMDATA_SOCIEDAD text
* -->P_LV_HKONT text
* -->P_LV_GJAHR text
* -->P_LV_BELNR text
* <--P_LS_BSIS text
*----------------------------------------------------------------------*
form zf_bsis using pi_sociedad type bukrs
pi_hkont type hkont
pi_gjahr type gjahr
pi_belnr type belnr_d
changing pso_bsis type bsis
po_subrc type sy-subrc.

select single *
from bsis
into pso_bsis
where bukrs = pi_sociedad and
hkont = pi_hkont and
gjahr = pi_gjahr and
belnr = pi_belnr.

if sy-subrc eq 0.
move: sy-subrc to po_subrc.
else.
move: '4' to po_subrc.
endif.
endform. " ZF_BSIS
*&---------------------------------------------------------------------*
*& Form ZF_BSAK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LS_COMDATA_SOCIEDAD text
* -->P_LS_COMDATA_VENDOR_ID text
* -->P_LV_GJAHR text
* -->P_LV_BELNR text
* <--P_LS_BSAK text
* <--P_LV_SUBRC text
*----------------------------------------------------------------------*
form zf_bsak using pi_sociedad type bukrs
pi_vendor_id type lifnr
pi_gjahr type gjahr
pi_belnr type belnr_d
changing pso_bsak type bsak
po_subrc type sy-subrc.

select single *
from bsak
into pso_bsak
where bukrs eq pi_sociedad and
lifnr eq pi_vendor_id and
umsks eq abap_false and
umskz eq abap_false and
gjahr eq pi_gjahr and
belnr eq pi_belnr.

if sy-subrc eq 0.
move: sy-subrc to po_subrc.
else.
move: '4' to po_subrc.
endif.
endform. " ZF_BSAK
*&---------------------------------------------------------------------*
*& Form ZF_BKPF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LS_COMDATA_SOCIEDAD text
* -->P_LS_COMDATA_PAYMENT_NUMBER text
* -->P_GV_DOCU text
* <--P_LS_BKPF text
* <--P_LV_SUBRC text
*----------------------------------------------------------------------*
form zf_bkpf using pi_sociedad type bukrs
pi_payment_number type char16
changing pso_bkpf type bkpf
po_subrc type sy-subrc.

select single *
from bkpf
into pso_bkpf
where bukrs eq pi_sociedad and
xblnr eq pi_payment_number and
stblg eq abap_false and
blart eq gv_docu.

if sy-subrc eq 0.
move: sy-subrc to po_subrc.
append pso_bkpf to gt_bkpf.
else.
move: '4' to po_subrc.
endif.

endform. " ZF_BKPF


*&---------------------------------------------------------------------*
*& Form ZF_MSG_FB05
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_MSG text
*----------------------------------------------------------------------*
form zf_msg_fb05 using pti_msg type tab_bdcmsgcoll
psi_com type tyt_comdata_fb05
psi_texto type inum.

data: ls_msg type bdcmsgcoll.


data: ls_comdata_alv type zfi_compdata_alv.
data: lv_payment_amount type wrbtr,
lv_issued_amount type wrbtr.
sort pti_msg by msgid msgnr.
read table pti_msg into ls_msg with key msgid = 'F5'
msgnr = '312' binary search.

if sy-subrc eq 0.

move: icon_green_light to ls_comdata_alv-icon,


ls_msg-msgv1 to ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.

else.
move: icon_red_light to ls_comdata_alv-icon,
** LS_msg-msgv1 TO ls_comdata_alv-doc_cont,
* text-t04 TO ls_comdata_alv-texto.
psi_texto to ls_comdata_alv-texto.
endif.

clear: lv_payment_amount,
lv_issued_amount.

move: psi_com-sociedad to ls_comdata_alv-sociedad,


psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount.

replace all occurrences of '.' in ls_comdata_alv-payment_amount with ','.


replace all occurrences of '.' in ls_comdata_alv-issued_amount with ','.

append ls_comdata_alv to gt_comdata_alv.


endform. " ZF_MSG_FB05
*&---------------------------------------------------------------------*
*& Form ZF_FB05_C_DISTINTOS_MAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PSI_COM text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_fb05_c_distintos_may using psi_com type tyt_comdata_fb05
"pi_payment_amount
pi_issued_amount type wrbtr
pi_issued type char16
changing pto_return type bapiret2_t.

data: ls_msg type bdcmsgcoll,


ls_options like ctu_params,
ls_bkpf type bkpf,
ls_bsak type bsak,
ls_bsis type bsis.
data: lv_xblnr type xblnr1,
lv_bktxt type bktxt,
lv_date(10) type c,
lv_augtx type augtx_f05a,
lv_belnr type belnr_d.
data: lv_issued_amount type wrbtr.
data: ls_comdata_alv type zfi_compdata_alv.

refresh: gt_bdc, gt_msg.

ls_options-dismode = 'N'.
ls_options-updmode = 'S'.
ls_options-nobinpt = 'X'.
ls_options-racommit = 'X'.

sort gt_bkpf by xblnr.


read table gt_bkpf into ls_bkpf with key xblnr = psi_com-payment_number
binary search.

move: psi_com-payment_number(8) to lv_belnr.


call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = lv_belnr
importing
output = lv_belnr.

concatenate psi_com-processed_date+3(2)
psi_com-processed_date(2)
psi_com-processed_date+6(4)
into lv_date separated by '.'.

* DATA: LV_WRBTR TYPE BSEG-WRBTR.


* REPLACE ALL OCCURRENCES OF '.' IN pi_issued_amount WITH ','.
*CONDENSE pi_issued_amount NO-GAPS.
replace all occurrences of '.' in pi_issued with ','.
condense pi_issued no-gaps .
* CLEAR: lv_issued_amount.
* PACK: PI_ISSUED TO lv_issued_amount.

* CONCATENATE 'COMPDATA RETORNO' psi_com-processed_date INTO lv_bktxt SEPARATED BY


space.
sort gt_bsak by belnr.
read table gt_bsak into ls_bsak with key belnr = lv_belnr binary search.
"psi_com-payment_number.

concatenate ls_bsak-xblnr ls_bsak-gjahr into lv_xblnr.


* CONCATENATE psi_com-payment_number(8) '-T' INTO lv_bktxt.
* CONCATENATE psi_com-payment_number(8) '-C' INTO lv_augtx.
concatenate text-t05 psi_com-processed_date into lv_bktxt separated by space.

sort gt_bsis by belnr.


read table gt_bsis into ls_bsis with key belnr = lv_belnr binary search.
"psi_com-payment_number.

perform zf_bdc_dynpro using:'SAPMF05A' '0122' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-NEWKO' changing gt_bdc,
'BDC_OKCODE' '/00' changing gt_bdc,
'BKPF-BLDAT' lv_date changing gt_bdc,
'BKPF-BLART' gv_docu changing gt_bdc,
* 'BKPF-BLART' 'zv' CHANGING gt_bdc,
'BKPF-BUKRS' psi_com-sociedad changing gt_bdc,
'BKPF-BUDAT' lv_date changing gt_bdc,
'BKPF-MONAT' psi_com-processed_date(2) changing
gt_bdc,
'BKPF-WAERS' ls_bkpf-waers changing gt_bdc,
* 'BKPF-WAERS' 'USD' CHANGING gt_bdc,
'BKPF-XBLNR' psi_com-payment_number changing gt_bdc,
"lv_belnr
'BKPF-BKTXT' lv_bktxt changing gt_bdc,
'RF05A-AUGTX' psi_com-payment_number changing gt_bdc,
'RF05A-XPOS1(01)' ' ' changing gt_bdc,
'RF05A-XPOS1(02)' ' ' changing gt_bdc,
'RF05A-XPOS1(03)' ' ' changing gt_bdc,
'RF05A-XPOS1(04)' 'X' changing gt_bdc,
'RF05A-NEWBS' '31' changing gt_bdc, "<--
'RF05A-NEWKO' psi_com-vendor_id changing gt_bdc. "<--
lifnr de entra
* 'RF05A-NEWKO' 'J5JL' CHANGING gt_bdc. "<--lifnr de
entra

perform zf_bdc_dynpro using:'SAPMF05A' '0302' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-ZFBDT' changing gt_bdc,
'BDC_OKCODE' '=SL' changing gt_bdc,
'BSEG-WRBTR' pi_issued changing gt_bdc, "<-- Issued
Amount
* 'BSEG-WRBTR' pi_issued_amount CHANGING gt_bdc, "<--
Issued Amount
* 'BSEG-WRBTR' '1000' CHANGING gt_bdc, "<-- Issued
Amount
* 'BSEG-MWSKZ' '**' CHANGING gt_bdc,
'BSEG-GSBER' ls_bsis-gsber changing gt_bdc, "<-- bsis
* 'BSEG-GSBER' 'WC0' CHANGING gt_bdc, "<-- bsis
* 'BSEG-ZTERM' 'D030' CHANGING gt_bdc,
* 'BSEG-ZBD1T' '30' CHANGING gt_bdc, "<--
* 'BSEG-ZFBDT' '14.11.2017' CHANGING gt_bdc, "<--
'BSEG-ZLSCH' 'V' changing gt_bdc. "<--

perform zf_bdc_dynpro using:'SAPMF05A' '0710' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-XPOS1(03)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-AGBUK' psi_com-sociedad changing gt_bdc,
'RF05A-AGKON' gv_cuenta_d changing gt_bdc,
'RF05A-XFIFO' 'X' changing gt_bdc, "Indicador:
Reparto automático por antigüedad
'RF05A-XAUTS' ' ' changing gt_bdc, "Indicador:
Busqueda automatica
'RF05A-AGKOA' 'S' changing gt_bdc,
'RF05A-XNOPS' 'X' changing gt_bdc,
'RF05A-XPOS1(01)' '' changing gt_bdc,
'RF05A-XPOS1(03)' 'X' changing gt_bdc.

perform zf_bdc_dynpro using:'SAPMF05A' '0731' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-SEL01(02)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-SEL01(01)' lv_belnr changing gt_bdc, " fichero
* 'RF05A-SEL01(01)' '20000025' CHANGING gt_bdc, "
fichero
' RF05A-SEL01(02)' ls_bkpf-belnr changing gt_bdc.
"bkpf-belnr
*' RF05A-SEL01(02)' '20000063' CHANGING gt_bdc. "bkpf-
belnr
perform zf_bdc_dynpro using:'SAPDF05X' '3100' changing gt_bdc.
perform zf_bdc_field using: 'BDC_OKCODE' '=BU' changing gt_bdc,
'BDC_CURSOR' 'RF05A-ABPOS' changing gt_bdc,
'RF05A-ABPOS' '1' changing gt_bdc.

call function 'AUTHORITY_CHECK_TCODE'


exporting
tcode = 'FB05'
exceptions
ok = 1
not_ok = 2
others = 3.

if sy-subrc = 1.
call transaction 'FB05' using gt_bdc
messages into gt_msg
options from ls_options.

* PERFORM zf_msg_fb05 USING gt_msg


* psi_com
* text-t03.

sort gt_msg by msgid msgnr.


read table gt_msg into ls_msg with key msgid = 'F5'
msgnr = '312' binary search.

if sy-subrc eq 0.

move: icon_green_light to ls_comdata_alv-icon,


ls_msg-msgv1 to ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.

else.
move: icon_red_light to ls_comdata_alv-icon,
* LS_msg-msgv1 TO ls_comdata_alv-doc_cont,
text-t03 to ls_comdata_alv-texto.
endif.
******************* DATA: lv_payment_amount TYPE wrbtr.
******************* "lv_issued_amount TYPE wrbtr.
******************* CLEAR: lv_payment_amount,
******************* lv_issued_amount.

*pack: "psi_com-payment_amount to lv_payment_amount,


* psi_com-issued_amount to lv_issued_amount.

move: psi_com-sociedad to ls_comdata_alv-sociedad,


psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount.

****************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-


payment_amount WITH ','.
****************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-
issued_amount WITH ','.

append ls_comdata_alv to gt_comdata_alv.


else.
"Falta autorizacion
move: psi_com-sociedad to ls_comdata_alv-sociedad,
psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount,
icon_red_light to ls_comdata_alv-icon,
text-e06 to ls_comdata_alv-texto.

******************* REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-


payment_amount WITH ','.
******************* REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-
issued_amount WITH ','.

append ls_comdata_alv to gt_comdata_alv.


endif.
endform. " ZF_FB05_C_DISTINTOS_MAY
*&---------------------------------------------------------------------*
*& Form ZF_FB05_C_DISTINTOS_MEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PSI_COM text
* -->P_LV_ISSUED_AMOUNT text
* <--P_PTO_RETURN text
*----------------------------------------------------------------------*
form zf_fb05_c_distintos_men using psi_com type tyt_comdata_fb05
"pi_payment_amount
pi_issued_amount type wrbtr
pi_issued type char16
changing pto_return type bapiret2_t.

data: ls_msg type bdcmsgcoll,


ls_options like ctu_params,
ls_bkpf type bkpf,
ls_bsak type bsak,
ls_bsis type bsis.
data: lv_xblnr type xblnr1,
lv_bktxt type bktxt,
lv_date(10) type c,
lv_belnr type belnr_d.

data: ls_comdata_alv type zfi_compdata_alv.


"DATA: "LV_BKTXT TYPE BKTXT,
"lv_augtx TYPE augtx_f05a.
data: lv_issued_amount type wrbtr.
refresh: gt_bdc, gt_msg.

ls_options-dismode = 'N'.
ls_options-updmode = 'S'.
ls_options-nobinpt = 'X'.
ls_options-racommit = 'X'.

sort gt_bkpf by xblnr.


read table gt_bkpf into ls_bkpf with key xblnr = psi_com-payment_number
binary search.

move: psi_com-payment_number(8) to lv_belnr.


call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = lv_belnr
importing
output = lv_belnr.

concatenate psi_com-processed_date+3(2)
psi_com-processed_date(2)
psi_com-processed_date+6(4)
into lv_date separated by '.'.

sort gt_bsak by belnr.


read table gt_bsak into ls_bsak with key belnr = lv_belnr binary search.
"psi_com-payment_number.

concatenate ls_bsak-xblnr ls_bsak-gjahr into lv_xblnr.


* CONCATENATE ls_bsak-xblnr ls_bsak-gjahr INTO lv_xblnr.
* CONCATENATE psi_com-payment_number(8) '-T' INTO lv_bktxt.
* CONCATENATE psi_com-payment_number(8) '-C' INTO lv_augtx.

"CONCATENATE 'COMPDATA RETORNO' psi_com-processed_date INTO lv_bktxt SEPARATED BY


space.

concatenate text-t05 psi_com-processed_date into lv_bktxt separated by space.

replace all occurrences of '.' in pi_issued with ','.


condense pi_issued no-gaps.
* CLEAR: lv_issued_amount.
* PACK: pi_issued TO lv_issued_amount.

sort gt_bsis by belnr.


read table gt_bsis into ls_bsis with key belnr = lv_belnr binary search.
"psi_com-payment_number.

sort gt_bkpf by xblnr.


read table gt_bkpf into ls_bkpf with key xblnr = psi_com-payment_number binary
search.
*--------------------------------------------------------------------*
perform zf_bdc_dynpro using: 'SAPMF05A' '0122' changing gt_bdc.
perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-NEWKO' changing gt_bdc,
'BDC_OKCODE' '=SL' changing gt_bdc,
'BKPF-BLDAT' lv_date changing gt_bdc,
'BKPF-BLART' gv_docu changing gt_bdc,
'BKPF-BUKRS' psi_com-sociedad changing gt_bdc,
'BKPF-BUDAT' lv_date changing gt_bdc,
'BKPF-MONAT' psi_com-processed_date(2) changing
gt_bdc,
'BKPF-WAERS' ls_bkpf-waers changing gt_bdc,
'BKPF-XBLNR' psi_com-payment_number changing gt_bdc,
'BKPF-BKTXT' lv_bktxt changing gt_bdc,
'RF05A-AUGTX' psi_com-payment_number changing gt_bdc,
'RF05A-XPOS1(01)' ' ' changing gt_bdc,
'RF05A-XPOS1(02)' ' ' changing gt_bdc,
'RF05A-XPOS1(03)' ' ' changing gt_bdc,
'RF05A-XPOS1(04)' 'X' changing gt_bdc,
'RF05A-NEWBS' '21' changing gt_bdc,
'RF05A-NEWKO' psi_com-vendor_id changing gt_bdc.
* 'RF05A-NEWKO' 'J5JL' CHANGING gt_bdc.
perform zf_bdc_dynpro using: 'SAPMF05A' '0302' changing gt_bdc.
perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-GSBER' changing gt_bdc,
'BDC_OKCODE' '=ZK' changing gt_bdc,
'BSEG-WRBTR' pi_issued changing gt_bdc,
* 'BSEG-WRBTR' lv_issued_amount CHANGING gt_bdc,
* 'BSEG-WRBTR' pi_issued_amount CHANGING gt_bdc,
* 'BSEG-MWSKZ' '**' CHANGING gt_bdc,
'BSEG-GSBER' ls_bsis-gsber changing gt_bdc.
* 'BSEG-ZTERM' 'D001' CHANGING gt_bdc.
* 'BSEG-ZFBDT' '14.11.2017' CHANGING gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0332' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'BSEG-DMBE2' changing gt_bdc,
'BDC_OKCODE' '=SL' changing gt_bdc.
* 'BSEG-DMBE2' '4,62' CHANGING gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0710' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-XPOS1(03)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-AGBUK' ls_bsis-bukrs changing gt_bdc,
'RF05A-AGKON' gv_cuenta_d changing gt_bdc,
'RF05A-XFIFO' 'X' changing gt_bdc, "Indicador: Reparto automático por antigüedad
'RF05A-XAUTS' ' ' changing gt_bdc, "Indicador: Busqueda automatica
'RF05A-AGKOA' 'S' changing gt_bdc,
'RF05A-XNOPS' 'X' changing gt_bdc,
'RF05A-XPOS1(01)' '' changing gt_bdc,
'RF05A-XPOS1(03)' 'X' changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPMF05A' '0731' changing gt_bdc.


perform zf_bdc_field using: 'BDC_CURSOR' 'RF05A-SEL01(02)' changing gt_bdc,
'BDC_OKCODE' '=PA' changing gt_bdc,
'RF05A-SEL01(01)' lv_belnr changing gt_bdc,
'RF05A-SEL01(02)' ls_bkpf-belnr changing gt_bdc.

perform zf_bdc_dynpro using: 'SAPDF05X' '3100' changing gt_bdc.


perform zf_bdc_field using: 'BDC_OKCODE' '=BU' changing gt_bdc,
'BDC_CURSOR' 'RF05A-ABPOS' changing gt_bdc,
'RF05A-ABPOS' '1' changing gt_bdc.

*--------------------------------------------------------------------*

call function 'AUTHORITY_CHECK_TCODE'


exporting
tcode = 'FB05'
exceptions
ok = 1
not_ok = 2
others = 3.

if sy-subrc = 1.
call transaction 'FB05' using gt_bdc
messages into gt_msg
options from ls_options.

* PERFORM zf_msg_fb05 USING gt_msg


* psi_com
* text-t03.
sort gt_msg by msgid msgnr.
read table gt_msg into ls_msg with key msgid = 'F5'
msgnr = '312' binary search.

if sy-subrc eq 0.

move: icon_green_light to ls_comdata_alv-icon,


ls_msg-msgv1 to ls_comdata_alv-doc_cont,
text-t04 to ls_comdata_alv-texto.

else.
move: icon_red_light to ls_comdata_alv-icon,
* LS_msg-msgv1 TO ls_comdata_alv-doc_cont,
text-t03 to ls_comdata_alv-texto.
endif.
***************** DATA: lv_payment_amount TYPE wrbtr,
***************** lv_issued_amount TYPE wrbtr.
***************** CLEAR: lv_payment_amount,
***************** lv_issued_amount.

*pack: "psi_com-payment_amount to lv_payment_amount,


* psi_com-issued_amount to lv_issued_amount.

move: psi_com-sociedad to ls_comdata_alv-sociedad,


psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount.

**************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-payment_amount


WITH ','.
**************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-issued_amount
WITH ','.

append ls_comdata_alv to gt_comdata_alv.


else.
"Falta autorizacion
move: psi_com-sociedad to ls_comdata_alv-sociedad,
psi_com-vendor_id to ls_comdata_alv-vendor_id,
psi_com-payment_number to ls_comdata_alv-payment_number,
psi_com-processed_date to ls_comdata_alv-processed_date,
psi_com-payment_amount to ls_comdata_alv-payment_amount,
psi_com-issued_amount to ls_comdata_alv-issued_amount,
icon_red_light to ls_comdata_alv-icon,
text-e06 to ls_comdata_alv-texto.

******************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-


payment_amount WITH ','.
******************** REPLACE ALL OCCURRENCES OF '.' IN ls_comdata_alv-
issued_amount WITH ','.

append ls_comdata_alv to gt_comdata_alv.


endif.
endform. " ZF_FB05_C_DISTINTOS_MEN

You might also like