‎2007 May 16 4:46 PM
Below is my custom idoc program,i am getting problem when ever i push data to SDAAT of EDIDD,plz can any one help out...
REPORT ZIDOC_FIDCC1_2_TEST LINE-SIZE 250.
TABLES: SKB1,
GLPCT,
EDIDC,
EDIDD.
DATA : WA_EDIDC TYPE EDIDC,
WA_EDIDD LIKE EDIDD,
IT_EDIDC TYPE STANDARD TABLE OF EDIDC ,
IT_EDIDD TYPE STANDARD TABLE OF EDIDD.
DATA: IT_SKB1 TYPE STANDARD TABLE OF SKB1 WITH HEADER LINE.
IT_GLPCT TYPE STANDARD TABLE OF GLPCT WITH HEADER LINE.
data :BEGIN OF it_glpct occurs 0,
RYEAR type RYEAR,
RPMAX type RPMAX,
RACCT type RACCT,
RBUKRS type glpct-rBUKRS,
RPRCTR type RPRCTR,
DRCRK type glpct-DRCRK,
RTCUR type RTCUR,
HSL01 type glpct-HSL01,
RASSC type RASSC,
ACTIV type ACTIV,
END OF it_glpct.
DATA : D_FLAG,M_FLAG.
SELECTION-SCREEN BEGIN OF BLOCK B0 WITH FRAME TITLE TITLE0.
PARAMETERS: P_DAYRUN RADIOBUTTON GROUP A."Daily run
PARAMETERS: P_MONRUN RADIOBUTTON GROUP A ."DEFAULT 'X'."Monthly run
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK B0.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TITLE1.
PARAMETERS: P_BUKRS TYPE BUKRS,"company code
P_HKONT TYPE HKONT."General Ledger Account
PARAMETERS P_CPUDT TYPE CPUDT."Entry date
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TITLE2.
SELECTION-SCREEN SKIP.
PARAMETERS: P_MONAT TYPE MONAT,"fiscal period
P_GJAHR TYPE GJAHR."fiscal year
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK B2.
START-OF-SELECTION.
PERFORM SELECT_DATA CHANGING D_FLAG.
IF D_FLAG = 'X'.
PERFORM SHOW_DATA.
PERFORM F_FORMULATE_CONTROL_DATA.
PERFORM F_FORMULATE_IDOC_DATA.
PERFORM f_master_idoc_db.
ENDIF.
&----
*& Form select_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM SELECT_DATA CHANGING P_FLAG LIKE D_FLAG.
SELECT SINGLE BUKRS
SAKNR
MITKZ
FROM SKB1
INTO (SKB1-BUKRS,SKB1-SAKNR,SKB1-MITKZ)
WHERE BUKRS = P_BUKRS AND SAKNR = P_HKONT.
P_FLAG = SPACE.
IF SY-SUBRC <> 0 .
MESSAGE I001(ZMSG) WITH 'data' 'not found' 'in SKB1'.
ELSE.
*Daily Run
IF P_DAYRUN = 'X' AND SKB1-MITKZ IS NOT INITIAL.
SELECT RYEAR
RPMAX
RACCT
RBUKRS
RPRCTR
DRCRK
RTCUR
HSL01
RASSC
ACTIV
FROM GLPCT
INTO CORRESPONDING FIELDS OF TABLE IT_GLPCT
WHERE ACTIV NE 'PCAA'
AND RBUKRS = P_BUKRS.
P_FLAG = 'X'.
*Monthly run
ELSEIF P_MONRUN = 'X' AND SKB1-MITKZ IS INITIAL.
SELECT RYEAR
RPMAX
RACCT
RBUKRS
RPRCTR
DRCRK
RTCUR
HSL01
RASSC
ACTIV
FROM GLPCT
INTO CORRESPONDING FIELDS OF TABLE IT_GLPCT
WHERE ACTIV EQ 'PCAA'
AND RPMAX = P_MONAT
AND RYEAR = P_GJAHR.
P_FLAG = 'X'.
ENDIF.
ENDIF.
ENDFORM. " select_data
&----
*& Form SHOW_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM SHOW_DATA .
**TEST IT_SKB1 DISPLAY TO BE DELETED
LOOP AT SKB1.
WRITE:/ SKB1-BUKRS,SKB1-SAKNR,SKB1-MITKZ.
ENDLOOP.
**TEST IT_BKPF DISPLAY TO BE DELETED
WRITE:/ .
***test code to be deleted
WRITE:/01'Fiscal Year',
20 'Period',
30 'Account Number',
50 'Company Code',
70 'Profit Center',
85 'Debit/Credit Indicator',
100 'Currency Key',
120 'Total transactions period in company code curr',
180 'Company ID of trading partner',
200 'FI-SL Business Transaction'.
LOOP AT IT_GLPCT.
WRITE:/01 IT_GLPCT-RYEAR,
20 IT_GLPCT-RPMAX,
30 IT_GLPCT-RACCT,
50 IT_GLPCT-RBUKRS,
70 IT_GLPCT-RPRCTR,
85 IT_GLPCT-DRCRK,
100 IT_GLPCT-RTCUR,
120 IT_GLPCT-HSL01,
180 IT_GLPCT-RASSC,
200 IT_GLPCT-ACTIV.
ENDLOOP.
ENDFORM. " SHOW_DATA
&----
*& Form f_formulate_control_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_FORMULATE_CONTROL_DATA .
WA_EDIDC-RCVPRT = ''.
WA_EDIDC-RCVPRN = ''.
WA_EDIDC-MESTYP = ''.
WA_EDIDC-IDOCTP = ''.
ENDFORM. " f_formulate_control_data
&----
*& Form f_formulate_idoc_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM F_FORMULATE_IDOC_DATA .
LOOP AT IT_GLPCT.
WA_EDIDD-SEGNAM = ''.
READ TABLE IT_GLPCT WITH KEY <> = <>.
MOVE IT_GLPCT TO WA_EDIDD-SDATA.
APPEND WA_EDIDD to IT_EDIDD.
CLEAR WA_EDIDD.
ENDLOOP.
ENDFORM. " f_formulate_idoc_data
*
*&----
**& Form f_master_idoc_db
*&----
text
*----
--> p1 text
<-- p2 text
*----
*FORM f_master_idoc_db .
*
*CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL =
OBJ_TYPE = ''
CHNUM = ''
TABLES
COMMUNICATION_IDOC_CONTROL =
MASTER_IDOC_DATA =
EXCEPTIONS
ERROR_IN_IDOC_CONTROL = 1
ERROR_WRITING_IDOC_STATUS = 2
ERROR_IN_IDOC_DATA = 3
SENDING_LOGICAL_SYSTEM_UNKNOWN = 4
OTHERS = 5.
*
*IF SY-SUBRC <> 0.
‎2007 May 17 3:14 PM
Hi,
<b> First of all step by step pass all your data into one internal table , then directly pass that internal table to EDIDD.
Again once it is in the EDIDD. move it to another internal table.
Now you check that internal table-sdata. Then you can see the sdata.
Why because, you cannot do it in such a way.
Example move i_tab to EDIDD.
move EDIDD to i_tab1.
loop at i_tabl1.
move i_tab1-sdata to st_sdata.
This will contain st_data sdata.</b>
Thanks
Manju