Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 3575

Re: re: how to capture iblnr,gjahr using mi01 tcode in bdc

$
0
0

please find the below coding for mi01 mi04 mi20

 

hope it helps.

 

DATA: wait type BAPITA-WAIT.

 

TYPES: BEGIN OF ty_flatfile1,

         bldat type bldat,

         gidat type gidat,

         werks type werks_d,

         lgort type lgort_d,

         matnr type matnr,

         gjahr type gjahr,

         zldat type IIKPF-ZLDAT,

         pcount type ISEG-ERFMG,

         batch type charg_d,

         uom type meins,

         zero type XNULL,

         bstar type iseg-bstar,

       END OF ty_flatfile1.

 

DATA: TA_FLATFILE1 type TABLE OF ty_flatfile1,

       WA_FLATFILE1 type ty_flatfile1.

 

***DECLARATION OF BDC *******

 

DATA: ta_bdcdata TYPE TABLE OF bdcdata,

       wa_bdcdata type bdcdata.

 

data: ta_bdcmsgcoll type TABLE OF bdcmsgcoll,

       wa_bdcmsgcoll type bdcmsgcoll.

 

data: ta_bdcmsgcoll1 type TABLE OF bdcmsgcoll,

       wa_bdcmsgcoll1 type bdcmsgcoll.

 

***ERROR HANDLING***

 

DATA: ERRTEXT TYPE STRING,

       SUCCTEXT TYPE STRING.

 

 

TYPES: BEGIN OF ty_text,

          succ type string,

        END OF ty_text.

 

DATA: ta_text TYPE TABLE OF ty_text,

       wa_text type ty_text.

 

***declaration for excel conversion***

 

DATA: TA_EXCEL TYPE TABLE OF ALSMEX_TABLINE,

       WA_EXCEL TYPE ALSMEX_TABLINE.

 

***other declaration***

 

FIELD-SYMBOLS <fs> type any.

data: vf_index type i,

       V_sear type string.

 

DATA : l_start_col TYPE i VALUE 1,

          l_start_row TYPE i VALUE 2,

          l_end_col   TYPE i VALUE 256,

          l_end_row   TYPE i VALUE 65536.

 

data: ITEMS TYPE TABLE OF BAPI_PHYSINV_COUNT_ITEMS WITH HEADER LINE,

       bapiRETURN  TYPE TABLE OF  BAPIRET2 WITH HEADER LINE,

       bapiRET  TYPE TABLE OF  BAPIRET2 WITH HEADER LINE,

       items1 TYPE TABLE OF BAPI_PHYSINV_POST_ITEMS WITH HEADER LINE.

*      HEAD TYPE BAPI_PHYSINV_CREATE_HEAD,

 

 

 

data: iblnr TYPE IKPF-IBLNR.

data: msehi TYPE t006-msehi.

data: isocode type t006-isocode.

**********************************************************************

***design of selection screen***

**********************************************************************

 

***selection screen***

 

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECTION-SCREEN skip 3.

PARAMETERS : p_file type IBIPPARMS-PATH .

SELECTION-SCREEN skip 3.

SELECTION-SCREEN END OF BLOCK b1.

 

***selection screen value request***

at SELECTION-SCREEN on VALUE-REQUEST FOR p_file.

   CALL FUNCTION 'F4_FILENAME'

     EXPORTING

       PROGRAM_NAME  = SYST-CPROG

       DYNPRO_NUMBER = SYST-DYNNR

       FIELD_NAME    = 'P_FILE'

     IMPORTING

       FILE_NAME     = P_FILE.

 

***SELECTION SCREEN VALIDATION***

AT SELECTION-SCREEN.                                 "validation

   if p_file <> ''.

     V_sear = p_file.

     SEARCH V_sear for '.xls'.

     if sy-subrc <> 0.

       message 'please provide excel file. it is not valid' type 'E'.

     ENDIF.

   ENDIF.

