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: 

Problem in BDC program using MIGO_GO transaction code

Former Member
0 Kudos

Hi Gurus

I have developed a BDC session upload program. The program is

running fine except for the issue that when it goes the subscreen in

MIGO_GO transaction (same as MIGO) it does not generates any code

for page down or next page key. While recording after 15 entries

(end of page) it moves automaticaly to the next page on line 2 but

when I have used my own itab to fill data into this screen it

passes/generates the code for page down with clear screen. It does

go to item 2 but overwrites earlier entries instead of generting new

one.

Any suggestions?

Guys this is very urgent so need ur feedback immediately?

Lots of thanks in advance.

The code is as follows:

*----


-


  • PURPOSE: The purpose of this upload program is to upload

receipt

  • against Production Order. Data is uploaded into SAP

via text

  • file which is converted from pre-defined excel file

pattern.

*----


-


REPORT zmm_migo_rec

NO STANDARD PAGE HEADING LINE-SIZE 255.

*Excel column sequence SAP Material Number Batch # Crop Year

Process Date Net Weight Plant Area Gross

Weight Plant Number Shift Mat.Desc Prod.Ord#

TYPES : BEGIN OF st_barcode,

m_matnr LIKE mara-matnr,

m_batch_no LIKE mseg-charg,

m_crop_year TYPE c LENGTH 4,

m_process_date LIKE mkpf-bldat,

m_net_wt TYPE c LENGTH 7,

m_plant_area TYPE c LENGTH 5,

m_gross_wt TYPE c LENGTH 7,

m_plant_num TYPE c LENGTH 1,

m_shift TYPE c LENGTH 1,

m_matnr_desc TYPE c LENGTH 30,

m_prod_ord LIKE mseg-aufnr,

text(200),

text1(200),

END OF st_barcode.

DATA : itab_barcode TYPE TABLE OF st_barcode WITH HEADER LINE.

DATA : itab_log TYPE TABLE OF st_barcode WITH HEADER LINE.

DATA : itab_log1 TYPE TABLE OF st_barcode WITH HEADER LINE.

DATA : g_filename TYPE rlgrap-filename.

INCLUDE bdcrecx1.

  • Start of Selection Screen for document data, screen data and

posting date fields.

SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-000.

PARAMETERS :

p_dummy TYPE i DEFAULT 0,

p_bldat LIKE sy-datum OBLIGATORY DEFAULT sy-

datum, "Document date

p_budat LIKE sy-datum OBLIGATORY DEFAULT sy-

datum, "Posting date

p_frmplt LIKE t001l-werks OBLIGATORY,

  • p_frmloc LIKE t001l-lgort OBLIGATORY,

  • p_toloc LIKE t001l-lgort OBLIGATORY,

  • p_rsnmov LIKE mseg-grund OBLIGATORY,

  • p_bsarea LIKE mseg-gsber OBLIGATORY,

cb_simul AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK a1.

START-OF-SELECTION.

*to remove unnecessary fields from selection screen

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF screen-group4 LT '060' AND screen-group3 NE 'BLK'.

screen-active = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

*to Process Call Transaction in Error Mode

ctu = 'X'.

ctumode = 'A'.

nodata = space.

END-OF-SELECTION.

  • Get data from file

PERFORM f_get_data.

  • Validate data retrieved from excel file

PERFORM f_validate_data.

  • Batch data / simulate.

IF cb_simul IS INITIAL.

PERFORM f_prized_data.

PERFORM f_write_log.

ELSE.

PERFORM f_write_log.

ENDIF.

*&----


--*

*& Form F_GET_DATA

*&----


--*

  • This module is used to read text file data into SAP itab.

*----


--*

FORM f_get_data .

  • Select the file to be uploaded

CALL FUNCTION 'UPLOAD'

EXPORTING

filename = g_filename

filetype = 'DAT'

TABLES

data_tab = itab_barcode

EXCEPTIONS

conversion_error = 1

invalid_table_width = 2

invalid_type = 3

no_batch = 4

unknown_error = 5

gui_refuse_filetransfer = 6

OTHERS = 7.

ENDFORM. " F_GET_DATA

*&----


--*

*& Form F_VALIDATE_DATA

*&----


--*

  • text

*----


--*

FORM f_validate_data .

DATA : BEGIN OF lt_marc OCCURS 0,

matnr LIKE mard-matnr,

werks LIKE mard-werks, " Plant

END OF lt_marc.

RANGES : lr_matnr FOR mara-matnr.

READ TABLE itab_barcode INDEX 1.

  • Prepare Ranges to check/verify Material from Table MARD i.e.

respective plant

lr_matnr-sign = 'I'.

lr_matnr-option = 'EQ'.

LOOP AT itab_barcode.

  • Add leading zeros incase of numeric value.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = itab_barcode-m_matnr

IMPORTING

output = itab_barcode-m_matnr.

lr_matnr-low = itab_barcode-m_matnr.

APPEND lr_matnr.

MODIFY itab_barcode TRANSPORTING m_matnr.

ENDLOOP.

IF NOT lr_matnr[] IS INITIAL.

SORT lr_matnr BY low.

DELETE ADJACENT DUPLICATES FROM lr_matnr COMPARING low.

SELECT matnr werks FROM marc

INTO TABLE lt_marc

WHERE matnr IN lr_matnr AND

werks = p_frmplt.

ENDIF.

LOOP AT itab_barcode.

READ TABLE lt_marc

WITH KEY matnr = itab_barcode-m_matnr

werks = p_frmplt.

IF sy-subrc <> 0 .

CONCATENATE 'Material' itab_barcode-m_matnr

' does not exist in Plant ' p_frmplt

INTO itab_barcode-text SEPARATED BY space.

MOVE-CORRESPONDING itab_barcode TO itab_log.

APPEND itab_log.

MODIFY itab_barcode TRANSPORTING text.

CONTINUE.

ENDIF.

ENDLOOP.

ENDFORM. " F_VALIDATE_DATA

*&----


--*

*& Form F_WRITE_LOG

*&----


--*

  • text

*----


--*

FORM f_write_log .

LOOP AT itab_log.

WRITE 😕 itab_log-text.

ENDLOOP.

LOOP AT itab_log1.

WRITE 😕 itab_log1-text1.

ENDLOOP.

ENDFORM. " F_WRITE_LOG

*&----


--*

*& Form f_prized_data

*&----


--*

  • text

*----


--*

  • --> p1 text

  • <-- p2 text

*----


--*

FORM f_prized_data.

DATA: ld_lines LIKE sy-tabix,

ld_sw TYPE i,

lh_loop TYPE i,

ld_recno TYPE i,

lremain TYPE i,

ld_total TYPE i,

  • ld_counter LIKE sy-index,

ld_counter TYPE i,

ld_save LIKE sy-index,

ld_last TYPE i,

sc_counter(2) TYPE n,

ld_budat(10),

ld_bldat(10).

DATA: wa_matnr(40) TYPE c,

wa_bwtar(40) TYPE c,

wa_erfme(40) TYPE c,

wa_charg(40) TYPE c.

WRITE: p_budat TO ld_budat,

p_bldat TO ld_bldat.

ld_recno = 300. " Number of records in the upload file.

ld_last = 0.

  • Open BDC session.

PERFORM open_group.

DESCRIBE TABLE itab_barcode LINES ld_lines.

CLEAR: lh_loop, lremain.

lh_loop = ld_lines DIV ld_recno.

lremain = ld_lines MOD ld_recno.

IF lremain > 0.

lh_loop = lh_loop + 1.

ENDIF.

ld_sw = 1.

LOOP AT itab_barcode.

ADD 1 TO ld_counter.

ADD 1 TO sc_counter.

ADD 1 TO ld_total. " Check for 300

IF ld_sw = 1.

  • Header data.

*----


--*

PERFORM open_group.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=MIGO_OK_ACTION'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GODYNPRO-ACTION'.

PERFORM bdc_field USING 'GODYNPRO-

ACTION' 'A01'.

PERFORM bdc_field USING 'GODYNPRO-

REFDOC' 'R02'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=OK_GO'.

PERFORM bdc_field USING 'GODYNPRO-

ACTION' 'A01'.

PERFORM bdc_field USING 'GODYNPRO-

REFDOC' 'R08'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GODYNPRO-

ORDER_NUMBER'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=MIGO_OK_DETAIL_OP

EN'.

PERFORM bdc_field USING 'GODYNPRO-

ACTION' 'A01'.

PERFORM bdc_field USING 'GODYNPRO-

REFDOC' 'R08'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GODYNPRO-

ORDER_NUMBER'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=OK_GO'.

PERFORM bdc_field USING 'GODYNPRO-

ACTION' 'A01'.

PERFORM bdc_field USING 'GODYNPRO-

REFDOC' 'R08'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GODYNPRO-

ORDER_NUMBER'.

PERFORM bdc_field USING 'GODYNPRO-

ORDER_NUMBER' itab_barcode-m_prod_ord.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=MIGO_OK_LINE_CLIC

K'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_field USING 'GOHEAD-

WEVER' '3'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOITEM-ZEILE(01)'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_ZEILE' ' 1'.

PERFORM bdc_field USING 'GOITEM-

ERFME' 'KG'.

