2008 Oct 23 3:52 PM
Hi,
Is there any BAPI or FM for to do the PGI for a delivery?
Right now i am doing BDC recording with delivery number. If any error, unable to return bcoz it is listing in error log.
Pls. advice.
Thanks
Sunil.
Hi,
Is there any BAPI or FM for to do the PGI for a delivery?
Right now i am doing BDC recording with delivery number. If any error, unable to return bcoz it is listing in error log.
Pls. advice.
Thanks
Sunil.
2008 Oct 23 3:56 PM
Use FM WS_DELIVERY_UPDATE or WS_DELIVERY_UPDATE_2:
Set:
I_VBKOK-VBELN_VL = WA_VBELN. "Delivery Number
I_VBKOK-WABUC = 'X'. "PGI
2008 Oct 23 3:57 PM
2008 Oct 23 4:11 PM
BAPI_GOODSMVT_CREATE for MB1B right. Not for PGI.
I need the function module or BAPI for PGI.
Thanks
Sunil.
2008 Oct 23 4:12 PM
2008 Oct 23 4:55 PM
When i am using FM - WS_DELIVERY_UPDATE ..
How to catch the return messages if any error like T-Code locked or Deficit unrestrict item.
Thanks
2008 Oct 23 4:58 PM
Look the export parameters, it will return one of those in case of errors
2008 Oct 23 6:16 PM
Still i am unable to process it for errors.. Can you give me an example
Thanks
2008 Oct 23 6:27 PM
how are you calling it. it is pretty simple one . waht are the paramters you are using? You would need to use commit too
2008 Oct 23 6:33 PM
I do have Delivery Number (VBELN) - 80555141
I do have Line Item details in Delivery. Those are
Item Num 0010
Material 377359
Plant CJK2
Location 1000
quantity 30
It should return the error(any kind of error) the Standard Error Message - the one when i am getting when doing manually VL02N.
Please advice.
2008 Oct 23 6:54 PM
would be hard to say anything w/o seeing the code and the values at the run time.
Try debugging to see what is happening. I used this one in my code several times w/o any issues
2008 Oct 23 7:27 PM
Can you provide me the code what you return. I will try to compare what is wrong in mine.
Thanks,
Sunil.
2008 Oct 23 7:49 PM
i am at a different place now, so no access to that code; but in SAP where used list it is shown how it is called
* carry out goods issue
L_VBKOK-VBELN_VL = L_VBELN.
L_VBKOK-WABUC = 'X'.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
VBKOK_WA = L_VBKOK
SYNCHRON = ' ' "HP_306797
NO_MESSAGES_UPDATE = ' '
UPDATE_PICKING = 'X'
COMMIT = ' '
DELIVERY = L_VBELN
NICHT_SPERREN = 'X'
TABLES
PROT = L_PROTT
EXCEPTIONS
OTHERS = 0.
COMMIT WORK AND WAIT.
2008 Oct 23 8:48 PM
Hi,
Can you look at the Code below and let me know.. How to handle the errors for TI_ITEM_UN[].
I am trying to do PGI with the movement type 641 .. It is saying Code 01 is not possible for movement type 641.
FUNCTION Z_STO_MB1B_POSTGOODS.
*"----
""Local interface:
*" IMPORTING
*" VALUE(IVBELN) TYPE VBELN
*" TABLES
*" RETURN STRUCTURE BAPIRET2
*"----
MOVE IVBELN TO W_VBELN.
IF W_VBELN IS INITIAL.
EXIT.
ENDIF.
SELECT * INTO CORRESPONDING
FIELDS OF TABLE I_LIPS
FROM LIPS
WHERE VBELN EQ W_VBELN.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
IF I_LIPS[] IS INITIAL.
EXIT.
ENDIF.
LOOP AT I_LIPS.
READING TABLE EKPO FOR STOCK TYPE BASED ON LIPS
SELECT SINGLE * FROM EKPO INTO WA_EKPO
WHERE EBELN EQ I_LIPS-VGBEL
AND EBELP EQ I_LIPS-POSNR.
IF SY-SUBRC NE 0.
EXIT.
ELSE.
APPEND WA_EKPO TO I_EKPO .
ENDIF.
READING MARA TABLE TO CHECK BATCH OR NON-BATCH
SELECT SINGLE * FROM MARA INTO WA_MARA
WHERE MATNR EQ I_LIPS-MATNR.
IF SY-SUBRC NE 0.
EXIT.
ELSE.
APPEND WA_MARA TO I_MARA .
ENDIF.
BATCH MANAGED AGAINST MARA-XCHPF
IF WA_MARA-XCHPF EQ 'X'.
IF I_LIPS-CHARG IS INITIAL.
EXIT.
ELSE.
IF WA_EKPO-INSMK EQ 'S'.
SELECT SINGLE * FROM MCHB INTO WA_MCHB
WHERE MATNR EQ I_LIPS-MATNR
AND WERKS EQ I_LIPS-WERKS
AND LGORT EQ I_LIPS-LGORT
AND CHARG EQ I_LIPS-CHARG
AND CSPEM GE I_LIPS-LFIMG.
ELSEIF WA_EKPO-INSMK EQ 'X'.
SELECT SINGLE * FROM MCHB INTO WA_MCHB
WHERE MATNR EQ I_LIPS-MATNR
AND WERKS EQ I_LIPS-WERKS
AND LGORT EQ I_LIPS-LGORT
AND CHARG EQ I_LIPS-CHARG
AND CINSM GE I_LIPS-LFIMG.
ELSEIF WA_EKPO-INSMK EQ ' '.
SELECT SINGLE * FROM MCHB INTO WA_MCHB
WHERE MATNR EQ I_LIPS-MATNR
AND WERKS EQ I_LIPS-WERKS
AND LGORT EQ I_LIPS-LGORT
AND CHARG EQ I_LIPS-CHARG.
ENDIF.
APPEND WA_MCHB TO I_MCHB.
ENDIF.
ELSE.
NON-BATCH MANAGED AGAINST MARA-XCHPF
IF WA_EKPO-INSMK EQ 'S'.
SELECT SINGLE * FROM MARD INTO WA_MARD
WHERE MATNR EQ I_LIPS-MATNR
AND WERKS EQ I_LIPS-WERKS
AND LGORT EQ I_LIPS-LGORT.
ELSEIF WA_EKPO-INSMK EQ 'X'.
SELECT SINGLE * FROM MARD INTO WA_MARD
WHERE MATNR EQ I_LIPS-MATNR
AND WERKS EQ I_LIPS-WERKS
AND LGORT EQ I_LIPS-LGORT.
ELSEIF WA_EKPO-INSMK EQ ' '.
SELECT SINGLE * FROM MARD INTO WA_MARD
WHERE MATNR EQ I_LIPS-MATNR
AND WERKS EQ I_LIPS-WERKS
AND LGORT EQ I_LIPS-LGORT.
ENDIF.
ENDIF.
IF SY-SUBRC EQ 0.
APPEND WA_MARD TO I_MARD.
move WA_EKPO-MEINS TO TI_MCHB-MEINS.
MOVE: I_LIPS-MATNR TO TI_MCHB-MATNR,
I_LIPS-WERKS TO TI_MCHB-WERKS,
I_LIPS-CHARG TO TI_MCHB-CHARG,
I_LIPS-LGORT TO TI_MCHB-LGORT,
I_LIPS-LFIMG To TI_MCHB-MENGE,
I_LIPS-VBELN TO TI_MCHB-VBELN,
I_LIPS-POSNR TO TI_MCHB-POSNR.
IF WA_EKPO-INSMK EQ 'S'.
MOVE WA_EKPO-INSMK TO TI_MCHB-INSMK.
MOVE C_343 TO TI_MCHB-MOVE_TYPE.
ELSEIF WA_EKPO-INSMK EQ 'X'.
MOVE WA_EKPO-INSMK TO TI_MCHB-INSMK.
MOVE C_321 TO TI_MCHB-MOVE_TYPE.
ENDIF.
ENDIF.
APPEND TI_MCHB.
ENDIF.
MOVE WA_EKPO-INSMK TO STOCK_TY.
CLEAR : WA_MARA, WA_EKPO,WA_MARD,WA_MCHB, I_LIPS, TI_MCHB.
ENDLOOP.
CLEAR : WA_MARA, WA_EKPO,WA_MARD,WA_MCHB, I_LIPS, TI_MCHB.
IF NOT TI_MCHB[] IS INITIAL.
LOOP AT TI_MCHB.
IF TI_MCHB-INSMK EQ ' '.
MOVE-CORRESPONDING TI_MCHB TO TI_ITEM_UN.
APPEND TI_ITEM_UN.
CLEAR TI_ITEM_UN.
ELSEIF TI_MCHB-INSMK EQ 'S'
OR TI_MCHB-INSMK EQ 'X'.
MOVE-CORRESPONDING TI_MCHB TO TI_ITEM_BQ.
TI_ITEM_BQ-INSMK = ' '.
APPEND TI_ITEM_BQ.
CLEAR TI_ITEM_BQ.
ENDIF.
CLEAR: TI_ITEM_UN, TI_ITEM_BQ, TI_MCHB.
ENDLOOP.
ENDIF.
IF NOT TI_ITEM_BQ[] IS INITIAL.
LOOP AT TI_ITEM_BQ.
CLEAR: TI_ITEM, TI_RET, E_HEAD , E_HEADRET .
REFRESH: TI_ITEM, TI_RET.
PREPARING THE DATE INFORMATION
E_HEAD-PSTNG_DATE = SY-DATUM.
E_HEAD-DOC_DATE = SY-DATUM.
E_CODE-GM_CODE = C_04.
PREPARING ITEMS FOR BAPI
TI_ITEM-MATERIAL = TI_ITEM_BQ-MATNR.
TI_ITEM-PLANT = TI_ITEM_BQ-WERKS.
TI_ITEM-STGE_LOC = TI_ITEM_BQ-LGORT.
TI_ITEM-BATCH = TI_ITEM_BQ-CHARG.
TI_ITEM-MOVE_TYPE = TI_ITEM_BQ-MOVE_TYPE.
TI_ITEM-ENTRY_UOM = TI_ITEM_BQ-MEINS.
TI_ITEM-ENTRY_QNT = TI_ITEM_UN-MENGE.
TI_ITEM-STCK_TYPE = ' '.
TI_ITEM-MOVE_MAT = TI_ITEM_BQ-MATNR.
TI_ITEM-MOVE_PLANT = TI_ITEM_BQ-WERKS.
TI_ITEM-MOVE_STLOC = TI_ITEM_BQ-LGORT.
TI_ITEM-MOVE_BATCH = TI_ITEM_BQ-CHARG.
APPEND TI_ITEM.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = E_HEAD
goodsmvt_code = E_CODE
IMPORTING
goodsmvt_headret = E_HEADRET
TABLES
goodsmvt_item = TI_ITEM
return = TI_RET.
COMMIT WORK
IF NOT E_HEADRET-MAT_DOC IS INITIAL.
COMMIT WORK AND WAIT.
SELECT SINGLE * FROM MSEG INTO WA_MSEG
WHERE MBLNR EQ E_HEADRET-MAT_DOC
AND MJAHR EQ E_HEADRET-DOC_YEAR.
IF SY-SUBRC EQ 0.
PERFORM CALL_TRANSACTION.
SELECT SINGLE * FROM VBUP INTO WA_VBUP
WHERE VBELN EQ W_VBELN
AND POSNR EQ TI_ITEM_BQ-POSNR.
IF SY-SUBRC EQ 0
AND WA_VBUP-WBSTA EQ 'C'.
CONCATENATE E_HEADRET-MAT_DOC E_HEADRET-DOC_YEAR
TI_ITEM-MATERIAL TI_ITEM_BQ-POSNR
INTO RETURN-MESSAGE
SEPARATED BY SPACE.
MOVE 'S' TO RETURN-TYPE.
APPEND RETURN.
ELSE.
CONCATENATE 'PGI NOT DONE' TI_ITEM_BQ-MATNR TI_ITEM_BQ-POSNR
INTO RETURN-MESSAGE
SEPARATED BY SPACE.
MOVE 'E' TO RETURN-TYPE.
APPEND RETURN.
ENDIF.
ENDIF.
BUILDING ERROR REPORT
ELSE.
LOOP AT TI_RET WHERE TYPE EQ C_A
OR TYPE EQ C_E.
TI_MCHB-TYPE = TI_RET-TYPE.
IF TI_ITEM_BQ-MENGE EQ 0.
CONCATENATE TI_RET-ID TI_RET-NUMBER TI_RET-MESSAGE
INTO TI_ITEM_BQ-MESSG
SEPARATED BY SPACE.
CONCATENATE TI_RET-MESSAGE '(OR)' 'Del.Qantity - 0.00'
INTO TI_RET-MESSAGE SEPARATED BY SPACE.
MOVE-CORRESPONDING TI_RET TO RETURN.
APPEND RETURN.
ELSE.
CONCATENATE TI_RET-ID TI_RET-NUMBER TI_RET-MESSAGE
INTO TI_ITEM_BQ-MESSG
SEPARATED BY SPACE.
MOVE-CORRESPONDING TI_RET TO RETURN.
APPEND RETURN.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT TI_ITEM_UN[] IS INITIAL.
LOOP AT TI_ITEM_UN.
CLEAR: TI_ITEM, TI_RET, E_HEAD , E_HEADRET .
REFRESH: TI_ITEM, TI_RET.
PREPARING THE DATE INFORMATION
E_HEAD-PSTNG_DATE = SY-DATUM.
E_HEAD-DOC_DATE = SY-DATUM.
E_CODE-GM_CODE = '01'.
TI_ITEM_UN-MOVE_TYPE = 641.
PREPARING ITEMS FOR BAPI
TI_ITEM-MATERIAL = TI_ITEM_UN-MATNR.
TI_ITEM-PLANT = TI_ITEM_UN-WERKS.
TI_ITEM-STGE_LOC = TI_ITEM_UN-LGORT.
TI_ITEM-BATCH = TI_ITEM_UN-CHARG.
TI_ITEM-MOVE_TYPE = TI_ITEM_UN-MOVE_TYPE.
TI_ITEM-ENTRY_UOM = TI_ITEM_UN-MEINS.
TI_ITEM-ENTRY_QNT = TI_ITEM_UN-MENGE.
TI_ITEM-STCK_TYPE = ' '.
TI_ITEM-DELIV_NUMB_TO_SEARCH = W_VBELN.
TI_ITEM-DELIV_ITEM_TO_SEARCH = TI_ITEM_UN-POSNR.
TI_ITEM-MOVE_MAT = TI_ITEM_BQ-MATNR.
TI_ITEM-MOVE_PLANT = TI_ITEM_BQ-WERKS.
TI_ITEM-MOVE_STLOC = TI_ITEM_BQ-LGORT.
TI_ITEM-MOVE_BATCH = TI_ITEM_BQ-CHARG.
APPEND TI_ITEM.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = E_HEAD
goodsmvt_code = E_CODE
IMPORTING
goodsmvt_headret = E_HEADRET
TABLES
goodsmvt_item = TI_ITEM
return = TI_RET.
IF NOT E_HEADRET-MAT_DOC IS INITIAL.
ELSE.
CONCATENATE TI_RET-ID TI_RET-NUMBER TI_RET-MESSAGE
INTO TI_ITEM_UN-MESSG
SEPARATED BY SPACE.
MOVE-CORRESPONDING TI_RET TO RETURN.
APPEND RETURN.
ENDIF.
ENDLOOP.
ENDIF.
ENDFUNCTION.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |