10-13-2014 6:50 AM
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.
10-13-2014 7:21 AM
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
10-13-2014 7:38 AM
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(35) TYPE c,
PART_NAME(40) TYPE c,
SUPPLY_DATE(10) TYPE C,
SUPPLY_TIME(5) TYPE c,
UNLOADING_LOC(8) TYPE c,
USAGE_LOC(8) TYPE c,
QUANTITY(8) TYPE c,
QTY_DESPATCH(6) TYPE c,
QTY_REJECTED(6) TYPE 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(8) TYPE c,
UNLOADING_LOC(8) TYPE c,
AUART(4) TYPE C,
KUNNR TYPE ZPO_VALIDATE-KUNNR,
NAME1 TYPE ZPO_VALIDATE-NAME1,
PART_NUMBER(35) TYPE c,
MATNR(18) TYPE c,
KANBAN_NO(15) TYPE c,
PART_NAME(40) TYPE c,
SUPPLY_DATE(11) TYPE c,
USAGE_LOC(8) TYPE c,
QUANTITY(8) TYPE c,
QTY_DESPATCH(6) TYPE c,
QTY_REJECTED(6) TYPE 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(35) TYPE c,
PART_NAME(40) TYPE c,
SUPPLY_DATE(11) TYPE c,
SUPPLY_TIME(5) TYPE c,
UNLOADING_LOC(8) TYPE c,
USAGE_LOC(8) TYPE c,
QUANTITY(8) TYPE c,
QTY_DESPATCH(6) TYPE c,
QTY_REJECTED(6) TYPE 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.
PARAMETERS: RAD4 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 C ,
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.
10-13-2014 7:56 AM
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.
10-13-2014 9:56 AM
Hi Udit,
Try.
Search the Bapi FM as *BAPI_ACC_SALES_ORDER*
Regards,
Venkat.