‎2008 Nov 13 6:03 AM
HI Guru's,
Created following program for FBCJ-Petty cash postings...program is working documents only saving .. Accounting documents are not creating...is there i need to use another call function for GL posting..
&----
*& Report ZFI_FBCJ_UPLOAD *
*& *
&----
*& *
*& *
&----
REPORT ZFI_FBCJ_UPLOAD.
Top includes for variables, screen declaration
INCLUDE ZFI_FBCJ_UPLOAD_TOP.
Subroutines
INCLUDE ZFI_FBCJ_UPLOAD_SUB.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
Select file
PERFORM FM_GET_FNAME USING P_FILE.
START-OF-SELECTION.
CLEAR V_PROCESS_OK.
read excel file
PERFORM FM_READ_DATA.
End of selection
END-OF-SELECTION.
IF V_PROCESS_OK = 'R'.
post receipts
PERFORM FM_POST_RECEIPTS.
ELSEIF V_PROCESS_OK = 'P'.
post payments
PERFORM FM_POST_PAYMENTS.
ENDIF.
read log messages
PERFORM FM_READ_LOG.
&----
*& Include ZFI_FBCJ_UPLOAD _TOP
&----
TABLES: TCJ_DOCUMENTS.
TYPES:
BEGIN OF STRT_RECEIPT,
TRANSACT_NUMBER(4) TYPE C, "Bus Transac
H_PAYMENTS(15) TYPE C, "Amount
POSITION_TEXT(50) TYPE C, "Head Text
VENDOR_NO(10) TYPE C, "Vendor No
END OF STRT_RECEIPT,
BEGIN OF STRT_PAYMENT,
TRANSACT_NUMBER(4) TYPE C, "Bus Transac
H_PAYMENTS(15) TYPE C, "Amount
GL_ACCOUNT(10) TYPE C, "G/L ac
TAX_CODE(2) TYPE C, "Tax Code
POSITION_TEXT(50) TYPE C, "Head Text
KOSTL(10) TYPE C, "Cost Cntre
END OF STRT_PAYMENT.
DATA:
Internal tables
ITABT_RECEIPT TYPE TABLE OF STRT_RECEIPT,
ITABT_PAYMENT TYPE TABLE OF STRT_PAYMENT,
ITABT_BAPI_CJ_ITEMS TYPE TABLE OF BAPI_CJ_ITEMS,
ITABT_BAPI_CJ_TAX_ITEMS TYPE TABLE OF BAPI_CJ_TAX_ITEMS,
ITABT_STR TYPE TABLE OF STRING,
ITABT_RETURN TYPE TABLE OF BAPIRET2,
work area
STRT_WRECEIPT TYPE STRT_RECEIPT,
STRT_WPAYMENT TYPE STRT_PAYMENT,
STRT_WSTR TYPE STRING,
STRT_WBAPI_CJ_HEADER TYPE BAPI_CJ_HEADER,
STRT_WBAPI_CJ_ITEMS TYPE BAPI_CJ_ITEMS,
STRT_WBAPI_CJ_TAX_ITEMS TYPE BAPI_CJ_TAX_ITEMS,
STRT_WRETURN TYPE BAPIRET2,
Variables
V_PROCESS_OK,
V_TEST,
V_COUNT TYPE I.
************************************************************************
*Selection Screeen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK D WITH FRAME TITLE TEXT-001.
PARAMETERS : P_CCODE LIKE TCJ_DOCUMENTS-COMP_CODE,
P_CJNO LIKE TCJ_DOCUMENTS-CAJO_NUMBER,
P_DOCNO LIKE TCJ_DOCUMENTS-DOCUMENT_NUMBER.
SELECTION-SCREEN END OF BLOCK D.
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-002.
PARAMETERS : RB_RECPT RADIOBUTTON GROUP RAD USER-COMMAND U1
DEFAULT 'X', "Cash
*receipts/Payments
RB_PAYMT RADIOBUTTON GROUP RAD.
SELECTION-SCREEN END OF BLOCK A.
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-003.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\'.
SELECTION-SCREEN END OF BLOCK B.
SELECTION-SCREEN BEGIN OF BLOCK C WITH FRAME TITLE TEXT-004.
PARAMETERS: P_TEST TYPE CHECKBOX.
SELECTION-SCREEN END OF BLOCK C.
&----
*& Include ZFI_FBCJ_UPLOAD_SUB
&----
&----
*& Form fm_get_fname
&----
text
----
--> p1 text
<-- p2 text
----
FORM FM_GET_FNAME USING V_FILENAME TYPE LOCALFILE .
DATA: GT_FILES TYPE FILETABLE, " WITH HEADER LINE,
G_RC TYPE I,
G_ACTION TYPE I,
LV_WINDOW_TITLE TYPE STRING.
LV_WINDOW_TITLE = TEXT-005.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = LV_WINDOW_TITLE
DEFAULT_EXTENSION = 'CSV'
INITIAL_DIRECTORY = '%winnt%'
INITIAL_DIRECTORY = 'C:\'
MULTISELECTION = 'X' " file multiselection
CHANGING
FILE_TABLE = GT_FILES
RC = G_RC
USER_ACTION = G_ACTION
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE GT_FILES INTO V_FILENAME INDEX 1.
ENDFORM. " fm_get_fname
&----
*& Form fm_read_data
&----
FORM FM_READ_DATA.
CLEAR: ITABT_STR, STRT_WSTR.
DATA: FILENAME TYPE STRING.
FILENAME = P_FILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = FILENAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
CHANGING
DATA_TAB = ITABT_STR
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 <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ElSE.
test run indicator
V_TEST = P_TEST.
company code
STRT_WBAPI_CJ_HEADER-COMP_CODE = P_CCODE.
cj no
STRT_WBAPI_CJ_HEADER-CAJO_NUMBER = P_CJNO.
ISO code currency
STRT_WBAPI_CJ_HEADER-CURRENCY_ISO = 'SGD'.
reference
STRT_WBAPI_CJ_HEADER-REF_DOC_NO = P_DOCNO.
posting date
STRT_WBAPI_CJ_HEADER-PSTNG_DATE = SY-DATUM.
document date
STRT_WBAPI_CJ_HEADER-DOC_DATE = SY-DATUM.
CASE 'X'.
WHEN RB_RECPT.
LOOP AT ITABT_STR INTO STRT_WSTR.
SPLIT STRT_WSTR AT ',' INTO
STRT_WRECEIPT-TRANSACT_NUMBER
STRT_WRECEIPT-H_PAYMENTS
STRT_WRECEIPT-POSITION_TEXT
STRT_WRECEIPT-VENDOR_NO.
APPEND STRT_WRECEIPT TO ITABT_RECEIPT.
ENDLOOP.
V_PROCESS_OK = 'R'.
WHEN RB_PAYMT.
LOOP AT ITABT_STR INTO STRT_WSTR.
SPLIT STRT_WSTR AT ',' INTO
STRT_WPAYMENT-TRANSACT_NUMBER
STRT_WPAYMENT-H_PAYMENTS
STRT_WPAYMENT-GL_ACCOUNT
STRT_WPAYMENT-TAX_CODE
STRT_WPAYMENT-POSITION_TEXT
STRT_WPAYMENT-KOSTL.
APPEND STRT_WPAYMENT TO ITABT_PAYMENT.
ENDLOOP.
V_PROCESS_OK = 'P'.
ENDCASE.
ENDIF.
ENDFORM. " fm_read_data
&----
*& Form FM_POST_RECEIPTS
&----
text
----
--> p1 text
<-- p2 text
----
FORM FM_POST_RECEIPTS .
CLEAR: STRT_WRECEIPT, V_COUNT.
LOOP AT ITABT_RECEIPT INTO STRT_WRECEIPT.
V_COUNT = V_COUNT + 1.
item no
STRT_WBAPI_CJ_ITEMS-POSITION_NUMBER = V_COUNT.
Business Transaction
STRT_WBAPI_CJ_ITEMS-P_RECEIPTS = STRT_WRECEIPT-TRANSACT_NUMBER.
receipts
STRT_WBAPI_CJ_ITEMS-P_RECEIPTS = STRT_WRECEIPT-H_PAYMENTS.
text
STRT_WBAPI_CJ_ITEMS-POSITION_TEXT = STRT_WRECEIPT-POSITION_TEXT.
vendor number
STRT_WBAPI_CJ_ITEMS-VENDOR_NO = STRT_WRECEIPT-VENDOR_NO.
APPEND STRT_WBAPI_CJ_ITEMS TO ITABT_BAPI_CJ_ITEMS.
ENDLOOP.
CALL FUNCTION 'BAPI_CASHJOURNALDOC_CREATE'
EXPORTING
HEADER = STRT_WBAPI_CJ_HEADER
TESTRUN = V_TEST
TABLES
ITEMS = ITABT_BAPI_CJ_ITEMS
RETURN = ITABT_RETURN
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDFORM. " FM_POST_RECEIPTS
&----
*& Form FM_POST_PAYMENTS
&----
text
----
--> p1 text
<-- p2 text
----
FORM FM_POST_PAYMENTS .
CLEAR: STRT_WPAYMENT, V_COUNT.
LOOP AT ITABT_PAYMENT INTO STRT_WPAYMENT.
V_COUNT = V_COUNT + 1.
item no
STRT_WBAPI_CJ_ITEMS-POSITION_NUMBER = V_COUNT.
Number of Cash Journal Business Transaction
STRT_WBAPI_CJ_ITEMS-TRANSACT_NUMBER = STRT_WPAYMENT-TRANSACT_NUMBER.
payments
STRT_WBAPI_CJ_ITEMS-P_PAYMENTS = STRT_WPAYMENT-H_PAYMENTS.
G/L account
STRT_WBAPI_CJ_ITEMS-GL_ACCOUNT = STRT_WPAYMENT-GL_ACCOUNT.
tax code
STRT_WBAPI_CJ_ITEMS-TAX_CODE = STRT_WPAYMENT-TAX_CODE.
text
STRT_WBAPI_CJ_ITEMS-POSITION_TEXT = STRT_WPAYMENT-POSITION_TEXT.
cost centre
STRT_WBAPI_CJ_ITEMS-COSTCENTER = STRT_WPAYMENT-KOSTL.
APPEND STRT_WBAPI_CJ_ITEMS TO ITABT_BAPI_CJ_ITEMS.
tax code
STRT_WBAPI_CJ_TAX_ITEMS-TAX_CODE = STRT_WPAYMENT-TAX_CODE.
APPEND STRT_WBAPI_CJ_TAX_ITEMS TO ITABT_BAPI_CJ_TAX_ITEMS.
ENDLOOP.
CALL FUNCTION 'BAPI_CASHJOURNALDOC_CREATE'
EXPORTING
HEADER = STRT_WBAPI_CJ_HEADER
TESTRUN = V_TEST
TABLES
ITEMS = ITABT_BAPI_CJ_ITEMS
TAX_ITEMS = ITABT_BAPI_CJ_TAX_ITEMS
RETURN = ITABT_RETURN
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDFORM. " FM_POST_PAYMENTS
&----
*& Form FM_READ_LOG
&----
text
----
--> p1 text
<-- p2 text
----
FORM FM_READ_LOG .
LOOP AT ITABT_RETURN INTO STRT_WRETURN.
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
ID = STRT_WRETURN-ID
NUMBER = STRT_WRETURN-NUMBER
LANGUAGE = SY-LANGU
TEXTFORMAT = 'NON'
MESSAGE_V1 = STRT_WRETURN-MESSAGE_V1
MESSAGE_V2 = STRT_WRETURN-MESSAGE_V2
MESSAGE_V3 = STRT_WRETURN-MESSAGE_V3
MESSAGE_V4 = STRT_WRETURN-MESSAGE_V4
IMPORTING
MESSAGE = STRT_WRETURN-MESSAGE.
WRITE:/ STRT_WRETURN-MESSAGE.
ENDLOOP.
ENDFORM. " FM_READ_LOG
regards
JK
‎2008 Nov 13 8:19 AM
‎2008 Nov 13 8:19 AM