05-29-2007 5:22 AM
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
05-29-2007 5:26 AM
make use of
<b>BAPI_GOODSMVT_CREATE</b>
and see its documentation.
Regards
Peram
05-29-2007 5:43 AM
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