Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

clearing invoice issue when using BAPI_ACC_DOCUMENT _POST

Former Member
0 Likes
8,057

Hi Experts,

Present I am working BAPI to provide similar functionality like f-26 transaction. I am able to post G/l Accounts, customer payments using BAPI_ACC_DOCUMENT_POST bapi. But, when I try to post the Invoice amount, its posting but its not clearing invoice. When I check BKPF and BSEG tables. BKPF table looks good. In BSEG augdt, augbl, nebtr fields are not updating. Any solution please let me know when you have the time.

Thanks,

Srini

Edited by: Thomas Zloch on Feb 23, 2011 1:12 PM - priority reduced

10 REPLIES 10
Read only

Former Member
0 Likes
4,793

This BAPI doesn't clear the Invoice. It just create an accounting document. You may have to use standard transaction code to do the Document Clearing.(may be with F.13 or F-35. Better to get the Functional Consultant's help for this)

Read only

0 Likes
4,793

Best way to clear accounting documents is BDC

Read only

Former Member
0 Likes
4,793

Thanks Vinod. Its creating posting document. But its not clearing. So, I tried with automatic clearing account set up in FI config. it didn't worked out. So I used clear_documents function module. Now I am able to clear the documents.

Read only

0 Likes
4,793

Hi Sri,

Could you help me with the parameters to be passed in this FM?

I'm trying but it says ,the line XXX in document is already cleared .

will be of great help.

thanks

Sachin

Read only

0 Likes
4,793

Hi Sachin,

first try through fi config.

spro-->financial accounting --> g/l accounts --> open item clearing --> prepare automatic clearing

in this set up rules for open item clearing.

still you are not able clear the open items, then use CLEAR_DOCUMENTS funcation module after BAPI_ACC_DOCUMENT_POST bapi. CLEAR_DOCUMENTS function module requires T_AUSZ1 & T_AUSZ2 data to clear the open item.

1. a)get belnr, bukrs, gjahr & buzei from bsid table for invoice and append to T_AUSZ1

b)T_AUSZ1-BUKRS, 'A', OBJ_KEY+0(10)(which you get from BAPI_ACC_DOCUMENT_POST bapi), posting date, posting date year pass it to T_AUSZ2-BUKRS, T_AUSZ2-AKTIO, T_AUSZ2-AUGBL, T_AUSZ2-AUGDT & T_AUSZ2-AUGGJ and append it.

2. a)get BELNR, BUKRS, GJAHR, BLART & BUDAT from bkpf where awkey = OBJ_KEY(which you get from BAPI_ACC_DOCUMENT_POST bapi)

b) get belnr, bukrs, gjahr & buzei from bsid table where BELNR EQ bkpf-BELNR AND

ZUONR EQbkpf-BELNR AND

BLART EQ bkpf-BLART AND

GJAHR EQ bkpf-GJAHR AND

BUDAT EQ bkpf-BUDAT

and append to T_AUSZ1

c) T_AUSZ1-BUKRS, 'A', OBJ_KEY+0(10)(which you get from BAPI_ACC_DOCUMENT_POST bapi), posting date, posting date year pass it to T_AUSZ2-BUKRS, T_AUSZ2-AKTIO, T_AUSZ2-AUGBL, T_AUSZ2-AUGDT & T_AUSZ2-AUGGJ and append it.

delete duplicates from T_AUSZ2.

then pass the T_AUSZ1 & T_AUSZ2 to CLEAR_DOCUMENTS function module.

Do you have any issue, please let me know.

Best Regards,

Srini

Read only

0 Likes
4,793

This message was moderated.

Read only

0 Likes
4,793

Hi, Srinivas Kuchadi


Thanks for sharing. May you share your full code to clearing using BAPI_ACC_DOCUMENT_POST and CLEAR_DOCUMENTS too? I am already try your instruction to clear using these BAPI and function but my documents still not clear? Please help...

Best Regards

Read only

0 Likes
4,793

hi...

Using BAPI and function module, I want to post Incoming Payments (Transaction F-28) & clear respective open items in transaction FBL5N through program automatially.

