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

POSTING_INTERFACE_DOCUMENT

Former Member
0 Likes
4,484

i'm trying to post the data through the funciton module

POSTING_INTERFACE_DOCUMENT.

call transaction for post,if fails session.

any idea?

3 REPLIES 3
Read only

Former Member
0 Likes
1,743

from below code, i'm not able to post the document with one header 2 or 3 line items.Anyone have any idea?

DATA: l_t_blntab TYPE blntab OCCURS 0 WITH HEADER LINE,

l_t_ftpost TYPE ftpost OCCURS 0 WITH HEADER LINE,

l_t_fttax TYPE fttax OCCURS 0 WITH HEADER LINE.

DATA l_group LIKE apqi-groupid.

DATA l_subrc LIKE syst-subrc .

DATA l_datum(10) TYPE c .

DATA l_wrbtr(15) TYPE c .

DATA l_stbsl LIKE tbsl-stbsl .

DEFINE add_ftpost.

l_t_ftpost-stype = &1.

l_t_ftpost-count = &2.

l_t_ftpost-fnam = &3.

l_t_ftpost-fval = &4.

append l_t_ftpost.

END-OF-DEFINITION.

l_group = sy-tcode.

*--- Posting interface start

CALL FUNCTION 'POSTING_INTERFACE_START'

EXPORTING

  • I_CLIENT = SY-MANDT

i_function = 'C' " Using Call Transaction

i_group = l_group

  • I_HOLDDATE = ' '

  • I_KEEP = ' '

i_mode = 'A'

i_update = 'S'

i_user = sy-uname

i_xbdcc = 'X'

EXCEPTIONS

client_incorrect = 1

function_invalid = 2

group_name_missing = 3

mode_invalid = 4

update_invalid = 5

OTHERS = 6

.

IF sy-subrc <> 0.

  • MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

  • WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

WRITE '09252006' TO l_datum.

add_ftpost 'K' 1 'BKPF-BLDAT' l_datum.

add_ftpost 'K' 1 'BKPF-BLART' 'KN'.

add_ftpost 'K' 1 'BKPF-BUKRS' '0010'.

add_ftpost 'K' 1 'BKPF-WAERS' 'USD'.

add_ftpost 'K' 1 'BKPF-XBLNR' 'REF NO'.

add_ftpost 'K' 1 'RF05A-NEWBS' '31'.

add_ftpost 'K' 1 'RF05A-NEWKO' '0000500012'.

add_ftpost 'K' 1 'BSEG-WRBTR' '100'.

add_ftpost 'K' 1 'BSEG-EMPFB' '3300032'.

add_ftpost 'P' 1 'RF05A-NEWBS' '41' .

add_ftpost 'P' 1 'BSEG-HKONT' '0000400000'.

WRITE '50' TO l_wrbtr .

add_ftpost 'P' 1 'BSEG-WRBTR' l_wrbtr .

add_ftpost 'P' 1 'BSEG-SGTXT' 'TEST' .

add_ftpost 'P' 1 'COBL-KOSTL' '23233' .

APPEND l_t_ftpost.

add_ftpost 'P' 2 'RF05A-NEWBS' '41' .

add_ftpost 'P' 2 'BSEG-HKONT' '0000400000'.

WRITE '50' TO l_wrbtr .

add_ftpost 'P' 2 'BSEG-WRBTR' l_wrbtr .

add_ftpost 'P' 2 'BSEG-SGTXT' 'TEST' .

add_ftpost 'P' 2 'COBL-KOSTL' '23233' .

APPEND l_t_ftpost.

CALL FUNCTION 'POSTING_INTERFACE_DOCUMENT'

EXPORTING

i_tcode = 'FB01'

  • I_SGFUNCT = ' '

  • I_NO_AUTH = ' '

IMPORTING

  • E_MSGID =

  • E_MSGNO =

  • E_MSGTY =

  • E_MSGV1 =

  • E_MSGV2 =

  • E_MSGV3 =

  • E_MSGV4 =