**********************************************************************

***start of selection***

**********************************************************************

START-OF-SELECTION.

 

   perform excel_upload.

   perform excel_conversion.

   perform bdc_upload.

   perform error_display.

 

*&---------------------------------------------------------------------*

*&      Form  EXCEL_UPLOAD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM EXCEL_UPLOAD .

   CLEAR TA_EXCEL.

   CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

     EXPORTING

       FILENAME                = P_FILE

       I_BEGIN_COL             = l_start_col

       I_BEGIN_ROW             = l_start_row

       I_END_COL               = l_end_col

       I_END_ROW               = l_end_row

     TABLES

       INTERN                  = TA_EXCEL

     EXCEPTIONS

       INCONSISTENT_PARAMETERS = 1

       UPLOAD_OLE              = 2

       OTHERS                  = 3.

   IF SY-SUBRC <> 0.

* Implement suitable error handling here

   ENDIF.

ENDFORM.                    " EXCEL_UPLOAD

*&---------------------------------------------------------------------*

*&      Form  EXCEL_CONVERSION

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM EXCEL_CONVERSION .

   IF TA_EXCEL IS NOT INITIAL.

 

     SORT TA_EXCEL BY ROW COL.

     CLEAR WA_FLATFILE1.

     CLEAR WA_EXCEL.

     loop at ta_excel into wa_excel.

       move wa_excel-col to vf_index.

       ASSIGN COMPONENT vf_index OF STRUCTURE WA_FLATFILE1 to <fs>.

       if sy-subrc = 0.

         move wa_excel-value to <fs>.

 

       ENDIF.

 

       AT END OF ROW.

         APPEND WA_FLATFILE1 TO TA_FLATFILE1.

         CLEAR WA_FLATFILE1.

       ENDAT.

     ENDLOOP.

   ELSE.

     MESSAGE 'NO DATA' TYPE 'E'.

 

   ENDIF.

ENDFORM.                    " EXCEL_CONVERSION

*&---------------------------------------------------------------------*

*&      Form  BDC_UPLOAD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM BDC_UPLOAD .

 

   LOOP AT TA_FLATFILE1 INTO WA_FLATFILE1.

*    clear wa_flatfile1.

     refresh ta_bdcmsgcoll.

     clear wa_bdcmsgcoll.

     refresh items.

     refresh items1.

     refresh bapireturn.

     refresh bapiret.

 

     clear items[].

     clear items1[].

     clear bapireturn[].

     clear bapiret[].

 

     perform bdc_dynpro      using 'SAPMM07I' '0700'.

     perform bdc_field       using 'BDC_CURSOR'

                                   'RM07I-GIDAT'.

     perform bdc_field       using 'BDC_OKCODE'

                                   '/00'.

     perform bdc_field       using 'RM07I-BLDAT'

                                   WA_FLATFILE1-BLDAT.

     perform bdc_field       using 'RM07I-GIDAT'

                                   WA_FLATFILE1-GIDAT.

     perform bdc_field       using 'IKPF-WERKS'

                                   WA_FLATFILE1-WERKS.

     perform bdc_field       using 'IKPF-LGORT'

                                   WA_FLATFILE1-LGORT.

*perform bdc_field       using 'RM07I-XLVOCA'