PERFORM bdc_field USING 'GOITEM-

BWART' '101'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=MIGO_OK_SPLIT_QUA

N'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_field USING 'GOHEAD-

WEVER' '3'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOITEM-ZEILE(01)'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_ZEILE' ' 1'.

PERFORM bdc_field USING 'GOITEM-

ERFME' 'KG'.

PERFORM bdc_field USING 'GOITEM-

MIGO_ELIKZ' '1'.

PERFORM bdc_field USING 'GOITEM-

BWART' '101'.

ld_sw = 0.

ENDIF.

IF sc_counter = 16.

CLEAR sc_counter.

PERFORM bdc_field USING 'BDC_OKCODE' 'DOWN'.

PERFORM bdc_field

USING 'BDC_OKCODE' '/00'.

add 2 to sc_counter.

ELSE.

PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

ENDIF.

CLEAR wa_matnr.

CONCATENATE 'GOSPLIT-ERFMG(' sc_counter ')' INTO wa_matnr.

CLEAR wa_bwtar.

CONCATENATE 'GOSPLIT-CHARG(' sc_counter ')' INTO wa_bwtar.

PERFORM bdc_dynpro USING 'SAPLMIGO' '1000'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=OK_SP_CH'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOSPLIT-CHARG

(sc_counter)'.

PERFORM bdc_field USING wa_matnr itab_barcode-

m_gross_wt.

PERFORM bdc_field USING wa_bwtar itab_barcode-

m_batch_no.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOSPLIT-CHARG

(sc_counter)'.

*When end of itab

AT LAST.

PERFORM bdc_dynpro USING 'SAPLMIGO' '1000'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=OK_GOON'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOSPLIT-CHARG

(sc_counter)'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=MIGO_OK_NEXT_IT'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_field USING 'GOHEAD-

WEVER' '3'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOITEM-ZEILE(01)'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_ZEILE' ' 1'.

PERFORM bdc_field USING 'GOITEM-

ERFME' 'KG'.

PERFORM bdc_field USING 'GOITEM-

MIGO_ELIKZ' '1'.

PERFORM bdc_field USING 'GOITEM-

BWART' '101'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=MIGO_OK_TAKE_VALU

E'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOITEM-TAKE_IT

(01)'.

PERFORM bdc_field USING 'GOITEM-TAKE_IT

(01)' 'X'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_ZEILE' ' 1'.

PERFORM bdc_field USING 'GOITEM-

ERFME' 'KG'.

PERFORM bdc_field USING 'GOITEM-

MIGO_ELIKZ' '1'.

PERFORM bdc_field USING 'GOITEM-

BWART' '101'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=OK_CHECK'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOITEM-TAKE_IT

(01)'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_ZEILE' ' 1'.

PERFORM bdc_field USING 'GOITEM-

ERFME' 'KG'.

PERFORM bdc_field USING 'GOITEM-

MIGO_ELIKZ' '1'.

PERFORM bdc_field USING 'GOITEM-

BWART' '101'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_TAKE' 'X'.

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=&ONT'.

PERFORM bdc_dynpro USING 'SAPLMIGO' '0001'.

PERFORM bdc_field

USING 'BDC_OKCODE' '=OK_POST1'.

PERFORM bdc_field USING 'GODEFAULT_TV-

BWART' '101'.

PERFORM bdc_field USING 'GOHEAD-

BLDAT' ld_bldat.

PERFORM bdc_field USING 'GOHEAD-

BUDAT' ld_budat.

PERFORM bdc_field USING 'GOHEAD-

XNAPR' 'X'.

PERFORM bdc_field

USING 'BDC_CURSOR' 'GOITEM-TAKE_IT

(01)'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_ZEILE' ' 1'.

PERFORM bdc_field USING 'GOITEM-

ERFME' 'KG'.

PERFORM bdc_field USING 'GOITEM-

MIGO_ELIKZ' '1'.

PERFORM bdc_field USING 'GOITEM-

BWART' '101'.

PERFORM bdc_field USING 'GODYNPRO-

DETAIL_TAKE' 'X'.

PERFORM bdc_transaction USING 'MIGO_GO'.

ENDAT.

ENDLOOP.

PERFORM close_group.

ENDFORM. "f_prized_data

2 REPLIES 2

Former Member
0 Kudos

make use of

<b>BAPI_GOODSMVT_CREATE</b>

and see its documentation.

Regards

Peram

0 Kudos

Hi

Thanks Peram for your swift reply but I am a newbie to BAPIs ...... is there anyway i can do this from within the code i had written ....

for BAPIs I have to do R & D in detail and I need to complete this urgently. If BAPI is the only solution kindly provide my some quick guideline to proceed.

Thanks,

Imran