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

EDIDD-SDATA type casting

0 Likes
767

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.

1 REPLY 1
Read only

Former Member
0 Likes
464

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