0% found this document useful (0 votes)
308 views5 pages

FM Code To Clear Customer Open Item

This function clears documents for a customer number, fiscal year, and document number. It gets open items for a customer, then loops through the items to generate clearing documents and update log tables, returning a message and record count.

Uploaded by

bhaskar_yogendra
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)
308 views5 pages

FM Code To Clear Customer Open Item

This function clears documents for a customer number, fiscal year, and document number. It gets open items for a customer, then loops through the items to generate clearing documents and update log tables, returning a message and record count.

Uploaded by

bhaskar_yogendra
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/ 5

FUNCTION zfm_clear_documents_kunnr.

*"----------------------------------------------------------------------

*"*"Local Interface:

*" IMPORTING

*" VALUE(I_KUNNR) TYPE LIFNR

*" VALUE(I_BELNR) TYPE BELNR_D

*" VALUE(I_KEYDATE) TYPE BAPI3007-KEY_DATE DEFAULT '20141231'

*" VALUE(I_FISYR) TYPE CHAR4

*" VALUE(I_BUKRS) TYPE BUKRS

*" EXPORTING

*" VALUE(E_MESSAGE) TYPE CHAR20

*" VALUE(E_RECORDCOUNT) TYPE INT4

*" TABLES

*" ET_ZDT_CUST_DET STRUCTURE ZDT_VEND_DET OPTIONAL

*" IT_LINEITEMS STRUCTURE BAPI3007_2 OPTIONAL

*"----------------------------------------------------------------------

TYPES: BEGIN OF ty_belnr,

sign(1),

option(2),

low TYPE augbl,

high TYPE augbl,

END OF ty_belnr.

DATA: t_lineitems TYPE TABLE OF bapi3007_2,

w_lineitems TYPE bapi3007_2,

t_belnr TYPE TABLE OF ty_belnr,

w_belnr TYPE ty_belnr,

t_bsad TYPE TABLE OF bsad,

w_bsid TYPE bsid,

w_bsad TYPE bsad,

t_zdt_cust_det TYPE TABLE OF zdt_cust_det,


w_zdt_cust_det TYPE zdt_cust_det,

w_return TYPE bapireturn,

l_kunnr TYPE kunnr VALUE '474',

t_ausz1 TYPE TABLE OF ausz1,

w_ausz1 TYPE ausz1,

t_ausz2 TYPE TABLE OF ausz2,

w_ausz2 TYPE ausz2,

l_belnr TYPE belnr_d,

l_count TYPE int4,

l_fisyr TYPE char4,

l_sno TYPE int4,

l_postingdate TYPE budat,

t_bsik TYPE TABLE OF bsik.

CLEAR: w_ausz1,w_ausz2,w_lineitems,l_count,l_kunnr,

l_postingdate,w_lineitems,l_belnr,l_fisyr,

e_recordcount.

REFRESH: t_lineitems[],t_ausz1,t_ausz2.

l_kunnr = i_kunnr.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = l_kunnr

IMPORTING

output = l_kunnr.

l_belnr = i_belnr.

l_fisyr = i_fisyr.

l_postingdate = i_keydate.

CALL FUNCTION 'BAPI_AP_ACC_GETOPENITEMS'

EXPORTING

companycode = i_bukrs
customer = l_kunnr

keydate = l_postingdate

IMPORTING

return = w_return

TABLES

lineitems = t_lineitems.

SORT t_lineitems BY doc_no ASCENDING.

DELETE t_lineitems WHERE clr_doc_no <> space.

* delete ADJACENT DUPLICATES FROM t_lineitems COMPARING doc_no.

SELECT SINGLE * FROM bsid INTO w_bsid WHERE bukrs = i_bukrs AND

kunnr = l_kunnr AND

belnr = l_belnr.

IF sy-subrc = 0.

SORT t_lineitems[] BY pstng_date ASCENDING item_num ASCENDING.

DESCRIBE TABLE t_lineitems LINES l_count.

LOOP AT t_lineitems INTO w_lineitems.

e_recordcount = e_recordcount + 1.

w_ausz1-belnr = w_lineitems-doc_no.

w_ausz1-bukrs = w_lineitems-comp_code.

w_ausz1-gjahr = w_lineitems-fisc_year.

w_ausz1-buzei = w_lineitems-item_num.

APPEND w_ausz1 TO t_ausz1.

w_ausz2-bukrs = w_bsid-bukrs.

w_ausz2-aktio = 'A'.

w_ausz2-augbl = w_bsid-belnr.

w_ausz2-augdt = l_postingdate.

w_ausz2-auggj = w_bsid-gjahr.

APPEND w_ausz2 TO t_ausz2.

CALL FUNCTION 'CLEAR_DOCUMENTS' " IN UPDATE TASK

TABLES
t_ausz1 = t_ausz1

t_ausz2 = t_ausz2.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

w_belnr-sign = 'I'.

w_belnr-option = 'EQ'.

w_belnr-low = w_lineitems-doc_no.

APPEND w_belnr TO t_belnr.

CLEAR: w_lineitems,w_belnr.

REFRESH: t_ausz2[],t_ausz1[].

ENDLOOP.

SELECT * FROM bsad INTO TABLE t_bsad WHERE bukrs = i_bukrs AND

kunnr = l_kunnr AND

belnr IN t_belnr.

IF t_bsad[] IS NOT INITIAL.

CLEAR: w_lineitems ,w_bsad,w_zdt_cust_det,l_sno.

LOOP AT t_lineitems INTO w_lineitems.

READ TABLE t_bsad INTO w_bsad WITH KEY bukrs = w_lineitems-comp_code

kunnr = w_lineitems-customer

belnr = w_lineitems-doc_no.

CALL FUNCTION 'GUID_CREATE'

IMPORTING

ev_guid_16 = w_zdt_cust_det-z_sno.

IF sy-subrc = 0.

w_zdt_cust_det-z_bukrs = w_bsad-bukrs.

w_zdt_cust_det-z_kunnr = w_bsad-kunnr.

w_zdt_cust_det-z_belnr = w_bsad-belnr.

w_zdt_cust_det-z_status = 'X'.

w_zdt_cust_det-z_clearingdoc = l_belnr.

w_zdt_cust_det-z_desc = 'Cleared'.
APPEND w_zdt_cust_det TO t_zdt_cust_det.

ELSE.

w_zdt_cust_det-z_bukrs = w_lineitems-comp_code.

w_zdt_cust_det-z_kunnr = w_lineitems-customer.

w_zdt_cust_det-z_belnr = w_lineitems-doc_no.

w_zdt_cust_det-z_status = ' '.

w_zdt_cust_det-z_clearingdoc = ' '.

w_zdt_cust_det-z_desc = 'Not cleared'.

APPEND w_zdt_cust_det TO t_zdt_cust_det.

ENDIF.

CLEAR: w_lineitems ,w_bsad,w_zdt_cust_det.

ENDLOOP.

*-----Update Log Table------------*

INSERT zdt_cust_det FROM TABLE t_zdt_cust_det.

IF sy-subrc = 0.

e_message = 'update sucess'.

ELSE.

e_message = 'update fail'.

ENDIF.

et_zdt_cust_det[] = t_zdt_cust_det[].

REFRESH:t_zdt_cust_det[].

ENDIF.

ENDIF.

ENDFUNCTION.

You might also like