i'm using BAPI_ACC_DOCUMENT_POST to post customer payment. &  it is posting succesfully.

But it is not clearing open customer Line Items when i see in FBL5N transaction.


I found my problem similar to yours. So, if possible please help me,


Thanks & regards...

Siddhesh

Read only

4,792

Hi Siddesh,

BAPI_ACC_DOCUMENT_POST bapi alone will not clear the customer or vendor open line items, additionally you need to call FM: CLEAR_DOCUMENTS also.


Its worked for me.

Please find the coding snippet for clearing customer open line items.

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

*& Report  ZR_kunnr_CLEAR

*&

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

*&

*&

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

REPORT zr_kunrr_clear NO STANDARD PAGE HEADING LINE-SIZE 160.

TABLES: bsid.

TYPES: BEGIN OF ty_budat,

         sign(1),

         option(2),

         low       TYPE  budat,

         high      TYPE  budat,

       END OF ty_budat.

TYPES: BEGIN OF ty_kunnr,

         sign(1),

         option(2),

         low       TYPE  kunnr,

         high      TYPE  kunnr,

       END OF ty_kunnr.

DATA:  l_kunnr        TYPE kunnr VALUE '474',

       t_budat        TYPE TABLE OF ty_budat,

       w_budat        TYPE ty_budat,

       t_kunnr        TYPE TABLE OF ty_kunnr,

       w_kunnr        TYPE  ty_kunnr,

       t_zdt_cust_det TYPE TABLE OF zdt_cust_det,

       w_zdt_cust_det TYPE  zdt_cust_det,

       t_errormsg     TYPE TABLE OF zst_errormsg1,

       w_errormsg     TYPE zst_errormsg1,

       t_bsid         TYPE TABLE OF bsid,

       w_bsid         TYPE  bsid,

       l_fiyrs        TYPE budat,

       l_fiyrt        TYPE allgstid,

       l_index        TYPE sy-index,

       l_belnr        TYPE belnr_d,

       l_message      TYPE char20,

       l_postingdate  TYPE budat,

       e_recordcount  TYPE int4.

SELECT-OPTIONS: so_kunnr FOR bsid-kunnr.

PARAMETERS    : p_fiyrt TYPE char4   OBLIGATORY DEFAULT '2010',

                p_bukrs TYPE bukrs   OBLIGATORY DEFAULT '1000'.

CLEAR: w_kunnr, w_budat, l_kunnr,l_fiyrs,l_fiyrt,l_postingdate.

CONCATENATE p_fiyrt '1231' INTO l_postingdate.

l_fiyrs = '19500101'.

CONCATENATE p_fiyrt '1231' INTO l_fiyrt .

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

  EXPORTING

    input  = l_kunnr

  IMPORTING

    output = l_kunnr.

w_budat-sign   = 'I'.

w_budat-option = 'BT'.

w_budat-low    = l_fiyrs.

IF l_fiyrt IS NOT INITIAL.

  w_budat-high   = l_fiyrt.

ELSE.

  w_budat-high   = l_fiyrs.

ENDIF.

APPEND w_budat TO t_budat.

SELECT * FROM bsid INTO TABLE t_bsid WHERE bukrs = p_bukrs AND

                                           kunnr IN so_kunnr AND

                                           budat IN t_budat.

SORT t_bsid[] BY kunnr ASCENDING.

DELETE ADJACENT DUPLICATES FROM t_bsid COMPARING kunnr.

IF t_bsid[] IS NOT INITIAL.

  CALL FUNCTION 'ZFM_KUNNR_CLEAR'

    EXPORTING

      i_bukrs         = p_bukrs

      i_fiyrt         = p_fiyrt

    IMPORTING

      e_recordcount   = e_recordcount

    TABLES

      t_bsid          = t_bsid

      et_zdt_cust_det = t_zdt_cust_det

      et_errormsg     = t_errormsg.

ELSE.

  w_errormsg-sno = 1.

  w_errormsg-kunnr = ' '.

  w_errormsg-msg = 'No records found for search criteria'.

  APPEND w_errormsg TO t_errormsg.