*                             .

     perform bdc_dynpro      using 'SAPMM07I' '0721'.

     perform bdc_field       using 'BDC_CURSOR'

                                   'ISEG-MATNR(01)'.

     perform bdc_field       using 'BDC_OKCODE'

                                   '/00'.

     perform bdc_field       using 'ISEG-MATNR(01)'

                                   WA_FLATFILE1-MATNR.

     perform bdc_field       using 'ISEG-BSTAR(01)'

                                    wa_Flatfile1-bstar.

     perform bdc_dynpro      using 'SAPMM07I' '0721'.

     perform bdc_field       using 'BDC_CURSOR'

                                   'ISEG-MATNR(01)'.

     perform bdc_field       using 'BDC_OKCODE'

                                   '=BU'.

 

 

     CALL TRANSACTION 'MI01' USING TA_BDCDATA MODE 'N' UPDATE 'S' MESSAGES INTO TA_BDCMSGCOLL.

     wa_text-succ = wa_flatfile1-matnr.

     APPEND wa_text to ta_Text.

     perform bdc_error_handling.

     clear wa_BDCDATA.

     refresh ta_bdcdata.

 

 

 

 

   ENDLOOP.

 

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  BDC_ERROR_HANDLING

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM BDC_ERROR_HANDLING .

 

 

 

   LOOP AT TA_BDCMSGCOLL INTO WA_BDCMSGCOLL WHERE MSGTYP = 'S'.

 

     CALL FUNCTION 'FORMAT_MESSAGE'

       EXPORTING

         ID        = WA_BDCMSGCOLL-MSGID

         LANG      = WA_BDCMSGCOLL-MSGSPRA

         NO        = WA_BDCMSGCOLL-MSGNR

         V1        = WA_BDCMSGCOLL-MSGV1

         V2        = WA_BDCMSGCOLL-MSGV2

         V3        = WA_BDCMSGCOLL-MSGV3

         V4        = WA_BDCMSGCOLL-MSGV4

       IMPORTING

         MSG       = wa_text-succ

       EXCEPTIONS

         NOT_FOUND = 1

         OTHERS    = 2.

     IF SY-SUBRC <> 0.

* Implement suitable error handling here

     ENDIF.

 

     APPEND wa_text to ta_text.

     clear wa_text.

 

     if wa_bdcmsgcoll-msgv1 <> ''.

 

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           INPUT  = wa_flatfile1-matnr

         IMPORTING

           OUTPUT = wa_flatfile1-matnr.

 

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           INPUT  = wa_flatfile1-uom

         IMPORTING

           OUTPUT = wa_flatfile1-uom.

 

       .

*SELECT SINGLE msehi

*       isocode FROM t006 INTO (msehi , isocode ) WHERE msehi = wa_flatfile1-uom.

 

       items-ITEM      = '001'.

       items-MATERIAL = wa_flatfile1-matnr.

       items-batch = wa_flatfile1-batch.

       items-ENTRY_QNT = wa_flatfile1-pcount.

       items-ENTRY_UOM = wa_Flatfile1-uom.

       items-ZERO_COUNT = wa_flatfile1-zero.

*      items-ENTRY_UOM_ISO = 'PCE'.

 

       APPEND items.

 

       items1-ITEM      = '001'.

       items1-MATERIAL = wa_flatfile1-matnr.

       items1-batch = wa_flatfile1-batch.

*      items-ENTRY_QNT = wa_flatfile1-pcount.

*      items-ENTRY_UOM = wa_flatfile1-uom.

       APPEND items1.

 

       iblnr = wa_bdcmsgcoll-msgv1.

 

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           INPUT  = iblnr

         IMPORTING

           OUTPUT = iblnr.

 

       SELECT SINGLE iblnr FROM ikpf INTO iblnr WHERE iblnr = iblnr.

 

 

 

 

 

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           INPUT  = wa_flatfile1-zldat

         IMPORTING

           OUTPUT = wa_flatfile1-zldat.

 

 

 

 

 

       CALL FUNCTION 'BAPI_MATPHYSINV_COUNT'

         EXPORTING

           PHYSINVENTORY = iblnr

           FISCALYEAR    = wa_flatfile1-gjahr

*         PERCENTAGE_VARIANCE       =

           COUNT_DATE    = wa_flatfile1-zldat

         TABLES

           ITEMS         = items

           RETURN        = bapireturn

*         SERIALNUMBERS =

