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

FBCJ post with BAPI

Former Member
0 Likes
6,838

Hello All

I have a problem.

I use BAPI_CASHJOURNALDOC_CREATE for transaction FBCJ.

This bapi only save the information, but does not Post it.

How can I post it with this BAPI, or an another BAPI?

Regards

György

6 REPLIES 6
Read only

Former Member
0 Likes
3,466

This BAPi does post the cash journal for FBCJ. I have used the following code for posting cash journals. I am attaching code for your reference.

PROGRAM ZFIIFBCJ

NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA: BEGIN OF IT_FBCJ OCCURS 0,

BUDAT LIKE ISCJ_E_POSTINGS-POSTING_DATE,

BLDAT LIKE ISCJ_E_POSTINGS-DOCUMENT_DATE,

BUKRS LIKE TCJ_C_JOURNALS-COMP_CODE,

CJNR LIKE TCJ_C_JOURNALS-CAJO_NUMBER,

TRAN LIKE TCJ_TRANSACTIONS-TRANSACT_NUMBER,

AMT(16)," LIKE ISCJ_E_POSTINGS-H_PAYMENTS,

DOCNR LIKE ISCJ_E_POSTINGS-DOCUMENT_NUMBER,

KOSTL LIKE ISCJ_E_POSTINGS-KOSTL,

AUFNR LIKE ISCJ_E_POSTINGS-AUFNR,

PRCTR LIKE ISCJ_E_POSTINGS-PRCTR,

TEXT LIKE ISCJ_E_POSTINGS-POSITION_TEXT,

END OF IT_FBCJ.

DATA: BDCDATA LIKE TABLE OF BDCDATA WITH HEADER LINE,

IT_BDCMSGCOLL LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE,

ITAB LIKE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.

DATA: HEADER TYPE BAPI_CJ_HEADER,

ITEMS TYPE TABLE OF BAPI_CJ_ITEMS WITH HEADER LINE,

IT_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

DATA: V_COUNT(2) TYPE N,

V_FLD(25) TYPE C,

V_NUMBER TYPE BAPI_CJ_HEADER-CAJO_NUMBER,

V_GJAHR TYPE BAPI_CJ_KEY-FISC_YEAR,

V_POSTNO TYPE BAPI_CJ_KEY-POSTING_NUMBER.

&----


*&

*& SELECTION-SCREEN

&----


SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_FILE TYPE RLGRAP-FILENAME.

SELECTION-SCREEN : END OF BLOCK B1.

SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

PARAMETERS : R1 RADIOBUTTON GROUP RAD1 DEFAULT 'X',

R2 RADIOBUTTON GROUP RAD1.

SELECTION-SCREEN : END OF BLOCK B2.

&----


*&

*& AT SELECTION-SCREEN

&----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

PROGRAM_NAME = SYST-REPID

DYNPRO_NUMBER = SYST-DYNNR

CHANGING

FILE_NAME = P_FILE

EXCEPTIONS

MASK_TOO_LONG = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

ENDIF.

&----


*&

*& START-OF-SELECTION.

&----


START-OF-SELECTION.

PERFORM UPLOAD.

PERFORM BAPI.

&----


*&

*& END-OF-SELECTION.

&----


END-OF-SELECTION.

&----


*& Form UPLOAD

&----


FORM UPLOAD .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FILE

I_BEGIN_COL = '1'

I_BEGIN_ROW = '2'

I_END_COL = '11'

I_END_ROW = '65536'

TABLES

INTERN = ITAB

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

ENDIF.

LOOP AT ITAB.

CASE ITAB-COL.

WHEN '0001'.

MOVE ITAB-VALUE TO IT_FBCJ-BUDAT.

WHEN '0002'.

MOVE ITAB-VALUE TO IT_FBCJ-BLDAT.

WHEN '0003'.

MOVE ITAB-VALUE TO IT_FBCJ-BUKRS.

WHEN '0004'.

MOVE ITAB-VALUE TO IT_FBCJ-CJNR.

WHEN '0005'.

MOVE ITAB-VALUE TO IT_FBCJ-TRAN.

WHEN '0006'.

MOVE ITAB-VALUE TO IT_FBCJ-AMT.

WHEN '0007'.

MOVE ITAB-VALUE TO IT_FBCJ-DOCNR.

WHEN '0008'.

MOVE ITAB-VALUE TO IT_FBCJ-KOSTL.

WHEN '0009'.

MOVE ITAB-VALUE TO IT_FBCJ-AUFNR.

WHEN '0010'.

MOVE ITAB-VALUE TO IT_FBCJ-PRCTR.

WHEN '0011'.

MOVE ITAB-VALUE TO IT_FBCJ-TEXT.

ENDCASE.

AT END OF ROW.

APPEND IT_FBCJ.

CLEAR IT_FBCJ.

ENDAT.

ENDLOOP.

SORT IT_FBCJ BY BUDAT.

LOOP AT IT_FBCJ.

IF SY-TABIX EQ 1.

HEADER-COMP_CODE = IT_FBCJ-BUKRS.

HEADER-CAJO_NUMBER = IT_FBCJ-CJNR.

HEADER-REF_DOC_NO = IT_FBCJ-DOCNR.

CONCATENATE IT_FBCJ-BUDAT4(4) IT_FBCJ-BUDAT2(2) IT_FBCJ-BUDAT(2) INTO HEADER-PSTNG_DATE.

CONCATENATE IT_FBCJ-BLDAT4(4) IT_FBCJ-BLDAT2(2) IT_FBCJ-BLDAT(2) INTO HEADER-DOC_DATE.

ENDIF.