ENDIF.

IF t_errormsg[] IS NOT INITIAL.

  WRITE:'Error Entries:'.

  SKIP.

ENDIF.

LOOP AT t_errormsg INTO w_errormsg.

  IF sy-tabix = 1.

    WRITE:/1 'S.NO', 15 'KUNNR', 22 'MESSAGE'.

    ULINE.

    SKIP.

  ENDIF.

  WRITE:/1 w_errormsg-sno, 15 w_errormsg-kunnr, 22 w_errormsg-msg.

ENDLOOP.

ULINE.

SKIP 3 .

WRITE:'Success Entries:'.

SKIP.

LOOP AT t_zdt_cust_det INTO w_zdt_cust_det.

  IF sy-tabix = 1.

    WRITE:/1 'Record Count:',e_recordcount.

    WRITE:/1 'S.NO',35 'BUKRS', 45 'KUNNR', 56 'BELNR', 71 'STATUS'.

    ULINE.

    SKIP.

  ENDIF.

  WRITE:/1 w_zdt_cust_det-z_sno, 35 w_zdt_cust_det-z_bukrs, 45 w_zdt_cust_det-z_kunnr, 55 w_zdt_cust_det-z_belnr, 70 w_zdt_cust_det-z_desc.

ENDLOOP.

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

FUNCTION zfm_kunnr_clear.

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

*"*"Local Interface:

*"  IMPORTING

*"     VALUE(I_BUKRS) TYPE  BUKRS OPTIONAL

*"     VALUE(I_FIYRT) TYPE  CHAR4 OPTIONAL

*"  EXPORTING

*"     VALUE(E_RESULT) TYPE  CHAR20

*"     VALUE(E_RECORDCOUNT) TYPE  INT4

*"  TABLES

*"      T_BSID STRUCTURE  BSID OPTIONAL

*"      ET_ZDT_CUST_DET STRUCTURE  ZDT_CUST_DET OPTIONAL

*"      ET_ERRORMSG STRUCTURE  ZST_ERRORMSG1 OPTIONAL

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

  DATA: w_bsid         TYPE bsid,

        t_lineitems    TYPE TABLE OF bapi3007_2,

        w_lineitems    TYPE bapi3007_2,

        w_return       TYPE bapireturn,

        l_kunnr        TYPE kunnr VALUE '474',

        t_zdt_cust_det TYPE TABLE OF zdt_cust_det,

        w_errormsg     TYPE  zst_errormsg1.

  DATA: w_doc_header        TYPE bapiache09,

        t_accountreceivable TYPE TABLE OF  bapiacar09,

        w_accountreceivable TYPE   bapiacar09,

        t_accountpayable    TYPE TABLE OF   bapiacap09,

        w_accountpayable    TYPE    bapiacap09,

        t_accounttax        TYPE TABLE OF   bapiactx09,

        w_accounttax        TYPE  bapiactx09,

        t_currencyamount    TYPE TABLE OF bapiaccr09,

        w_currencyamount    TYPE  bapiaccr09,

        t_extension2        TYPE TABLE OF   bapiparex,

        w_extension2        TYPE  bapiparex,

        t_extension1        TYPE TABLE OF   bapiacextc,

        w_extension1        TYPE    bapiacextc,

        t_accountgl         TYPE TABLE OF bapiacgl09,

        w_accountgl         TYPE  bapiacgl09,

        t_return            TYPE TABLE OF bapiret2,

        l_amount            TYPE char18,

        l_dmbtrp            TYPE bapidmbtr,

        l_result            TYPE bapidmbtr,

        l_dmbtrn            TYPE bapidmbtr,

        lv_type             TYPE bapiache09-obj_type,

        lv_key              TYPE bapiache09-obj_key,

        lv_sys              TYPE bapiache09-obj_sys,

        l_fiyrs             TYPE budat,

        l_fiyrt             TYPE allgstid,

        l_index             TYPE sy-index,

        l_belnr             TYPE belnr_d,

        l_datum             TYPE bapi3007-key_date,

        l_message           TYPE char20,

        l_postingdate       TYPE budat,

        l_count             TYPE i.

  CONCATENATE i_fiyrt '1231' INTO l_fiyrt.

  l_postingdate = l_fiyrt.

  REFRESH: et_zdt_cust_det[],et_errormsg[].

  CLEAR: l_kunnr,l_belnr.

  LOOP AT t_bsid INTO w_bsid.

    l_kunnr = w_bsid-kunnr.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

      EXPORTING

        input  = l_kunnr

      IMPORTING

        output = l_kunnr.

    REFRESH t_lineitems[].

    CALL FUNCTION 'BAPI_AR_ACC_GETOPENITEMS'

      EXPORTING

        companycode = i_bukrs

        customer    = l_kunnr

        keydate     = l_fiyrt

      IMPORTING

        return      = w_return

      TABLES

        lineitems   = t_lineitems.

    DELETE t_lineitems WHERE clr_doc_no <> space.

