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: 

BDC for multiple line items (VA01) sort by vendor wise

Former Member
0 Kudos

Hi Experts,

  I create a BDC for VA01 transaction for single line item in that now i want to upload multiple line items also and sorted by vendor wise I hope you people can help me in this regerd. urjent requriment.

4 REPLIES 4

0 Kudos

you mean in item overview we can achive this through concatination that item overview is a table control so if you enter first record the recording shows as VBAP-POSNR(01),VBAP-MATNR(01),..............   i think your recording shows like this

step1 : LOOP THE ITEM INTERNAL TABLE THAT YOU ARE HAVING ITEMS.

step2:  concatenate the fields with 'VBAP-POSNR('   'V'   ')' , LIKE THIS FOR ALL THE FIELDS.

   NOTE: HERE V SHOULD BE DECLARED AS NUMC 2 .

step3: pass the values from internal table to this

   actually i am trying to give an example but i don't know how to work with VA01 if you have the code for one line item please share me i will give full line item code

0 Kudos

TABLES : ZPO_VALIDATE, " Table For PO Validation for DI File

          KNMT ,        " Customer-Material Info Record Data Table

          VBAK,         " Sales Document: Header Data

          VBKD.         " Sales Document: Business Data

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

*&   INTERNAL TABLES

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

DATA : BEGIN OF DI OCCURS 0,                " DI

         KANBAN_NO(35)    TYPE c,

         PART_NUMBER(35TYPE c,

         PART_NAME(40)    TYPE c,

         SUPPLY_DATE(10TYPE C,

         SUPPLY_TIME(5)   TYPE c,

         UNLOADING_LOC(8) TYPE c,

         USAGE_LOC(8)     TYPE c,

         QUANTITY(8)      TYPE c,

         QTY_DESPATCH(6TYPE c,

         QTY_REJECTED(6TYPE c,

         VENDOR_CODE(6)   TYPE c,

         AUART(4)         TYPE C,

        END OF DI.

DATA : BEGIN OF T_SALES OCCURS 0,

         VBELN LIKE VBAK-VBELN,

         ERDAT LIKE VBAK-ERDAT,

         KUNNR LIKE VBAK-KUNNR,

         TELF1 LIKE VBAK-TELF1,

         BSTKD_E LIKE VBKD-BSTKD_E,

        END OF T_SALES.

DATA : BEGIN OF T_ZPO_VALIDATE OCCURS 0,

         KUNNR   LIKE ZPO_VALIDATE-KUNNR,

         NAME1   LIKE ZPO_VALIDATE-NAME1,

         Z_BSTKD LIKE ZPO_VALIDATE-Z_BSTKD,

         Z_MATNR LIKE ZPO_VALIDATE-Z_MATNR,

        END OF T_ZPO_VALIDATE.

DATA : BEGIN OF T_KNMT OCCURS 0,

         VTWEG TYPE VTWEG ,

         MATNR LIKE KNMT-MATNR,

         KDMAT LIKE KNMT-KDMAT,

        END OF T_KNMT.

DATA : BEGIN OF T_MARA OCCURS 0,                           

        MATNR TYPE MARA-MATNR,                                       " Material Number

        ZEIFO TYPE MARA-ZEIFO,                                       " Page format of document (without Document Management system)

        END OF T_MARA.

DATA : BEGIN OF T_FINAL OCCURS 0,

         PO_NUMBER        TYPE ZPO_VALIDATE-Z_BSTKD,

         SUPPLY_TIME(5)   TYPE c,

         UNLOADING_PT(8TYPE c,

         UNLOADING_LOC(8) TYPE c,

         AUART(4)         TYPE C,

         KUNNR            TYPE ZPO_VALIDATE-KUNNR,

         NAME1            TYPE ZPO_VALIDATE-NAME1,

         PART_NUMBER(35TYPE c,

         MATNR(18)        TYPE c,

         KANBAN_NO(15)    TYPE c,

         PART_NAME(40)    TYPE c,

         SUPPLY_DATE(11TYPE c,

         USAGE_LOC(8)     TYPE c,

         QUANTITY(8)      TYPE c,

         QTY_DESPATCH(6TYPE c,

         QTY_REJECTED(6TYPE c,

         VENDOR_CODE(6)   TYPE c,

         FLAG(1)          TYPE c, " FLAG

         ZEIFO(5)         TYPE c,

        END OF T_FINAL.

DATA : BEGIN OF T_CHK OCCURS 0,      " TEST RUN

         KANBAN_NO(15)    TYPE c,

         PART_NUMBER(35TYPE c,

         PART_NAME(40)    TYPE c,

         SUPPLY_DATE(11TYPE c,

         SUPPLY_TIME(5)   TYPE c,

         UNLOADING_LOC(8) TYPE c,

         USAGE_LOC(8)     TYPE c,

         QUANTITY(8)      TYPE c,

         QTY_DESPATCH(6TYPE c,

         QTY_REJECTED(6TYPE c,

         VENDOR_CODE(6)   TYPE c,

         ERROR_TYPE(1)    TYPE c,

         REMARKS(140)     TYPE c,

        END OF T_CHK.

DATA : IT_EXLOAD LIKE ALSMEX_TABLINE  OCCURS 0 WITH HEADER LINE.

DATA : OPT TYPE TABLE OF CTU_PARAMS WITH HEADER LINE.

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

*&   WORK AREAS

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

DATA WA             LIKE LINE OF DI.

DATA : WA_SALES        LIKE LINE OF T_SALES,

        WA_ZPO_VALIDATE LIKE LINE OF T_ZPO_VALIDATE,

        WA_KNMT         LIKE LINE OF T_KNMT,

        WA_MARA         LIKE LINE OF T_MARA.                             

DATA : WA_FINAL        LIKE LINE OF T_FINAL.

DATA : WA_CHK          LIKE LINE OF T_CHK,

        LOC_VTWEG TYPE VTWEG .

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

*&   LOCAL VARIABLES

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

DATA VAR(1) TYPE C.

DATA : DATE(10) TYPE c.

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

*&   BDC DECLARATIONS

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

DATA BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,

         MSG_TXT(150) TYPE C,

         V_TABIX LIKE SY-TABIX.

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

*&   ALV VARIABLE DICLARATION

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

DATA : IT_FIELDCAT     TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,

        WA_FIELDCAT     LIKE LINE OF IT_FIELDCAT.

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

*&   SELECTION SCREEN

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

SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : FNAME TYPE rlgrap-filename.

SELECTION-SCREEN : END OF BLOCK B1.

SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

PARAMETERSRAD4    RADIOBUTTON GROUP GP2 DEFAULT 'X' ,

              RAD5    RADIOBUTTON GROUP GP2,

              RAD6    RADIOBUTTON GROUP GP2.

SELECTION-SCREEN : END OF BLOCK B2.

SELECTION-SCREEN : BEGIN OF BLOCK B3 WITH FRAME TITLE text-003.

PARAMETERS : P_KUNNR TYPE VBAK-KUNNR OBLIGATORY.

SELECTION-SCREEN : END OF BLOCK B3.

SELECTION-SCREEN : BEGIN OF BLOCK B4 WITH FRAME TITLE text-004.

PARAMETERS : P_DI(5) TYPE c OBLIGATORY.

SELECTION-SCREEN : END OF BLOCK B4.

SELECTION-SCREEN : BEGIN OF BLOCK B5 WITH FRAME TITLE text-005.

PARAMETERS : CHK AS CHECKBOX.

SELECTION-SCREEN : END OF BLOCK B5.

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

*&   AT SELECTION SCREEN

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

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME.

PERFORM GET_FILE.

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

*&   START OF SELECTION

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

START-OF-SELECTION.

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

*&   PROCESSING DI FILE WITHOUT RUNNING TEST RUN

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

IF CHK <> 'X'.            " PROCESSING DI FILE

PERFORM SUB_DATA_LOAD.

PERFORM SUB_DATA_TRANSFORM.

PERFORM MODE_SELECTION.

PERFORM POPULATING_DATA.

PERFORM MOVE_DATA.

PERFORM SUB_POST_DATA.

ENDIF.

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

*&   TEST RUN BEFORE PROCESSING DI FILE

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

IF CHK = 'X'.             " TEST RUN FOR DI FILE

PERFORM SUB_DATA_LOAD.

PERFORM SUB_DATA_TRANSFORM.

PERFORM POPULATING_DATA.

PERFORM MOVE_DATA.

PERFORM ALV_DISPLAY.

ENDIF.

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

*&   BROWSING DI FILE                                                  *

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

FORM GET_FILE.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

  EXPORTING

    PROGRAM_NAME        = SYST-REPID

    DYNPRO_NUMBER       = SYST-DYNNR

*   FIELD_NAME          = ' '

*   STATIC              = ' '

*   MASK                = ' '

   CHANGING

     FILE_NAME           = FNAME.

* EXCEPTIONS

*   MASK_TOO_LONG       = 1

*   OTHERS              = 2

           .

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.

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

*&  LOADING DATA FROM EXCEL FILE                                                 *

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

FORM SUB_DATA_LOAD.

   CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

     EXPORTING

       filename    = FNAME

       i_begin_col = '0001'

       i_begin_row = '0001'

       i_end_col   = '0012'

       i_end_row   = '65535'

     TABLES

       intern      = IT_EXLOAD.

*  EXCEPTIONS

*    INCONSISTENT_PARAMETERS       = 1

*    UPLOAD_OLE                    = 2

*    OTHERS                        = 3

   .

   IF sy-subrc <> 0.

     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

   ENDIF.

ENDFORM.             " DATA UPLOAD FROM EXCELL SHEET

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

*      DATA TRANSFORM TO INTERNAL TABLE FROM EXCELL FILE              *

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

FORM SUB_DATA_TRANSFORM.

LOOP AT IT_EXLOAD.

CASE IT_EXLOAD-COL.

WHEN '0001'.

DI-KANBAN_NO = IT_EXLOAD-VALUE.

WHEN '0002'.

DI-PART_NUMBER = IT_EXLOAD-VALUE.

WHEN '003'.

DI-PART_NAME = IT_EXLOAD-VALUE.

WHEN '0004'.

DI-SUPPLY_DATE = IT_EXLOAD-VALUE.

WHEN '0005'.

DI-SUPPLY_TIME = IT_EXLOAD-VALUE.

WHEN '0006'.

DI-UNLOADING_LOC = IT_EXLOAD-VALUE.

WHEN '0007'.

DI-USAGE_LOC = IT_EXLOAD-VALUE.

WHEN '0008'.

DI-QUANTITY = IT_EXLOAD-VALUE.

WHEN '0009'.

DI-QTY_DESPATCH = IT_EXLOAD-VALUE.

WHEN '0010'.

DI-QTY_REJECTED = IT_EXLOAD-VALUE.

WHEN '0011'.

DI-VENDOR_CODE = IT_EXLOAD-VALUE.

WHEN '0012'.

*DI-AUART = IT_EXLOAD-VALUE.

ENDCASE.

AT END OF ROW.

  APPEND DI.

  CLEAR DI.

ENDAT.

ENDLOOP.

ENDFORM.                    "sub_data_transform

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

*   EXTRACTING DATA FROM DATABASE                                               *

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

FORM POPULATING_DATA.

PERFORM VALIDATE_DI.

CLEAR   : T_SALES.

REFRESH : T_SALES.

SELECT VBAK~VBELN

        VBAK~ERDAT

        VBAK~KUNNR

        VBAK~TELF1

        VBKD~BSTKD_E

        INTO TABLE T_SALES

        FROM VBAK AS VBAK

        INNER JOIN VBKD AS VBKD

        ON VBAK~VBELN = VBKD~VBELN

        FOR ALL ENTRIES IN DI

        WHERE KUNNR    = P_KUNNR        AND

              TELF1    = P_DI           AND

              BSTKD_E  = DI-KANBAN_NO.

IF T_SALES[] IS NOT INITIAL.

MESSAGE i000(8i) WITH 'Sales Orders with Similar Kanban Nos Already Exist for the Selected Time'.

PERFORM CHECK_DI.

ENDIF.

CLEAR   : T_ZPO_VALIDATE.

REFRESH : T_ZPO_VALIDATE.

SELECT KUNNR NAME1 Z_BSTKD Z_MATNR FROM ZPO_VALIDATE INTO TABLE T_ZPO_VALIDATE FOR ALL ENTRIES IN DI

        WHERE KUNNR   = P_KUNNR  AND

              Z_MATNR = DI-PART_NUMBER.

CLEAR   : T_KNMT.

REFRESH : T_KNMT.

SELECT VTWEG MATNR KDMAT FROM KNMT INTO TABLE T_KNMT FOR ALL ENTRIES IN DI  

        WHERE KDMAT = DI-PART_NUMBER AND

              VKORG = 'CENT'        .

*             VTWEG = '01'.

CLEAR   : T_MARA.                                                                           

REFRESH : T_MARA.

SELECT MATNR ZEIFO FROM MARA INTO TABLE T_MARA

        FOR ALL ENTRIES IN T_KNMT

        WHERE MATNR = T_KNMT-MATNR.

TYPES : BEGIN OF TY_MESSAGES ,

         MESSAGES(165) TYPE ,

         END OF TY_MESSAGES.

DATA : IT_MESSAGES TYPE STANDARD TABLE OF TY_MESSAGES,

        WA_MESSAGES LIKE LINE OF IT_MESSAGES.

SELECT SINGLE VTWEG FROM KNVV INTO (LOC_VTWEG) WHERE KUNNR = P_KUNNR

                                                  AND VKORG = 'CENT'.

LOOP AT DI INTO WA.

   READ TABLE T_KNMT INTO WA_KNMT WITH KEY KDMAT = WA-PART_NUMBER.

     IF SY-SUBRC EQ 0.

       IF WA_KNMT-VTWEG EQ LOC_VTWEG.

        CONTINUE.

       ELSE.

*       IF WA_KNMT-VTWEG = '01'.

*         CONCATENATE 'OEM Part number' WA-PART_NUMBER 'deleted from the upload session' INTO WA_MESSAGES-MESSAGES SEPARATED BY SPACE.

*         APPEND WA_MESSAGES TO IT_MESSAGES.

*       ELSEIF WA_KNMT-VTWEG = '09'.

        IF WA_KNMT-VTWEG = '01'.

          CONCATENATE 'OEM Part number' WA-PART_NUMBER 'deleted from the upload session' INTO WA_MESSAGES-MESSAGES SEPARATED BY SPACE.

          APPEND WA_MESSAGES TO IT_MESSAGES.

        ENDIF.

        DELETE TABLE DI FROM WA.

       ENDIF.

     ENDIF.

ENDLOOP.

IF IT_MESSAGES[] IS NOT INITIAL.

   CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'

     EXPORTING

       ENDPOS_COL   = 150

       ENDPOS_ROW   = 170

       STARTPOS_COL = 20

       STARTPOS_ROW = 20

       TITLETEXT    = 'Log'

     TABLES

       VALUETAB     = IT_MESSAGES

     EXCEPTIONS

       BREAK_OFF    = 1

       OTHERS       = 2.

ENDIF.                                         

ENDFORM.

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

*  FILLING RECORDS TO GENERATE SALES ORDER                                   *

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

FORM MOVE_DATA.

SORT DI             BY PART_NUMBER SUPPLY_TIME.

SORT T_ZPO_VALIDATE BY Z_MATNR.

SORT T_KNMT         BY KDMAT.

SORT T_MARA         BY ZEIFO.                                       

CLEAR WA.

LOOP AT DI INTO WA WHERE SUPPLY_TIME = P_DI.

WA_FINAL-KANBAN_NO     = WA-KANBAN_NO.

WA_FINAL-PART_NUMBER   = WA-PART_NUMBER.

WA_FINAL-PART_NAME     = WA-PART_NAME.

WA_FINAL-SUPPLY_TIME   = WA-SUPPLY_TIME.

WA_FINAL-UNLOADING_LOC = WA-UNLOADING_LOC+0(4).

WA_FINAL-UNLOADING_PT  = WA-UNLOADING_LOC.

WA_FINAL-USAGE_LOC     = WA-USAGE_LOC.

WA_FINAL-QUANTITY      = WA-QUANTITY.

WA_FINAL-QTY_DESPATCH  = WA-QTY_DESPATCH.

WA_FINAL-QTY_REJECTED  = WA-QTY_REJECTED.

WA_FINAL-VENDOR_CODE   = WA-VENDOR_CODE.

WA_FINAL-AUART         = WA-AUART.

DATE = WA-SUPPLY_DATE. " CHANGED BY KUNAL JOSHI

*CONCATENATE DATE+6(2) '.' DATE+4(2) '.' DATE+0(4) INTO WA_FINAL-SUPPLY_DATE. COMMENTED BY KUNAL JOSHI

WA_FINAL-SUPPLY_DATE = DATE. " ADDED BY KUNAL JOSHI

CONDENSE WA_FINAL-SUPPLY_DATE.

*READ TABLE T_VBKD INTO WA_VBKD WITH KEY BSTKD_E = WA_FINAL-KANBAN_NO.

READ TABLE T_SALES INTO WA_SALES WITH KEY BSTKD_E = WA_FINAL-KANBAN_NO.

READ TABLE T_MARA INTO WA_MARA WITH KEY MATNR = WA_FINAL-PART_NUMBER.                  "UDIT CHANGE

IF SY-SUBRC NE 0.

*READ TABLE T_VBAK INTO WA_VBAK WITH KEY TELF1 = WA_FINAL-SUPPLY_TIME.

*

*IF SY-SUBRC NE 0.

READ TABLE T_ZPO_VALIDATE INTO WA_ZPO_VALIDATE WITH KEY Z_MATNR = WA_FINAL-PART_NUMBER BINARY SEARCH.

IF SY-SUBRC EQ 0.

WA_FINAL-KUNNR     = WA_ZPO_VALIDATE-KUNNR.

WA_FINAL-NAME1     = WA_ZPO_VALIDATE-NAME1.

WA_FINAL-PO_NUMBER = WA_ZPO_VALIDATE-Z_BSTKD.

READ TABLE T_KNMT INTO WA_KNMT WITH KEY KDMAT = WA_FINAL-PART_NUMBER BINARY SEARCH.

WA_FINAL-MATNR = WA_KNMT-MATNR.

*--------------------------------------------------------------- ITEMS TABLE UPLOAD

WA_FINAL-UNLOADING_LOC = WA_FINAL-UNLOADING_LOC+0(4).

APPEND WA_FINAL TO T_FINAL.

ELSEIF SY-SUBRC NE 0.

WA_CHK-ERROR_TYPE = 'S'.

WA_CHK-REMARKS    = 'EITHER PO or CUSTOMER INFO RECORD NOT FOUND'.

PERFORM ERROR_LOG.

ENDIF.

ENDIF.

IF T_SALES[] IS NOT INITIAL.

WA_CHK-ERROR_TYPE = 'K'.

WA_CHK-REMARKS    = 'KANBAN NO. ALREADY EXIST'.

PERFORM ERROR_LOG.

CONTINUE.

ENDIF.

ENDLOOP.

IF T_FINAL[] IS INITIAL.

MESSAGE i000(8i) WITH 'No Sales Orders pending for processing'.

EXIT.

ENDIF.

SORT T_FINAL BY PO_NUMBER SUPPLY_TIME UNLOADING_LOC ASCENDING.               

CLEAR : WA_FINAL.

ENDFORM.

DATA : V_MATNR(18) TYPE c,

        V_KDMAT(35) TYPE c,

        V_QTY(18)   TYPE c.

DATA : V_BSTKD(18) TYPE c.

DATA : VAL(2) TYPE N VALUE 1.

DATA : CNT TYPE i.

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

*  TRIGGERING BATCH DATA UPLOAD FOR DI INTERFACE                             *

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

FORM SUB_POST_DATA .

LOOP AT T_FINAL INTO WA_FINAL.

CNT = 0.

   CLEAR BDCDATA[].

perform bdc_dynpro      using 'SAPMV45A' '0101'.

perform bdc_field       using 'BDC_CURSOR'

                               'VBAK-AUART'.

perform bdc_field       using 'BDC_OKCODE'

                               '/00'.

perform bdc_field       using 'VBAK-AUART'

                               'YMUL'.

perform bdc_field       using 'VBAK-VKORG'

                               'CENT'.

*perform bdc_field       using 'VBAK-VTWEG'                 

*                              '01'.

perform bdc_field       using 'VBAK-VTWEG'

                                LOC_VTWEG.                     

perform bdc_field       using 'VBAK-SPART'

                               '01'.

perform bdc_dynpro      using 'SAPMV45A' '4001'.

perform bdc_field       using 'BDC_OKCODE'

                               '/00'.

perform bdc_field       using 'VBKD-BSTKD'

                               WA_FINAL-PO_NUMBER.   "'ABCDEFG'.

perform bdc_field       using 'KUAGV-KUNNR'

                               WA_FINAL-KUNNR.       "'100000'.

perform bdc_field       using 'KUWEV-KUNNR'

                               P_KUNNR.              "'100000'.

perform bdc_field       using 'RV45A-KETDAT'

                               WA_FINAL-SUPPLY_DATE. "'04.12.2009'.

perform bdc_field       using 'RV45A-KPRGBZ'

                               'D'.

perform bdc_field       using 'VBKD-PRSDT'

                               WA_FINAL-SUPPLY_DATE. "'04.12.2009'.

perform bdc_field       using 'VBKD-ZTERM'

                               'C001'.                            "

perform bdc_field       using 'VBKD-INCO1'

                               'CFR'.

perform bdc_field       using 'VBKD-INCO2'

                               'gurgaon'.

CONCATENATE 'RV45A-MABNR(' '0' VAL ')'  INTO V_MATNR.

CONCATENATE 'RV45A-KWMENG(' '02' VAL ')' INTO V_QTY.

CONCATENATE 'VBAP-KDMAT(' '0' VAL ')'   INTO V_KDMAT.

*---------------------------------------------- NEW ADDITION ON 05.07.2010

CONCATENATE 'VBKD-BSTKD_E(' '0' VAL ')' INTO V_BSTKD.

perform bdc_field       using 'BDC_CURSOR'

                               V_MATNR.

perform bdc_field       using V_MATNR

                               WA_FINAL-MATNR.

perform bdc_field       using V_QTY

                               WA_FINAL-QUANTITY.

perform bdc_field       using V_KDMAT

                               WA_FINAL-PART_NUMBER.

*---------------------------------------------- NEW ADDITION ON 05.07.2010

perform bdc_field       using V_BSTKD

                               WA_FINAL-KANBAN_NO.

perform bdc_dynpro      using 'SAPMV45A' '4001'.

perform bdc_field       using 'BDC_OKCODE'

                               '=ITEM'.           "'=T\10'.

perform bdc_field       using 'BDC_CURSOR'

                               V_MATNR.

perform bdc_dynpro      using 'SAPMV45A' '4003'.

perform bdc_field       using 'BDC_OKCODE'

                               '=T\10'.

perform bdc_dynpro      using 'SAPMV45A' '4003'.

perform bdc_field       using 'VBKD-IHREZ'

                               WA_FINAL-UNLOADING_PT.

perform bdc_field       using 'VBKD-BSTKD_E'                   

                               WA_FINAL-KANBAN_NO.

perform bdc_dynpro      using 'SAPMV45A' '4003'.

perform bdc_field       using 'BDC_OKCODE'

                               '/EBACK'.

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

CLEAR : V_MATNR, V_QTY, V_KDMAT.

*ENDIF.

*CLEAR VAL.

perform bdc_dynpro      using 'SAPMV45A' '4001'.

perform bdc_field       using 'BDC_OKCODE'

                               '=KKAU'.

perform bdc_field       using 'VBKD-BSTKD'

                               WA_FINAL-PO_NUMBER.   "'cfxdgf'.

perform bdc_field       using 'KUAGV-KUNNR'

                               WA_FINAL-KUNNR.       "'100000'.

perform bdc_field       using 'KUWEV-KUNNR'

                               P_KUNNR.              "'100000'.

perform bdc_field       using 'RV45A-KETDAT'

                               WA_FINAL-SUPPLY_DATE. "'08.12.2009'.

perform bdc_field       using 'RV45A-KPRGBZ'

                               'D'.

perform bdc_field       using 'VBKD-PRSDT'

                               WA_FINAL-SUPPLY_DATE. "'08.12.2009'.

perform bdc_field       using 'VBKD-ZTERM'

                               'C001'.                                      "'0001'.

perform bdc_field       using 'VBKD-INCO1'

                               'CFR'.

perform bdc_field       using 'VBKD-INCO2'

                               'Gurgaon'.

perform bdc_field       using 'BDC_CURSOR'

                               'RV45A-MABNR(02)'.

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

perform bdc_dynpro      using 'SAPMV45A' '4002'.

perform bdc_field       using 'BDC_OKCODE'

                               '=T\10'.

perform bdc_field       using 'BDC_CURSOR'

                               'VBAK-VSNMR_V'.

perform bdc_field       using 'VBAK-AUDAT'

                               WA_FINAL-SUPPLY_DATE. "'04.12.2009'.

*perform bdc_field       using 'VBAK-VKBUR'

*                              '1016'.

*perform bdc_field       using 'VBAK-VKGRP'

*                              '101'.

perform bdc_field       using 'VBAK-VSNMR_V'

                               WA_FINAL-UNLOADING_LOC. "'LOC'.

perform bdc_field       using 'VBAK-WAERK'

                               'INR'.

perform bdc_field       using 'VBKD-PRSDT'

                               WA_FINAL-SUPPLY_DATE. "'04.12.2009'.

perform bdc_field       using 'VBKD-KDGRP'

                               '01'.

perform bdc_field       using 'VBKD-KONDA'

                               '01'.

perform bdc_field       using 'VBKD-BZIRK'

                               'NORTH'.

*--------------------------------------------------------------------------------  TIME FIELD

perform bdc_dynpro      using 'SAPMV45A' '4002'.

perform bdc_field       using 'BDC_OKCODE'

                               '=SICH'.

perform bdc_field       using 'BDC_CURSOR'

                               'VBAK-TELF1'.

perform bdc_field       using 'VBAK-TELF1'

                               WA_FINAL-SUPPLY_TIME" 09:00

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

perform bdc_dynpro      using 'SAPLSPO2' '0101'.

perform bdc_field       using 'BDC_OKCODE'

                               '=OPT1'.

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

*perform bdc_transaction using 'VA01'.

CALL TRANSACTION 'VA01' USING BDCDATA OPTIONS FROM OPT MESSAGES INTO MESSTAB. "MODE var.

                                        "UPDATE 'S'

                                        "MODE var.

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

*  MESSAGE DISPLAY                                                           *

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

     LOOP AT MESSTAB.

       CALL FUNCTION 'FORMAT_MESSAGE'

         EXPORTING

           ID        = MESSTAB-MSGID

           LANG      = SY-LANGU

           NO        = MESSTAB-MSGNR

           V1        = MESSTAB-MSGV1

           V2        = MESSTAB-MSGV2

           V3        = MESSTAB-MSGV3

           V4        = MESSTAB-MSGV4

         IMPORTING

           MSG       = MSG_TXT

         EXCEPTIONS

           NOT_FOUND = 1

           OTHERS    = 2.

       IF SY-SUBRC <> 0.

         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

       ENDIF.

       IF MESSTAB-MSGTYP EQ 'E'.

         WRITE:/10 MSG_TXT COLOR 1.

       ELSEIF MESSTAB-MSGTYP EQ 'S'.

         WRITE:/10 MSG_TXT COLOR 2.

       ELSEIF MESSTAB-MSGTYP EQ 'W'.

         WRITE:/10 MSG_TXT COLOR 3.

       ELSE.

         WRITE:/10 MSG_TXT COLOR 4.

       ENDIF.

       CLEAR MSG_TXT.

     ENDLOOP.

     ULINE.

     "REFRESH : BDCDATA, MESSTAB.

*    CLEAR : WA_FINAL-PO_NUMBER, WA_FINAL-SUPPLY_TIME, WA_FINAL-UNLOADING_LOC,

*            WA_ITEMS-PO_NUMBER, WA_ITEMS-SUPPLY_TIME, WA_ITEMS-UNLOADING_LOC.

     CLEAR : WA_FINAL.

   ENDLOOP.

   REFRESH: BDCDATA, MESSTAB.

ENDFORM.                                                    " sub_post_data

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

*  START NEW SCREEN                                                          *

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

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

   CLEAR BDCDATA.

   BDCDATA-PROGRAM  = PROGRAM.

   BDCDATA-DYNPRO   = DYNPRO.

   BDCDATA-DYNBEGIN = 'X'.

   APPEND BDCDATA.

ENDFORM.                                                          "BDC_DYNPRO

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

*  FILLING BDC FIELD                                                         *

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

FORM BDC_FIELD USING FNAM FVAL.

   IF FVAL <> SPACE.

     CLEAR BDCDATA.

     BDCDATA-FNAM = FNAM.

     BDCDATA-FVAL = FVAL.

     APPEND BDCDATA.

   ENDIF.

ENDFORM.                                                          "BDC_FIELD

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

*  MODE-SELECTION                                                            *

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

FORM MODE_SELECTION .

   IF RAD4 = 'X'.

     VAR = 'N'. "'P'.

   ELSEIF RAD5 = 'X'.

     VAR = 'E'.

   ELSEIF RAD6 = 'X'.

     VAR = 'A'.

   ENDIF.

OPT-DISMODE = VAR.

OPT-DEFSIZE = 'X'.

ENDFORM.                                                  " mode_selection

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

*&      Form  ALV_DISPLAY

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM ALV_DISPLAY .

   WA_FIELDCAT-FIELDNAME   = 'KANBAN_NO'.

   WA_FIELDCAT-SELTEXT_M   = 'KANBAN NO.'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'PART_NUMBER'.

   WA_FIELDCAT-SELTEXT_M   = 'PART NUMBER'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'PART_NAME'.

   WA_FIELDCAT-SELTEXT_M   = 'PART NAME'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'SUPPLY_DATE'.

   WA_FIELDCAT-SELTEXT_M   = 'SUPPLY DATE'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'SUPPLY_TIME'.

   WA_FIELDCAT-SELTEXT_M   = 'SUPPLY TIME'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'UNLOADING_LOC'.

   WA_FIELDCAT-SELTEXT_M   = 'UNLOADING LOC'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'USAGE_LOC'.

   WA_FIELDCAT-SELTEXT_M   = 'USAGE LOC'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'QUANTITY'.

   WA_FIELDCAT-SELTEXT_M   = 'QUANTITY'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'QTY_DESPATCH'.

   WA_FIELDCAT-SELTEXT_M   = 'DESPATCH QTY'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'QTY_REJECTED'.

   WA_FIELDCAT-SELTEXT_M   = 'REJECTED QTY'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'VENDOR_CODE'.

   WA_FIELDCAT-SELTEXT_M   = 'VENDOR CODE'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

   WA_FIELDCAT-FIELDNAME   = 'REMARKS'.

   WA_FIELDCAT-SELTEXT_M   = 'REMARKS'.

   WA_FIELDCAT-TABNAME     = 'T_CHK'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_BYPASSING_BUFFER = 'X'

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = IT_FIELDCAT[]

I_DEFAULT = 'X'

I_SAVE = 'X'

TABLES

T_OUTTAB = T_CHK

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF sy-subrc <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.

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

*  FILLING DATA INTO TEST RUN TABLE                                          *

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

FORM ERROR_LOG.

     WA_CHK-KANBAN_NO     = WA-KANBAN_NO.

     WA_CHK-PART_NUMBER   = WA-PART_NUMBER.

     WA_CHK-PART_NAME     = WA-PART_NAME.

     WA_CHK-SUPPLY_DATE   = WA-SUPPLY_DATE.

     WA_CHK-SUPPLY_TIME   = WA-SUPPLY_TIME.

     WA_CHK-UNLOADING_LOC = WA-UNLOADING_LOC.

     WA_CHK-USAGE_LOC     = WA-USAGE_LOC.

     WA_CHK-QUANTITY      = WA-QUANTITY.

     WA_CHK-QTY_DESPATCH  = WA-QTY_DESPATCH.

     WA_CHK-QTY_REJECTED  = WA-QTY_REJECTED.

     WA_CHK-VENDOR_CODE   = WA-VENDOR_CODE.

APPEND WA_CHK TO T_CHK.

CLEAR WA_CHK.

ENDFORM.

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

*  CHECKING DI FILE FOR EXISTING KANBAN NOS & DELETING THEM                  *

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

FORM CHECK_DI.

SORT DI BY KANBAN_NO.

LOOP AT T_SALES INTO WA_SALES.

DELETE DI WHERE KANBAN_NO = WA_SALES-BSTKD_E.

ENDLOOP.

CLEAR : WA_SALES.

ENDFORM.

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

*  EXTRACTING DATA FROM DI FOR SPECIFIED TIME                                *

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

FORM VALIDATE_DI.

SORT DI BY SUPPLY_TIME.

LOOP AT DI.

DELETE DI WHERE SUPPLY_TIME <> P_DI.

*EXIT.

ENDLOOP.

ENDFORM.

0 Kudos

NOTE: I CAME TO KNOW YOU ARE STORING VALUES IN FINAL INTERNAL TABLE BUT LINE ITEM DATA SHOULD BE IN SEPARATE INTERNAL TABLE THEN YOU CAN LOOP AND BIND AS SHOWN BELOW

   OR ELSE IF ALL LINE ITEMS ARE ALSO AVAILABLE IN FINAL INTERNAL TABLE THEN LOOP IT WITH KEY COMBINATION BUT BIND ONLY REQUIRED FIELDS

DATA :V(2) TYPE NUMC.
LOOP AT LT_LINEITEM TO LS_LINEITEM.
       V = SY-TABIX.
CONCATENATE 'RV45A-MABNR(' V ')'  INTO V_MATNR.

CONCATENATE 'RV45A-KWMENG(' V ')' INTO V_QTY.

CONCATENATE 'VBAP-KDMAT(' V    ')'   INTO V_KDMAT.

*---------------------------------------------- NEW ADDITION ON 05.07.2010

CONCATENATE 'VBKD-BSTKD_E(' V ')' INTO V_BSTKD.

 

perform bdc_field       using 'BDC_CURSOR'

                                V_MATNR.

perform bdc_field       using V_MATNR

                                LS_LINEITEM-MATNR.

perform bdc_field       using V_QTY

                                LS_LINEITEM-QUANTITY.

perform bdc_field       using V_KDMAT

                                LS_LINEITEM-PART_NUMBER.

*---------------------------------------------- NEW ADDITION ON 05.07.2010

perform bdc_field       using V_BSTKD

                               LS_LINEITEM-KANBAN_NO.

ENDLOOP.

VenkatRamesh_V
Active Contributor
0 Kudos

Hi Udit,

Try.

Search the Bapi FM  as  *BAPI_ACC_SALES_ORDER*

Regards,

Venkat.