You are on page 1of 4

TYPES :BEGIN OF ty_six_record,

dr001(1) TYPE c,
dr002(3) TYPE c,
dr003(3) TYPE c,
dr004(10) TYPE c,
dr005(9) TYPE c,
dr006(10) TYPE c ,
dr007(9) TYPE c,
dr008(50) TYPE c,
END OF ty_six_record,
BEGIN OF lty_file_4,
or001(1) TYPE c,
or002(3) TYPE c,
or003(3) TYPE c,
or004(1) TYPE c,
or005(2) TYPE c,
or006(1) TYPE c,
ivcnr(16) TYPE c,
pyamt(10) TYPE c,
ddamt(10) TYPE c,
restg(3) TYPE c,
or011(50) TYPE c,
flag TYPE c,
END OF lty_file_4,
BEGIN OF lty_bsid,
bukrs TYPE bukrs,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
buzei TYPE buzei,
xblnr TYPE xblnr1,
rebzg TYPE rebzg,
END OF lty_bsid.

TYPES : BEGIN OF lty_file," OCCURS 500,


string(300) TYPE c,
END OF lty_file.
*
DATA : lt_file TYPE TABLE OF lty_file,
lt_file_6 TYPE TABLE OF ty_six_record,
lwa_file_6 TYPE ty_six_record,
lwa_file TYPE lty_file,
lt_file_4 TYPE TABLE OF lty_file_4,
lwa_file_4 TYPE lty_file_4,
lwa_avip TYPE avip,
lt_avip_xblnr TYPE TABLE OF avip,
lt_avip_belnr TYPE TABLE OF avip,
lwa_lavip TYPE lxavip,
lwa_avir TYPE avir.

DATA :lv_file(17) TYPE c VALUE '(RFEBLB20)FILE[]',


lc_febep(15) TYPE c VALUE '(RFEBLB20)FEBEP',
* lv_avsid TYPE avsid,
lv_or011(50) TYPE c,
lv_swert_tmp TYPE avip-swert.
DATA : ident(1) TYPE c.

DATA : lt_bsid_belnr TYPE TABLE OF lty_bsid,


lt_bsid_xblnr TYPE TABLE OF lty_bsid,
ls_bsid TYPE lty_bsid,
lt_accchg TYPE TABLE OF accchg,
ls_accchg TYPE accchg.

CONSTANTS : lc_lead(1) VALUE '*',


lc_01 TYPE avik-avsrt VALUE '01'.

FIELD-SYMBOLS : <file> TYPE table,


<febep> TYPE febep,
<lwa_file_4> TYPE lty_file_4,
<lfs_bsid> TYPE lty_bsid.
e_avik = i_avik. " never delete this line

ASSIGN (lv_file) TO <file>.


IF <file> IS ASSIGNED.
lt_file = <file>.
ENDIF.

ASSIGN (lc_febep) TO <febep>.

LOOP AT lt_file INTO lwa_file.


ident = lwa_file+0(1).
IF ident = '6' AND lwa_file+45 IS NOT INITIAL.
MOVE lwa_file-string TO lwa_file_6.
APPEND lwa_file_6 TO lt_file_6.
CLEAR : lwa_file_6.
ELSEIF ident = '4' AND lwa_file+50 IS NOT INITIAL.
MOVE lwa_file-string TO lwa_file_4.
APPEND lwa_file_4 TO lt_file_4.
CLEAR : lwa_file_4.
ENDIF.
CLEAR : lwa_file, ident.
ENDLOOP.

* lv_avsid = i_avik-avsid.
* SHIFT lv_avsid BY 2 PLACES.
CLEAR : lwa_file_6.
READ TABLE lt_file_6 INTO lwa_file_6
INDEX <febep>-esnum.
IF sy-subrc = 0 AND <febep> IS ASSIGNED.
<febep>-zuonr = lwa_file_6-dr008+10.
ENDIF.

lt_avip_xblnr = t_avip[].
lt_avip_belnr = t_avip[].

DELETE lt_avip_xblnr WHERE xblnr = space.