*---Fill GL details-----*

    CLEAR: w_accountgl,w_doc_header,w_accountpayable,

    w_currencyamount, l_dmbtrp,l_dmbtrn,w_return,w_errormsg.

    REFRESH: t_accountgl[],t_accountpayable[],t_currencyamount[],

             t_extension1[],t_return[].

    w_accountgl-itemno_acc = '0000000001'.

    IF i_bukrs = '5000'.

      w_accountgl-gl_account = '0000111200'.

    ELSE.

      w_accountgl-gl_account = '0000113100'.

    ENDIF.

    w_accountgl-item_text  = 'Test'.

    w_accountgl-comp_code  = i_bukrs.

    w_accountgl-value_date = l_postingdate.

    w_accountgl-pstng_date = l_postingdate.

    w_accountgl-doc_type   = 'SA'.

    w_accountgl-fis_period = l_postingdate+4(2).

    w_accountgl-fisc_year  = l_fiyrt.

    APPEND  w_accountgl TO t_accountgl.

*---Fill Header details-----*

    w_doc_header-bus_act    = 'RFBU'.

    w_doc_header-obj_type   = 'BKPFF'.

    w_doc_header-obj_key    = '$'.

    w_doc_header-obj_sys    = 'T90CLNT090'.

    w_doc_header-username   = sy-uname.

    w_doc_header-header_txt = 'Customer Openitem clearance'.

    w_doc_header-comp_code  = i_bukrs.

    w_doc_header-doc_date   = l_postingdate.

    w_doc_header-pstng_date = l_postingdate.

    w_doc_header-doc_type   = 'SA'.

*---Fill Vendor details---------*

    w_accountreceivable-itemno_acc  = '0000000002'.

    w_accountreceivable-customer   = l_kunnr.

    w_accountreceivable-comp_code   = i_bukrs.

    APPEND w_accountpayable TO t_accountpayable.

*------Segregating Positive and Negative Amounts---------------------*

    SORT t_lineitems[] ASCENDING BY amt_doccur.

    CLEAR: w_lineitems.

    LOOP AT t_lineitems INTO w_lineitems.

      IF w_lineitems-db_cr_ind = 'S'.

        l_dmbtrp = w_lineitems-lc_amount + l_dmbtrp.

      ELSE.

        l_dmbtrn = w_lineitems-lc_amount + l_dmbtrn.

      ENDIF.

    ENDLOOP.

    l_dmbtrn = -1 * l_dmbtrn.

    l_result = l_dmbtrp + l_dmbtrn.

*------Segregating Positive and Negative Amounts--------------------*

*------Fill Currency Amount and posting key if amount is Positive---*

    IF l_dmbtrp IS NOT INITIAL.

      w_currencyamount-itemno_acc   = '0000000001'.

      w_currencyamount-currency_iso = 'EUR'.

      w_currencyamount-amt_doccur   =  l_dmbtrp.

      APPEND w_currencyamount TO t_currencyamount.

      l_dmbtrp = -1 * l_dmbtrp.

      w_currencyamount-itemno_acc   = '0000000002'.

      w_currencyamount-currency_iso = 'EUR'.

      w_currencyamount-amt_doccur   = l_dmbtrp.

      APPEND w_currencyamount TO t_currencyamount.

      w_extension1-field1 = '000000000140'.

      APPEND w_extension1 TO t_extension1.

      w_extension1-field1 = '000000000237'.

      APPEND w_extension1 TO t_extension1.

    ENDIF.