V_COUNT = V_COUNT + 1.

ITEMS-POSITION_NUMBER = V_COUNT.

ITEMS-TRANSACT_NUMBER = IT_FBCJ-TRAN.

IF R1 EQ 'X'.

ITEMS-P_PAYMENTS = IT_FBCJ-AMT.

ELSE.

ITEMS-P_RECEIPTS = IT_FBCJ-AMT.

ENDIF.

ITEMS-COSTCENTER = IT_FBCJ-KOSTL.

ITEMS-ORDERID = IT_FBCJ-AUFNR.

ITEMS-PROFIT_CTR = IT_FBCJ-PRCTR.

ITEMS-POSITION_TEXT = IT_FBCJ-TEXT.

APPEND ITEMS.

ENDLOOP.

ENDFORM. " UPLOAD

&----


*& Form BAPI

&----


FORM BAPI .

CALL FUNCTION 'BAPI_CASHJOURNALDOC_CREATE'

EXPORTING

HEADER = HEADER

  • TESTRUN =

IMPORTING

  • COMPANY_CODE =

CASH_JOURNAL_NUMBER = V_NUMBER

FISCAL_YEAR = V_GJAHR

CASH_JOURNAL_DOC_NO = V_POSTNO

TABLES

ITEMS = ITEMS

  • TAX_ITEMS =

  • CPD_ITEMS =

  • WTAX_ITEMS =

  • EXTENSION_IN =

RETURN = IT_RETURN

.

  • Commiting the work using Commit Work

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

LOOP AT IT_RETURN.

WRITE: / IT_RETURN-TYPE,

IT_RETURN-ID ,

IT_RETURN-NUMBER,

IT_RETURN-MESSAGE.

ENDLOOP.

ENDFORM. "BAPI

Pls use and try the BAPi in the same way, I am sure you will be able to post cash journals.

Read only

0 Likes
3,466

Hi,

Mr.

Read only

RaymondGiuseppi
Active Contributor
0 Likes
3,466

