SAP Virtual/Onsite Trainings

Document Categories:

What's New?

Contribute?

Sample Specs

What's Hot?

Web Dynpro for ABAP Tutorials 


Join the Mailing List
Enter name and email address below:
Name:
Email:
Subscribe  Unsubscribe 

Create Condition Records Using the Message Type COND_A for condition table A018

...Previous

Double click on COND_A and maintain the process code COND as follows.  

Now the configuration part is over.  

Create the following Program:

REPORT  ZRS_INBOUND_COND_IDOC.
*&---------------------------------------------------------------------*
*& Report  ZRS_INBOUND_COND_IDOC
*&
*&---------------------------------------------------------------------*
*&This program is used to post the conditional data using the message type
*&COND_A and idoc type COND_A4 which updates the tables A018, KONH and
*&KONP
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------*
*                  TABLES                                             *
*---------------------------------------------------------------------*
TABLES:  t000,   
"clients
  edp21,         
"partner profile inbound
  e1komg,        
"Filter segment with separated condition key
  e1konh,        
"Data from condition header
  e1konp.        
"Conditions Items
*---------------------------------------------------------------------*
*                  TYPES DECLARATIONS                                 *
*---------------------------------------------------------------------*
*/ Types for Idoc Header
TYPES BEGIN OF t_idoc_header.
        
INCLUDE STRUCTURE edidc.
TYPES END OF t_idoc_header.

*/ Types for Idoc Data
TYPES  BEGIN OF t_idoc_data.
        
INCLUDE STRUCTURE edidd.
TYPES END OF t_idoc_data.

*/ Types for Status Record (IDoc)
TYPES BEGIN OF t_idoc_status.
        
INCLUDE STRUCTURE edids.         "EDIDD/EDID4
TYPES END OF t_idoc_status.

* EDI process types (inbound)/ Process codes
TYPES BEGIN OF t_tede2.
        
INCLUDE STRUCTURE tede2.
TYPES END OF t_tede2.
*----------------------------------------------------------------------*
* Structures & Internal tables  declaration                            *
*----------------------------------------------------------------------*
DATA: wa_idoc_header 
TYPE t_idoc_header,
      it_idoc_header 
TYPE TABLE OF t_idoc_header,
      wa_idoc_data  
TYPE t_idoc_data,
      it_idoc_data  
TYPE TABLE OF t_idoc_data,
      wa_idoc_status 
TYPE t_idoc_status,
      it_idoc_status 
TYPE TABLE OF t_idoc_status.
*--------------------------------------------------------------------*
* Variables declaration                                              *
*--------------------------------------------------------------------*
DATA: docnum           
TYPE edidc-docnum,        "IDoc number
      state            
TYPE sy-subrc.
*----------------------------------------------------------------------*
* Constants declaration
*----------------------------------------------------------------------*
CONSTANTS: c_true  
TYPE sap_bool VALUE 'X'.
*--------------------------------------------------------------------*
* START-OF-SELECTION                                                 *
*--------------------------------------------------------------------*
START-OF-SELECTION.

  
PERFORM fill_idoc_header.
  
PERFORM fill_idoc_data.

*&---------------------------------------------------------------------*
*&      Form  FILL_IDOC_HEADER
*&---------------------------------------------------------------------*
*       Fill IDOC with control information
*----------------------------------------------------------------------*
FORM fill_idoc_header.

*Get the partner profile from EDP21 table
  
SELECT SINGLE *
  
FROM edp21
  
WHERE sndprn = 'REC6_251'
   
AND  sndprt = 'LS'
   
AND  mestyp = 'COND_A'.

 
IF sy-subrc EQ 0.
    
SELECT SINGLE FROM t000 WHERE mandt = sy-mandt.
    
IF t000-logsys IS INITIAL.
      
MESSAGE 'Local system is not defined' type 'E'.
    ENDIF.

*Fill IDOC with control inforamtion
   
MOVE-CORRESPONDING edp21 TO wa_idoc_header.
   wa_idoc_header-idoctp  = 
'COND_A04'.        "Must not be blank.
   wa_idoc_header-mestyp  = 
'COND_A'.
       wa_idoc_header-docrel   = '700'.
   wa_idoc_header-direct   = 
'2'.
   wa_idoc_header-rcvprt   = 
'LS'.
   wa_idoc_header-rcvprn   = 
'REC6_251'.
   wa_idoc_header-rcvpor = 
'SAPEC6'.
   wa_idoc_header-sndprn = 
'REC6_251'.
   wa_idoc_header-sndprt = 
'LS'.
   wa_idoc_header-sndpor = 
'SAPEC6'.
   
APPEND wa_idoc_header TO it_idoc_header.
ELSE.
   
MESSAGE 'Maintain Inbound Partner Profile' TYPE 'E'.
ENDIF.

ENDFORM.                    
" FILL_IDOC_HEADER
*&---------------------------------------------------------------------*
*&      Form  FILL_IDOC_DATA
*&---------------------------------------------------------------------*
*       Fill IDOC with input data
*----------------------------------------------------------------------*
FORM fill_idoc_data .

  
REFRESH : it_idoc_data.
  
CLEAR   : wa_idoc_data, e1komg, e1konh, e1konp.

*E1KONH, E1KONP and E1KOMG are mandatory segments
*fill the segments and idoc
  
