FORM f_populate_data_seg USING fp_i_header TYPE ty_t_header
fp_i_item TYPE ty_t_item
CHANGING fp_i_edidd TYPE ty_t_edidd
fp_wa_send TYPE zlbr_otc_tbl_nf.
CONSTANTS: l_c_segnum TYPE edilsegtyp VALUE 'ZSEG_L_BR_OPS_SAP_FAS_CDV',
l_c_01 TYPE edi_hlevel VALUE '01',
l_c_02 TYPE edi_hlevel VALUE '02',
l_c_segnum1 TYPE edilsegtyp VALUE 'ZSEG_L_BR_OPS_SAP_FAS_CDITM',
l_c_flag TYPE char1 VALUE 'X'.
*--&& Local data declaration
DATA: l_wa_seg_h TYPE zseg_l_br_ops_sap_fas_cdv,
l_wa_seg_i TYPE zseg_l_br_ops_sap_fas_cditm,
l_wa_edidd TYPE edidd.
*--&& Local field symbols declaration
FIELD-SYMBOLS: TYPE ty_item.
LOOP AT fp_i_item ASSIGNING .
*--&& Populate Header segment for each new document No
AT NEW docnum.
READ TABLE fp_i_header INTO l_wa_seg_h
WITH KEY docnum = -docnum
BINARY SEARCH.
IF sy-subrc EQ 0.
l_wa_edidd-segnam = l_c_segnum.
l_wa_edidd-sdata = l_wa_seg_h.
l_wa_edidd-hlevel = l_c_01.
*--&& Creating Data Segment
APPEND l_wa_edidd TO fp_i_edidd .
CLEAR : l_wa_edidd ,
l_wa_seg_h .
ENDIF.
ENDAT.
*--&& Item segment population
l_wa_seg_i-werks = -werks.
l_wa_seg_i-itmnum = -itmnum.
l_wa_seg_i-matnr = -matnr.
l_wa_seg_i-menge = -menge.
*Begin of change on 22/01/2008.
l_wa_seg_i-menge1 = -menge1.
l_wa_seg_i-menge2 = -menge2.
l_wa_seg_i-taxtype_rate_icm3 = -taxtype_rate_icm3.
l_wa_seg_i-taxtype_rate_ipio = -taxtype_rate_ipio.
*End of change on 22/01/2008.
l_wa_seg_i-meins = -meins.
l_wa_seg_i-nfnet = -nfnet.
l_wa_seg_i-nfpri = -nfpri.
l_wa_seg_i-taxval = -taxval.
l_wa_seg_i-tax_base = -tax_base.
l_wa_seg_i-othbas_icm3 = -othbas_icm3.
l_wa_seg_i-othbas_ipio = -othbas_ipio.
l_wa_seg_i-excbas = -excbas.
l_wa_edidd-segnam = l_c_segnum1.
l_wa_edidd-sdata = l_wa_seg_i.
l_wa_edidd-hlevel = l_c_02.
APPEND l_wa_edidd TO fp_i_edidd .
CLEAR : l_wa_edidd,
l_wa_seg_i.
AT END OF docnum.
*--&& populate wa_send to update table Custom Table
*--&& for Nota Fiscal if IDoc is successfully send
fp_wa_send-mandt = sy-mandt.
fp_wa_send-werks = -werks.
fp_wa_send-docnum = -docnum.
fp_wa_send-send_flag = l_c_flag.
fp_wa_send-date_last_send = sy-datum.
*--&& Send IDoc for each unique document No
PERFORM f_send_idoc USING fp_i_edidd
wa_edp13
fp_wa_send.
REFRESH : fp_i_edidd.
ENDAT.
ENDLOOP.
ENDFORM. " F_POPULATE_DATA_SEG
****************************************************************************
FORM f_send_idoc USING fp_i_edidd TYPE ty_t_edidd
fp_wa_edp13 TYPE ty_edp13
fp_wa_send TYPE zlbr_otc_tbl_nf.
DATA: l_it_edidc TYPE STANDARD TABLE OF edidc,
l_wa_edidc TYPE edidc.
* Local Constants
CONSTANTS : l_c_1 TYPE char1 VALUE '1',
l_c_msgtype TYPE edi_mestyp VALUE 'Z_L_BR_OPS_MTY_NOTA_TO_FAS',
l_c_idoctp TYPE edi_idoctp VALUE 'Z_L_BR_OTC_BAS_SAP_FAS_NOTAFIS'.
*Populating Control record table.
l_wa_edidc-rcvprn = fp_wa_edp13-rcvprn. "Partner Number of Receiver
l_wa_edidc-rcvprt = fp_wa_edp13-rcvprt. "Partner Type of Receiver
l_wa_edidc-rcvpor = fp_wa_edp13-rcvpor. "Receiver port
l_wa_edidc-mescod = fp_wa_edp13-mescod. "Message code
l_wa_edidc-mesfct = fp_wa_edp13-mesfct. "Message function
l_wa_edidc-direct = l_c_1. "Direction
l_wa_edidc-mestyp = l_c_msgtype.
l_wa_edidc-idoctp = l_c_idoctp.
*Send Master IDOC to ALE Layer
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = l_wa_edidc
TABLES
communication_idoc_control = l_it_edidc
master_idoc_data = fp_i_edidd
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 EQ 0.
COMMIT WORK.
v_success = v_success + 1.
******* Update table with all info..... plant and doc num....
IF p_check EQ space.
INSERT zlbr_otc_tbl_nf FROM fp_wa_send.
CLEAR wa_send.
IF sy-subrc NE 0.
MESSAGE s071. "Insertion failed into zlbr_otc_tbl_nf.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " F_SEND_IDOC
阅读(500) | 评论(0) | 转发(0) |