2013 Sep 23 12:05 PM
Hello Experts,
I want to create Delivery with reference of sales order and PGI of this Delivery.
As many suggestion by experts I am using BAPI to create delivery and for PGI. Delivery is created but here is issue with Storage location. As i passed Storage location in parameters of BAPI but it not display in Delivery and PGI is not possible without Storage location.
My code is here:-
REPORT ZBAPI_VL01N.
TABLES: VBAP, VBAK, LIKP, LIPS, T100.
DATA: BEGIN OF IT_SO OCCURS 0.
INCLUDE STRUCTURE BAPIDLVREFTOSALESORDER.
DATA: END OF IT_SO.
*DATA: V_WERKS LIKE VBAP-WERKS.
DATA: DLV_NO LIKE LIPS-VBELN,
GW_VBKOK TYPE STANDARD TABLE OF VBKOK WITH HEADER LINE,
GW_VBELN LIKE LIKP-VBELN,
GW_PROT TYPE STANDARD TABLE OF PROTT WITH HEADER LINE,
GW_VBPOK TYPE STANDARD TABLE OF VBPOK WITH HEADER LINE,
GW_VERKO LIKE VERKO OCCURS 0 WITH HEADER LINE,
GW_VERPO LIKE VERPO OCCURS 0 WITH HEADER LINE,
GW_VBSUPCON LIKE VBSUPCON OCCURS 0 WITH HEADER LINE,
LV_ERR_ANYERR TYPE C,
LV_ERR_ITMDEL TYPE C,
LV_ERR_PODUPD TYPE C,
LV_ERR_INTERF TYPE C,
LV_ERR_GOODSI TYPE C,
LV_ERR_FINALC TYPE C.
DATA: BEGIN OF IT_LIPS OCCURS 0,
VBELN LIKE LIPS-VBELN,
POSNR LIKE LIPS-POSNR,
MATNR LIKE LIPS-MATNR,
WERKS LIKE LIPS-WERKS,
LGORT LIKE LIPS-LGORT,
LFIMG LIKE LIPS-LFIMG,
MEINS LIKE LIPS-MEINS,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF IT_LIPS.
TYPES: BEGIN OF TYSALES,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
VRKME LIKE VBAP-VRKME,
WERKS LIKE VBAP-WERKS,
END OF TYSALES.
DATA: ITSALES TYPE STANDARD TABLE OF TYSALES WITH HEADER LINE,
WASALES TYPE TYSALES.
DATA: BEGIN OF IT_SOTMP OCCURS 0,
VBELN LIKE VBAP-VBELN,
END OF IT_SOTMP.
SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_SO TYPE VBAK-VBELN.
C_DATE TYPE VBAK-ERDAT DEFAULT SY-DATUM,
V_WERKS TYPE VBAP-WERKS DEFAULT 'HEVE'.
SELECTION-SCREEN END OF BLOCK BK1.
START-OF-SELECTION.
DATA: GL_DATE(10) TYPE C,
I_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = C_DATE
IMPORTING
DATE_EXTERNAL = GL_DATE
* EXCEPTIONS
* DATE_INTERNAL_IS_INVALID = 1
* OTHERS = 2
.
SELECT VBELN POSNR MATNR KWMENG VRKME WERKS FROM VBAP INTO TABLE ITSALES VBELN =P_SO.
SELECT VBELN FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_SOTMP WHERE VBELN =P_SO.
LOOP AT IT_SALES.
IT_SO-REF_DOC = ITSALES-VBELN.
IT_SO-REF_ITEM = ITSALES-POSNR.
IT_SO-DLV_QTY = ITSALES-KWMWNG.
IT_SO-SALES_UNIT = ITSALES-VRKME.
APPEND IT_SO.
ENDLOOP.
LOOP AT IT_SOTMP.
READ TABLE IT_SO WITH KEY REF_DOC = IT_SOTMP-VBELN.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
SHIP_POINT = V_WERKS
DUE_DATE = SY-DATUM
TABLES
SALES_ORDER_ITEMS = IT_SO
RETURN = I_RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
* WAIT UP TO 1 SECONDS.
SELECT VBELN POSNR MATNR WERKS LGORT LFIMG MEINS VGBEL VGPOS FROM LIPS
INTO TABLE IT_LIPS WHERE VGBEL = IT_SOTMP-VBELN.
* SORT IT_LIPS BY VBELN DESCENDING.
* DELETE ADJACENT DUPLICATES FROM IT_LIPS COMPARING VGBEL.
LOOP AT IT_LIPS.
* READ TABLE IT_SO WITH KEY REF_DOC = IT_LIPS-VGBEL.
GW_VBPOK-VBELN_VL = IT_LIPS-VBELN.
GW_VBPOK-POSNR_VL = IT_LIPS-POSNR.
GW_VBPOK-VBELN = IT_LIPS-VGBEL.
GW_VBPOK-POSNN = IT_SO-REF_ITEM."IT_LIPS-POSNR.
GW_VBPOK-MATNR = IT_LIPS-MATNR.
GW_VBPOK-PIKMG = IT_LIPS-LFIMG.
GW_VBPOK-NDIFM = IT_LIPS-LFIMG.
GW_VBPOK-VRKME = IT_LIPS-MEINS.
GW_VBPOK-KZVFDAT = 'X'.
GW_VBPOK-KZHSDAT = 'X'.
* READ TABLE IT_FINAL WITH KEY DLV_VBELN = IT_LIPS-VBELN.
GW_VBPOK-WERKS = V_WERKS.
* GW_VBPOK-LGORT = 'M10'.
GW_VBPOK-LIANP = 1.
GW_VBPOK-LFIMG = 1.
APPEND GW_VBPOK.
AT END OF VBELN.
GW_VBELN = IT_LIPS-VBELN.
DLV_NO = IT_LIPS-VBELN.
GW_VBKOK-VBELN_VL = DLV_NO.
GW_VBKOK-WABUC = 'X'.
GW_VBKOK-KODAT = SY-DATUM.
GW_VBKOK-WADAT_IST = C_DATE.
GW_VBKOK-WADAT = SY-DATUM.
GW_VBKOK-WAUHR = SY-UZEIT.
GW_VBKOK-LFDAT = SY-DATUM.
GW_VBKOK-LFUHR = SY-UZEIT.
GW_VBKOK-LDDAT = SY-DATUM.
GW_VBKOK-LDUHR = SY-UZEIT.
GW_VBKOK-TDDAT = SY-DATUM.
GW_VBKOK-KZEBU = 1.
APPEND GW_VBKOK.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
VBKOK_WA = GW_VBKOK
* SYNCHRON = 'X'
* NO_MESSAGES_UPDATE = ' '
UPDATE_PICKING = 'X'
COMMIT = 'X'
DELIVERY = GW_VBELN
* NICHT_SPERREN = 'X'
IF_DATABASE_UPDATE = '1'
IF_ERROR_MESSAGES_SEND_0 = 'X'
TABLES
VBPOK_TAB = GW_VBPOK
* PROT = GW_PROT
* VERKO_TAB = GW_VERKO
* VERPO_TAB = GW_VERPO
* VBSUPCON_TAB = GW_VBSUPCON
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF SY-SUBRC EQ 0.
COMMIT WORK .
ELSE.
WRITE:/ 'Error Occured during PGI'.
ENDIF.
ENDAT.
ENDLOOP.
ENDLOOP.
One more issues I have passed in serial number of material also in delivery.
Kindly help me.
Thanks,
Ranjit.
2013 Sep 24 8:48 AM
Hi Ranjit,
Refer this link : http://scn.sap.com/message/3326612#3326612
You can go with BDC for the same issue. Check link for BDC http://scn.sap.com/thread/1360296
Hope it is helpful for you.
Regards,
Shatrughan
2013 Sep 24 12:49 PM
Hi Shatrughan,
I have already go through these threads. But Storage Location is not saved in delivery.
Without storage location i cant PGI of this delivery.
2013 Sep 24 9:45 AM
Hi Ranjit,
First Create the Delivery without Storage location , then write one BDC Code who update the Storage location with Respective Delivery... Check below Sample Code ..
Note :
Part I :
is Delivery Create without Storage location Using SAP Standard BAPI
"BAPI_OUTB_DELIVERY_CREATE_SLS"
Part II : Using BDC Program Update the Storage Location with Respective output of above BAPI.
Regard's
Smruti
2013 Sep 24 12:56 PM
Hi Smurti,
I am going this way but still I am not able to do PGI.
Code is following.
REPORT ZBAPI_VL01N.
TABLES: VBAP, VBAK, LIKP, LIPS, T100.
DATA: BEGIN OF IT_SO OCCURS 0.
INCLUDE STRUCTURE BAPIDLVREFTOSALESORDER.
DATA: END OF IT_SO.
*DATA: V_WERKS LIKE VBAP-WERKS.
DATA: DLV_NO LIKE LIPS-VBELN,
GW_VBKOK TYPE STANDARD TABLE OF VBKOK WITH HEADER LINE,
GW_VBELN LIKE LIKP-VBELN,
GW_PROT TYPE STANDARD TABLE OF PROTT WITH HEADER LINE,
GW_VBPOK TYPE STANDARD TABLE OF VBPOK WITH HEADER LINE,
GW_VERKO LIKE VERKO OCCURS 0 WITH HEADER LINE,
GW_VERPO LIKE VERPO OCCURS 0 WITH HEADER LINE,
GW_VBSUPCON LIKE VBSUPCON OCCURS 0 WITH HEADER LINE,
LV_ERR_ANYERR TYPE C,
LV_ERR_ITMDEL TYPE C,
LV_ERR_PODUPD TYPE C,
LV_ERR_INTERF TYPE C,
LV_ERR_GOODSI TYPE C,
LV_ERR_FINALC TYPE C.
DATA: BEGIN OF IT_LIPS OCCURS 0,
VBELN LIKE LIPS-VBELN,
POSNR LIKE LIPS-POSNR,
MATNR LIKE LIPS-MATNR,
WERKS LIKE LIPS-WERKS,
LGORT LIKE LIPS-LGORT,
LFIMG LIKE LIPS-LFIMG,
MEINS LIKE LIPS-MEINS,
VGBEL LIKE LIPS-VGBEL,
VGPOS LIKE LIPS-VGPOS,
END OF IT_LIPS.
*PARAMETERS: P_SO TYPE VBAK-VBELN.
TYPES: BEGIN OF TY_PGI,
VBELN(10) TYPE C,
BLDAT(10) TYPE C,
KODAT(10) TYPE C,
KOUHR(8) TYPE C,
LIPS_SELKZ(1) TYPE C,
MATNR(18) TYPE C,
POSNR(6) TYPE C,
LGORT(4) TYPE C,
LFIMG(13) TYPE C,
SELKZ(1) TYPE C,
SERNR(18) TYPE C,
END OF TY_PGI.
TYPES: BEGIN OF TY_FINAL,
SO_VBELN(10) TYPE C,
SO_POSNR(6) TYPE C,
MATNR(18) TYPE C,
LGORT(3) TYPE C,
LFIMG(13) TYPE C,
VRKME(3) TYPE C,
SERNR(18) TYPE C,
WERKS(4) TYPE C,
DLV_VBELN(10) TYPE C,
DLV_POSNR(6) TYPE C,
END OF TY_FINAL.
TYPES: BEGIN OF TY_MAT,
DLV_VBELN(10) TYPE C,
DLV_POSNR(6) TYPE C,
MATNR(18) TYPE C,
WERKS(4) TYPE C,
LGORT(3) TYPE C,
LFIMG(13) TYPE C,
END OF TY_MAT.
TYPES: BEGIN OF TY_SRN,
DLV_VBELN(10) TYPE C,
DLV_POSNR(6) TYPE C,
MATNR(18) TYPE C,
LGORT(3) TYPE C,
LFIMG(13) TYPE C,
SERNR(18) TYPE C,
END OF TY_SRN.
TYPES: BEGIN OF TYSALES,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
VRKME LIKE VBAP-VRKME,
WERKS LIKE VBAP-WERKS,
END OF TYSALES.
TYPES: BEGIN OF TY_ERROR,
MSGORDTYP(200) TYPE C,
MSGSALES(200) TYPE C,
MSGMAT(200) TYPE C,
MSGCUSTSALES(200) TYPE C,
MSGDLVPLANT(200) TYPE C,
MSGPRCTR(200) TYPE C,
MSGAC(200) TYPE C,
MSGVCLASS(200) TYPE C,
V_CNT TYPE INT2,
END OF TY_ERROR.
DATA: W_ERROR TYPE TY_ERROR,
IT_ERROR TYPE STANDARD TABLE OF TY_ERROR WITH HEADER LINE.
DATA: IT_MAT TYPE STANDARD TABLE OF TY_MAT WITH HEADER LINE,
WA_MAT TYPE TY_MAT.
DATA: IT_PGI TYPE STANDARD TABLE OF TY_PGI WITH HEADER LINE,
WA_PGI TYPE TY_PGI,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL WITH HEADER LINE,
WA_FINAL TYPE TY_FINAL,
ITSALES TYPE STANDARD TABLE OF TYSALES WITH HEADER LINE,
WASALES TYPE TYSALES.
DATA: BDCDATA TYPE STANDARD TABLE OF BDCDATA WITH HEADER LINE ,
MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
I_ERROR LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
WA_ERROR TYPE BDCMSGCOLL.
DATA: IT_SRN TYPE STANDARD TABLE OF TY_SRN WITH HEADER LINE,
WA_SRN TYPE TY_SRN.
DATA: BEGIN OF IT_SOTMP OCCURS 0,
VBELN LIKE VBAP-VBELN,
END OF IT_SOTMP.
DATA: V_MSG(200) TYPE C,
V_LINE TYPE INT2,
V_MATLINE TYPE INT2,
V_MATIDX(4) TYPE C.
SELECTION-SCREEN BEGIN OF BLOCK BK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\Documents and Settings\ItServ\Desktop\PGI DELIVERY.txt',
C_DATE TYPE VBAK-ERDAT DEFAULT SY-DATUM,
V_WERKS TYPE VBAP-WERKS DEFAULT 'HEVE'.
SELECTION-SCREEN END OF BLOCK BK1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_F4VALUES CHANGING P_FILE.
START-OF-SELECTION.
PERFORM UPLOAD_DATA.
DATA: GL_DATE(10) TYPE C,
I_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = C_DATE
IMPORTING
DATE_EXTERNAL = GL_DATE
* EXCEPTIONS
* DATE_INTERNAL_IS_INVALID = 1
* OTHERS = 2
.
SELECT VBELN POSNR MATNR KWMENG VRKME WERKS FROM VBAP INTO TABLE ITSALES FOR ALL ENTRIES IN IT_FINAL WHERE VBELN = IT_FINAL-SO_VBELN.
SELECT VBELN FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_SOTMP FOR ALL ENTRIES IN IT_FINAL WHERE VBELN = IT_FINAL-SO_VBELN.
LOOP AT IT_FINAL WHERE SO_POSNR <> ' '.
IT_SO-REF_DOC = IT_FINAL-SO_VBELN.
IT_SO-REF_ITEM = IT_FINAL-SO_POSNR.
IT_SO-DLV_QTY = IT_FINAL-LFIMG.
IT_SO-SALES_UNIT = IT_FINAL-VRKME.
APPEND IT_SO.
ENDLOOP.
LOOP AT IT_SOTMP.
READ TABLE IT_SO WITH KEY REF_DOC = IT_SOTMP-VBELN.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
SHIP_POINT = V_WERKS
DUE_DATE = SY-DATUM
TABLES
SALES_ORDER_ITEMS = IT_SO
RETURN = I_RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
* WAIT UP TO 1 SECONDS.
SELECT VBELN POSNR MATNR WERKS LGORT LFIMG MEINS VGBEL VGPOS FROM LIPS
INTO TABLE IT_LIPS WHERE VGBEL = IT_SOTMP-VBELN.
* SORT IT_LIPS BY VBELN DESCENDING.
* DELETE ADJACENT DUPLICATES FROM IT_LIPS COMPARING VGBEL.
LOOP AT IT_LIPS.
* READ TABLE IT_SO WITH KEY REF_DOC = IT_LIPS-VGBEL.
GW_VBPOK-VBELN_VL = IT_LIPS-VBELN.
GW_VBPOK-POSNR_VL = IT_LIPS-POSNR.
GW_VBPOK-VBELN = IT_LIPS-VGBEL.
GW_VBPOK-POSNN = IT_SO-REF_ITEM."IT_LIPS-POSNR.
GW_VBPOK-MATNR = IT_LIPS-MATNR.
GW_VBPOK-PIKMG = IT_LIPS-LFIMG.
GW_VBPOK-NDIFM = IT_LIPS-LFIMG.
GW_VBPOK-VRKME = IT_LIPS-MEINS.
GW_VBPOK-KZVFDAT = 'X'.
GW_VBPOK-KZHSDAT = 'X'.
* READ TABLE IT_FINAL WITH KEY DLV_VBELN = IT_LIPS-VBELN.
GW_VBPOK-WERKS = V_WERKS.
* GW_VBPOK-LGORT = 'M10'.
GW_VBPOK-LIANP = 1.
GW_VBPOK-LFIMG = 1.
APPEND GW_VBPOK.
AT END OF VBELN.
GW_VBELN = IT_LIPS-VBELN.
DLV_NO = IT_LIPS-VBELN.
GW_VBKOK-VBELN_VL = DLV_NO.
GW_VBKOK-WABUC = 'X'.
GW_VBKOK-KODAT = SY-DATUM.
GW_VBKOK-WADAT_IST = C_DATE.
GW_VBKOK-WADAT = SY-DATUM.
GW_VBKOK-WAUHR = SY-UZEIT.
GW_VBKOK-LFDAT = SY-DATUM.
GW_VBKOK-LFUHR = SY-UZEIT.
GW_VBKOK-LDDAT = SY-DATUM.
GW_VBKOK-LDUHR = SY-UZEIT.
GW_VBKOK-TDDAT = SY-DATUM.
GW_VBKOK-KZEBU = 1.
APPEND GW_VBKOK.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
VBKOK_WA = GW_VBKOK
SYNCHRON = 'X'
* NO_MESSAGES_UPDATE = ' '
UPDATE_PICKING = 'X'
COMMIT = 'X'
DELIVERY = GW_VBELN
NICHT_SPERREN = 'X'
IF_DATABASE_UPDATE = '1'
IF_ERROR_MESSAGES_SEND_0 = 'X'
TABLES
VBPOK_TAB = GW_VBPOK
* PROT = GW_PROT
* VERKO_TAB = GW_VERKO
* VERPO_TAB = GW_VERPO
* VBSUPCON_TAB = GW_VBSUPCON
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF SY-SUBRC EQ 0.
COMMIT WORK .
ELSE.
WRITE:/ 'Error Occured during PGI'.
ENDIF.
ENDAT.
ENDLOOP.
PERFORM DO_PGI.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form DO_PGI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DO_PGI.
LOOP AT IT_FINAL.
READ TABLE IT_LIPS WITH KEY VGBEL = IT_FINAL-SO_VBELN POSNR = IT_FINAL-SO_POSNR.
READ TABLE IT_SO WITH KEY REF_DOC = IT_FINAL-SO_VBELN.
IT_FINAL-DLV_VBELN = IT_LIPS-VBELN.
IT_FINAL-DLV_POSNR = IT_LIPS-POSNR.
MODIFY IT_FINAL TRANSPORTING DLV_VBELN DLV_POSNR.
ENDLOOP.
LOOP AT IT_FINAL WHERE LFIMG <> ' '.
IT_MAT-DLV_VBELN = IT_FINAL-DLV_VBELN.
IT_MAT-DLV_POSNR = IT_FINAL-DLV_POSNR.
IT_MAT-MATNR = IT_FINAL-MATNR.
IT_MAT-WERKS = V_WERKS.
IT_MAT-LGORT = IT_FINAL-LGORT.
IT_MAT-LFIMG = IT_FINAL-LFIMG.
APPEND IT_MAT.
ENDLOOP.
LOOP AT IT_FINAL.
IT_SRN-DLV_VBELN = IT_FINAL-DLV_VBELN.
IT_SRN-DLV_POSNR = IT_FINAL-DLV_POSNR.
IT_SRN-MATNR = IT_FINAL-MATNR.
IT_SRN-LGORT = IT_FINAL-LGORT.
IT_SRN-LFIMG = IT_FINAL-LFIMG.
IT_SRN-SERNR = IT_FINAL-SERNR.
APPEND IT_SRN.
ENDLOOP.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_PGI-VBELN = WA_FINAL-DLV_VBELN.
WA_PGI-BLDAT = SY-DATUM.
WA_PGI-LGORT = WA_FINAL-LGORT.
WA_PGI-SERNR = WA_FINAL-SERNR.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = SY-DATUM
IMPORTING
DATE_EXTERNAL = WA_PGI-BLDAT.
WA_PGI-KODAT = SY-DATUM.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = SY-DATUM
IMPORTING
DATE_EXTERNAL = WA_PGI-KODAT.
APPEND WA_PGI TO IT_PGI.
ENDLOOP.
SORT IT_PGI BY VBELN.
DELETE ADJACENT DUPLICATES FROM IT_PGI.
DATA:V_LINE TYPE INT2,
V_MATLINE TYPE INT2,
V_MATIDX(4) TYPE C,
FNAM(30) TYPE C,
FNAM1(30) TYPE C,
FNAM2(30) TYPE C,
FNAM3(30) TYPE C,
IDX(3) TYPE C,
V_IDX(2) TYPE C.
LOOP AT IT_PGI INTO WA_PGI.
REFRESH BDCDATA.
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'
WA_PGI-VBELN.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '1000'.
PERFORM BDC_FIELD USING 'LIKP-BLDAT'
WA_PGI-BLDAT.
PERFORM BDC_FIELD USING 'LIKP-KODAT'
WA_PGI-KODAT.
PERFORM BDC_FIELD USING 'LIKP-KOUHR'
SY-UZEIT."WA_PGI-KOUHR.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LIPS-LGORT'.
PERFORM BDC_FIELD USING 'LIPS-LGORT'
WA_PGI-LGORT.
PERFORM BDC_FIELD USING 'RV50A-LIPS_SELKZ'
'X'.
PERFORM BDC_DYNPRO USING 'SAPLIPW1' '0200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RIPW0-SERNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=RWS'.
PERFORM BDC_FIELD USING 'RIPW0-SERNR'
WA_PGI-SERNR.
PERFORM BDC_DYNPRO USING 'SAPMV50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WABU_T'.
PERFORM BDC_FIELD USING 'LIKP-BLDAT'
WA_PGI-BLDAT.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LIPS-POSNR'.
PERFORM BDC_FIELD USING 'LIKP-KODAT'
WA_PGI-KODAT.
PERFORM BDC_FIELD USING 'LIKP-KOUHR'
SY-UZEIT."WA_PGI-KOUHR.
PERFORM BDC_TRANSACTION USING 'VL02N'.
ENDLOOP.
ENDFORM. "DO_PGI
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC,
LS_CTU_PARAMS TYPE CTU_PARAMS.
LS_CTU_PARAMS-DEFSIZE = 20.
REFRESH MESSTAB.
DATA: V_OPTION LIKE CTU_PARAMS.
V_OPTION-DISMODE = 'A'.
V_OPTION-UPDMODE = 'S'."p_udmode.
V_OPTION-CATTMODE = ' '.
V_OPTION-DEFSIZE = 'X'.
V_OPTION-RACOMMIT = ' '.
V_OPTION-NOBINPT = 'X'.
V_OPTION-NOBIEND = ' '.
CALL TRANSACTION TCODE
USING BDCDATA
MESSAGES INTO MESSTAB
OPTIONS FROM V_OPTION.
L_SUBRC = SY-SUBRC.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'RETURNCODE:'(I05),
L_SUBRC,
'WA_PGI-:',
SY-INDEX.
LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
I_ERROR-MSGTYP = MESSTAB-MSGTYP.
I_ERROR-MSGV1 = L_MSTRING.
APPEND I_ERROR.
CLEAR I_ERROR.
ENDLOOP.
SKIP.
REFRESH BDCDATA.
ENDFORM. " BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "bdc_dynpro
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form GET_F4VALUES
FORM GET_F4VALUES CHANGING P_WP_FLNM.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = P_WP_FLNM.
ENDFORM. " get_f4values
*&---------------------------------------------------------------------*
*& Form upload_data
*&---------------------------------------------------------------------*
FORM UPLOAD_DATA .
DATA : W_FILE TYPE STRING.
W_FILE = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = W_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = '#'
TABLES
DATA_TAB = IT_FINAL.
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. "UPLOAD_DATA
Flat file is as follows:
<
SalesOrder | Item | Material | Storage Loc | Qty | U-O-M | Serial No |
1440000135 | 10 | 400016 | M10 | 1 | NOS | HV09200A400016 |
Any one help me please.
Thanks,
Ranjit.
2013 Sep 25 6:04 AM
Hi Ranjit ,
I don't Know your actual requirement , Can you tell me is above code only for Create delivery or Create delivery with PGI , if it is Create delivery with PGI but where you write for PGI Code .
Simple Logic ..
1st Use "BAPI_OUTB_DELIVERY_CREATE_SLS" Create Delivery without Storage Location ,
and Capture Delivery Number .
2nd Call BDC Code for T-code "VL02N" and Update the above Delivery Number
(i.e. Output of above BAPI )with Storage Location .
3rd Write Code for PGI (if your requirement PGI also required in same program )
Or Using "VT01N" for PGI .
Note : Same type of requirement i am already work approx 2 years back SD automation .
Regard's
Smruti