MOVE  '1'          TO wa_idoc_data-segnum.
  
MOVE  '1'          TO wa_idoc_data-hlevel.
  
MOVE 'E1KOMG'     TO wa_idoc_data-segnam.
  e1komg-kvewe      =  
'A'.
  e1komg-kotabnr    =  
'018'.
  e1komg-kappl      =  
'M'.
  e1komg-kschl      = 
'PB00'.
  e1komg-vakey      = 
'000000010000000000000000052110001'.
  e1komg-matnr      = 
'000000000000000521'.
  e1komg-lifnr      = 
'0000000100'.
  e1komg-ekorg      = 
'1000'.
  e1komg-esokz      = 
'1'.
  wa_idoc_data-sdata = e1komg.
* Append KOMG segement data to idoc
  
APPEND wa_idoc_data TO it_idoc_data.
  
CLEAR wa_idoc_data.

  
MOVE  '2'          TO wa_idoc_data-segnum.
  
MOVE  '2'          TO wa_idoc_data-hlevel.
  
MOVE 'E1KONH'      TO wa_idoc_data-segnam.

  e1konh-knumh = 
'$000000001'.
  e1konh-datbi = 
'99991231'..
  e1konh-datab = 
'20100912'.
  wa_idoc_data-sdata = e1konh.
* Append the KONH segement data to idoc
  
APPEND wa_idoc_data TO it_idoc_data.
  
CLEAR wa_idoc_data.

  
MOVE  '3'          TO wa_idoc_data-segnum.
  
MOVE  '3'          TO wa_idoc_data-hlevel.
  
MOVE 'E1KONP'      TO wa_idoc_data-segnam.
  e1konp-kbetr = 
'0000000000000025'.
  e1konp-krech = 
'C'.
  e1konp-kpein = 
'1'.
  e1konp-kmein = 
'EA'.
  e1konp-konwa = 
'INR'.
  e1konp-kznep = 
'X'.
  wa_idoc_data-sdata = e1konp.

* Append the KONP segement data to idoc
  
APPEND wa_idoc_data TO it_idoc_data.
  
CLEAR wa_idoc_data.

* Create and process idoc
  
PERFORM create_idoc.
ENDFORM.                    
" FILL_IDOC_DAT
*&---------------------------------------------------------------------*
*&      Form  CREATE_IDOC
*&---------------------------------------------------------------------*
*       Create and process the IDOC
*----------------------------------------------------------------------*
FORM create_idoc .
  DATA: i_data   
TYPE t_tede2.      "EDI process types (inbound).
  CLEAR: docnum, state, i_data.


* This generates the IDOC number with the data provided in the above logic
  
CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
   
EXPORTING
*     pi_do_handle_error           = 'X'
     pi_no_dequeue                 = 
' '
     pi_return_data_flag           = 
'X'
*   PI_RFC_MULTI_CP                = '    '
   
IMPORTING
     pe_idoc_number                = docnum
     pe_state_of_processing        = state
     pe_inbound_process_data       = i_data
    
TABLES
      t_data_records               = it_idoc_data
*   T_LINKED_OBJECTS               =
    
CHANGING
      pc_control_record            = wa_idoc_header
   
EXCEPTIONS
     idoc_not_saved                = 
1
     
OTHERS                        .

  
IF sy-subrc NE 0.
    
WRITE 'Idoc not created'.
  ELSE.
    
REFRESH it_idoc_header.
    
APPEND wa_idoc_header TO it_idoc_header.
*FM processess the idoc and updates the data in the corresponding DB tables
* A018, KONH and KONP
    
CALL FUNCTION 'IDOC_START_INBOUND'
     
EXPORTING
       pi_inbound_process_data          = i_data
*   PI_CALLED_ONLINE                    = ' '
*   PI_DO_COMMIT                        = 'X'
*   PI_START_EVENT_ENABLED              = 'X'
*   PI_ORG_UNIT                         = ' '
*   SUCC_SHOW_FLAG                      = ' '
      
TABLES
       t_control_records                = it_idoc_header
       t_data_records                   = it_idoc_data
     
EXCEPTIONS
       invalid_document_number          = 
1
       error_before_call_application    = 
2
       inbound_process_not_possible     = 
3
       old_wf_start_failed              = 
4
       wf_task_error                    = 
5
       serious_inbound_error            = 
6
       
OTHERS                           7.

  
IF sy-subrc EQ 0.
* Get the status of the Idoc
      
select *
from edids
into table it_idoc_status
       
where docnum = docnum.

      
sort it_idoc_status by countr descending.

      
read table it_idoc_status into wa_idoc_status
                 
with key statxt = '&1 &2 has been saved'.
      
if sy-subrc = 0.
        
write  wa_idoc_status-statxt.
      endif.
      WRITE: 
'Generated IDOC number :', docnum, /, 'Please check IDOC the status in WE02'.
      
WRITE 'This updates the condition tables A018,  KONH and KONP tables'.
    ENDIF.
  ENDIF.
ENDFORM.                    
" CREATE_IDOC

Click here to continue...

Please send us your feedback/suggestions at webmaster@SAPTechnical.COM 

HomeContribute About Us Privacy Terms Of Use • Disclaimer • SafeCompanies: Advertise on SAPTechnical.COM | Post JobContact Us  

Graphic Design by Round the Bend Wizards

footer image footer image