‎2008 Jun 25 6:03 AM
I am tryin to create a BDC for Article grouping in VBG1, after the entry of the first line item, it prompts that the article group already exists.
Ideally i would need to have the group name ones and then all the articles entered in the group and then save the upload.. how can this be done? Please confirm .
‎2008 Jun 25 7:15 AM
‎2008 Sep 11 5:27 AM
Hello to all , i am posting the response to my own question , the solution works fine...
Important notes:
1. the total no. of articles per group is only 999, cannot exceed as MATNR field length = 4 and serial numbers pof the articles / Item no. progresses in multiples of 10.
2. the source data file is of Tab Delimited type.
BDC Program :
{size:10}
*&---------------------------------------------------------------------*
*& Report ZPRSC_BDC_VBG1
*& Program for BDC to upload Article Grouping in Transaction VBG1
*&---------------------------------------------------------------------*
REPORT zprsc_bdcpgdn_vbg1.
DATA : BEGIN OF itab OCCURS 0,
grpgnr(12),
grpgtext(60),
matnr(18),
defquan(10),
defunit(3),
END OF itab.
DATA : it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
it_bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA : fnam(40) TYPE c,
fnam1(40) TYPE c,
fnam2(40) TYPE c,
idx(2) TYPE n, " index for rows
cnt(2) TYPE n. "counter for page down
CALL FUNCTION 'UPLOAD'
EXPORTING
* CODEPAGE = ' '
* filename = ' '
filetype = 'DAT'
* ITEM = ' '
* FILEMASK_MASK = ' '
* FILEMASK_TEXT = ' '
* FILETYPE_NO_CHANGE = ' '
* FILEMASK_ALL = ' '
* FILETYPE_NO_SHOW = ' '
* LINE_EXIT = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* SILENT = 'S'
* IMPORTING
* FILESIZE =
* CANCEL =
* ACT_FILENAME =
* ACT_FILETYPE =
TABLES
data_tab = itab
EXCEPTIONS
conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
OTHERS = 7
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH it_bdcdata.
DATA: l_grpgnr(12),
l_grpgtext(60),
l_matnr(18),
l_defquan(10),
l_tabix TYPE sy-tabix,
l_count TYPE i,
l_defunit(3).
DESCRIBE TABLE itab LINES l_count.
LOOP AT itab.
l_tabix = sy-tabix.
l_grpgnr = itab-grpgnr.
l_grpgtext = itab-grpgtext.
l_matnr = itab-matnr.
l_defquan = itab-defquan.
l_defunit = itab-defunit.
AT FIRST .
PERFORM bdc_dynpro USING 'SAPMV23N' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'ENTR'.
PERFORM bdc_field USING 'KONMATGRP-GRPGNR'
l_grpgnr . " GRPGNR,CHAR,12
PERFORM bdc_field USING 'KONMATGRPT-GRPGTEXT'
l_grpgtext . " GRPGTEXT,CHAR,60
CONCATENATE 'KONMATGRPP_TCTRL-matnr(' '01' ')' INTO fnam.
CONDENSE fnam.
PERFORM bdc_field USING fnam
l_matnr.
CONCATENATE 'KONMATGRPP_TCTRL-Defquan(' '01' ')' INTO fnam1.
CONDENSE fnam1.
PERFORM bdc_field USING fnam1
l_defquan.
CONCATENATE 'KONMATGRPP_TCTRL-defunit(' '01' ')' INTO fnam2.
CONDENSE fnam2.
PERFORM bdc_field USING fnam2
l_defunit.
PERFORM bdc_dynpro USING 'SAPMV23N' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'INSR'.
ENDAT.
IF l_tabix NE l_count.
PERFORM bdc_dynpro USING 'SAPMV23N' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE' 'INSR'.
ELSE.
PERFORM bdc_dynpro USING 'SAPMV23N' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
ENDIF.
idx = 1.
CONCATENATE 'KONMATGRPP_TCTRL-matnr(' idx ')' INTO fnam.
CONDENSE fnam.
PERFORM bdc_field USING fnam
itab-matnr.
CONCATENATE 'KONMATGRPP_TCTRL-Defquan(' idx ')' INTO fnam1.
CONDENSE fnam1.
PERFORM bdc_field USING fnam1
itab-defquan.
CONCATENATE 'KONMATGRPP_TCTRL-defunit(' idx ')' INTO fnam2.
CONDENSE fnam2.
PERFORM bdc_field USING fnam2
itab-defunit.
ENDLOOP.
CALL TRANSACTION 'VBG1' USING it_bdcdata
MODE 'A' UPDATE 'A'
MESSAGES INTO it_bdcmsgcoll.
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROG text
* -->SCR text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING prog scr.
CLEAR it_bdcdata.
it_bdcdata-program = prog.
it_bdcdata-dynpro = scr.
it_bdcdata-dynbegin = 'X'.
APPEND it_bdcdata.
CLEAR it_bdcdata.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR it_bdcdata.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
APPEND it_bdcdata.
CLEAR it_bdcdata.
ENDFORM. "BDC_FIELD
{size}
***************************The End****************************