Application Development 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: 

MIGO Badi's in BAPI_GOODSMVT_CREATE

Former Member
0 Kudos

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

7 REPLIES 7

Former Member
0 Kudos

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.

Clemenss
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

----


***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