Application Development and Automation 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: 
Read only

BDC for Article Grouping

Former Member
0 Likes
414

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 .

2 REPLIES 2
Read only

Former Member
0 Likes
344

any answer?????????

anyone????????

Read only

Former Member
0 Likes
344

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