*------Fill Currency Amount and posting key if amount is Positive----*

*------Fill Currency Amount and posting key if amount is negative------*

    IF l_dmbtrn IS NOT INITIAL.

      IF l_dmbtrp IS INITIAL.

        w_currencyamount-itemno_acc = '0000000001'.

        w_extension1-field1         = '000000000150'.

      ELSE.

        w_currencyamount-itemno_acc = '0000000003'.

        w_extension1-field1         = '000000000350'.

      ENDIF.

      w_currencyamount-currency_iso = 'EUR'.

      w_currencyamount-amt_doccur = l_dmbtrn.

      APPEND w_currencyamount TO t_currencyamount.

      APPEND w_extension1 TO t_extension1.

      l_dmbtrn = -1 * l_dmbtrn.

      IF l_dmbtrp IS INITIAL.

        w_currencyamount-itemno_acc = '0000000002'.

        w_extension1-field1         = '000000000227'. "posting key

      ELSE.

        w_currencyamount-itemno_acc = '0000000004'.

        w_extension1-field1         = '000000000427'. "posting key

      ENDIF.

      w_currencyamount-currency_iso = 'EUR'.

      w_currencyamount-amt_doccur = l_dmbtrn.

      APPEND w_currencyamount TO t_currencyamount.

      APPEND w_extension1 TO t_extension1.

    ENDIF.

*------Fill Currency Amount and posting key if amount is negative----*

    CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'

      EXPORTING

        documentheader    = w_doc_header

      TABLES

        accountgl         = t_accountgl

        accountreceivable = t_accountreceivable

        currencyamount    = t_currencyamount

        extension1        = t_extension1

        return            = t_return.

    REFRESH: t_return[].

    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

      EXPORTING

        documentheader    = w_doc_header

      IMPORTING

        obj_type          = lv_type

        obj_key           = lv_key

        obj_sys           = lv_sys

      TABLES

        accountgl         = t_accountgl

        accountreceivable = t_accountreceivable

        currencyamount    = t_currencyamount

        extension1        = t_extension1

        return            = t_return.

    READ TABLE t_return INTO w_return WITH KEY type = 'E'.

    IF sy-subrc <> 0.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

*------Clear Customer Open lineitems--------*

      l_belnr = lv_key+0(10).

      CLEAR: l_message.

      WAIT UP TO 1 SECONDS.

      CALL FUNCTION 'ZFM_CLEAR_DOCUMENTS_KUNNR'

        EXPORTING

          i_kunnr         = l_kunnr

          i_belnr         = l_belnr

          i_keydate       = l_postingdate

          i_fisyr         = i_fiyrt

          i_bukrs         = i_bukrs

        IMPORTING

          e_message       = l_message

          e_recordcount   = e_recordcount

        TABLES

          et_zdt_vend_det = t_zdt_cust_det

          it_lineitems    = t_lineitems.

*------Clear Customer Open lineitems--------*

    ELSE.

      LOOP AT t_return INTO w_return.

        l_count  = l_count + 1.

        w_errormsg-sno   = l_count.

        w_errormsg-kunnr = l_kunnr.

        w_errormsg-msg   = w_return-message.

        APPEND w_errormsg TO et_errormsg.

        CLEAR:w_errormsg,w_return,l_belnr,l_kunnr.

      ENDLOOP.

    ENDIF.

    APPEND LINES OF t_zdt_cust_det[] TO et_zdt_cust_det[].

    CLEAR: w_lineitems.

  ENDLOOP.

ENDFUNCTION.

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

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.

Read only

former_member510386
Discoverer
0 Likes
4,792

Thanks, I was looking for the same.