DELETE lt_avip_belnr WHERE belnr = space.
IF lt_avip_xblnr IS NOT INITIAL.
SELECT bukrs gjahr belnr
buzei xblnr rebzg FROM bsid
INTO TABLE lt_bsid_xblnr
FOR ALL ENTRIES IN lt_avip_xblnr[]
WHERE bukrs = lt_avip_xblnr-bukrs
* AND gjahr = t_avip-gjahr
AND xblnr = lt_avip_xblnr-xblnr.
ENDIF.
IF lt_avip_belnr IS NOT INITIAL.
SELECT bukrs gjahr belnr
buzei xblnr rebzg FROM bsid
INTO TABLE lt_bsid_belnr
FOR ALL ENTRIES IN lt_avip_belnr[]
WHERE bukrs = lt_avip_belnr-bukrs
AND belnr = lt_avip_belnr-belnr.
ENDIF.
LOOP AT t_avip INTO lwa_avip.
CLEAR : lwa_lavip, lv_swert_tmp.
lv_swert_tmp = lwa_avip-swert.
*Customer Reference not identified will have * prepended
SHIFT lv_swert_tmp LEFT DELETING LEADING lc_lead.
*Get corresponding line from BAI2 file
READ TABLE lt_file_4 ASSIGNING <lwa_file_4> WITH KEY
ivcnr = lv_swert_tmp
restg = lwa_avip-restg
flag = ''.

IF sy-subrc <> 0.
SHIFT lv_swert_tmp LEFT DELETING LEADING '0'.
READ TABLE lt_file_4 ASSIGNING <lwa_file_4> WITH KEY
ivcnr = lv_swert_tmp
restg = lwa_avip-restg
flag = ''.
ENDIF.
IF sy-subrc EQ space.
lv_or011 = <lwa_file_4>-or011. "Filler Record on 4 record in BAI2 file
lwa_avip-xref2 = lwa_avip-avspo.
lwa_avip-sgtxt = lv_or011.
<lwa_file_4>-flag = 'X'.
ENDIF.
READ TABLE lt_bsid_xblnr INTO ls_bsid WITH KEY xblnr = lwa_avip-xblnr.
IF sy-subrc = 0.
IF ls_bsid-rebzg IS NOT INITIAL.
lwa_avip-belnr = ls_bsid-rebzg.
ELSE.
lwa_avip-belnr = ls_bsid-belnr.
ENDIF.
ls_accchg-fdname = 'XREF3'.
ls_accchg-newval = lv_or011+18(20).
APPEND ls_accchg TO lt_accchg.
CLEAR : ls_accchg.
CALL FUNCTION 'FI_DOCUMENT_CHANGE'
EXPORTING
* i_kunnr = lwa_avip-konto
i_buzei = ls_bsid-buzei
x_lock = 'X'
i_bukrs = ls_bsid-bukrs
i_belnr = ls_bsid-belnr
i_gjahr = ls_bsid-gjahr
TABLES
t_accchg = lt_accchg.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.
READ TABLE lt_bsid_belnr INTO ls_bsid WITH KEY belnr = lwa_avip-belnr.
IF sy-subrc = 0.
ls_accchg-fdname = 'XREF3'.
ls_accchg-newval = lv_or011+18(20).
APPEND ls_accchg TO lt_accchg.
CLEAR : ls_accchg.
CALL FUNCTION 'FI_DOCUMENT_CHANGE'
EXPORTING
* i_kunnr = lwa_avip-konto
i_buzei = ls_bsid-buzei
x_lock = 'X'
i_bukrs = ls_bsid-bukrs
i_belnr = ls_bsid-belnr
i_gjahr = ls_bsid-gjahr
TABLES
t_accchg = lt_accchg.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
MODIFY t_avip FROM lwa_avip. "Modifying AVIP table
CLEAR : lv_or011, lwa_file_4, lwa_avip,ls_bsid,lt_accchg.
* UNASSIGN <lwa_file_4>.
ENDLOOP.

You might also like