on 08-12-2012 2:22 PM
Requirement in my project:material quantity has to fill automatically in sales order.
Based on sales document type, and customer, material number system has to pick order quantity fro imrg table.
For this any user exit we have,
Hi,
Same sort of requirement in my project also what i did is, I have used the BAPI of BAPI_SALES_DEL_SCHEDULE_CREATE and then just created a zprogram to upload a text file in this BAPI after delivery also automatically created. check the below ABAP coding and use it.
FORM TEXT_FILE_ITAB.
FILE1 = FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILE1
FILETYPE = 'ASC'
TABLES
DATA_TAB = IT_RAW.
CALL FUNCTION 'TEXT_CONVERT_TEX_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR = '|'
I_TAB_RAW_DATA = IT_RAW[]
I_FILENAME = FILE
TABLES
I_TAB_CONVERTED_DATA = ITAB
EXCEPTIONS
CONVERSION_FAILED = 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 RAISING CONVERSION_FAILED.
ENDIF.
ENDFORM. "TEXT_FILE_ITAB
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA.
IF ITAB[] IS NOT INITIAL.
SELECT * FROM ZSD_DELI INTO CORRESPONDING FIELDS OF TABLE IT_DELI FOR ALL ENTRIES IN ITAB
WHERE REF = ITAB-DAT9.
SELECT * FROM VLPKM INTO CORRESPONDING FIELDS OF TABLE I_SCH2 FOR ALL ENTRIES IN ITAB
WHERE KDMAT = ITAB-DAT39 AND VBELN = VBE.
SORT I_SCH2 BY VBELN POSNR.
ENDIF.
LOOP AT ITAB.
READ TABLE I_SCH2 WITH KEY KDMAT = ITAB-DAT39 VBELN = VBE.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING I_SCH2 TO I_SCH.
I_SCH-REF = ITAB-DAT9.
I_SCH-QTY = ITAB-DAT44.
I_SCH-PDS_DTE = ITAB-DAT11.
APPEND I_SCH.
ENDIF.
ENDLOOP.
IF I_SCH[] IS NOT INITIAL.
SELECT VBELN GBSTK FROM VBUK INTO CORRESPONDING FIELDS OF TABLE I_VBUK FOR ALL ENTRIES IN I_SCH
WHERE VBELN = I_SCH-VBELN AND GBSTK NE 'C'.
SELECT VBELN POSNR MATNR KDMAT WERKS FROM VBAP INTO CORRESPONDING FIELDS OF TABLE I_VBAP FOR ALL ENTRIES IN I_SCH
WHERE VBELN = I_SCH-VBELN.
SELECT VBELN POSNR ETENR FROM VBEP INTO CORRESPONDING FIELDS OF TABLE I_VBEP FOR ALL ENTRIES IN I_SCH
WHERE VBELN = I_SCH-VBELN AND POSNR = I_SCH-POSNR.
SORT I_VBEP DESCENDING BY VBELN POSNR ETENR.
* SELECT VBELN POSNR VGBEL VGPOS FROM LIPS INTO CORRESPONDING FIELDS OF TABLE IT_LIPS FOR ALL ENTRIES IN I_SCH
* WHERE VGBEL = I_SCH-VBELN AND VGPOS = I_SCH-POSNR.
ENDIF.
IF IT_DELI[] IS NOT INITIAL.
* SELECT VBELN POSNR VGBEL FROM VBRP INTO CORRESPONDING FIELDS OF TABLE IT_VBRP FOR ALL ENTRIES IN IT_DELI
* WHERE VGBEL = IT_DELI-DELIVER AND POSNR = IT_DELI-POSNR1.
select VBELN FKSTK from vbuk INTO TABLE IT_VBUK FOR ALL ENTRIES IN IT_DELI WHERE
VBELN = IT_dELI-DELIVER AND WBSTK NE 'C'.
ENDIF.
I_SCH_D[] = I_SCH[].
SORT I_SCH_D BY VBELN POSNR.
DELETE ADJACENT DUPLICATES FROM I_SCH_D COMPARING VBELN.
DESCRIBE TABLE ITAB LINES TEXT_LIN.
LOOP AT I_SCH_D.
LOOP AT I_SCH WHERE VBELN = I_SCH_D-VBELN.
CNT = CNT + 1.
I_SCH-CNT = CNT.
MODIFY I_SCH TRANSPORTING CNT WHERE VBELN = I_SCH_D-VBELN.
ENDLOOP.
I_SCH_D-CNT = CNT.
MODIFY I_SCH_D TRANSPORTING CNT.
CLEAR CNT.
ENDLOOP.
LOOP AT I_SCH.
READ TABLE IT_DELI WITH KEY REF = I_SCH-REF VBELN = I_SCH-VBELN POSNR = I_SCH-POSNR.
IF SY-SUBRC = 0.
READ TABLE IT_VBUK WITH KEY VBELN = IT_DELI-DELIVER.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM LIKP WHERE VBELN = IT_DELI-DELIVER.
IF SY-SUBRC = 0.
I_SCH-DEL_EXST = IT_DELI-DELIVER.
ELSE.
MOVE-CORRESPONDING IT_DELI TO WA_DELI.
DELETE FROM ZSD_DELI WHERE REF = WA_DELI-REF AND VBELN = WA_DELI-VBELN AND POSNR = WA_DELI-POSNR
AND DELIVER = WA_DELI-DELIVER AND POSNR1 = WA_DELI-POSNR1.
COMMIT WORK.
DELETE IT_DELI WHERE REF = WA_DELI-REF AND VBELN = WA_DELI-VBELN AND POSNR = WA_DELI-POSNR
AND DELIVER = WA_DELI-DELIVER AND POSNR1 = WA_DELI-POSNR1.
ENDIF.
ENDIF.
ENDIF.
READ TABLE I_VBAP WITH KEY VBELN = I_SCH-VBELN POSNR = I_SCH-POSNR KDMAT = I_SCH-KDMAT.
IF SY-SUBRC = 0.
I_SCH-MATNR = I_VBAP-MATNR.
I_SCH-WERKS = I_VBAP-WERKS.
ENDIF.
READ TABLE I_VBEP WITH KEY VBELN = I_SCH-VBELN POSNR = I_SCH-POSNR.
IF SY-SUBRC = 0.
I_SCH-ITM_NUMBER = I_VBEP-POSNR.
SELECT SINGLE * FROM VBUP WHERE VBELN = I_SCH-VBELN AND POSNR = I_SCH-POSNR.
IF SY-SUBRC = 0 AND VBUP-LFSTA NE 'C'.
I_SCH-SCHED_LINE = I_VBEP-ETENR + 1.
ELSEIF SY-SUBRC = 0 AND VBUP-LFSTA EQ 'C'.
I_SCH-SCHED_LINE = I_VBEP-ETENR.
ENDIF.
ELSE.
I_SCH-ITM_NUMBER = I_VBAP-POSNR.
I_SCH-SCHED_LINE = 0001.
ENDIF.
I_SCH-REQ_DATE = SY-DATUM.
I_SCH-DATE_TYPE = '1'.
I_SCH-REQ_QTY = I_SCH-QTY.
I_SCH-VBELN1 = I_SCH-VBELN.
SHIFT I_SCH-KUNNR LEFT DELETING LEADING '0'.
SHIFT I_SCH-MATNR LEFT DELETING LEADING '0'.
SHIFT I_SCH-VBELN1 LEFT DELETING LEADING '0'.
MODIFY I_SCH TRANSPORTING KUNNR MATNR QTY REF ITM_NUMBER SCHED_LINE REQ_DATE DATE_TYPE REQ_QTY VBELN1 WERKS DEL_EXST.
CLEAR I_SCH.
ENDLOOP.
CLEAR CHK.
REFRESH: I_SCH2.
I_SCH2[] = I_SCH[].
SORT I_SCH2 BY MATNR.
DELETE ADJACENT DUPLICATES FROM I_SCH2 COMPARING MATNR.
* LOOP AT I_SCH WHERE CNT LT TEXT_LIN.
* DELETE I_SCH.
* CHK = 'X'.
* ENDLOOP.
*
* IF CHK = 'X'.
* MESSAGE 'Uploaded file contains more items than scheduling agreement items' TYPE 'I'.
* EXIT.
* ENDIF.
DATA: WMDVSX LIKE TABLE OF BAPIWMDVS WITH HEADER LINE,
WMDVEX LIKE TABLE OF BAPIWMDVE WITH HEADER LINE.
EXE = 'X'.
IF EXE = 'X'.
PERFORM SCHED_LINE_DELI_QTY.
ENDIF.
CLEAR EXE.
LOOP AT I_SCH INTO WA_SCH.
REFRESH: WMDVSX,WMDVEX.REFRESH: I_SCH-CELL.
WMDVSX-REQ_DATE = SY-DATUM.
WMDVSX-REQ_QTY = WA_SCH-QTY.
APPEND WMDVSX.
CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'
EXPORTING
PLANT = WA_SCH-WERKS
MATERIAL = WA_SCH-MATNR
UNIT = 'EA'
CHECK_RULE = 'A'
TABLES
WMDVSX = WMDVSX
WMDVEX = WMDVEX.
IF SY-SUBRC = 0.
READ TABLE WMDVEX INDEX 1.
IF SY-SUBRC = 0.
WA_SCH-AQTY = WMDVEX-COM_QTY.
WA_SCH-ADATE = WMDVEX-COM_DATE.
WA_SCH-BQTY = WA_SCH-QTY - WA_SCH-AQTY.
MODIFY I_SCH FROM WA_SCH TRANSPORTING AQTY ADATE BQTY COLOR.
ENDIF.
ENDIF.
READ TABLE IT_DELI WITH KEY REF = WA_SCH-REF VBELN = WA_SCH-VBELN POSNR = WA_SCH-POSNR.
IF SY-SUBRC = 0.
WA_SCH-SEL = 'X'.
WA_SCH-DISABLE = 'X'.
LS_STYLEROW-FIELDNAME = 'SEL' .
LS_STYLEROW-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
INSERT LS_STYLEROW INTO WA_SCH-FIELD_STYLE INDEX 1.
MODIFY I_SCH FROM WA_SCH.
ELSE.
WA_SCH-COLOR = 'C010'.
MODIFY I_SCH FROM WA_SCH.
IF WA_SCH-QTY GT WA_SCH-AQTY.
FS_CELL-FIELDNAME = 'BQTY'.
FS_CELL-COLOR-COL = 6.
FS_CELL-NOKEYCOL = 'X'.
APPEND FS_CELL TO I_SCH-CELL.
MODIFY I_SCH TRANSPORTING CELL.
ELSEIF WA_SCH-QTY LE WA_SCH-AQTY.
FS_CELL-FIELDNAME = 'BQTY'.
FS_CELL-COLOR-COL = 5.
FS_CELL-NOKEYCOL = 'X'.
APPEND FS_CELL TO I_SCH-CELL.
MODIFY I_SCH TRANSPORTING CELL.
ENDIF.
ENDIF.
CLEAR: WA_SCH,FS_CELL.
ENDLOOP.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.
DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
DATA: FIELDTAB1 TYPE LVC_T_FCAT.
DATA: WA TYPE LVC_S_FCAT.
REFRESH: FIELDTAB1.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'UPD'.
READ TABLE I_SCH WITH KEY SEL = 'X'.
IF SY-SUBRC NE 0.
MESSAGE 'Select atleast one line' TYPE 'E'.
EXIT.
ENDIF.
REFRESH: DELIVERY_IN,DELIVERY_INX,I_SCD.
DELIVERY_IN-REL_TYPE = '1'. APPEND DELIVERY_IN.
DELIVERY_INX-REL_TYPE = '1'. APPEND DELIVERY_INX.
ORDER_INX-UPDATEFLAG = 'U'.
DATA: PDS LIKE I_SCH-REF.
DATA: MESS TYPE CHAR255,
AQTY TYPE CHAR255.
CLEAR: WA_SCD. REFRESH: I_SCD,LT_RETURN,DELIVERY_IN,DELIVERY_INX.
"TO DELETE OPEN SCHEDULE LINES
PERFORM SCHED_LINE_DELI_QTY.
LOOP AT I_SCH WHERE SEL = 'X' AND DEL = '' AND DISABLE = ''.
IF PDS NE I_SCH-REF AND PDS IS NOT INITIAL.
MESSAGE 'Different PDS No not allowed to create one delivery' TYPE 'E'.
EXIT.
ENDIF.
IF I_SCH-AQTY LT I_SCH-QTY.
IF I_SCH-AQTY IS NOT INITIAL.
AQTY = I_SCH-BQTY.
SHIFT AQTY LEFT DELETING LEADING SPACE.
CONCATENATE 'Stock - ' AQTY 'nos' 'required for material' i_sch-matnr INTO MESS SEPARATED BY SPACE.
ELSE.
CONCATENATE 'Stock not available for material' i_sch-matnr into MESS SEPARATED BY space.
ENDIF.
MESSAGE MESS TYPE 'E'.
CLEAR MESS.
EXIT.
ENDIF.
MOVE-CORRESPONDING I_SCH TO WA_SCD.
MOVE-CORRESPONDING I_SCH TO I_SCD1.
I_SCD1-UPDATEFLAG = 'I'. "d for delete
APPEND I_SCD1.
WA_SCD-PLAN_SCHED_TYPE = 'X'.
MOVE-CORRESPONDING WA_SCD TO CAT.
CAT-DOC_NUMBER = I_SCH-VBELN.
CAT-SCHED_TYPE = 'CP'.
APPEND CAT.
PDS = I_SCH-REF.
APPEND WA_SCD TO I_SCD.
ENDLOOP.
IF I_SCD[] IS NOT INITIAL.
CALL FUNCTION 'BAPI_SALES_DEL_SCHEDULE_CREATE'
EXPORTING
SALESDOCUMENT = I_SCH-VBELN
ORDER_HEADER_INX = ORDER_INX
TABLES
SCHEDULE_LINES = I_SCD
SCHEDULE_LINESX = I_SCD1
DEL_SCHEDULE_IN = DELIVERY_IN
DEL_SCHEDULE_INX = DELIVERY_INX
SCHEDULE_EX = CAT
RETURN = LT_RETURN.
READ TABLE LT_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CALL FUNCTION 'DIALOG_SET_WITH_DIALOG'.
VSTEL = I_SCH-WERKS.
CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM+0(4) INTO DATBI.
VBELN = I_SCH-VBELN.
PERFORM SUB.
LOOP AT I_SCH WHERE SEL = 'X' AND DEL = '' AND DISABLE = ''.
READ TABLE MESSTAB WITH KEY MSGTYP = 'S' MSGV1 = 'Outbound Delivery'.
IF SY-SUBRC = 0.
I_SCH-DELIVER = MESSTAB-MSGV2.
ZSD_DELI-REF = I_SCH-REF.
ZSD_DELI-VBELN = I_SCH-VBELN.
ZSD_DELI-POSNR = I_SCH-POSNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = I_SCH-DELIVER
IMPORTING
OUTPUT = I_SCH-DELIVER.
ZSD_DELI-DELIVER = I_SCH-DELIVER.
ZSD_DELI-POSNR1 = I_SCH-POSNR.
MODIFY ZSD_DELI FROM ZSD_DELI.
I_SCH-DEL = 'X'.
FS_CELL-FIELDNAME = 'DELIVER'.
FS_CELL-COLOR-COL = 5.
FS_CELL-NOKEYCOL = 'X'.
REFRESH: IT1, IT_HEAD.
IT_HEAD-TDNAME = I_SCH-DELIVER.
IT_HEAD-TDID = 'Z006'.
IT_HEAD-TDOBJECT = 'VBBK'.
IT_HEAD-TDSPRAS = 'E'.
APPEND IT_HEAD.
IT1-TDFORMAT = '*'.
IT1-TDLINE = I_SCH-REF.
APPEND IT1.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = IT_HEAD
INSERT = ''
SAVEMODE_DIRECT = 'X'
TABLES
LINES = IT1.
IF SY-SUBRC = 0.
CALL FUNCTION 'UPDATE_TEXT_AFTER_COMMIT'
EXPORTING
HEADER = IT_HEAD
TABLES
LINES = IT1.
ENDIF.
APPEND FS_CELL TO I_SCH-CELL.
MODIFY I_SCH TRANSPORTING DELIVER CELL DEL FIELD_STYLE.
ELSE.
READ TABLE MESSTAB WITH KEY MSGTYP = 'E'.
IF SY-SUBRC = 0.
I_SCH-ERR = MESSTAB-MSGV1.
I_SCH-DEL = 'X'.
FS_CELL-FIELDNAME = 'ERR'.
FS_CELL-COLOR-COL = 6.
FS_CELL-NOKEYCOL = 'X'.
APPEND FS_CELL TO I_SCH-CELL.
MODIFY I_SCH TRANSPORTING ERR CELL DEL.
ENDIF.
ENDIF.
ENDLOOP.
ELSEIF LT_RETURN-TYPE = 'E'.
LOOP AT I_SCH WHERE SEL = 'X' AND DEL = '' AND DISABLE = ''.
I_SCH-ERR = LT_RETURN-MESSAGE.
FS_CELL-FIELDNAME = 'ERR'.
FS_CELL-COLOR-COL = 6.
FS_CELL-NOKEYCOL = 'X'.
APPEND FS_CELL TO I_SCH-CELL.
MODIFY I_SCH TRANSPORTING ERR CELL.
ENDLOOP.
ENDIF.
ENDIF.
DATA: REPID1 TYPE SY-REPID VALUE SY-REPID.
REFRESH: FIELDTAB1.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_CALLBACK_PROGRAM = REPID1
E_GRID = REF1
ET_FIELDCAT_LVC = FIELDTAB1.
DELETE FIELDTAB1 WHERE FIELDNAME = 'DELIVER' OR FIELDNAME = 'ERR'.
SORT FIELDTAB1 BY COL_POS.
DELETE ADJACENT DUPLICATES FROM FIELDTAB1 COMPARING COL_POS.
LOOP AT I_SCH WHERE DELIVER IS NOT INITIAL.
COL_POS = COL_POS + 1.
WA-COL_POS = COL_POS.
WA-FIELDNAME = 'DELIVER'.
WA-HOTSPOT = 'X'.
WA-TABNAME = 'I_SCH'.
WA-SCRTEXT_L = 'Delivery Created'.
WA-OUTPUTLEN = '14'.
APPEND WA TO FIELDTAB1.
CLEAR WA.
EXIT.
ENDLOOP.
LOOP AT I_SCH WHERE ERR IS NOT INITIAL.
COL_POS = COL_POS + 1.
WA-COL_POS = COL_POS + 1.
WA-FIELDNAME = 'ERR'.
WA-TABNAME = 'I_SCH'.
WA-SCRTEXT_L = 'Error'.
WA-OUTPUTLEN = '255'.
APPEND WA TO FIELDTAB1.
CLEAR WA.
EXIT.
ENDLOOP.
SORT FIELDTAB1 BY COL_POS.
DELETE ADJACENT DUPLICATES FROM FIELDTAB1 COMPARING COL_POS.
CALL METHOD REF1->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = FIELDTAB1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
WHEN '&IC1'.
READ TABLE I_SCH INDEX RS_SELFIELD-TABINDEX.
IF RS_SELFIELD-FIELDNAME = 'DELIVER'.
SET PARAMETER ID 'VL' FIELD I_SCH-DELIVER.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ELSEIF RS_SELFIELD-FIELDNAME = 'VBELN1'.
SET PARAMETER ID 'AUN' FIELD I_SCH-VBELN.
CALL TRANSACTION 'VA33' AND SKIP FIRST SCREEN.
ELSEIF RS_SELFIELD-FIELDNAME = 'DEL_EXST'.
SET PARAMETER ID 'VL' FIELD I_SCH-DEL_EXST.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ELSEIF RS_SELFIELD-FIELDNAME = 'MATNR'.
SET PARAMETER ID 'MAT' FIELD I_SCH-MATNR.
SET PARAMETER ID 'WRK' FIELD I_SCH-WERKS.
CALL TRANSACTION 'MMBE' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'SALL'.
LOOP AT I_SCH WHERE SEL = ''.
I_SCH-SEL = 'X'.
MODIFY I_SCH TRANSPORTING SEL.
ENDLOOP.
WHEN 'DALL'.
LOOP AT I_SCH WHERE SEL = 'X'.
I_SCH-SEL = ''.
MODIFY I_SCH TRANSPORTING SEL.
ENDLOOP.
WHEN 'DEL'.
CLEAR: DEL.
LOOP AT I_SCH WHERE CHECKBOX = 'X'.
IF I_SCH-DEL_EXST IS NOT INITIAL.
DEL = I_SCH-DEL_EXST.
ELSEIF I_SCH-DELIVER IS NOT INITIAL.
DEL = I_SCH-DELIVER.
ENDIF.
SELECT SINGLE * FROM LIKP WHERE VBELN = DEL.
IF SY-SUBRC = 0.
PERFORM DELETE_DELIVERY.
ENDIF.
ENDLOOP.
CALL METHOD REF1->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form SUB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SUB.
DATA: ABPOS TYPE LV50C-ABPOS,
BIPOS TYPE LV50C-BIPOS.
REFRESH: MESSTAB,BDCDATA.CLEAR: ABPOS,BIPOS.
SORT I_SCD BY ITM_NUMBER.
DESCRIBE TABLE I_SCD LINES LINE.
READ TABLE I_SCD INDEX 1.
IF SY-SUBRC = 0. ABPOS = I_SCD-ITM_NUMBER.ENDIF.
READ TABLE I_SCD INDEX LINE.
IF SY-SUBRC = 0. BIPOS = I_SCD-ITM_NUMBER.ENDIF.
IF ABPOS IS NOT INITIAL AND BIPOS IS NOT INITIAL AND VBELN IS NOT INITIAL.
REFRESH: BDCDATA,MESSTAB.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '4001'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LV50C-VBELN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LIKP-VSTEL'
VSTEL.
PERFORM BDC_FIELD USING 'LV50C-DATBI'
DATBI.
PERFORM BDC_FIELD USING 'LV50C-VBELN'
VBELN.
PERFORM BDC_FIELD USING 'LV50C-ABPOS'
ABPOS.
PERFORM BDC_FIELD USING 'LV50C-BIPOS'
BIPOS.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH_T'.
CALL TRANSACTION 'VL01N' USING BDCDATA MODE 'E' MESSAGES INTO MESSTAB.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
ENDFORM. "SUB
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0150 text
* -->P_0151 text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0155 text
* -->P_0156 text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form DELETE_DELIVERY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DELETE_DELIVERY.
REFRESH: BDCDATA,MESSTAB.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '4004'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LIKP-VBELN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LIKP-VBELN'
DEL.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/ELOES_T'.
CALL TRANSACTION 'VL02N' USING BDCDATA MODE 'E' MESSAGES INTO MESSTAB.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
COMMIT WORK.
TABLES: LIPS.
READ TABLE MESSTAB WITH KEY MSGTYP = 'S'.
IF SY-SUBRC = 0.
DELETE FROM ZSD_DELI WHERE DELIVER = DEL.
COMMIT WORK.
ELSE.
SELECT SINGLE * FROM LIPS WHERE VBELN = I_SCH-VBELN.
IF SY-SUBRC NE 0.
DELETE FROM ZSD_DELI WHERE DELIVER = DEL.
COMMIT WORK.
ENDIF.
ENDIF.
READ TABLE MESSTAB WITH KEY MSGTYP = 'S' MSGV1 = 'Outbound Delivery'.
IF SY-SUBRC = 0.
DELI_D = 'X'.
PERFORM SCHED_LINE_DELI_QTY.
CLEAR DELI_D.
IF DEL = I_SCH-DELIVER.
I_SCH-DELIVER = ''.
MODIFY I_SCH TRANSPORTING DELIVER WHERE DELIVER = DEL.
ELSEIF DEL = I_SCH-DEL_EXST.
I_SCH-DEL_EXST = ''.
MODIFY I_SCH TRANSPORTING DEL_EXST WHERE DEL_EXST = DEL.
ENDIF.
ENDIF.
ENDFORM. " DELETE_DELIVERY
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.