e_subrc = l_subrc

TABLES

t_blntab = l_t_blntab

t_ftpost = l_t_ftpost

t_fttax = l_t_fttax

  • EXCEPTIONS

  • ACCOUNT_MISSING = 1

  • COMPANY_CODE_MISSING = 2

  • POSTING_KEY_INVALID = 3

  • POSTING_KEY_MISSING = 4

  • RECORD_TYPE_INVALID = 5

  • TRANSACTION_CODE_INVALID = 6

  • AMOUNT_FORMAT_ERROR = 7

  • TOO_MANY_LINE_ITEMS = 8

  • COMPANY_CODE_INVALID = 9

  • SCREEN_NOT_FOUND = 10

  • NO_AUTHORIZATION = 11

  • OTHERS = 12

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'POSTING_INTERFACE_END'

  • EXPORTING

  • I_BDCIMMED = ' '

  • I_BDCSTRTDT = NO_DATE

  • I_BDCSTRTTM = NO_TIME

EXCEPTIONS

session_not_processable = 1

OTHERS = 2

.

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 only

0 Likes
1,743

Hi Suresh,

Uncomment the FM 'POSTING_INTERFACE_DOCUMENT' and after calling it write the error message if SY-SUBRC NE 0.

...

EXCEPTIONS

ACCOUNT_MISSING = 1

COMPANY_CODE_MISSING = 2

POSTING_KEY_INVALID = 3

POSTING_KEY_MISSING = 4

RECORD_TYPE_INVALID = 5

TRANSACTION_CODE_INVALID = 6

AMOUNT_FORMAT_ERROR = 7

TOO_MANY_LINE_ITEMS = 8

COMPANY_CODE_INVALID = 9

SCREEN_NOT_FOUND = 10

NO_AUTHORIZATION = 11

OTHERS = 12

.

IF sy-subrc <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

In this way you may get the error description.

Aubin

Read only

Former Member
0 Likes
1,743

Hi,

You can use the program RFBIBL00 to upload the FI documents.

Try to read the documentation of RFBIBL00, you will get better idea.

You have to fill the requried data in BBKPF per document and BBSEG per document line items.

I have attached code for yr reference.

File Format : Below listed fields must be filled when you wnat to post new document. Program will recognize new document by itab-newdoc = 'X'.
NEWDOC , "New Doc
BLDAT(10) , "Doc Date
BUDAT(10) , "Posting Date
BLART(2) , "Document Type
XBLNR LIKE BKPF-XBLNR , "Refrence
BKTXT LIKE BKPF-BKTXT , "Doc Header Text

You need one serverfile. After sucessfully run of program you have to run the progrma RFBIBL00. Pass data transfer type = 'B'.

Regards,
Naimesh.

PS: Reward points, if it is useful..!

***********************

REPORT ZTEST_NP .

***** Tables
TABLES: BSEG ,
BGR00,
BBKPF,
BBSEG,
t001.

***** Internal Tables
DATA: BEGIN OF ITAB OCCURS 0 ,
NEWDOC , "New Doc
BLDAT(10) , "Doc Date
BUDAT(10) , "Posting Date
BLART(2) , "Document Type
XBLNR LIKE BKPF-XBLNR , "Refrence
BKTXT LIKE BKPF-BKTXT , "Doc Header Text
BSCHL(2) , "Posting Key
HKONT(10) , "Account
UMSKZ(1), "Sp GL ind
ZLSCH(1) , "Payment Method
ZLSPR(1) , "Payment Block
WRBTR(16), "Amount without sign
KOSTL(10), "Cost center
GSBER(4) , "Business Area
ZUONR LIKE BSEG-ZUONR , "Assignment
AUFNR LIKE BSEG-AUFNR , "Order
PERNR(8) , "Personal Number
SGTXT LIKE BSEG-SGTXT, "Line Item Text
END OF ITAB .

DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA: I_BBKPF LIKE BBKPF OCCURS 0 WITH HEADER LINE.
DATA: I_BBSEG LIKE BBSEG OCCURS 0 WITH HEADER LINE.
DATA: I_BWITH LIKE BWITH OCCURS 0 WITH HEADER LINE.

***** Data Declaration
DATA: C_NODATA(1) TYPE C VALUE '/',
W_CNT TYPE I.

FIELD-SYMBOLS <F>.

SELECTION-SCREEN: BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-T01.
PARAMETER: P_BUKRS LIKE BKPF-BUKRS OBLIGATORY,
PSESSION(12) OBLIGATORY DEFAULT 'Auto_FI',
P_SFILE LIKE RLGRAP-FILENAME OBLIGATORY ,
P_LFILE LIKE RLGRAP-FILENAME OBLIGATORY .
SELECTION-SCREEN: END OF BLOCK BLK1.


***** At Selection Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LFILE.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_LFILE.

***** Start Of Selection
START-OF-SELECTION .
OPEN DATASET P_SFILE FOR OUTPUT IN TEXT MODE .
PERFORM INIT_BGR00 USING C_NODATA.
PERFORM INIT_IBKPF USING C_NODATA.
PERFORM INIT_IBSEG USING C_NODATA.
PERFORM UPLOAD .
PERFORM SET_DATA.

*&---------------------------------------------------------------------*
*& Form INIT_BGR00
*&---------------------------------------------------------------------*
FORM INIT_BGR00 USING NODATA .

CLEAR BGR00.
BGR00-STYPE = '0'.
BGR00-GROUP = PSESSION.
BGR00-MANDT = SY-MANDT .
BGR00-USNAM = SY-UNAME .
* bgr00-start = datum .
BGR00-XKEEP = 'X'.
BGR00-NODATA = NODATA.
TRANSFER BGR00 TO P_SFILE.

ENDFORM. " INIT_BGR00

*&---------------------------------------------------------------------*
*& Form INIT_IBKPF
*&---------------------------------------------------------------------*
FORM INIT_IBKPF USING NODATA .

* Initialize data fields with NODATA:
W_CNT = 0.
DO.
ADD 1 TO W_CNT.
ASSIGN COMPONENT W_CNT OF STRUCTURE I_BBKPF TO <F>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
MOVE NODATA TO <F>.
ENDDO.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form INIT_IBSEG
*&---------------------------------------------------------------------*
FORM INIT_IBSEG USING NODATA.

* Initialize data fields with NODATA:
W_CNT = 0.
DO.
ADD 1 TO W_CNT.
ASSIGN COMPONENT W_CNT OF STRUCTURE I_BBSEG TO <F>.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
MOVE NODATA TO <F>.
ENDDO.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form INIT_BBKPF
*&---------------------------------------------------------------------*
FORM INIT_BBKPF.

MOVE I_BBKPF TO BBKPF.
BBKPF-STYPE = '1'.

ENDFORM. " INIT_BBKPF

*&---------------------------------------------------------------------*
*& Form INIT_BBSEG
*&---------------------------------------------------------------------*
FORM INIT_BBSEG.

MOVE I_BBSEG TO BBSEG.
BBSEG-STYPE = '2'.
BBSEG-TBNAM = 'BBSEG'.

ENDFORM. " INIT_BBSEG

*&---------------------------------------------------------------------*
*& Form UPLOAD
*&---------------------------------------------------------------------*
FORM UPLOAD.

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_LFILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.

IF SY-SUBRC NE 0 .
MESSAGE S001(01) WITH 'The File Could not be Uploaded..!' .
LEAVE LIST-PROCESSING .
ELSE.
DELETE ITAB INDEX 1 .
ENDIF .