In the Notes related to this BAPI [Note 616804 - FBCJ: BAPI for saving cash journal documents|https://service.sap.com/sap/support/notes/616804] and [Note 532888 - FBCJ: Additional functions|https://service.sap.com/sap/support/notes/532888], SAP wrote :

Transfer of external data to the cash journal

Using a BAPI, you can transfer data from an external system or from another R/3 system to the FI cash journal and create a saved cash journal document. You can use the interface transaction FBCJ to further process (for example, post) the saved cash journal document.

This enhancement is available in Release R/3 Enterprise (4.7) (Note 616804).

This fact suggests that the standard process is to call the transaction FBCJ on data created by the BAPI. The purpose of this BAPI is to avoid double entry.

Regards

Read only

0 Likes
3,466

Hi,

I'm in a middle of the same task currently. I've been asked to create an automated process to post CJ entries passed from external system, and I'm doing a research is that possible.

My 1st intention was to use own enhancement implementation of an enhancement spot ' ES_SAPLSAPLFCJ_BAPI' and to call FM 'CJ_POST' within this implementation (with restrictions to be posted in my case only), not sure if it is applicable, it seems all the paramethers for calling FM 'CJ_POST' are available within body of the FM. Sadly, it seems 'CJ_POST' did save, so it looks unusable.

Further, found a proposal to use FM 'FCJ_POST_POSDOC' - and it seems it should be done externaly from my program, instead of implemented within enhancement, because there is COMMIT performed internaly in the FM.

In other words, I'm at crossroad and asking for help.

Would you please describe in details your case and how did you solve it - especialy in the part of posting CJ entries?

Any help would be highly appreciated.

Many thanks in advance.

Regards,

Ivaylo Mutafchiev

Senior SAP BC Development Consultant

Read only

Former Member
0 Likes
3,466

After creating or saving cash journal document number,

To post use FM FCJ_POST_ALL

pass parameters as for reciepts I_TYP = 'R'

payments I_TYP = 'E'

and other required parameters

Read only

Former Member
0 Likes
3,466

FBCJ Upload : Updating sucessfully

Below is my code ::

FBCJ Upload : Updating sucessfully , use this code

        no standard page heading line-size 255.

****************************************************** Data Declaration 1 *********Begin Of

data: begin of IT_FBCJ occurs 0,

       BUDAT type ISCJ_E_POSTINGS-POSTING_DATE,

       BLDAT type ISCJ_E_POSTINGS-DOCUMENT_DATE,

       BUKRS type TCJ_C_JOURNALS-COMP_CODE,

       CJNR  type TCJ_C_JOURNALS-CAJO_NUMBER,

       TRAN type TCJ_TRANSACTIONS-TRANSACT_NUMBER,

       AMT(16),

       DOCNR type ISCJ_E_POSTINGS-DOCUMENT_NUMBER,

       KOSTL type ISCJ_E_POSTINGS-KOSTL,

       PRCTR type ISCJ_E_POSTINGS-PRCTR,

       TEXT  type ISCJ_E_POSTINGS-POSITION_TEXT,

       PERNR type ISCJ_E_POSTINGS-PERNR,

       CURRENCY type BAPI_CJ_HEADER-CURRENCY ,

       end of IT_FBCJ.

data:  BDCDATA type table of BDCDATA with header line,

        IT_BDCMSGCOLL type table of BDCMSGCOLL with header line,

        ITAB type table of ALSMEX_TABLINE with header line.

data: HEADER    type BAPI_CJ_HEADER,

       HEADER1   TYPE TCJ_C_JOURNALS ,

       ITEMS     type table of BAPI_CJ_ITEMS with header line,

       ITEMS1     type table of ISCJ_POSTINGS with header line,

       TCJ       TYPE TABLE OF TCJ_CPD with header line ,

       POSTING   TYPE TABLE OF ISCJ_POSTINGS WITH HEADER LINE ,

       TAX       TYPE TABLE OF TCJ_WTAX_ITEMS WITH HEADER LINE ,

       IT_RETURN type BAPIRET2   occurs 0 with header line.

data: V_COUNT(2) type N,

       V_FLD(25)  type C,

       V_NUMBER   type BAPI_CJ_HEADER-CAJO_NUMBER,

       V_GJAHR    type BAPI_CJ_KEY-FISC_YEAR,

       V_POSTNO   type BAPI_CJ_KEY-POSTING_NUMBER,

       CURR type BAPI_CJ_HEADER-CURRENCY .

****************************************************** Data Declaration 1 *********End Of

****************************************************** Data Declaration 2 *********Begin Of

*&----

**&

**&        SELECTION-SCREEN

*&----

selection-screen : begin of block B1 with frame title TEXT-001.

parameters       : P_FILE type RLGRAP-FILENAME.

selection-screen : end of block B1.

*selection-screen : begin of block B2 with frame title TEXT-002.

*parameters       : R1 radiobutton group RAD1 default 'X',

*                   R2 radiobutton group RAD1.

*selection-screen : end of block B2.

*&----

**&

**&     AT SELECTION-SCREEN

*&----

at selection-screen on value-request for P_FILE.

   call function 'KD_GET_FILENAME_ON_F4'

     exporting

       PROGRAM_NAME  = SYST-REPID

       DYNPRO_NUMBER = SYST-DYNNR

     changing

       FILE_NAME     = P_FILE

     exceptions

       MASK_TOO_LONG = 1

       others        = 2.

   if SY-SUBRC <> 0.

   endif.

*

*&----

**&

**&     START-OF-SELECTION.

*&----

start-of-selection.

   perform UPLOAD.

   perform BAPI.

*  perform DATA_EXRACTION .

   perform DATA_EXRACTION1 .

   PERFORM BAPI_UPDATE .

*&----

**&

**&      END-OF-SELECTION.

*&----

end-of-selection.

*&----

**&      Form  UPLOAD

*&----

form UPLOAD .

   call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'

     exporting

       FILENAME                = P_FILE

       I_BEGIN_COL             = '1'

       I_BEGIN_ROW             = '3'

       I_END_COL               = '12'

       I_END_ROW               = '65536'

     tables

       INTERN                  = ITAB

     exceptions

       INCONSISTENT_PARAMETERS = 1

       UPLOAD_OLE              = 2

       others                  = 3.

   if SY-SUBRC <> 0.

   endif.

   loop at ITAB.

     case ITAB-COL.

       when '0001'.

         move ITAB-VALUE to IT_FBCJ-BUDAT.

       when '0002'.

         move ITAB-VALUE to IT_FBCJ-BLDAT.

       when '0003'.

         move ITAB-VALUE to IT_FBCJ-BUKRS.

       when '0004'.

         move ITAB-VALUE to IT_FBCJ-CJNR.

       when '0005'.

         move ITAB-VALUE to IT_FBCJ-TRAN.

       when '0006'.

         move ITAB-VALUE to IT_FBCJ-AMT.

       when '0007'.

         move ITAB-VALUE to IT_FBCJ-DOCNR.

       when '0008'.

         move ITAB-VALUE to IT_FBCJ-KOSTL.

       when '0009'.

         move ITAB-VALUE to IT_FBCJ-PRCTR.

       when '0010'.

         move ITAB-VALUE to IT_FBCJ-TEXT.

       when '0011'.

         move ITAB-VALUE to IT_FBCJ-PERNR.

       when '0012' .

         move itab-value to IT_FBCJ-CURRENCY .

     endcase.

     at end of ROW.

       append IT_FBCJ.

       clear  IT_FBCJ.

     endat.

   endloop.

   sort IT_FBCJ by BUDAT.

   loop at IT_FBCJ.

     if SY-TABIX eq 1.

       HEADER-COMP_CODE    = IT_FBCJ-BUKRS.

       HEADER1-COMP_CODE    = HEADER-COMP_CODE.

       HEADER-CAJO_NUMBER  = IT_FBCJ-CJNR.

       HEADER1-CAJO_NUMBER  = HEADER-CAJO_NUMBER.

       HEADER-REF_DOC_NO   = IT_FBCJ-DOCNR.

       HEADER-CURRENCY     =   IT_FBCJ-CURRENCY .

       HEADER1-CURRENCY     =  IT_FBCJ-CURRENCY .

       concatenate IT_FBCJ-BUDAT+4(4) IT_FBCJ-BUDAT+2(2) IT_FBCJ-BUDAT+0(2) into HEADER-PSTNG_DATE.

       concatenate IT_FBCJ-BLDAT+4(4) IT_FBCJ-BLDAT+2(2) IT_FBCJ-BLDAT+0(2) into HEADER-DOC_DATE.

     endif.

     V_COUNT = V_COUNT + 1.

     ITEMS-POSITION_NUMBER = V_COUNT.

     ITEMS-TRANSACT_NUMBER = IT_FBCJ-TRAN.

*    if R1 eq 'X'.

       ITEMS-P_PAYMENTS    = IT_FBCJ-AMT.

*    else.

*      ITEMS-P_RECEIPTS    = IT_FBCJ-AMT.

*    endif.

     ITEMS-COSTCENTER      = IT_FBCJ-KOSTL.

     ITEMS-PROFIT_CTR      = IT_FBCJ-PRCTR.

     ITEMS-POSITION_TEXT   = IT_FBCJ-TEXT.

     ITEMS-PERSON_NO       = IT_FBCJ-PERNR.

     append ITEMS.

   endloop.

endform.                    " UPLOAD

*&----

**&      Form  BAPI

*&----

form BAPI .

   call function 'BAPI_CASHJOURNALDOC_CREATE'

     exporting

       HEADER                    = HEADER

*  TESTRUN                   =

importing

*  COMPANY_CODE              =

    CASH_JOURNAL_NUMBER       = V_NUMBER

    FISCAL_YEAR               = V_GJAHR

    CASH_JOURNAL_DOC_NO       = V_POSTNO

     tables

       ITEMS                     = ITEMS

*  TAX_ITEMS                 =

*  CPD_ITEMS                 =

*  WTAX_ITEMS                =

*  EXTENSION_IN              =

       RETURN                    = IT_RETURN .

*  IF IT_RETURN-TYPE IS NOT INITIAL.

           commit work.

       wait up to 10 seconds.

*    endif.

*Commiting the work using Commit Work

*  call function 'BAPI_TRANSACTION_COMMIT'

**EXPORTING

**  WAIT          = '10'

*importing

*  RETURN        = IT_RETURN

.

*  loop at IT_RETURN.

*    write: / IT_RETURN-TYPE,

*             IT_RETURN-ID ,

*             IT_RETURN-NUMBER,

*             IT_RETURN-MESSAGE.

*  endloop.

endform.                    "BAPI

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

*&      Form  DATA_EXRACTION

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

form DATA_EXRACTION .

*  types  : begin of GS_DOC ,

*           COMP_CODE        type TCJ_DOCUMENTS-COMP_CODE  ,

*           CAJO_NUMBER      type TCJ_DOCUMENTS-CAJO_NUMBER ,

*           POSTING_NUMBER   type TCJ_DOCUMENTS-POSTING_NUMBER ,

*           CURRENCY         type TCJ_DOCUMENTS-CURRENCY ,

*           H_PAYMENTS       type TCJ_DOCUMENTS-H_PAYMENTS,

*           H_NET_AMOUNT     type TCJ_DOCUMENTS-H_NET_AMOUNT,

*           H_NET_PAYMENT_WT type TCJ_DOCUMENTS-H_NET_PAYMENT_WT ,

*           DOCUMENT_DATE    type TCJ_DOCUMENTS-DOCUMENT_DATE ,

*           DOCUMENT_NUMBER  type TCJ_DOCUMENTS-DOCUMENT_NUMBER ,

*           POSTING_DATE     type TCJ_DOCUMENTS-POSTING_DATE  ,

*           DOCUMENT_STATUS  type TCJ_DOCUMENTS-DOCUMENT_STATUS ,

*           end of GS_DOC  .

*

*  data : GT_DOC type standard table of GS_DOC ,

*         GW_DOC type  GS_DOC .

*

*

*  types  :  begin of GS_ITEMS  ,

*           COMP_CODE        type TCJ_POSITIONS-COMP_CODE  ,

*           CAJO_NUMBER      type TCJ_POSITIONS-CAJO_NUMBER ,

*           POSTING_NUMBER   type TCJ_POSITIONS-POSTING_NUMBER ,

*           CURRENCY         type TCJ_POSITIONS-CURRENCY ,

*           P_PAYMENTS       type TCJ_POSITIONS-P_PAYMENTS,

*           P_NET_AMOUNT     type TCJ_POSITIONS-P_NET_AMOUNT,

*           P_NET_PAYMENT_WT type TCJ_POSITIONS-P_NET_PAYMENT_WT ,

*           POSTING_DATE     type TCJ_POSITIONS-POSTING_DATE  ,

*           TRANSACT_NUMBER  type TCJ_POSITIONS-TRANSACT_NUMBER ,

*           GL_ACCOUNT       type TCJ_POSITIONS-GL_ACCOUNT ,

*           POSITION_TEXT    type TCJ_POSITIONS-POSITION_TEXT ,

*           KOKRS            type TCJ_POSITIONS-KOKRS ,

*           KOSTL            type TCJ_POSITIONS-KOSTL ,

*           PRCTR            type TCJ_POSITIONS-PRCTR,

*           PERNR            type TCJ_POSITIONS-PERNR ,

*          end of GS_ITEMS  .

*

*  data : GT_ITEMS type standard table of GS_ITEMS ,

*         GW_ITEMS type GS_ITEMS .

*

*  types : begin of GS_NAME  ,

*         COMP_CODE  type TCJ_TRANS_NAMES-COMP_CODE ,

*         TRANSACT_NUMBER type TCJ_TRANS_NAMES-TRANSACT_NUMBER  ,

*         TRANSACT_NAME   type TCJ_TRANS_NAMES-TRANSACT_NAME  ,

*         end of GS_NAME .

*

*  data   : GT_NAME type standard table of GS_NAME ,

*           GW_NAME type GS_NAME .

*

*  data : begin of IT_FINAL occurs 0 ,

*         CAJO_NUMBER      type TCJ_DOCUMENTS-CAJO_NUMBER ,

*         COMP_CODE        type TCJ_DOCUMENTS-COMP_CODE,

*         POSTING_NUMBER   type TCJ_DOCUMENTS-POSTING_NUMBER ,

*         CURRENCY         type TCJ_DOCUMENTS-CURRENCY ,

*         H_PAYMENTS       type TCJ_DOCUMENTS-H_PAYMENTS,

*         H_NET_AMOUNT     type TCJ_DOCUMENTS-H_NET_AMOUNT,

*         H_NET_PAYMENT_WT type TCJ_DOCUMENTS-H_NET_PAYMENT_WT ,

*         DOCUMENT_DATE    type TCJ_DOCUMENTS-DOCUMENT_DATE ,

*         DOCUMENT_NUMBER  type TCJ_DOCUMENTS-DOCUMENT_NUMBER ,

*         POSTING_DATE     type TCJ_DOCUMENTS-POSTING_DATE  ,

*         DOCUMENT_STATUS  type TCJ_DOCUMENTS-DOCUMENT_STATUS ,

*         TRANSACT_NAME   type TCJ_TRANS_NAMES-TRANSACT_NAME  ,

*         TRANSACT_NUMBER  type TCJ_POSITIONS-TRANSACT_NUMBER ,

*         POSITION_TEXT    type TCJ_POSITIONS-POSITION_TEXT ,

*         KOKRS            type TCJ_POSITIONS-KOKRS ,

*         KOSTL            type TCJ_POSITIONS-KOSTL ,

*         PRCTR            type TCJ_POSITIONS-PRCTR,

*         GL_ACCOUNT       type TCJ_POSITIONS-GL_ACCOUNT ,

*         PERNR            type TCJ_POSITIONS-PERNR ,

*         end of IT_FINAL .

*

*

*

*  select  COMP_CODE  CAJO_NUMBER  POSTING_NUMBER  CURRENCY H_PAYMENTS

*          H_NET_AMOUNT H_NET_PAYMENT_WT  DOCUMENT_DATE

*          DOCUMENT_NUMBER  POSTING_DATE DOCUMENT_STATUS from TCJ_DOCUMENTS  into table GT_DOC

*          for all entries in IT_FBCJ

*          where COMP_CODE eq IT_FBCJ-BUKRS and  CAJO_NUMBER eq IT_FBCJ-CJNR and DOCUMENT_STATUS eq 'S' .

*

*  if GT_DOC IS NOT INITIAL  .

*    select   COMP_CODE  CAJO_NUMBER  POSTING_NUMBER  CURRENCY P_PAYMENTS

*             P_NET_AMOUNT P_NET_PAYMENT_WT  POSTING_DATE TRANSACT_NUMBER

*             GL_ACCOUNT  POSITION_TEXT KOKRS KOSTL PRCTR PERNR from TCJ_POSITIONS into table GT_ITEMS

*             for all entries in GT_DOC where COMP_CODE eq GT_DOC-COMP_CODE and

*             CAJO_NUMBER eq GT_DOC-CAJO_NUMBER and POSTING_NUMBER eq GT_DOC-POSTING_NUMBER .

*

*

*    select  COMP_CODE  TRANSACT_NUMBER TRANSACT_NAME from TCJ_TRANS_NAMES

*           into table GT_NAME for all entries in GT_ITEMS where COMP_CODE eq GT_ITEMS-COMP_CODE and

*            TRANSACT_NUMBER eq GT_ITEMS-TRANSACT_NUMBER .

*  endif .

*

*

*LOOP AT GT_DOC INTO GW_DOC .

*  IT_FINAL-CAJO_NUMBER    = GW_DOC-CAJO_NUMBER .

*  IT_FINAL-COMP_CODE      = GW_DOC-COMP_CODE .

*  IT_FINAL-POSTING_NUMBER = GW_DOC-POSTING_NUMBER .

*  IT_FINAL-CURRENCY       = GW_DOC-CURRENCY .

*  IT_FINAL-H_PAYMENTS     = GW_DOC-H_PAYMENTS .

*  IT_FINAL-H_NET_AMOUNT   = GW_DOC-H_NET_AMOUNT .

*IT_FINAL-H_NET_PAYMENT_WT = GW_DOC-H_NET_PAYMENT_WT .

*  IT_FINAL-DOCUMENT_DATE  = GW_DOC-DOCUMENT_DATE .

* IT_FINAL-DOCUMENT_NUMBER = GW_DOC-DOCUMENT_NUMBER .

*  IT_FINAL-POSTING_DATE   = GW_DOC-POSTING_DATE .

* IT_FINAL-DOCUMENT_STATUS = GW_DOC-DOCUMENT_STATUS .

*

*LOOP AT GT_ITEMS INTO GW_ITEMS WHERE CAJO_NUMBER    = GW_DOC-CAJO_NUMBER AND

*                                     COMP_CODE   = IT_FINAL-COMP_CODE .

* IT_FINAL-TRANSACT_NUMBER = GW_ITEMS-TRANSACT_NUMBER .

*   IT_FINAL-POSITION_TEXT = GW_ITEMS-POSITION_TEXT .

*   IT_FINAL-KOKRS         = GW_ITEMS-KOKRS .

*   IT_FINAL-KOSTL         = GW_ITEMS-KOSTL .

*   IT_FINAL-PRCTR         = GW_ITEMS-PRCTR .

*   IT_FINAL-GL_ACCOUNT    = GW_ITEMS-GL_ACCOUNT .

*   IT_FINAL-PERNR         = GW_ITEMS-PERNR.

*  ENDLOOP .

*

*  READ TABLE GT_NAME INTO GW_NAME  WITH KEY COMP_CODE = GW_DOC-COMP_CODE

*                                            TRANSACT_NUMBER = GW_ITEMS-TRANSACT_NUMBER .

*  IF SY-SUBRC = 0 .

*  IT_FINAL-TRANSACT_NAME  = GW_NAME-TRANSACT_NAME .

*  ENDIF .

*  APPEND IT_FINAL .

*  ENDLOOP .

*SORT IT_FINAL .

endform.                    " DATA_EXRACTION

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

*&      Form  DATA_EXRACTION1

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM DATA_EXRACTION1 .

   data  begin of IT_DOC occurs 0 ,

            COMP_CODE        type TCJ_DOCUMENTS-COMP_CODE  ,

            CAJO_NUMBER      type TCJ_DOCUMENTS-CAJO_NUMBER ,

            POSTING_NUMBER   type TCJ_DOCUMENTS-POSTING_NUMBER ,

            CURRENCY         type TCJ_DOCUMENTS-CURRENCY ,

            H_PAYMENTS       type TCJ_DOCUMENTS-H_PAYMENTS,

            H_NET_AMOUNT     type TCJ_DOCUMENTS-H_NET_AMOUNT,

            H_NET_PAYMENT_WT type TCJ_DOCUMENTS-H_NET_PAYMENT_WT ,

            DOCUMENT_DATE    type TCJ_DOCUMENTS-DOCUMENT_DATE ,

            DOCUMENT_NUMBER  type TCJ_DOCUMENTS-DOCUMENT_NUMBER ,

            POSTING_DATE     type TCJ_DOCUMENTS-POSTING_DATE  ,

            DOCUMENT_STATUS  type TCJ_DOCUMENTS-DOCUMENT_STATUS ,

           end of IT_DOC  .

   data  begin of IT_ITEMS occurs 0 ,

            COMP_CODE        type TCJ_POSITIONS-COMP_CODE  ,

            CAJO_NUMBER      type TCJ_POSITIONS-CAJO_NUMBER ,

            POSTING_NUMBER   type TCJ_POSITIONS-POSTING_NUMBER ,

            CURRENCY         type TCJ_POSITIONS-CURRENCY ,

            P_PAYMENTS       type TCJ_POSITIONS-P_PAYMENTS,

            P_NET_AMOUNT     type TCJ_POSITIONS-P_NET_AMOUNT,

            P_NET_PAYMENT_WT type TCJ_POSITIONS-P_NET_PAYMENT_WT ,

            POSTING_DATE     type TCJ_POSITIONS-POSTING_DATE  ,

            TRANSACT_NUMBER  type TCJ_POSITIONS-TRANSACT_NUMBER ,

            GL_ACCOUNT       type TCJ_POSITIONS-GL_ACCOUNT ,

            POSITION_NUMBER  type tcj_positions-POSITION_NUMBER ,

            POSITION_TEXT    type TCJ_POSITIONS-POSITION_TEXT ,

            KOKRS            type TCJ_POSITIONS-KOKRS ,

            KOSTL            type TCJ_POSITIONS-KOSTL ,

            PRCTR            type TCJ_POSITIONS-PRCTR,

            PERNR            type TCJ_POSITIONS-PERNR ,

           end of IT_ITEMS  .

  DATA : BEGIN OF IT_NAME OCCURS 0 ,

         COMP_CODE  TYPE TCJ_TRANS_NAMES-COMP_CODE ,

         TRANSACT_NUMBER TYPE TCJ_TRANS_NAMES-TRANSACT_NUMBER  ,

         TRANSACT_NAME   TYPE TCJ_TRANS_NAMES-TRANSACT_NAME  ,

         END OF IT_NAME .

  DATA : BEGIN OF IT_FINAL OCCURS 0 ,

          CAJO_NUMBER      type TCJ_DOCUMENTS-CAJO_NUMBER ,

         COMP_CODE        type TCJ_DOCUMENTS-COMP_CODE,

         POSTING_NUMBER   type TCJ_DOCUMENTS-POSTING_NUMBER ,

         CURRENCY         type TCJ_DOCUMENTS-CURRENCY ,

         H_PAYMENTS       type TCJ_DOCUMENTS-H_PAYMENTS,

         H_NET_AMOUNT     type TCJ_DOCUMENTS-H_NET_AMOUNT,

        POSITION_NUMBER  type tcj_positions-POSITION_NUMBER ,

         H_NET_PAYMENT_WT type TCJ_DOCUMENTS-H_NET_PAYMENT_WT ,

         DOCUMENT_DATE    type TCJ_DOCUMENTS-DOCUMENT_DATE ,

         DOCUMENT_NUMBER  type TCJ_DOCUMENTS-DOCUMENT_NUMBER ,

         POSTING_DATE     type TCJ_DOCUMENTS-POSTING_DATE  ,

         DOCUMENT_STATUS  type TCJ_DOCUMENTS-DOCUMENT_STATUS ,

         TRANSACT_NAME   TYPE TCJ_TRANS_NAMES-TRANSACT_NAME  ,

         TRANSACT_NUMBER TYPE  TCJ_POSITIONS-TRANSACT_NUMBER ,

         POSITION_TEXT    type TCJ_POSITIONS-POSITION_TEXT ,

         DOCUMENT_NUMBER1  type TCJ_DOCUMENTS-DOCUMENT_NUMBER ,

         KOKRS            type TCJ_POSITIONS-KOKRS ,

         KOSTL            type TCJ_POSITIONS-KOSTL ,

         PRCTR            type TCJ_POSITIONS-PRCTR,

         GL_ACCOUNT       type TCJ_POSITIONS-GL_ACCOUNT ,

         PERNR            type TCJ_POSITIONS-PERNR ,

         END OF IT_FINAL .

   select  COMP_CODE  CAJO_NUMBER  POSTING_NUMBER  CURRENCY H_PAYMENTS

           H_NET_AMOUNT H_NET_PAYMENT_WT  DOCUMENT_DATE

           DOCUMENT_NUMBER  POSTING_DATE DOCUMENT_STATUS FROM TCJ_DOCUMENTS  INTO TABLE IT_DOC

*          FOR ALL ENTRIES IN IT_FBCJ

           WHERE COMP_CODE EQ IT_FBCJ-BUKRS AND  CAJO_NUMBER EQ IT_FBCJ-CJNR AND DOCUMENT_STATUS EQ 'S' .

  IF SY-SUBRC = 0 .

  SELECT   COMP_CODE  CAJO_NUMBER  POSTING_NUMBER  CURRENCY P_PAYMENTS POSITION_NUMBER

           P_NET_AMOUNT P_NET_PAYMENT_WT  POSTING_DATE TRANSACT_NUMBER

           GL_ACCOUNT  POSITION_TEXT KOKRS KOSTL PRCTR PERNR FROM TCJ_POSITIONS INTO

           corresponding fields of table IT_ITEMS

           FOR ALL ENTRIES IN IT_DOC WHERE COMP_CODE EQ IT_DOC-COMP_CODE AND

           CAJO_NUMBER EQ IT_DOC-CAJO_NUMBER and POSTING_NUMBER EQ IT_DOC-POSTING_NUMBER .

    ENDIF .

  IF SY-SUBRC = 0 .

    SELECT  COMP_CODE  TRANSACT_NUMBER TRANSACT_NAME FROM TCJ_TRANS_NAMES

           INTO TABLE IT_NAME FOR ALL ENTRIES IN IT_ITEMS WHERE COMP_CODE EQ IT_ITEMS-COMP_CODE AND

            TRANSACT_NUMBER EQ IT_ITEMS-TRANSACT_NUMBER .

   ENDIF .

   LOOP AT IT_DOC .

   IT_FINAL-CAJO_NUMBER    = IT_DOC-CAJO_NUMBER .

   IT_FINAL-COMP_CODE      = IT_DOC-COMP_CODE .

   IT_FINAL-POSTING_NUMBER = IT_DOC-POSTING_NUMBER .

   IT_FINAL-CURRENCY       = IT_DOC-CURRENCY .

*  IT_FINAL-H_PAYMENTS     = IT_DOC-H_PAYMENTS .

*  IT_FINAL-H_NET_AMOUNT   = IT_DOC-H_NET_AMOUNT .

IT_FINAL-H_NET_PAYMENT_WT = IT_DOC-H_NET_PAYMENT_WT .

   IT_FINAL-DOCUMENT_DATE  = IT_DOC-DOCUMENT_DATE .

  IT_FINAL-DOCUMENT_NUMBER = IT_DOC-DOCUMENT_NUMBER .

   IT_FINAL-POSTING_DATE   = IT_DOC-POSTING_DATE .

  IT_FINAL-DOCUMENT_STATUS = IT_DOC-DOCUMENT_STATUS .

LOOP AT IT_ITEMS  WHERE CAJO_NUMBER = IT_DOC-CAJO_NUMBER AND

                         COMP_CODE   = IT_DOC-COMP_CODE   AND

                      POSTING_NUMBER = IT_DOC-POSTING_NUMBER .

  IT_FINAL-TRANSACT_NUMBER = IT_ITEMS-TRANSACT_NUMBER .

    IT_FINAL-POSITION_TEXT = IT_ITEMS-POSITION_TEXT .

    it_final-POSITION_NUMBER = it_items-POSITION_NUMBER .

   IT_FINAL-H_PAYMENTS     = IT_ITEMS-P_PAYMENTS .

   IT_FINAL-H_NET_AMOUNT   = IT_ITEMS-P_NET_AMOUNT .

    IT_FINAL-KOKRS         = IT_ITEMS-KOKRS .

    IT_FINAL-KOSTL         = IT_ITEMS-KOSTL .

    IT_FINAL-PRCTR         = IT_ITEMS-PRCTR .

    IT_FINAL-GL_ACCOUNT    = IT_ITEMS-GL_ACCOUNT .

    IT_FINAL-PERNR         = IT_ITEMS-PERNR.

ENDLOOP .

   READ TABLE IT_NAME WITH KEY COMP_CODE = IT_DOC-COMP_CODE

                                             TRANSACT_NUMBER = IT_ITEMS-TRANSACT_NUMBER .

* LOOP AT IT_NAME WHERE COMP_CODE = IT_DOC-COMP_CODE AND

*                       TRANSACT_NUMBER = IT_ITEMS-TRANSACT_NUMBER .

   IF SY-SUBRC = 0 .

   IT_FINAL-TRANSACT_NAME  = IT_NAME-TRANSACT_NAME .

   ENDIF .

   APPEND IT_FINAL .

   CLEAR IT_FINAL .

   ENDLOOP .

*  ENDLOOP .

   IF SY-SUBRC = 0 .

SORT IT_FINAL .

DELETE ADJACENT DUPLICATES FROM IT_FINAL COMPARING ALL FIELDS .

SORT IT_FINAL .

ENDIF .

LOOP AT IT_FINAL .

          ITEMS1-CAJO_NUMBER  = IT_FINAL-CAJO_NUMBER .

          TCJ-CAJO_NUMBER  = IT_FINAL-CAJO_NUMBER .

          TAX-CAJO_NUMBER  = IT_FINAL-CAJO_NUMBER .

          ITEMS1-COMP_CODE       = IT_FINAL-COMP_CODE.

          TCJ-COMP_CODE       = IT_FINAL-COMP_CODE.

          TAX-COMP_CODE       = IT_FINAL-COMP_CODE.

          ITEMS1-POSTING_NUMBER  = IT_FINAL-POSTING_NUMBER .

          TCJ-POSTING_NUMBER  = IT_FINAL-POSTING_NUMBER .

          TAX-POSTING_NUMBER  = IT_FINAL-POSTING_NUMBER .

*        ITEMS1-CURRENCY        = IT_FINAL-CURRENCY .

         ITEMS1-H_PAYMENTS      = IT_FINAL-H_PAYMENTS .

         ITEMS1-H_NET_AMOUNT    = IT_FINAL-H_NET_AMOUNT .

         ITEMS1-H_NET_PAYMENT_WT = IT_FINAL-H_NET_PAYMENT_WT .

         ITEMS1-DOCUMENT_DATE   = IT_FINAL-DOCUMENT_DATE .

         ITEMS1-DOCUMENT_NUMBER = IT_FINAL-DOCUMENT_NUMBER .

         ITEMS1-POSTING_DATE    = IT_FINAL-POSTING_DATE  .

         ITEMS1-DOCUMENT_STATUS = IT_FINAL-DOCUMENT_STATUS .

         ITEMS1-TRANSACT_NAME   = IT_FINAL-TRANSACT_NAME  .

*        ITEMS1-TRANSACT_NUMBER = IT_FINAL-TRANSACT_NUMBER .

         ITEMS1-POSITION_TEXT    = IT_FINAL-POSITION_TEXT .

          items1-POSITION_NUMBER = it_final-POSITION_NUMBER .

          TCJ-POSITION_NUMBER = it_final-POSITION_NUMBER .

          TAX-POSITION_NUMBER = it_final-POSITION_NUMBER .

*        ITEMS1-DOCUMENT_NUMBER1 = IT_FINAL-DOCUMENT_NUMBER .

         ITEMS1-KOKRS            = IT_FINAL-KOKRS .

         ITEMS1-KOSTL            = IT_FINAL-KOSTL .

         ITEMS1-PRCTR            = IT_FINAL-PRCTR .

         ITEMS1-GL_ACCOUNT       = IT_FINAL-GL_ACCOUNT .

         ITEMS1-PERNR            = IT_FINAL-PERNR .

         APPEND ITEMS1 .

         APPEND TCJ .

         APPEND TAX.

         ENDLOOP .

      POSTING[] = ITEMS1[] .

*     TAX[] = TCJ[] .

ENDFORM.                    " DATA_EXRACTION1

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

*&      Form  BAPI_UPDATE

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM BAPI_UPDATE .

   DATA : P_BEG_BALANCE  TYPE  CJAMOUNT ,

P_TOTAL_RECEIPTS TYPE  CJAMOUNT,

P_TOTAL_PAYMENTS TYPE  CJAMOUNT,

P_TOTAL_CHECKS TYPE  CJAMOUNT,

P_RUN_BALANCE TYPE  CJAMOUNT,

P_RUN_CASH_BALANCE TYPE  CJAMOUNT,

P_NUMB_OF_REC TYPE  I,

P_NUMB_OF_PAYM TYPE  I,

P_NUMB_OF_CHECKS TYPE  I.

  P_BEG_BALANCE     =  '0.00' .

    P_TOTAL_RECEIPTS  = '0.00'.

    P_TOTAL_PAYMENTS  = '40.00'.

    P_TOTAL_CHECKS    = '0.00'   .

    P_RUN_BALANCE     = '0.00'   .

    P_RUN_CASH_BALANCE = '0.00'   .

    P_NUMB_OF_REC     = '4'   .

    P_NUMB_OF_PAYM    = '4' .

    P_NUMB_OF_CHECKS  = '0' .

   call function 'FCJ_POST_ALL'

     exporting

       I_COMP_CODE               = HEADER1-COMP_CODE

       I_CAJO_NUMBER             = HEADER1-CAJO_NUMBER

       I_CURRENCY                = HEADER1-CURRENCY

       I_TYP                     = 'C'

       I_DISPLAY_PERIOD_LO       = '01122012'

       I_DISPLAY_PERIOD_HI       = '31122012'

*   IMPORTING

*     E_ERROR_NUMBER            =

     TABLES

       ITCJ_POSTINGS             = ITEMS1

       ITCJ_WTAX_ITEMS           = TAX

       ITCJ_SPLIT_POSTINGS       = POSTING

        ITCJ_CPD                  = TCJ

     CHANGING

       P_BEG_BALANCE             = P_BEG_BALANCE

       P_TOTAL_RECEIPTS          = P_TOTAL_RECEIPTS

       P_TOTAL_PAYMENTS          = P_TOTAL_PAYMENTS

       P_TOTAL_CHECKS            = P_TOTAL_CHECKS

       P_RUN_BALANCE             = P_RUN_BALANCE

       P_RUN_CASH_BALANCE        = P_RUN_CASH_BALANCE

       P_NUMB_OF_REC             = P_NUMB_OF_REC

       P_NUMB_OF_PAYM            = P_NUMB_OF_PAYM

       P_NUMB_OF_CHECKS          = P_NUMB_OF_CHECKS

             .

  commit work.

       wait up to 10 seconds.

*    endif.

*Commiting the work using Commit Work

*  call function 'BAPI_TRANSACTION_COMMIT'

**EXPORTING

**  WAIT          = '10'

*importing

*  RETURN        = IT_RETURN

.

   loop at IT_RETURN.

     write: / IT_RETURN-TYPE,

              IT_RETURN-ID ,

              IT_RETURN-NUMBER,

              IT_RETURN-MESSAGE.

   endloop.

ENDFORM.                    " BAPI_UPDATE