*         EXTENSIONIN   =

         .

       wa_text-succ = bapireturn-message.

       APPEND wa_text to ta_text.

       clear bapireturn.

       refresh bapireturn.

 

       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

           WAIT   = 'X'

         IMPORTING

           RETURN = bapiret.

 

 

       wa_text-succ = bapiret-message.

       APPEND wa_text to ta_text.

       clear bapiret.

       refresh bapiret.

 

 

       CALL FUNCTION 'BAPI_MATPHYSINV_POSTDIFF'

         EXPORTING

           PHYSINVENTORY = iblnr

           FISCALYEAR    = wa_flatfile1-gjahr

           PSTNG_DATE    = wa_flatfile1-zldat

*         THRESHOLD_VALUE       =

         TABLES

           ITEMS         = items1

           RETURN        = bapireturn.

 

       wa_text-succ = bapireturn-message.

       APPEND wa_text to ta_text.

       clear bapireturn.

       refresh bapireturn.

 

       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

           WAIT   = 'X'

         IMPORTING

           RETURN = bapiret.

 

 

       wa_text-succ = bapiret-message.

       APPEND wa_text to ta_text.

       clear bapiret.

       refresh bapiret.

 

 

     endif.

 

 

 

 

   ENDLOOP.

 

 

 

 

   LOOP AT TA_BDCMSGCOLL INTO WA_BDCMSGCOLL WHERE MSGTYP = 'E'.

     CALL FUNCTION 'FORMAT_MESSAGE'

       EXPORTING

         ID        = WA_BDCMSGCOLL-MSGID

         LANG      = WA_BDCMSGCOLL-MSGSPRA

         NO        = WA_BDCMSGCOLL-MSGNR

         V1        = WA_BDCMSGCOLL-MSGV1

         V2        = WA_BDCMSGCOLL-MSGV2

         V3        = WA_BDCMSGCOLL-MSGV3

         V4        = WA_BDCMSGCOLL-MSGV4

       IMPORTING

         MSG       = wa_Text-succ

       EXCEPTIONS

         NOT_FOUND = 1

         OTHERS    = 2.

     IF SY-SUBRC <> 0.

* Implement suitable error handling here

     ENDIF.

 

 

     APPEND wa_text to ta_Text.

     clear wa_text.

 

*perform error_display.

   ENDLOOP.

 

ENDFORM.                    " BDC_ERROR_HANDLING

*&---------------------------------------------------------------------*

*&      Form  ERROR_DISPLAY

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM ERROR_DISPLAY .

 

   if ta_text is  NOT INITIAL.

 

     loop at ta_text INTO wa_text.

 

       write:/ wa_Text-succ.

       clear wa_text.

     ENDLOOP.

 

   endif.

eNDFORM.                    " ERROR_DISPLAY

 

*&---------------------------------------------------------------------*

*&      Form  BDC_DYNPRO

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_0232   text

*      -->P_0233   text

*----------------------------------------------------------------------*

FORM BDC_DYNPRO  USING   PROGRAM SCREEN.

 

   WA_BDCDATA-PROGRAM = PROGRAM.

   WA_BDCDATA-DYNPRO = SCREEN.

   WA_BDCDATA-DYNBEGIN = 'X'.

   APPEND WA_BDCDATA TO TA_BDCDATA.

   CLEAR WA_BDCDATA.

 

ENDFORM.                    " BDC_DYNPRO

*&---------------------------------------------------------------------*

*&      Form  BDC_FIELD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_0297   text

*      -->P_0298   text

*----------------------------------------------------------------------*

FORM BDC_FIELD  USING    FNAM FVAL.

   WA_BDCDATA-FNAM = FNAM.

   WA_BDCDATA-FVAL = FVAL.

   APPEND WA_BDCDATA TO TA_BDCDATA.

   CLEAR WA_BDCDATA.

 

ENDFORM.                    " BDC_FIELD


Viewing all articles
Browse latest Browse all 3575

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>