LOOP AT ITAB .
DO .
REPLACE '.' WITH '' INTO ITAB-BLDAT .
IF SY-SUBRC NE 0 .
CONDENSE ITAB-BLDAT NO-GAPS .
EXIT .
ENDIF .
ENDDO .
DO .
REPLACE '.' WITH '' INTO ITAB-BUDAT .
IF SY-SUBRC NE 0 .
CONDENSE ITAB-BUDAT NO-GAPS .
EXIT .
ENDIF .
ENDDO .
MODIFY ITAB .
ENDLOOP .

ENDFORM. " UPLOAD
*&---------------------------------------------------------------------*
*& Form SET_DATA
*&---------------------------------------------------------------------*
FORM SET_DATA.

DATA: L_DOCCNT TYPE I,
L_LNCNT TYPE I .

SELECT SINGLE * FROM T001
WHERE BUKRS = P_BUKRS.

LOOP AT ITAB .
IF ITAB-NEWDOC = 'X' OR ITAB-NEWDOC = 'x' .
CLEAR : L_LNCNT .
L_DOCCNT = L_DOCCNT + 1.
PERFORM INIT_BBKPF .
BBKPF-TCODE = 'FB01'.
BBKPF-BUKRS = P_BUKRS.
WRITE : ITAB-BLDAT DD/MM/YY TO BBKPF-BLDAT.
WRITE : ITAB-BUDAT DD/MM/YY TO BBKPF-BUDAT.
BBKPF-BLART = ITAB-BLART .
BBKPF-WAERS = T001-WAERS.
BBKPF-BKTXT = ITAB-BKTXT .
BBKPF-XBLNR = ITAB-XBLNR .
TRANSFER BBKPF TO P_SFILE.
ENDIF .
L_LNCNT = L_LNCNT + 1 .
IF L_LNCNT GT 990 .
MESSAGE S001(01) WITH 'Number of Records Exceed 990 Line Items'
'Program cannot be executed' .
LEAVE LIST-PROCESSING .
ENDIF .
PERFORM INIT_BBSEG .
BBSEG-NEWKO = ITAB-HKONT .
BBSEG-NEWBS = ITAB-BSCHL .
BBSEG-WRBTR = ITAB-WRBTR .
IF NOT ITAB-KOSTL IS INITIAL .
BBSEG-KOSTL = ITAB-KOSTL .
ELSE .
IF NOT ITAB-GSBER IS INITIAL .
BBSEG-GSBER = ITAB-GSBER .
ENDIF .
ENDIF .
BBSEG-ZUONR = ITAB-ZUONR.
BBSEG-SGTXT = ITAB-SGTXT .
IF NOT ITAB-AUFNR IS INITIAL .
BBSEG-AUFNR = ITAB-AUFNR .
ENDIF .
IF NOT ITAB-UMSKZ IS INITIAL .
BBSEG-NEWUM = ITAB-UMSKZ .
ENDIF .
IF ITAB-BSCHL = '29' OR ITAB-BSCHL = '39' OR ITAB-BSCHL = '09' .
BBSEG-ZFBDT = BBKPF-BLDAT .
ENDIF .
IF NOT ITAB-ZLSCH IS INITIAL .
BBSEG-ZLSCH = ITAB-ZLSCH .
ENDIF .
IF NOT ITAB-PERNR IS INITIAL .
BBSEG-PERNR = ITAB-PERNR .
ENDIF .
IF NOT ITAB-ZLSPR IS INITIAL .
BBSEG-ZLSPR = ITAB-ZLSPR .
ENDIF .
TRANSFER BBSEG TO P_SFILE.
ENDLOOP .
IF L_DOCCNT NE 0 .
WRITE :/ P_SFILE , 'has been created' .
WRITE :/ L_DOCCNT , 'DOCUMENTS UPLOADED' .
ELSE .
WRITE :/'INPUT FILE CONTAINS NO DATA' .
ENDIF .
CLOSE DATASET P_SFILE .
ENDFORM. " SET_DATA

Regards

Sudheer