06-18-2007 10:02 AM
Hi everybody,
I have implemented the MB_MIGO_BADI to make some extra check in my MIGO transaction. When I use the MIGO transaction online, all works perfect well. The problem is that I need the same with backgroud execution. I use for that the BAPI_GOODSMVT_CREATE to simulate my MIGO transaction but nothing seems to be checked or changed ?
Any idea about the problem ?
Thanks a lot
Durieux Jean-François
06-18-2007 10:32 AM
Hi,
Have you written any program for BAPI_GOODSMVT_CREATE, which you are running in background?? If yes please write the following after CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
IF ( bapi_return-type = ' ' ) AND ( NOT bapi_out IS INITIAL ).
permanent changes to the database
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = space.
IMPORTING
RETURN = MESSTAB_COMMIT.
endif.
Please reward point if useful.
Bye,
Saroj.
06-18-2007 10:53 AM
Hi Durieux,
as I see: You got an answer but not to the question.
I know just one Badi called in then function: MB_BAPI_GOODSMVT_CREATE with interface IF_EX_MB_BAPI_GOODSMVT_CREATE and sample implementation CL_EX_IM_MB_BAPI_GOODSMVT_CRE.
Basically this is used for processing extension parameter.But parameters CS_IMKPF and CT_IMSEG will carry all data you need for checking. Just put occurring errors into return table CT_RETURN; type E,A, X errors will cancel further processing.
Just a word about the recommendation to use BAPI_TRANSACTION_COMMIT: If it is your own process and if the call of BAPI_GOODSMVT_CREATE is the last action and if afterwards no errors can occur, then it is necessary to call the COMMIT function. <b>In all other cases it is no good</b>.
Regards,
Clemens
06-18-2007 11:06 AM
Hi,
Ru passing th GM_CODE = '' correctly?
Could you please tell me the GM code and the required fields to be passed for the above scenario.
I have gone through the example program in the link...
http://www.sap-img.com/abap/bapi-goodsmvt-create-to-post-goods-movement.htm
<b>Reward points</b>
Regards
06-18-2007 3:02 PM
Hi all,
Let's me explain a little bit more my problem. I use the MB_MIGO_BADI with the CHECK_ITEM method. In the coding, depending the value in i_goitem-wempf, I fill a value i_GOITEM-SGTXT. It works perfectly in MIGO.
I have created a program where I use BAPI_GOODSMVT_CREATE with code = '05' (and after that I make a BAPI_TRANSACTION_COMMIT). But my badi doesn't work ! Is there a link between transaction MIGO and the BAPI_GOODSMVT_CREATE ? Except the user-exits, is there somme common point for the two ?
Thanks for the response
08-01-2007 11:41 AM
hi every body,
check this program this is working for me.
&----
*& Report ZMM_BBP_INB_DEL_CREATE
*&
&----
*&BAPI FOR INBOUND DELIVERY
*&
&----
REPORT zmm_bbp_inb_del_create NO STANDARD PAGE HEADING LINE-SIZE 300.
&----
TABLES: eord.
----
data definition
----
Batchinputdata of single transaction
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
error session opened (' ' or 'X')
DATA: e_group_opened.
message texts
TABLES: t100.
CONSTANTS: nodata VALUE space,
ctumode VALUE 'N',
cupdate VALUE 'S',
smalllog VALUE space.
&----
*INCLUDE bdcrecx1.
&----
DATA: BEGIN OF i_eord OCCURS 100,
matnr LIKE eord-matnr,
werks LIKE eord-werks,
erdat LIKE eord-erdat,
lifnr LIKE eord-lifnr,
ebeln LIKE eord-ebeln,
ebelp LIKE eord-ebelp,
END OF i_eord.
DATA: BEGIN OF i_input OCCURS 100,
sl_no(10) TYPE c,
lifnr(10) TYPE c,
erdat(10) TYPE c,
matnr(18) TYPE c,
lfimg(13) TYPE c,
budat(10) TYPE c,
bldat(10) TYPE c,
delivnt(10) TYPE c,
exdat(10) TYPE c,
END OF i_input.
DATA: is_inb_delivery_header LIKE bbp_inbd_l.
DATA: BEGIN OF it_inb_delivery_detail OCCURS 100.
INCLUDE STRUCTURE bbp_inbd_d.
DATA: END OF it_inb_delivery_detail.
DATA: BEGIN OF bapireturn OCCURS 100.
INCLUDE STRUCTURE bapireturn.
DATA: END OF bapireturn.
DATA: lv_file_header TYPE string.
DATA: w_vbeln TYPE likp-vbeln,
lv_date TYPE eord-erdat,
lv_ref_doc_no(10),
lv_pos_dt_ex(10),
lv_doc_dt_ex(10),
lv_slno(10),
lv_exdat(10),
lv_lifnr(10).
DATA: lv_shed_header TYPE rlgrap-filename.
DATA: BEGIN OF it_lips OCCURS 100.
INCLUDE STRUCTURE lips.
DATA: END OF it_lips.
DATA: goodsmvt_header TYPE bapi2017_gm_head_01.
DATA: BEGIN OF goodsmvt_code OCCURS 100.
INCLUDE STRUCTURE bapi2017_gm_code.
DATA: END OF goodsmvt_code.
DATA: BEGIN OF goodsmvt_item OCCURS 100.
INCLUDE STRUCTURE bapi2017_gm_item_create.
DATA: END OF goodsmvt_item.
DATA: BEGIN OF return OCCURS 100.
INCLUDE STRUCTURE bapiret2.
DATA: END OF return.
DATA: lv_pos_date TYPE eord-erdat,
lv_doc_date TYPE eord-erdat.
DATA: lv_header TYPE rlgrap-filename.
DATA: lv_mblnr TYPE bapi2017_gm_head_ret-mat_doc,
lv_year TYPE bapi2017_gm_head_ret-doc_year,
flag TYPE i.
DATA: BEGIN OF it_display OCCURS 100,
d_slno(10) TYPE c,
d_lifnr(10) TYPE c,
d_vbeln LIKE likp-vbeln,
d_mblnr LIKE mseg-mblnr,
d_mjahr LIKE mseg-mjahr,
docyr LIKE j_1iexchdr-docyr,
docno LIKE j_1iexchdr-docno,
exnum LIKE j_1iexchdr-exnum,
END OF it_display.
&----
PARAMETERS: sch_agr TYPE ibipparms-path.
&----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR sch_agr.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
file_name = sch_agr.
&----
START-OF-SELECTION.
PERFORM file_upload.
PERFORM pass_value.
PERFORM display_corr_data.
&----
FORM file_upload.
lv_file_header = sch_agr.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_file_header "file 1
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = i_input "itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
ENDFORM. "FILE_UPLOAD
&----
FORM pass_value.
SORT i_input BY lifnr sl_no.
LOOP AT i_input.
CLEAR: lv_date,lv_pos_date,lv_doc_date,lv_pos_dt_ex,lv_doc_dt_ex,lv_exdat, lv_lifnr.
MOVE i_input-budat TO lv_pos_dt_ex.
MOVE i_input-bldat TO lv_doc_dt_ex.
MOVE i_input-lifnr TO lv_lifnr.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = i_input-budat
ACCEPT_INITIAL_DATE =
IMPORTING
date_internal = lv_pos_date
EXCEPTIONS
date_external_is_invalid = 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.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = i_input-bldat
ACCEPT_INITIAL_DATE =
IMPORTING
date_internal = lv_doc_date
EXCEPTIONS
date_external_is_invalid = 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.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = i_input-erdat
ACCEPT_INITIAL_DATE =
IMPORTING
date_internal = lv_date
EXCEPTIONS
date_external_is_invalid = 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.
MOVE i_input-delivnt TO lv_ref_doc_no .
MOVE i_input-exdat TO lv_exdat.
SELECT matnr werks lifnr ebeln ebelp
INTO CORRESPONDING FIELDS OF TABLE i_eord
FROM eord
WHERE lifnr EQ i_input-lifnr
AND matnr EQ i_input-matnr
AND ( vdatu LE lv_date
AND bdatu GE lv_date )
AND werks EQ '4210'
AND notkz NE 'X'
AND febel EQ 'X'.
READ TABLE i_eord WITH KEY lifnr = i_input-lifnr.
IF sy-subrc EQ 0.
MOVE lv_date TO is_inb_delivery_header-deliv_date.
MOVE i_input-matnr TO it_inb_delivery_detail-material.
MOVE i_input-lfimg TO it_inb_delivery_detail-deliv_qty.
MOVE i_eord-ebeln TO it_inb_delivery_detail-po_number.
MOVE i_eord-ebelp TO it_inb_delivery_detail-po_item.
it_inb_delivery_detail-unit = 'EA'.
APPEND it_inb_delivery_detail.
ENDIF.
AT END OF sl_no.
CLEAR lv_slno.
lv_slno = i_input-sl_no.
it_display-d_slno = lv_slno.
it_display-d_lifnr = lv_lifnr.
*Inbound delivery creation
PERFORM create_inb_deliv.
IF NOT w_vbeln IS INITIAL.
PERFORM extract.
ELSE.
WRITE /.
FORMAT COLOR 2.
WRITE:/ 'Inbound delivery is not created'.
WRITE:/(64) sy-uline.
ENDIF.
ENDAT.
ENDLOOP.
ENDFORM. "PASS_VALUE
&----
*inbound delivery creating
FORM create_inb_deliv.
CLEAR w_vbeln.
CALL FUNCTION 'ZBBP_INB_DELIVERY_CREATE'
EXPORTING
is_inb_delivery_header = is_inb_delivery_header
IMPORTING
ef_delivery = w_vbeln
TABLES
it_inb_delivery_detail = it_inb_delivery_detail
return = bapireturn.
UPDATE likp SET xabln = lv_slno
WHERE vbeln = w_vbeln.
COMMIT WORK AND WAIT.
IF w_vbeln IS INITIAL.
FORMAT COLOR 6.
WRITE:/ 'Record no:' , lv_slno.
SKIP 1.
WRITE:/ 'INBOUND DELIVERY: ', w_vbeln.
WRITE:/(64) sy-uline.
FORMAT COLOR OFF.
APPEND it_display.
CLEAR it_display.
LOOP AT bapireturn.
WRITE:/ bapireturn-type , bapireturn-message.
ENDLOOP.
ELSE.
FORMAT COLOR 5.
it_display-d_vbeln = w_vbeln.
ENDIF.
CLEAR: it_inb_delivery_detail, bapireturn.
REFRESH: it_inb_delivery_detail, bapireturn.
ENDFORM. "CREATE_INB_DELIV
&----
FORM extract.
goodsmvt_code-gm_code = '01'.
MOVE lv_pos_date TO goodsmvt_header-pstng_date.
MOVE lv_doc_date TO goodsmvt_header-doc_date.
MOVE lv_ref_doc_no TO goodsmvt_header-ref_doc_no.
goodsmvt_header-header_txt = goodsmvt_header-ref_doc_no.
goodsmvt_header-ref_doc_no = i_input-sl_no.
goodsmvt_header-header_txt = i_input-sl_no.
SELECT * INTO TABLE it_lips
FROM lips
WHERE vbeln EQ w_vbeln.
LOOP AT it_lips.
MOVE it_lips-matnr TO goodsmvt_item-material.
MOVE it_lips-werks TO goodsmvt_item-plant.
MOVE it_lips-bwart TO goodsmvt_item-move_type.
MOVE it_lips-lfimg TO goodsmvt_item-entry_qnt.
goodsmvt_item-entry_uom = 'EA'.
goodsmvt_item-mvt_ind = 'B'.
MOVE it_lips-vbeln TO goodsmvt_item-deliv_numb_to_search.
MOVE it_lips-posnr TO goodsmvt_item-deliv_item_to_search.
MOVE lv_lifnr TO goodsmvt_item-item_text.
APPEND goodsmvt_item.
ENDLOOP.
*GR Creation
PERFORM create.
IF NOT lv_mblnr IS INITIAL AND
NOT lv_year IS INITIAL.
*Excise Creation
PERFORM bdc.
ELSE.
WRITE /.
FORMAT COLOR 2.
WRITE:/ 'Record no:' , i_input-sl_no.
WRITE / 'Goods Receipt is not created'.
ENDIF.
REFRESH: it_lips , goodsmvt_item.
CLEAR: it_lips, goodsmvt_header, goodsmvt_item.
ENDFORM. "EXTRACT
&----
FORM create.
CLEAR: lv_mblnr,lv_year.
CALL FUNCTION 'J_1I6_STORE_EXCISE_INVOICE_NUM'
EXPORTING
DOCNO =
DOCYR =
EXNUM =
EXYEAR =
LIFNR =
exgrp = '42'
regtyp = 'A'
STATUS =
SUBCON_CHALLANS =
GRXREF =
.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = goodsmvt_header
goodsmvt_code = goodsmvt_code
TESTRUN = ' '
GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET =
materialdocument = lv_mblnr
matdocumentyear = lv_year
TABLES
goodsmvt_item = goodsmvt_item
GOODSMVT_SERIALNUMBER =
return = return
GOODSMVT_SERV_PART_DATA =
EXTENSIONIN =
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
IF lv_mblnr IS INITIAL AND
lv_year IS INITIAL.
FORMAT COLOR 6.
WRITE:/ 'Record no:' , lv_slno.
WRITE:/ 'GOODS MOVEMENT', lv_mblnr , lv_year.
APPEND it_display.
CLEAR it_display.
FORMAT COLOR OFF.
LOOP AT return.
WRITE:/ return-type,return-message.
ENDLOOP.
ELSE.
FORMAT COLOR 5.
it_display-d_mblnr = lv_mblnr.
it_display-d_mjahr = lv_year.
ENDIF.
ENDFORM. "CREATE
&----
FORM bdc.
WAIT UP TO 1 SECONDS.
PERFORM bdc_dynpro USING 'SAPLJ1IEX' '0001'.
PERFORM bdc_field USING 'J_1IEXDYNPRO-ACTION'
'A01'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=J1IEX_OK_ACTION'.
PERFORM bdc_dynpro USING 'SAPLJ1IEX' '0001'.
PERFORM bdc_field USING 'J_1IEXDYNPRO-REFDOC'
'R05'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=J1IEX_OK_REFDOC'.
PERFORM bdc_dynpro USING 'SAPLJ1IEX' '0001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=J1IEX_OK_GO'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IEXDYNPRO-MAT_DOC_YEAR'.
PERFORM bdc_field USING 'J_1IEXDYNPRO-MAT_DOC'
lv_mblnr .
PERFORM bdc_field USING 'J_1IEXDYNPRO-MAT_DOC_YEAR'
lv_year.
PERFORM bdc_dynpro USING 'SAPLJ1IEX' '0001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=OK_CENVAT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IEXHEAD-BUDAT'.
PERFORM bdc_field USING 'J_1IEXHEAD-EXNUM'
lv_ref_doc_no.
PERFORM bdc_field USING 'J_1IEXHEAD-EXDAT'
lv_exdat.
PERFORM bdc_field USING 'J_1IEXHEAD-EXGRP'
'42'.
PERFORM bdc_field USING 'J_1IEXHEAD-BUDAT'
lv_pos_dt_ex.
PERFORM bdc_transaction USING 'J1IEX'.
ENDFORM. "bdc
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM bdc_field USING fnam fval.
IF fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
----
Start new transaction according to parameters *
----
FORM bdc_transaction USING tcode.
DATA: l_mstring(480).
DATA: l_subrc LIKE sy-subrc.
batch input session
REFRESH messtab.
CALL TRANSACTION tcode USING bdcdata
MODE ctumode
UPDATE cupdate
MESSAGES INTO messtab.
l_subrc = sy-subrc.
IF smalllog <> 'X'.
CLEAR flag.
READ TABLE messtab WITH KEY msgtyp = 'E' .
IF sy-subrc = 0.
FORMAT COLOR 6.
APPEND it_display.
CLEAR: it_display, flag.
ELSE.
FORMAT COLOR 5.
flag = 1.
ENDIF.
READ TABLE messtab WITH KEY msgnr = '344'.
IF sy-subrc = 0.
FORMAT COLOR 6.
APPEND it_display.
CLEAR: it_display, flag.
ELSE.
FORMAT COLOR 5.
flag = 1.
ENDIF.
IF flag = 1.
it_display-exnum = lv_ref_doc_no.
it_display-d_slno = lv_slno.
APPEND it_display.
CLEAR it_display.
ELSE.
WRITE /.
FORMAT COLOR 2.
WRITE:/ 'Record no:' , lv_slno.
FORMAT COLOR 6.
WRITE / 'Excise creation for Part 2'.
FORMAT COLOR OFF.
WRITE: / 'CALL_TRANSACTION',
tcode,
'returncode:'(i05),
l_subrc,
'RECORD:',
sy-index.
LOOP AT messtab.
SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
AND arbgb = messtab-msgid
AND msgnr = messtab-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
WRITE: / messtab-msgtyp, l_mstring(250).
ELSE.
WRITE: / messtab.
ENDIF.
ENDLOOP.
SKIP.
ENDIF.
ENDIF.
Erzeugen fehlermappe ************************************************
REFRESH bdcdata.
ENDFORM. "BDC_TRANSACTION
&----
*& Form display_corr_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_corr_data .
WRITE:/01 sy-vline, 'SL NO' COLOR 3,
13 sy-vline, 'Vendor' COLOR 3,
23 sy-vline, 'INB DEL' COLOR 3,
34 sy-vline, 'GR NUMBER' COLOR 3,
46 sy-vline, 'EXCISE NO' COLOR 3,
58 sy-vline, 'EXCISE YEAR' COLOR 3,
74 sy-vline.
WRITE:/(74) sy-uline.
SORT it_display BY d_lifnr d_slno.
LOOP AT it_display.
SELECT SINGLE docno docyr
INTO (it_display-docno,
it_display-docyr)
FROM j_1iexchdr
WHERE exnum EQ it_display-exnum.
WRITE:/01 sy-vline, it_display-d_slno,
13 sy-vline, it_display-d_lifnr,
23 sy-vline, it_display-d_vbeln,
34 sy-vline, it_display-d_mblnr,
46 sy-vline, it_display-docno,
58 sy-vline, it_display-docyr,
74 sy-vline.
ENDLOOP.
WRITE:/(74) sy-uline.
ENDFORM. " display_corr_data
this will create automatically
1. inbound delivery
2. GR IR
3. excise part1
4. excise part 2
regards
Pravin kumar
08-01-2007 11:44 AM
FUNCTION ZBBP_INB_DELIVERY_CREATE.
*"----
""Local Interface:
*" IMPORTING
*" REFERENCE(IS_INB_DELIVERY_HEADER) LIKE BBP_INBD_L STRUCTURE
*" BBP_INBD_L
*" EXPORTING
*" REFERENCE(EF_DELIVERY) LIKE LIKP-VBELN
*" TABLES
*" IT_INB_DELIVERY_DETAIL STRUCTURE BBP_INBD_D
*" RETURN STRUCTURE BAPIRETURN
*"----
Refresh
REFRESH: RETURN.
PERFORM INB_DELIVERY_CREATE
TABLES
IT_INB_DELIVERY_DETAIL[]
RETURN[]
USING
IS_INB_DELIVERY_HEADER
EF_DELIVERY.
IF NOT RETURN[] IS INITIAL.
TODO Error Trapping
ENDIF.
ENDFUNCTION.
08-01-2007 11:45 AM
----
***INCLUDE LBBP_SIC_40F02 .
----
&----
*& Form READ_INBD_CREATE_PO_GETITEMS
&----
text
----
-->P_ET_INB_D_CREATE_PO_DETAIL[] text *
-->P_RETURN[] text *
-->P_IF_VENDOR text *
-->P_IF_PO_NUMBER text *
-->P_IF_DELIV_DATE text *
-->P_IF_DELIV_TIME text *
----
*form INB_DELIVERY_CREATE tables p_it_inb_delivery_detail[] structure < it_inb_delivery_detail[] #local# >
"Insert correct name for <...>
p_return[] structure return[]
using p_is_inb_delivery_header
p_ef_delivery.
*
*endform. " INB_DELIVERY_CREATE
&----
*& Form INB_DELIVERY_CREATE
&----
text
----
-->P_IT_INB_DELIVERY_DETAIL[] text *
-->P_RETURN[] text *
-->P_IS_INB_DELIVERY_HEADER text *
-->P_EF_DELIVERY text *
----
FORM INB_DELIVERY_CREATE
TABLES IT_INB_DELIVERY_DETAIL TYPE INBDELIVDETAIL_TYPE
RETURN TYPE RETURN_TYPE
USING IS_INB_DELIVERY_HEADER STRUCTURE BBP_INBD_L
EF_DELIVERY LIKE LIKP-VBELN.
Local Variables
DATA LT_VBSK LIKE VBSK OCCURS 0 WITH HEADER LINE.
DATA LT_KOMDLGN LIKE KOMDLGN OCCURS 0 WITH HEADER LINE.
DATA LT_VBFS LIKE VBFS OCCURS 0 WITH HEADER LINE.
DATA LT_VBLS LIKE VBLS OCCURS 0 WITH HEADER LINE.
DATA LF_H-IND LIKE SY-TABIX. "Hilfsfeld Index
DATA LF_V_VBELN LIKE LIKP-VBELN. "From delivery Number
DATA LF_B_VBELN LIKE LIKP-VBELN. "To delivery Number
DATA LT_PROP LIKE WUEBS OCCURS 100 WITH HEADER LINE.
Loading the lt_komdlgn
LT_KOMDLGN-LIFEX = IS_INB_DELIVERY_HEADER-DELIV_EXT.
LT_KOMDLGN-VERUR = IS_INB_DELIVERY_HEADER-DELIV_EXT.
LT_KOMDLGN-LFDAT = IS_INB_DELIVERY_HEADER-DELIV_DATE.
LT_KOMDLGN-LFUHR = IS_INB_DELIVERY_HEADER-DELIV_TIME.
lt_komdlgn-lifnr = 'Lear_03'. "if_vendor
LOOP AT IT_INB_DELIVERY_DETAIL. "into et_po_detail.
LT_KOMDLGN-MATNR = IT_INB_DELIVERY_DETAIL-MATERIAL.
LT_KOMDLGN-LFIMG = IT_INB_DELIVERY_DETAIL-DELIV_QTY.
LT_KOMDLGN-VRKME = IT_INB_DELIVERY_DETAIL-UNIT.
LT_KOMDLGN-MEINS = IT_INB_DELIVERY_DETAIL-UNIT.
lt_komdlgn-umvkz = 1.
lt_komdlgn-umvkn = 1.
lt_komdlgn-werks = '0001'.
LT_KOMDLGN-VGBEL = IT_INB_DELIVERY_DETAIL-PO_NUMBER.
LT_KOMDLGN-VGPOS = IT_INB_DELIVERY_DETAIL-PO_ITEM.
APPEND LT_KOMDLGN.
ENDLOOP.
Code from IDOC_INPUT_DESADV1
Not Available in 3.1
CALL FUNCTION 'ME_CONFIRMATION_VIA_EDI'
TABLES
T_KOM = LT_KOMDLGN
ERRORS = LT_PROP
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC NE 0.
WRITE / 'Error Coccured in ME_CONFIRMATION_VIA_EDI'.
ENDIF.
LOOP AT LT_KOMDLGN.
set default parameter
LT_KOMDLGN-VGTYP = 'V'.
LT_KOMDLGN-KZAZU = 'X'.
IF LT_KOMDLGN-LFART IS INITIAL.
LT_KOMDLGN-LFART = 'EL'.
ENDIF.
MODIFY LT_KOMDLGN.
ENDLOOP.
Create
DATA: NRNR LIKE INRI-NRRANGENR.
TABLES: TVSA.
Sammelgangsnummer vergeben
LT_VBSK-MANDT = SY-MANDT.
LT_VBSK-ERNAM = SY-UNAME.
LT_VBSK-ERDAT = SY-DATUM.
LT_VBSK-UZEIT = SY-UZEIT.
LT_VBSK-SMART = 'L'.
SELECT SINGLE * FROM TVSA WHERE SMART = LT_VBSK-SMART.
IF SY-SUBRC <> 0.
Error Handling To be Done
Meldung ins Protokoll
ENDIF.
NRNR = TVSA-NUMKI.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = NRNR
OBJECT = 'RV_SAMMG'
IMPORTING
NUMBER = LT_VBSK-SAMMG
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
Error Hadling TBD
Meldung ins Protokoll
ENDIF.
Call Core Function GN_DELIVERY_CREATE.
CALL FUNCTION 'GN_DELIVERY_CREATE'
EXPORTING
VBSK_I = LT_VBSK
IMPORTING
VBSK_E = LT_VBSK
TABLES
XKOMDLGN = LT_KOMDLGN
XVBFS = LT_VBFS
XVBLS = LT_VBLS
EXCEPTIONS
OTHERS = 1.
Error Handling
IF SY-SUBRC NE 0.
ROLLBACK WORK.
PERFORM FILL_BAPIRETURN TABLES RETURN
USING SY-MSGTY SY-MSGID SY-MSGNO
SY-MSGV1 SY-MSGV2
SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT LT_VBFS.
PERFORM FILL_BAPIRETURN TABLES RETURN
USING LT_VBFS-MSGTY LT_VBFS-MSGID LT_VBFS-MSGNO
LT_VBFS-MSGV1 LT_VBFS-MSGV2
LT_VBFS-MSGV3 LT_VBFS-MSGV4.
ENDLOOP.
BREAK-POINT.
EF_DELIVERY = LT_VBLS-VBELN_LIF.
IF LT_VBSK-ERNUM EQ 0 AND
LT_VBSK-VBNUM GT 0.
DESCRIBE TABLE LT_VBLS LINES LF_H-IND.
READ TABLE LT_VBLS INDEX 1.
LF_V_VBELN = LT_VBLS-VBELN_LIF.
READ TABLE LT_VBLS INDEX LF_H-IND.
LF_B_VBELN = LT_VBLS-VBELN_LIF.
CLEAR LF_H-IND.
EF_DELIVERY = LF_V_VBELN.
PERFORM FILL_BAPIRETURN TABLES RETURN
USING 'S' "msgType
'ME' "msgid
'780' "msgno
LT_VBSK-VBNUM "sy-msgv1
LF_V_VBELN "sy-msgv1
LF_B_VBELN "sy-msgv2
SY-MSGV4.
ENDIF.
ENDIF.
ENDFORM. " INB_DELIVERY_CREATE