Use : bapi_po_change --- Pls help

Question:
Hi,
Any body used FM bapi_po_change . I am trying to use this bapi for deleting items of Pos.
I tried to use it but i didn't understand clearly.
Can any body send me a sample code How to use this
Thanks in advance
Answer:
Hi,
Below given is a program which is written for a specific usage in
SD-transportation area. This program creates Shipment cost document,
Purchase Order Create/Change, Goods Receipt etc...all through BAPI's.
Upload this in SAP and comment the irrelevant part. Again this is written for a particular requirement, although many BAPI's being used.
Hope this helps.
CCSAbaper
*----------------------------------------------------------------------*
* T A B L E S - D E F I N I T I O N
*----------------------------------------------------------------------*
*---SAP Tables---------------------------------------------------------*
TABLES: VFKP, "Shipment Costs: Item
LIKP, "Delivery Document header
LIPS, "Delivery Document item
VBAK, "Sales Document header
VBKD, "Sales Document: Business
VBUP, "Sales Document: Item Status
EKKO, "Purchase document header
EKPO, "Purchase document item
KONV, "Conditions
C506. "Sales area/Customer account grp
*---G-P Tables---------------------------------------------------------*
TABLES: Z0001, "GP Job Control Table
ZFRGT. "Delivery Document Custom table
* START
* ZSCAC. "Carrier and Invoicing paty links
* END
*----------------------------------------------------------------------*
* I N T E R N A L T A B L E S - D E F I N I T I O N
*----------------------------------------------------------------------*
DATA BEGIN OF I_SHIPMENT_COST_DOC_TAB OCCURS 0.
DATA: FKNUM LIKE VFKP-FKNUM,
KNUMV LIKE VFKP-KNUMV,
SCAC LIKE VFKP-TDLNR,
EXTI1 LIKE VFKP-EXTI1,
REBEL LIKE VFKP-REBEL,
WAERS LIKE VFKP-WAERS,
STBER LIKE VFKP-STBER,
VBELN LIKE VFSI-VBELN,
POSNR LIKE VFSI-POSNR,
SAKNR LIKE SKA1-SAKNR,
* START
* LIFNR LIKE ZSCAC-LIFNR,
* XERSY LIKE ZSCAC-XERSY,
LIFNR LIKE EKKO-LIFNR,
XERSY LIKE EKPO-XERSY,
* END
WADAT LIKE LIKP-WADAT_IST,
WERKS LIKE LIPS-WERKS,
LGORT LIKE LIPS-LGORT,
PRCTR LIKE MARC-PRCTR,
FKBER LIKE COBL-FKBER,
LOFLG(1) TYPE C,
MULTI_PRCTR(1) TYPE C,
CPU_SML_PRCL_FLAG(1) TYPE C,
BURPEE_FLAG(1) TYPE C,
COND_COUNT TYPE I,
TRLNO LIKE ZFRGT-TRLNBR,
STMTBILL_FLAG(1) TYPE C,
CASS_SCAC(10) TYPE C,
EBELN LIKE EKKO-EBELN,
SBDAT LIKE EKKO-BEDAT.
DATA END OF I_SHIPMENT_COST_DOC_TAB.
DATA: BEGIN OF I_MUL_DEL_PER_SHIPCOSTDOC OCCURS 100,
FKNUM LIKE VFKP-FKNUM, "Shipment cost doc
VBELN LIKE VFSI-VBELN, "DELIVERY NUMBER
WAERS LIKE KONV-WAERS, "CURRENCY
KWERT LIKE KONV-KWERT, "TOTAL CONDITION VALUE
END OF I_MUL_DEL_PER_SHIPCOSTDOC.
DATA: BEGIN OF I_CONDS_OF_SHIP_COST_DOC OCCURS 0,
FKNUM LIKE VFKP-FKNUM,
STUNR LIKE KONV-STUNR,
KSCHL LIKE KONV-KSCHL,
MATNR LIKE MARA-MATNR,
KBETR LIKE KONV-KBETR,
END OF I_CONDS_OF_SHIP_COST_DOC.
DATA: BEGIN OF I_TAB_TO_DETERMINE_PRCTR OCCURS 0,
SPART LIKE MARA-SPART,
PRCTR LIKE MARC-PRCTR,
BRGEW LIKE LIPS-BRGEW,
PRCNT LIKE MEACCT1000-VPROZ,
END OF I_TAB_TO_DETERMINE_PRCTR.
DATA: BEGIN OF I_MULTI_PRCTR_FOR_SHIPCOST_DOC OCCURS 0,
FKNUM LIKE VFKP-FKNUM,
PRCTR LIKE MARC-PRCTR,
VPROZ LIKE MEACCT1000-VPROZ,
END OF I_MULTI_PRCTR_FOR_SHIPCOST_DOC.
DATA: BEGIN OF I_PO_NUMBERS OCCURS 100,
EBELN LIKE EKPO-EBELN, "PO Number
BOLNR LIKE EKKO-SUBMI, "Bill of lading number
BUDAT LIKE MKPF-BUDAT, "Posting Date
FKNUM LIKE VFKP-FKNUM, "Shipment cost doc
VBELN LIKE VFSI-VBELN, "DELIVERY NUMBER
WERKS LIKE LIPS-WERKS, "PLANT
LGORT LIKE LIPS-LGORT, "STLOC
SCAC LIKE ZFRGT-SCAC, "SCAC CODE
SAKNR LIKE SKA1-SAKNR, "G/L ACCOUNT
COND_COUNT TYPE I, "TOTAL ITEMS ON PO
TRLNO LIKE ZFRGT-TRLNBR, "Trailer No
EBELP LIKE EKPO-EBELP, "Item no
STMTBILL_FLAG(1) TYPE C,
END OF I_PO_NUMBERS.
DATA: BEGIN OF I_PO_NUMBERS_SB OCCURS 100,
EBELN LIKE EKPO-EBELN, "PO Number
EBELP LIKE EKPO-EBELP, "Item no
BOLNR LIKE EKKO-SUBMI, "Bill of lading number
BUDAT LIKE MKPF-BUDAT, "Posting Date
END OF I_PO_NUMBERS_SB.
DATA: BEGIN OF I_KSCHL_TAB OCCURS 0,
STUNR LIKE T683S-STUNR,
KSCHL LIKE T683S-KSCHL,
END OF I_KSCHL_TAB.
DATA: BEGIN OF I_BDC_DATA OCCURS 100.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF I_BDC_DATA.
DATA: BEGIN OF I_MESSTAB OCCURS 10.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF I_MESSTAB.
DATA: BEGIN OF I_MESSAGE OCCURS 10,
MSG(3) TYPE C,
ID1(50) TYPE C,
ID2(50) TYPE C,
ID3(50) TYPE C,
ID4(50) TYPE C,
END OF I_MESSAGE.
*---Internal Tables for calling BAPIs ---------------------------------*
*BAPI PO: Purchase Order Item Data
DATA BEGIN OF I_POITEM OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOITEM.
DATA: END OF I_POITEM.
DATA BEGIN OF I_POITEMX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOITEMX.
DATA: END OF I_POITEMX.
*BAPI PO: Purchase Order Delivery Schedule Lines
DATA BEGIN OF I_POSCHEDULE OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOSCHEDULE.
DATA: END OF I_POSCHEDULE.
DATA BEGIN OF I_POSCHEDULEX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOSCHEDULX.
DATA: END OF I_POSCHEDULEX.
*BAPI PO: Account Assignment Fields for Purchase Order
DATA BEGIN OF I_POACCOUNT OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOACCOUNT.
DATA: END OF I_POACCOUNT.
DATA BEGIN OF I_POACCOUNTX OCCURS 0.
INCLUDE STRUCTURE BAPIMEPOACCOUNTX.
DATA: END OF I_POACCOUNTX.
* BAPI Return parameter
DATA BEGIN OF I_BAPIRETURN OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF I_BAPIRETURN.
* BAPI GR: Create Material Document Item
DATA: BEGIN OF I_MATDOC_ITEM OCCURS 0.
INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.
DATA: END OF I_MATDOC_ITEM.
DATA: I_VTTS_TAB LIKE VTTS OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_LIFNR_XERSY_TAB OCCURS 0,
LIFNR LIKE LFM1-LIFNR,
XERSY LIKE LFM1-XERSY,
END OF I_LIFNR_XERSY_TAB.
* Itab to extract material classification values (function)
DATA: BEGIN OF I_ZMAT OCCURS 0.
INCLUDE STRUCTURE ZMATCLAS.
DATA: END OF I_ZMAT.
*----------------------------------------------------------------------*
* C O N S T A N T S - D E F I N I T I O N
*----------------------------------------------------------------------*
CONSTANTS: C_YEAR LIKE Z0001-ZYEAR VALUE '0000',
C_MONTH LIKE Z0001-ZMONTH VALUE '00',
C_DAY LIKE Z0001-ZDAY VALUE '00',
C_PTYPE LIKE Z0001-PERIOD_TYP VALUE SPACE,
C_PERIOD LIKE Z0001-PERIOD VALUE '000',
C_INDIC LIKE Z0001-ZINDICATOR VALUE SPACE,
C_TVARV_SCAC LIKE TVARV-NAME VALUE
'Z0000073_SCAC_CODES',
C_TVARV_SAMPLE LIKE TVARV-NAME VALUE
'Z0000073_SAMPLE_SALES_DOC_TYPE',
C_TVARV_SHIPCOST LIKE TVARV-NAME VALUE
'Z0000073_LAST_SHIPMENTCOST_DOC',
C_TVARV_MCH_NOATP_ITMCAT LIKE TVARV-NAME VALUE
'Z_MCH_NOATP_ITMCAT',
C_PARENT LIKE LIPS-SPART VALUE '50',
C_KTGRD(02) VALUE '03',
C_KTGRDN(02) VALUE '01',
C_SD_DOC_CAT_DEL LIKE VFSI-VBTYP VALUE 'J',
C_GI_PROCESSED LIKE VBUP-WBSTA VALUE 'C',
C_YES(1) TYPE C VALUE 'Y',
C_NO(1) TYPE C VALUE 'N',
C_HEADER(6) TYPE C VALUE '000000',
C_GM_CODE LIKE BAPI2017_GM_CODE VALUE '01',
C_TOTAL_COND_TYPE LIKE KONV-KSCHL VALUE 'ZFGT',
C_DUMMY_PO_CPU LIKE EKKO-EBELN VALUE '9999999999',
C_DUMMY_PO_BRP LIKE EKKO-EBELN VALUE '8888888888',
C_CPU LIKE VFKP-TDLNR VALUE 'CPU',
C_C506_KSCHL LIKE C506-KSCHL VALUE 'ZOFI',
C_C506_KTOPL LIKE C506-KTOPL VALUE 'GPCA',
C_LFART_NL LIKE LIKP-LFART VALUE 'NL',
C_LFART_LB LIKE LIKP-LFART VALUE 'LB',
C_LFART_ZLO LIKE LIKP-LFART VALUE 'ZLO',
C_ME21_BDC_SESSION_NAME LIKE APQI-GROUPID
VALUE 'Z0000073ME21',
C_MIGO_BDC_SESSION_NAME LIKE APQI-GROUPID
VALUE 'Z0000073MIGO',
C_VI02_BDC_SESSION_NAME LIKE APQI-GROUPID
VALUE 'Z0000073VI02',
C_TCODE_ME21N LIKE TSTC-TCODE VALUE 'ME21N',
C_TCODE_MIGO LIKE TSTC-TCODE VALUE 'MIGO',
C_TCODE_VI02 LIKE TSTC-TCODE VALUE 'VI02',
C_PENNY_FOR_CHARGE_TYPE LIKE KONV-KBETR VALUE '0.01',
C_MATKL LIKE EKPO-MATKL VALUE 'FREIGHT',
C_UOM_EA LIKE EKPO-MEINS VALUE 'EA',
C_QTY_1 LIKE EKPO-MENGE VALUE '1',
C_PRICE_UNIT_1 LIKE EKPO-PEINH VALUE '1',
C_GM_FOR_PO_MVT_IND LIKE MSEG-KZBEW VALUE 'B',
C_PO_DEFAULT_VALUES_VARIANT(2) TYPE C VALUE '03',
C_VEHICLE_ID1_TEXT_ID LIKE THEAD-TDID VALUE 'ZVI1',
C_VEHICLE_ID1_TEXT_OBJ LIKE THEAD-TDOBJECT VALUE 'VTTK',
C_FUNC_AREA LIKE ZMATCLAS-ATWRT VALUE 'FUNC_AREA',
C_SB LIKE EKKO-BSART VALUE 'SB'. "
*----------------------------------------------------------------------*
* D A T A - D E F I N I T I O N
*----------------------------------------------------------------------*
DATA: G_TOT_SHP_PROC(5) TYPE N, "Total No. of shipment cost doc
"processed
G_TOT_PO(5) TYPE N, "Number of PO's Created
G_TOT_GR(5) TYPE N, "Number of GR's Created
G_REC_GR(5) TYPE N, "Number of GR in Recovery Proc.
G_ERR_PO(5) TYPE N, "Number of PO's with error
G_ERR_GR(5) TYPE N, "Number of GR's With error
G_TOT_SH(5) TYPE N, "Number of Shipments updated.
G_ERR_SH(5) TYPE N, "Number of Shipments with error.
G_TOT_ZFRGT(5) TYPE N,
G_ERR_ZFRGT(5) TYPE N,
G_JOBNAME LIKE Z0001-JOBNAME,
G_KBETR(14) TYPE C,
G_CURRENT_COND_LOOP_COUNT TYPE I,
* G_KTGRD LIKE C506-KTGRD,
G_TOTWT_OF_SHIP_COST_DOC_ITEM LIKE LIKP-BTGEW,
G_WADAT_DATE(10) TYPE C,
G_CREATE_GR_BDC(1) TYPE C,
G_CREATE_SHP_BDC(1) TYPE C,
G_ERROR_FLAG(1) TYPE C,
*BAPI PO: Purchase Order Header Data
G_POHEADER LIKE BAPIMEPOHEADER,
G_POHEADERX LIKE BAPIMEPOHEADERX,
* BAPI GR: Material Document Header Data
G_MATDOC_HEADER LIKE BAPI2017_GM_HEAD_01,
G_NO_SHIPCOSTDOC_TO_PROCESS(10) TYPE N,
G_GR_BDC_COUNT(10) TYPE N,
G_SH_BDC_COUNT(10) TYPE N,
G_CURRENCY LIKE VFKP-WAERS,
G_CHARGE_TYPE_COUNT(10) TYPE N,
G_GR_RECOVERY(1) TYPE C,
G_PO_ITEM_COUNT(5) TYPE N. "
*----------------------------------------------------------------------*
* P A R A M E T E R S - S E L E C T O P T I O N S
*----------------------------------------------------------------------*
PARAMETERS: P_BURPEE(4) TYPE C DEFAULT '1014'. "Burpee Plant
SELECT-OPTIONS:
S_SAMPLE FOR VBAK-AUART NO INTERVALS. "SAMPLE Sd DOC
"TYPE
* S_MTART FOR LIPS-MTART NO INTERVALS
* DEFAULT 'ZM04' OBLIGATORY."PARENT ROLL MATL
* "Type
PARAMETERS: P_GLSE LIKE SKA1-SAKNR OBLIGATORY
DEFAULT '7423302', "GL Sample Exp
"Account
P_REVAC(1) TYPE C OBLIGATORY
DEFAULT 'R', "Account
"assignment
P_PO_TYP LIKE VBAK-AUART OBLIGATORY
DEFAULT 'FR', "PO Type
P_MOV LIKE LIPS-BWLVS OBLIGATORY
DEFAULT '101', "Movement Type
* P_DUMMY LIKE LFA1-LIFNR OBLIGATORY
* DEFAULT 'ZZZZ', "Dummy Vendor
* P_PONUM LIKE ZFRGT-FRTPONR OBLIGATORY
* DEFAULT '9999999999',
P_PO_ORG LIKE EKKO-EKORG OBLIGATORY
DEFAULT '1001',
P_PO_GRP LIKE EKKO-EKGRP OBLIGATORY
DEFAULT 'PLN', "Purc Group
P_CCODE LIKE T001-BUKRS OBLIGATORY
DEFAULT '1001', "Comp. Code
* P_MESS(1) TYPE C OBLIGATORY
* DEFAULT 'Y', "No Message Scr
P_FRLOW LIKE EKPO-EBELN OBLIGATORY
DEFAULT '4200000000',"Freight PO
"number Low
P_FRHIGH LIKE EKPO-EBELN OBLIGATORY
DEFAULT '4299999999',"Freight PO
"number HIGH
P_FRTACT LIKE C506-KVSL1 OBLIGATORY
DEFAULT 'ZFA', "Freight Account
"Key
P_TXJCD LIKE EKPO-TXJCD OBLIGATORY
DEFAULT 'GAFULATLA', "Tax Jurisdiction
P_TAXCD LIKE EKPO-MWSKZ OBLIGATORY
DEFAULT '00', "Tax code
P_MODE(1) TYPE C OBLIGATORY
DEFAULT 'N',
* P_GLACLO LIKE SKA1-SAKNR OBLIGATORY
* DEFAULT '6010591',
P_LSHDOC LIKE VFKP-FKNUM OBLIGATORY
DEFAULT '7000000000',
P_STTRGL LIKE SKA1-SAKNR OBLIGATORY
DEFAULT ' ',
P_PRCTR LIKE EKKN-PRCTR OBLIGATORY
DEFAULT ' ',
P_KALSM LIKE VFKP-KALSM OBLIGATORY
DEFAULT 'ZGPSHP'.
*---Ranges-------------------------------------------------------------*
RANGES: R_SCAC FOR VFKP-TDLNR,
R_PSTYV FOR LIPS-PSTYV.
*----------------------------------------------------------------------*
* Initialization.
*----------------------------------------------------------------------*
INITIALIZATION.
CLEAR: G_TOT_SHP_PROC,
G_TOT_PO,
G_TOT_GR,
G_ERR_PO,
G_ERR_GR,
G_TOT_SH,
G_ERR_SH,
G_TOT_ZFRGT,
G_ERR_ZFRGT,
G_GR_RECOVERY,
G_CREATE_GR_BDC,
G_CREATE_SHP_BDC.
PERFORM SELECT_TVARV_DATA.
PERFORM GET_CONDITION_TYPES_FOR_SCD.
*----------------------------------------------------------------------*
* start-of-selection.
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM GET_SCDS.
PERFORM PROCESS_SCD.
PERFORM DELETE_CNTL_REC.
*----------------------------------------------------------------------*
* end-of-selection.
*----------------------------------------------------------------------*
END-OF-SELECTION.
NEW-PAGE.
WRITE:/ TEXT-F01, 54 G_TOT_SHP_PROC.
WRITE:/ TEXT-F02, 54 G_TOT_PO.
WRITE:/ TEXT-F03, 54 G_TOT_GR.
WRITE:/ TEXT-F07, 54 G_TOT_SH.
WRITE:/ TEXT-F08, 54 G_TOT_ZFRGT.
IF G_ERR_PO GT 0.
WRITE:/ TEXT-F04, 54 G_ERR_PO.
ENDIF.
IF G_ERR_GR GT 0.
WRITE:/ TEXT-F05, 54 G_ERR_GR.
ENDIF.
IF G_ERR_SH GT 0.
WRITE:/ TEXT-F06, 54 G_ERR_SH.
ENDIF.
IF G_ERR_ZFRGT GT 0.
WRITE:/ TEXT-F09, 54 G_ERR_ZFRGT.
ENDIF.
*----------------------------------------------------------------------*
* top-of-page.
*----------------------------------------------------------------------*
TOP-OF-PAGE.
CALL FUNCTION 'Z_PRINT_80_COL_STD_RPT_TITLE'
EXPORTING
TITLE1 = TEXT-M03
TITLE2 = SY-TITLE(45)
COMP_CODE = P_CCODE.
SKIP 1.
COMMIT WORK.
*&---------------------------------------------------------------------*
*& Form GET_SCDS
*&---------------------------------------------------------------------*
* load records for freight and export freight amounts *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_SCDS.
DATA: L_FIRST_DEL_ITEM_PROCESSED(1) TYPE C,
L_VALID_SD_DOC_FOUND(1) TYPE C,
L_CPU_SML_PARCEL(1) TYPE C,
L_MAIN_INDEX LIKE SY-TABIX,
L_ALL_DEL_ZEROWT_FLAG(1) TYPE C.
DATA: BEGIN OF I_VFSI OCCURS 0,
KPOSN LIKE VFSI-KPOSN,
VBELN LIKE VFSI-VBELN,
POSNR LIKE VFSI-POSNR,
END OF I_VFSI.
*GET ALL UNPROCESSED SHIPMENT COST DOCUMENT
SELECT FKNUM KNUMV TDLNR EXTI1 REBEL WAERS STBER
FROM VFKP
INTO TABLE I_SHIPMENT_COST_DOC_TAB
WHERE FKNUM > P_LSHDOC "#EC PORTABLE
AND EXTI2 = SPACE.
DESCRIBE TABLE I_SHIPMENT_COST_DOC_TAB LINES
G_NO_SHIPCOSTDOC_TO_PROCESS.
IF G_NO_SHIPCOSTDOC_TO_PROCESS > 0.
LOOP AT I_SHIPMENT_COST_DOC_TAB.
L_MAIN_INDEX = SY-TABIX.
G_TOT_SHP_PROC = G_TOT_SHP_PROC + 1.
L_FIRST_DEL_ITEM_PROCESSED = C_NO.
CLEAR G_TOTWT_OF_SHIP_COST_DOC_ITEM.
L_VALID_SD_DOC_FOUND = C_NO.
L_CPU_SML_PARCEL = C_NO.
G_ERROR_FLAG = C_NO.
CLEAR I_VFSI.
REFRESH I_VFSI.
REFRESH I_MESSAGE.
IF I_SHIPMENT_COST_DOC_TAB-STBER <> 'C'.
*Cost are not fully calculated
WRITE: / 'Costs are not fully calculated for SCD'(021),
I_SHIPMENT_COST_DOC_TAB-FKNUM.
G_ERROR_FLAG = C_YES.
DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
CONTINUE.
ENDIF.
*Initially assume all deliveries associated with SCD have zero wt
L_ALL_DEL_ZEROWT_FLAG = C_YES.
*GET ALL ASSOCIATED DELIVERY DOCUMENT ITEMS TO SHIPMENT COST DOCUMENT
SELECT KPOSN VBELN POSNR FROM VFSI
INTO TABLE I_VFSI
WHERE KNUMV = I_SHIPMENT_COST_DOC_TAB-KNUMV
AND VBTYP = C_SD_DOC_CAT_DEL.
LOOP AT I_VFSI.
IF I_VFSI-VBELN IS INITIAL
OR I_VFSI-POSNR IS INITIAL.
*NOT A VALID DELIVERY DOCUMENT
CONTINUE.
ENDIF.
* CHECK GROSS WT > 0 AT HEADER LEVEL ON DELIVERY
CLEAR LIKP.
SELECT SINGLE VBELN LFART WADAT_IST VKORG BTGEW
INTO (LIKP-VBELN, LIKP-LFART, LIKP-WADAT_IST,
LIKP-VKORG, LIKP-BTGEW)
FROM LIKP
WHERE VBELN = I_VFSI-VBELN.
IF LIKP-BTGEW = 0.
WRITE: / 'GROSS WT FOR DELIVERY'(022), I_VFSI-VBELN,
'for shipment cost doc no'(023),
I_SHIPMENT_COST_DOC_TAB-FKNUM, 'IS ZERO'(024).
CONTINUE.
* G_ERROR_FLAG = C_YES.
* DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
* EXIT.
ELSE.
L_ALL_DEL_ZEROWT_FLAG = C_NO.
ENDIF.
* Get ITEM LEVEL ON DELIVERY
CLEAR LIPS.
SELECT SINGLE LFIMG VTWEG SPART VGBEL WERKS LGORT MATNR BRGEW
FROM LIPS INTO (LIPS-LFIMG, LIPS-VTWEG, LIPS-SPART, LIPS-VGBEL,
LIPS-WERKS, LIPS-LGORT, LIPS-MATNR, LIPS-BRGEW)
WHERE VBELN = I_VFSI-VBELN
AND POSNR = I_VFSI-POSNR.
* CHECK GI IS PROCESSED COMPLETELY ON DELIVERY
CLEAR VBUP.
SELECT SINGLE WBSTA FROM VBUP INTO VBUP-WBSTA
WHERE VBELN = I_VFSI-VBELN
AND POSNR = I_VFSI-POSNR.
IF VBUP-WBSTA <> C_GI_PROCESSED.
WRITE: / 'GI IS NOT PROCESSED COMPLETELY FOR DELIVERY'(025),
I_VFSI-VBELN,
'ITEM'(026), I_VFSI-POSNR,
'for shipment cost doc no'(023),
I_SHIPMENT_COST_DOC_TAB-FKNUM.
G_ERROR_FLAG = C_YES.
DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
EXIT.
ENDIF.
L_VALID_SD_DOC_FOUND = C_YES.
*GET ALL THE DETAILS WHICH WILL BE SAME FOR ALL THE DELIVERY ITEMS
*ASSOCIATED WITH A SHIPMENT COST DOCUMENT, FROM THE FIRST DELIVERY ITEM
IF L_FIRST_DEL_ITEM_PROCESSED = C_NO.
MOVE: I_VFSI-VBELN TO I_SHIPMENT_COST_DOC_TAB-VBELN,
I_VFSI-POSNR TO I_SHIPMENT_COST_DOC_TAB-POSNR,
LIPS-WERKS TO I_SHIPMENT_COST_DOC_TAB-WERKS,
LIPS-LGORT TO I_SHIPMENT_COST_DOC_TAB-LGORT,
LIKP-WADAT_IST TO I_SHIPMENT_COST_DOC_TAB-WADAT.
* IF I_SHIPMENT_COST_DOC_TAB-SCAC IN R_SCAC.
* I_SHIPMENT_COST_DOC_TAB-CPU_SML_PRCL_FLAG = 'X'.
* L_CPU_SML_PARCEL = C_YES.
* ELSE.
* CLEAR: I_SHIPMENT_COST_DOC_TAB-CPU_SML_PRCL_FLAG.
**Start of change for discontinue use of table ZSCAC
* I_SHIPMENT_COST_DOC_TAB-LIFNR = ZSCAC-LIFNR.
** PERFORM CHECK_SCAC_CODE_AND_GET_VENDOR.
**End of change or discontinue use of table ZSCAC
* ENDIF.
L_FIRST_DEL_ITEM_PROCESSED = C_YES.
ENDIF.
CLEAR KONV.
SELECT KWERT WAERS UP TO 1 ROWS
FROM KONV INTO (KONV-KWERT, KONV-WAERS)
WHERE KNUMV = I_SHIPMENT_COST_DOC_TAB-KNUMV
AND KSCHL = C_TOTAL_COND_TYPE
AND KPOSN = I_VFSI-KPOSN.
I_MUL_DEL_PER_SHIPCOSTDOC-FKNUM
= I_SHIPMENT_COST_DOC_TAB-FKNUM.
I_MUL_DEL_PER_SHIPCOSTDOC-VBELN
= I_VFSI-VBELN.
I_MUL_DEL_PER_SHIPCOSTDOC-WAERS = KONV-WAERS.
I_MUL_DEL_PER_SHIPCOSTDOC-KWERT = KONV-KWERT.
COLLECT I_MUL_DEL_PER_SHIPCOSTDOC.
ENDSELECT.
LOOP AT I_MESSAGE.
MESSAGE ID 'ZF' TYPE 'I' NUMBER I_MESSAGE-MSG WITH
I_MESSAGE-ID1 I_MESSAGE-ID2 I_MESSAGE-ID3 I_MESSAGE-ID4.
ENDLOOP.
ENDLOOP.
*If all deliveries associated with a SCD have zero wt
IF L_ALL_DEL_ZEROWT_FLAG = C_YES.
G_ERROR_FLAG = C_YES.
DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
ENDIF.
IF G_ERROR_FLAG = C_YES.
*SKIP THE SHIPMENT COST DOCUMENT BEACUSE OF AN ERROR
CONTINUE.
ENDIF.
IF L_VALID_SD_DOC_FOUND = C_YES.
*Get the Vendor number from SCD instead of table ZSCAC
IF I_SHIPMENT_COST_DOC_TAB-SCAC IN R_SCAC.
I_SHIPMENT_COST_DOC_TAB-CPU_SML_PRCL_FLAG = 'X'.
L_CPU_SML_PARCEL = C_YES.
ELSE.
CLEAR: I_SHIPMENT_COST_DOC_TAB-CPU_SML_PRCL_FLAG.
*Start of change for discontinue use of table ZSCAC
I_SHIPMENT_COST_DOC_TAB-LIFNR = I_SHIPMENT_COST_DOC_TAB-SCAC.
* I_SHIPMENT_COST_DOC_TAB-LIFNR = ZSCAC-LIFNR.
* PERFORM CHECK_SCAC_CODE_AND_GET_VENDOR.
*End of change or discontinue use of table ZSCAC
ENDIF.
CLEAR : I_SHIPMENT_COST_DOC_TAB-COND_COUNT,
I_SHIPMENT_COST_DOC_TAB-SAKNR.
PERFORM GET_TRAILER_NUMBER USING I_SHIPMENT_COST_DOC_TAB-REBEL.
PERFORM GET_DEL_OF_LAST_STAGE_OF_SHPMT.
IF LIPS-WERKS <> P_BURPEE.
IF LIPS-WERKS IS INITIAL.
WRITE: / 'Plant could not be determined from stages'(029),
I_SHIPMENT_COST_DOC_TAB-FKNUM.
DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
CONTINUE.
ELSE.
MOVE LIPS-WERKS TO I_SHIPMENT_COST_DOC_TAB-WERKS.
IF L_CPU_SML_PARCEL = C_NO.
*If not CPU or small parcel
PERFORM GET_COND_FROM_SHIP_COST_DOC.
PERFORM DETERMINE_GL_ACCOUNT.
PERFORM DETERMINE_PROFIT_CENTER.
*ZLO delivery storage location START
*If ZLO deliveries copy the plant to storage location because ZLO
*deliveries does not have storage location as the ZLO materials are not
*extended to storage view
IF LIKP-LFART = C_LFART_ZLO.
MOVE LIPS-WERKS TO I_SHIPMENT_COST_DOC_TAB-LGORT.
ENDIF.
*ZLO delivery storage location END
ENDIF.
CLEAR I_SHIPMENT_COST_DOC_TAB-BURPEE_FLAG.
PERFORM IDENTIFY_STATEMENT_BILLS_SCD. "
ENDIF.
ELSE.
*SCD BELONGS TO BURPEE PLANT, SO IGNORE IT
* DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
MOVE LIPS-WERKS TO I_SHIPMENT_COST_DOC_TAB-WERKS.
I_SHIPMENT_COST_DOC_TAB-BURPEE_FLAG = 'X'.
ENDIF.
MODIFY I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
ELSE.
MESSAGE I000 WITH TEXT-004 I_SHIPMENT_COST_DOC_TAB-FKNUM.
DELETE I_SHIPMENT_COST_DOC_TAB INDEX L_MAIN_INDEX.
ENDIF.
ENDLOOP.
*Start of change for discotinue use of table ZSCAC
IF NOT I_SHIPMENT_COST_DOC_TAB[] IS INITIAL.
SELECT LIFNR XERSY FROM LFM1 INTO TABLE I_LIFNR_XERSY_TAB
FOR ALL ENTRIES IN I_SHIPMENT_COST_DOC_TAB
WHERE LIFNR = I_SHIPMENT_COST_DOC_TAB-LIFNR
AND EKORG = P_PO_ORG.
SORT I_LIFNR_XERSY_TAB BY LIFNR.
ENDIF.
*End of change for discotinue use of table ZSCAC
DESCRIBE TABLE I_SHIPMENT_COST_DOC_TAB LINES
G_NO_SHIPCOSTDOC_TO_PROCESS.
ELSE.
WRITE: / TEXT-003.
MESSAGE I000 WITH TEXT-003.
ENDIF.
ENDFORM. " GET_SCDS
*&---------------------------------------------------------------------*
*& Form CREATE_DOCUMENTS
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_DOCUMENTS.
PERFORM CREATE_PURCHASE_ORDER.
CLEAR G_GR_RECOVERY.
* PERFORM CREATE_GR.
G_CREATE_SHP_BDC = 'X'.
PERFORM UPDATE_SCD_WITH_PO_DOC.
ENDFORM. " CREATE_DOCUMENTS
*&---------------------------------------------------------------------*
*& Form CREATE_PURCHASE_ORDER
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_PURCHASE_ORDER.
REFRESH I_PO_NUMBERS.
CLEAR I_PO_NUMBERS.
LOOP AT I_SHIPMENT_COST_DOC_TAB.
CHECK I_SHIPMENT_COST_DOC_TAB-CPU_SML_PRCL_FLAG IS INITIAL.
CHECK I_SHIPMENT_COST_DOC_TAB-BURPEE_FLAG IS INITIAL.
CHECK I_SHIPMENT_COST_DOC_TAB-STMTBILL_FLAG IS INITIAL. "
WRITE I_SHIPMENT_COST_DOC_TAB-WADAT TO G_WADAT_DATE MM/DD/YYYY.
CLEAR I_LIFNR_XERSY_TAB.
READ TABLE I_LIFNR_XERSY_TAB
WITH KEY LIFNR = I_SHIPMENT_COST_DOC_TAB-LIFNR
BINARY SEARCH.
IF SY-SUBRC IS INITIAL..
MOVE I_LIFNR_XERSY_TAB-XERSY TO I_SHIPMENT_COST_DOC_TAB-XERSY.
MODIFY I_SHIPMENT_COST_DOC_TAB.
ENDIF.
PERFORM CREATE_SINGLE_PO_USING_BAPI.
ENDLOOP.
LOOP AT I_SHIPMENT_COST_DOC_TAB
WHERE STMTBILL_FLAG = 'X'.
WRITE I_SHIPMENT_COST_DOC_TAB-WADAT TO G_WADAT_DATE MM/DD/YYYY.
CLEAR I_LIFNR_XERSY_TAB.
READ TABLE I_LIFNR_XERSY_TAB
WITH KEY LIFNR = I_SHIPMENT_COST_DOC_TAB-LIFNR
BINARY SEARCH.
IF SY-SUBRC IS INITIAL..
MOVE I_LIFNR_XERSY_TAB-XERSY TO I_SHIPMENT_COST_DOC_TAB-XERSY.
MODIFY I_SHIPMENT_COST_DOC_TAB.
ENDIF.
*Check to see if already there is a PO for this CASS SCAC for the *
*same statement bill document date as this current one
CLEAR: I_SHIPMENT_COST_DOC_TAB-EBELN.
SELECT SINGLE EBELN FROM EKKO INTO I_SHIPMENT_COST_DOC_TAB-EBELN
WHERE SUBMI = I_SHIPMENT_COST_DOC_TAB-CASS_SCAC
AND BSART = 'FR'
AND BEDAT = I_SHIPMENT_COST_DOC_TAB-SBDAT.
IF NOT SY-SUBRC IS INITIAL.
PERFORM CREATE_SB_PO_USING_BAPI.
ELSE.
CLEAR G_PO_ITEM_COUNT.
SELECT COUNT(*) FROM EKPO INTO G_PO_ITEM_COUNT
WHERE EBELN = I_SHIPMENT_COST_DOC_TAB-EBELN.
PERFORM ADD_ITEM_TO_SB_PO_USING_BAPI.
ENDIF.
ENDLOOP.
ENDFORM. " CREATE_PURCHASE_ORDER
*&---------------------------------------------------------------------*
*& Form CREATE_GR
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_GR.
DATA: BEGIN OF I_VFSI OCCURS 0,
KPOSN LIKE VFSI-KPOSN,
VBELN LIKE VFSI-VBELN,
END OF I_VFSI.
CLEAR G_GR_BDC_COUNT.
LOOP AT I_PO_NUMBERS.
* IF SHIPMENT COST DOC NO IS BLANK(IN CASE OF RECOVERY OF A PO), USE
* BOLNR TO GET SHIPMENT COST DOC# AND ASSOCIATED DELIVERIES FOR A PO
IF I_PO_NUMBERS-FKNUM IS INITIAL OR G_GR_RECOVERY = 'X'.
CLEAR VFKP.
SELECT FKNUM TDLNR KNUMV REBEL FROM VFKP UP TO 1 ROWS
INTO (I_PO_NUMBERS-FKNUM, I_PO_NUMBERS-SCAC, VFKP-KNUMV, VFKP-REBEL)
WHERE EXTI1 = I_PO_NUMBERS-BOLNR.
ENDSELECT.
PERFORM GET_TRAILER_NUMBER USING VFKP-REBEL.
PERFORM GET_PLANT_FROM_LAST_STAGE_DEL.
MOVE LIPS-WERKS TO I_PO_NUMBERS-WERKS.
CLEAR I_VFSI.
REFRESH I_VFSI.
*GET ALL ASSOCIATED DELIVERY DOCUMENT ITEMS TO SHIPMENT COST DOCUMENT
SELECT KPOSN VBELN FROM VFSI
INTO TABLE I_VFSI
WHERE KNUMV = VFKP-KNUMV
AND VBTYP = C_SD_DOC_CAT_DEL.
LOOP AT I_VFSI.
CLEAR KONV.
SELECT KWERT WAERS UP TO 1 ROWS
FROM KONV INTO (KONV-KWERT, KONV-WAERS)
WHERE KNUMV = VFKP-KNUMV
AND KSCHL = C_TOTAL_COND_TYPE
AND KPOSN = I_VFSI-KPOSN.
I_MUL_DEL_PER_SHIPCOSTDOC-FKNUM = I_PO_NUMBERS-FKNUM.
I_MUL_DEL_PER_SHIPCOSTDOC-VBELN = I_VFSI-VBELN.
I_MUL_DEL_PER_SHIPCOSTDOC-WAERS = KONV-WAERS.
I_MUL_DEL_PER_SHIPCOSTDOC-KWERT = KONV-KWERT.
COLLECT I_MUL_DEL_PER_SHIPCOSTDOC.
ENDSELECT.
ENDLOOP.
I_PO_NUMBERS-COND_COUNT = G_CHARGE_TYPE_COUNT.
MODIFY I_PO_NUMBERS.
ENDIF.
MESSAGE I097 WITH I_PO_NUMBERS-EBELN.
PERFORM LOAD_GR_BAPI.
PERFORM CALL_GR_BAPI.
PERFORM UPDATE_CUSTOM_TABLE.
ENDLOOP.
ENDFORM. " CREATE_GR
*&---------------------------------------------------------------------*
*& Form SAVE_PO
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE_PO.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MESAVE'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO1211-NETPR(01)'.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 0'.
PERFORM BDC_DYNPRO USING 'SAPLSPO2' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OPT1'.
ENDFORM. " SAVE_PO
*&---------------------------------------------------------------------*
*& Form LOAD_PO_MAIN_SCREEN
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOAD_PO_MAIN_SCREEN.
REFRESH I_BDC_DATA.
CLEAR I_BDC_DATA.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '=MEDOCTYPE'.
'=TABHDT8'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP. "DOC TYPE
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE. "DOC DT
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TABHDT7'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO1222-BUKRS'.
PERFORM BDC_FIELD USING 'MEPO1222-EKORG'
P_PO_ORG. "PURCH ORG
PERFORM BDC_FIELD USING 'MEPO1222-EKGRP'
P_PO_GRP. "PURCH GRP
PERFORM BDC_FIELD USING 'MEPO1222-BUKRS'
P_CCODE. "COMP CD
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '=MEV4001BUTTON'.
'=TABHDT5'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'MEPO1229-SUBMI'
I_SHIPMENT_COST_DOC_TAB-EXTI1. "BOL
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEV4001BUTTON'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'MEPOCOMM-IHREZ'
I_SHIPMENT_COST_DOC_TAB-REBEL."Shipment no
PERFORM BDC_FIELD USING 'MEPOCOMM-UNSEZ'
I_SHIPMENT_COST_DOC_TAB-FKNUM."SCD
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
ENDFORM. " LOAD_PO_MAIN_SCREEN
*&---------------------------------------------------------------------*
*& Form LOAD_PO_FIRST_ITEM
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOAD_PO_FIRST_ITEM.
DATA: L_VPROZ(5) TYPE C.
DATA: L_FIELD_NAME(20) TYPE C.
DATA: L_LINE_COUNT(1) TYPE C.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'MEPO1211-KNTTP(01)'
P_REVAC. "ACCT ASS CAT
PERFORM BDC_FIELD USING 'MEPO1211-EMATN(01)'
I_CONDS_OF_SHIP_COST_DOC-MATNR. "MATRL
PERFORM BDC_FIELD USING 'MEPO1211-MENGE(01)'
C_QTY_1. "QTY
PERFORM BDC_FIELD USING 'MEPO1211-MEINS(01)'
C_UOM_EA. "QTY UOM
PERFORM BDC_FIELD USING 'MEPO1211-EEIND(01)'
G_WADAT_DATE. "DEL DT
PERFORM BDC_FIELD USING 'MEPO1211-NETPR(01)'
G_KBETR. "PRICE
* IF G_CURRENCY IS INITIAL.
* perform bdc_field using 'MEPO1211-WAERS(01)'
* 'USD'. "CURRENCY
* ENDIF.
PERFORM BDC_FIELD USING 'MEPO1211-PEINH(01)'
C_PRICE_UNIT_1. "PRICE PER
PERFORM BDC_FIELD USING 'MEPO1211-BPRME(01)'
C_UOM_EA. "PRICE UOM
PERFORM BDC_FIELD USING 'MEPO1211-WGBEZ(01)'
C_MATKL. "MAT GRP
PERFORM BDC_FIELD USING 'MEPO1211-NAME1(01)'
I_SHIPMENT_COST_DOC_TAB-WERKS. "PLANT
PERFORM BDC_FIELD USING 'MEPO1211-LGOBE(01)'
I_SHIPMENT_COST_DOC_TAB-LGORT. "STLOC
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
* PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '=TABIDT7'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEACCT1200-VRTKZ'.
PERFORM BDC_FIELD USING 'MEACCT1200-KNTTP'
P_REVAC. "ACCT ASS CAT
PERFORM BDC_FIELD USING 'MEACCT1200-VRTKZ'
' '. "DIST BY single account
*Single account assignment
PERFORM BDC_FIELD USING 'MEACCT1000-SAKTO(01)'
I_SHIPMENT_COST_DOC_TAB-SAKNR. "G/L ACCT
PERFORM BDC_FIELD USING 'MEACCT1000-PRCTR(01)'
I_SHIPMENT_COST_DOC_TAB-PRCTR. "PRCTR
IF I_SHIPMENT_COST_DOC_TAB-LOFLG = 'X'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEAC1000MALL'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEAC1000DETAIL'.
PERFORM BDC_DYNPRO USING 'SAPLMEAC' '0050'.
PERFORM BDC_FIELD USING 'COBL-FKBER'
I_SHIPMENT_COST_DOC_TAB-FKBER. "Func Area
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ACCDETOK'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
ENDIF.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TABIDT7'.
*Invoice screen for tax code, TAXJCD, GR based IV, ERS
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TABIDT6'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO1317-TXJCD'.
PERFORM BDC_FIELD USING 'MEPO1317-MWSKZ'
P_TAXCD. "TACODE
PERFORM BDC_FIELD USING 'MEPO1317-TXJCD'
P_TXJCD. "TAJURISDICTION CD
PERFORM BDC_FIELD USING 'MEPO1317-WEBRE'
'X'. "GR BASED IV
IF I_SHIPMENT_COST_DOC_TAB-XERSY = 'X'.
PERFORM BDC_FIELD USING 'MEPO1317-XERSY'
'X'. "ERS
ELSE.
PERFORM BDC_FIELD USING 'MEPO1317-XERSY'
' '. "ERS
ENDIF.
*Delivery screen for GR and GR nonval
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TABIDT1'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_FIELD USING 'MEPO1313-WEPOS'
'X'. "GR INDICATOR
PERFORM BDC_FIELD USING 'MEPO1313-WEUNB'
' '. "GR N_VAL IND
*Material data screen for vendor material no
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_FIELD USING 'MEPO1319-IDNLF'
I_CONDS_OF_SHIP_COST_DOC-MATNR."VNDR MATRL
*Copying item 1 to other items
IF G_CHARGE_TYPE_COUNT > 1.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEPO1211ITEMCOPY'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO1211-STATUSICON(01)'.
PERFORM BDC_FIELD USING 'MEPO1211-TCSELFLAG(01)'
'X'. "SELECT 1ST LN
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEPO1211EDITFILTER'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLSKBH' '1500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DTC_WLSE'.
PERFORM BDC_DYNPRO USING 'SAPLSKBH' '1500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DTC_CONT'.
ENDIF.
ENDFORM. " LOAD_PO_FIRST_ITEM
*&---------------------------------------------------------------------*
*& Form LOAD_REMAINING_ITEMS_OF_PO
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOAD_REMAINING_ITEMS_OF_PO.
DATA: L_ITEMNO_COUNTER TYPE I,
L_ITEMNO_COUNTER_CHAR(6) TYPE C.
L_ITEMNO_COUNTER = G_CURRENT_COND_LOOP_COUNT * 10.
MOVE L_ITEMNO_COUNTER TO L_ITEMNO_COUNTER_CHAR.
PERFORM BDC_DYNPRO USING 'SAPLSSEL' '1104'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=CRET'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'%%DYN001-LOW'.
PERFORM BDC_FIELD USING '%%DYN001-LOW'
L_ITEMNO_COUNTER_CHAR. "POSITION NEW NO
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO1211-NETPR(01)'.
PERFORM BDC_FIELD USING 'MEPO1211-EMATN(01)'
I_CONDS_OF_SHIP_COST_DOC-MATNR. "MATERIAL
PERFORM BDC_FIELD USING 'MEPO1211-NETPR(01)'
G_KBETR. "PRICE
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 0'.
IF G_CURRENT_COND_LOOP_COUNT < G_CHARGE_TYPE_COUNT.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEPO1211ITEMCOPY'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO1211-STATUSICON(01)'.
PERFORM BDC_FIELD USING 'MEPO1211-TCSELFLAG(01)'
'X'. "SELECT LN 1
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 0'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEPO1211UNDOFILTER'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 0'.
PERFORM BDC_DYNPRO USING 'SAPLMEGUI' '0014'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MEPO1211EDITFILTER'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MEPO_TOPLINE-BSART'.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BSART'
P_PO_TYP.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-SUPERFIELD'
I_SHIPMENT_COST_DOC_TAB-LIFNR.
PERFORM BDC_FIELD USING 'MEPO_TOPLINE-BEDAT'
G_WADAT_DATE.
PERFORM BDC_FIELD USING 'DYN_6000-LIST'
' 1'.
PERFORM BDC_DYNPRO USING 'SAPLSKBH' '1500'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=DTC_CONT'.
ENDIF.
ENDFORM. " LOAD_REMAINING_ITEMS_OF_PO
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING L_PROGRAM L_DYNPRO.
CLEAR I_BDC_DATA.
I_BDC_DATA-PROGRAM = L_PROGRAM.
I_BDC_DATA-DYNPRO = L_DYNPRO.
I_BDC_DATA-DYNBEGIN = 'X'.
APPEND I_BDC_DATA.
ENDFORM.
*---------------------------------------------------------------------*
* FORM BDC_FIELD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> FNAM *
* --> FVAL *
*---------------------------------------------------------------------*
FORM BDC_FIELD USING L_FNAM L_FVAL.
CLEAR I_BDC_DATA.
I_BDC_DATA-FNAM = L_FNAM.
I_BDC_DATA-FVAL = L_FVAL.
APPEND I_BDC_DATA.
ENDFORM. " LOAD_BDC_ITEM
*&---------------------------------------------------------------------*
*& Form LOAD_GR_SCREEN
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LOAD_GR_SCREEN.
DATA: L_DATE(10) TYPE C,
L_COUNT(4) TYPE C.
REFRESH I_BDC_DATA.
CLEAR I_BDC_DATA.
WRITE I_PO_NUMBERS-BUDAT TO L_DATE MM/DD/YYYY.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_GO'.
PERFORM BDC_FIELD USING 'GODYNPRO-ACTION'
'A01'.
PERFORM BDC_FIELD USING 'GODYNPRO-REFDOC'
'R01'.
PERFORM BDC_FIELD USING 'GODEFAULT_TV-BWART'
P_MOV.
PERFORM BDC_FIELD USING 'GODYNPRO-PO_NUMBER'
I_PO_NUMBERS-EBELN.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'GOHEAD-FRBNR'.
PERFORM BDC_FIELD USING 'GOHEAD-BLDAT'
L_DATE.
PERFORM BDC_FIELD USING 'GOHEAD-BUDAT'
L_DATE.
*move the bol to delivery note field and vice-versa
PERFORM BDC_FIELD USING 'GOHEAD-LFSNR'
I_PO_NUMBERS-BOLNR.
PERFORM BDC_FIELD USING 'GOHEAD-FRBNR'
* I_PO_NUMBERS-BOLNR.
I_PO_NUMBERS-VBELN.
PERFORM BDC_FIELD USING 'GOHEAD-WEVER'
'1'.
DO I_PO_NUMBERS-COND_COUNT TIMES.
MOVE SY-INDEX TO L_COUNT.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_GO'.
PERFORM BDC_FIELD USING 'GODEFAULT_TV-BWART'
P_MOV.
PERFORM BDC_FIELD USING 'GOHEAD-BLDAT'
L_DATE.
PERFORM BDC_FIELD USING 'GOHEAD-BUDAT'
L_DATE.
PERFORM BDC_FIELD USING 'GOHEAD-FRBNR'
I_PO_NUMBERS-BOLNR.
PERFORM BDC_FIELD USING 'GOHEAD-WEVER'
'1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'GODYNPRO-DETAIL_ZEILE'.
PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_ZEILE'
L_COUNT.
PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_TAKE'
'X'.
ENDDO.
ENDFORM. " LOAD_GR_SCREEN
*&---------------------------------------------------------------------*
* FORM SAVE_GR *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM SAVE_GR.
* Select all items on Goods Receipt transaction
* for a purchase order (MIGO).
DATA L_DATE(10) TYPE C.
WRITE I_PO_NUMBERS-BUDAT TO L_DATE MM/DD/YYYY.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_POST'.
PERFORM BDC_FIELD USING 'GODEFAULT_TV-BWART'
P_MOV.
PERFORM BDC_FIELD USING 'GOHEAD-BLDAT'
L_DATE.
PERFORM BDC_FIELD USING 'GOHEAD-BUDAT'
L_DATE.
PERFORM BDC_FIELD USING 'GOHEAD-FRBNR'
I_SHIPMENT_COST_DOC_TAB-EXTI1.
PERFORM BDC_FIELD USING 'GOHEAD-WEVER'
'1'.
PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_ZEILE'
' 1'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'GODYNPRO-DETAIL_TAKE'.
PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_TAKE'
'X'.
ENDFORM. " SAVE_GR
*&---------------------------------------------------------------------*
*& Form UPDATE_CUSTOM_TABLE
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPDATE_CUSTOM_TABLE.
DATA: L_ZFRGT_ERROR(1) TYPE C.
CLEAR L_ZFRGT_ERROR.
LOOP AT I_MUL_DEL_PER_SHIPCOSTDOC
WHERE FKNUM = I_PO_NUMBERS-FKNUM.
CLEAR ZFRGT.
SELECT SINGLE * FROM ZFRGT
WHERE VBELN = I_MUL_DEL_PER_SHIPCOSTDOC-VBELN
AND BOLNR = I_PO_NUMBERS-BOLNR.
IF NOT SY-SUBRC IS INITIAL.
CLEAR ZFRGT.
ZFRGT-VBELN = I_MUL_DEL_PER_SHIPCOSTDOC-VBELN.
ZFRGT-FRTPONR = I_PO_NUMBERS-EBELN.
ZFRGT-BOLNR = I_PO_NUMBERS-BOLNR.
ZFRGT-WERKS = I_PO_NUMBERS-WERKS.
ZFRGT-SCAC = I_PO_NUMBERS-SCAC.
ZFRGT-CRDATE = SY-DATUM.
ZFRGT-CRTIME = SY-UZEIT.
ZFRGT-UNAME = SY-UNAME.
ZFRGT-FRTAMT = I_MUL_DEL_PER_SHIPCOSTDOC-KWERT.
ZFRGT-WAERS = I_MUL_DEL_PER_SHIPCOSTDOC-WAERS.
ZFRGT-FRTAMT_TRN = I_MUL_DEL_PER_SHIPCOSTDOC-KWERT.
ZFRGT-WAERS_TRN = I_MUL_DEL_PER_SHIPCOSTDOC-WAERS.
ZFRGT-TRLNBR = I_PO_NUMBERS-TRLNO.
INSERT ZFRGT.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE I000 WITH 'ZFRGT could not be updated for'(028)
I_MUL_DEL_PER_SHIPCOSTDOC-VBELN I_PO_NUMBERS-BOLNR
I_PO_NUMBERS-FKNUM.
L_ZFRGT_ERROR = 'X'.
ENDIF.
ELSE.
UPDATE ZFRGT SET FRTPONR = I_PO_NUMBERS-EBELN
WERKS = I_PO_NUMBERS-WERKS
SCAC = I_PO_NUMBERS-SCAC
UDATE = SY-DATUM
UPTIME = SY-UZEIT
UNAME = SY-UNAME
FRTAMT = I_MUL_DEL_PER_SHIPCOSTDOC-KWERT
WAERS = I_MUL_DEL_PER_SHIPCOSTDOC-WAERS
FRTAMT_TRN = I_MUL_DEL_PER_SHIPCOSTDOC-KWERT
WAERS_TRN = I_MUL_DEL_PER_SHIPCOSTDOC-WAERS
TRLNBR = I_PO_NUMBERS-TRLNO
WHERE VBELN = I_MUL_DEL_PER_SHIPCOSTDOC-VBELN
AND BOLNR = I_PO_NUMBERS-BOLNR.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE I000 WITH 'ZFRGT could not be updated for'(028)
I_MUL_DEL_PER_SHIPCOSTDOC-VBELN I_PO_NUMBERS-BOLNR
I_PO_NUMBERS-FKNUM.
L_ZFRGT_ERROR = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
COMMIT WORK.
IF L_ZFRGT_ERROR IS INITIAL.
ADD 1 TO G_TOT_ZFRGT.
ELSEIF L_ZFRGT_ERROR = 'X'.
ADD 1 TO G_ERR_ZFRGT.
ENDIF.
ENDFORM. " UPDATE_CUSTOM_TABLE
*---------------------------------------------------------------------*
* FORM H_CNTL_REC *
*---------------------------------------------------------------------*
* Removes the control entry from table Z0001. *
*---------------------------------------------------------------------*
FORM DELETE_CNTL_REC.
DELETE FROM Z0001 WHERE JOBNAME EQ G_JOBNAME.
ENDFORM. " DELETE_CNTL_REC
*---------------------------------------------------------------------*
* FORM SELECT_TVARV_DATA *
*---------------------------------------------------------------------*
* Select data from TVARV. *
*---------------------------------------------------------------------*
FORM SELECT_TVARV_DATA.
DATA: BEGIN OF I_TVARV OCCURS 0.
INCLUDE STRUCTURE ZTVARV.
DATA: END OF I_TVARV.
DATA: L_TVARV LIKE TVARV-LOW.
* GET SCAC CODES FROM TVARV
CLEAR R_SCAC.
REFRESH R_SCAC.
CALL FUNCTION 'Z_GET_TVARV_ENTRIES'
EXPORTING
I_NAME = C_TVARV_SCAC
I_TYPE = 'S'
I_MSGTY = 'E'
TABLES
T_TVARV = I_TVARV.
R_SCAC[] = I_TVARV[].
* GET SAMPLE SALES DOC TYPES FROM TVARV
CLEAR S_SAMPLE.
REFRESH S_SAMPLE.
CALL FUNCTION 'Z_GET_TVARV_ENTRIES'
EXPORTING
I_NAME = C_TVARV_SAMPLE
I_TYPE = 'S'
I_MSGTY = 'E'
TABLES
T_TVARV = I_TVARV.
S_SAMPLE[] = I_TVARV[].
* GET last shipment cost document processed from TVARV
CALL FUNCTION 'Z_GET_TVARV_ENTRIES'
EXPORTING
I_NAME = C_TVARV_SHIPCOST
I_TYPE = 'P'
I_MSGTY = 'E'
IMPORTING
E_PARAMETER = L_TVARV.
MOVE L_TVARV TO P_LSHDOC.
CLEAR R_PSTYV.
REFRESH R_PSTYV.
CALL FUNCTION 'Z_GET_TVARV_ENTRIES'
EXPORTING
I_NAME = C_TVARV_MCH_NOATP_ITMCAT
I_TYPE = 'S'
I_MSGTY = 'E'
TABLES
T_TVARV = I_TVARV.
R_PSTYV[] = I_TVARV[].
CLEAR G_CURRENCY.
GET PARAMETER ID 'FWS' FIELD G_CURRENCY.
SET PARAMETER ID 'EVO' FIELD C_PO_DEFAULT_VALUES_VARIANT.
ENDFORM. " SELECT_TVARV_DATA
*---------------------------------------------------------------------*
* FORM GET_GL_ACCT_FROM_PRICE_COND *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM GET_GL_ACCT_FROM_PRICE_COND USING L_LFART.
DATA: L_KTGRD LIKE KNVV-KTGRD,
L_SUBRC LIKE SY-SUBRC.
*Start of changes for ZLO delivery
IF L_LFART = C_LFART_ZLO.
SELECT SINGLE KTGRD FROM KNVV INTO L_KTGRD
WHERE KUNNR = LIKP-KUNNR
AND VKORG = LIKP-VKORG
AND VTWEG = LIPS-VTWEG
AND SPART = LIPS-SPART.
MOVE SY-SUBRC TO L_SUBRC.
ELSE.
*End of changes for ZLO delivery
* If sales order is not a sample sales order then GL account can
* be domestic, export or internal depending upon customer account
* assign group.
CLEAR VBKD.
* SELECT SINGLE KTGRD INTO vbkd-KTGRD
SELECT SINGLE KTGRD INTO L_KTGRD
FROM VBKD
WHERE VBELN EQ LIPS-VGBEL
AND POSNR EQ C_HEADER.
MOVE SY-SUBRC TO L_SUBRC.
*Start of changes for ZLO delivery
ENDIF.
*End of changes for ZLO delivery
* START
* IF SY-SUBRC EQ 0.
* CLEAR C506.
* SELECT SINGLE * FROM C506
* WHERE KAPPL = 'V'
* AND KSCHL = C_C506_KSCHL
* AND KTOPL = C_C506_KTOPL
* AND VKORG = LIKP-VKORG
* AND VTWEG = LIPS-VTWEG
* AND SPART = LIPS-SPART
** AND KTGRD = VBKD-KTGRD
* AND KTGRD = L_KTGRD
* AND KVSL1 = P_FRTACT.
* IF SY-SUBRC EQ 0.
* MOVE C506-SAKN1 TO I_SHIPMENT_COST_DOC_TAB-SAKNR.
* ENDIF.
* ELSE.
* IF LIPS-SPART = C_PARENT
* OR LIPS-MTART IN S_MTART.
* MOVE C_KTGRD TO L_KTGRD.
* ELSE.
* MOVE C_KTGRDN TO L_KTGRD.
* ENDIF.
* CLEAR C506.
* SELECT SAKN1 FROM C506
* INTO I_SHIPMENT_COST_DOC_TAB-SAKNR UP TO 1 ROWS
* WHERE KAPPL = 'V'
* AND KSCHL = C_C506_KSCHL
* AND KTOPL = C_C506_KTOPL
* AND VKORG = LIKP-VKORG
* AND KTGRD = L_KTGRD
* AND KVSL1 = P_FRTACT.
* ENDSELECT.
* ENDIF.
IF L_SUBRC <> 0.
MOVE C_KTGRDN TO L_KTGRD.
ENDIF.
CLEAR: C506,
I_SHIPMENT_COST_DOC_TAB-SAKNR.
SELECT SINGLE SAKN1 FROM C506 INTO I_SHIPMENT_COST_DOC_TAB-SAKNR
WHERE KAPPL = 'V'
AND KSCHL = C_C506_KSCHL
AND KTOPL = C_C506_KTOPL
AND VKORG = LIKP-VKORG
AND VTWEG = LIPS-VTWEG
AND SPART = LIPS-SPART
AND KTGRD = L_KTGRD
AND KVSL1 = P_FRTACT.
* END
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DETERMINE_GL_ACC
Answer:
Hi !
Here is example...
T_PO_ITEMS-PO_ITEM = '00002'." Line Item No - EKPO-EBELP
T_PO_ITEMS-DELETE_IND = 'L'.
and you have to use for ITEMX also...
T_PO_ITEMSX-PO_ITEM = '00002'.
T_PO_ITEMSX-PO_ITEMX = 'X'.
T_PO_ITEMSX-DELETE_IND = 'X'.
Try this....You can delete items...
Suma
Answer:
Hello Ms Suma,
I am trying to change the pricing condition using BAPI_PO_CHANGE. First I am running the same in test run,making necessary changes and then the actual run. But the changes are not being reflected in the PO . How to go ahead with this. U can mail me for more information regarding this to its_ashu@hotmail.com
Waiting for ur reply at the earliest,
Regards,
Ashok Rao.H
Answer:
This FM works perfetly!!!! Use "set update task local." and "commit work and wait."!!!!!!!!!!
FORM BAPI_EKKO_CHANGE TABLES P_POITEM STRUCTURE BAPIMEPOITEM
P_POITEMX STRUCTURE BAPIMEPOITEMX
P_POSCHEDULE STRUCTURE BAPIMEPOSCHEDULE
P_POSCHEDULEX STRUCTURE BAPIMEPOSCHEDULX
P_RETURN1 STRUCTURE BAPIRET2.
DATA: N TYPE I.
DESCRIBE TABLE P_POITEM LINES N.
IF N > 0.
*----------------------------------------------*** USEFUL !!!!!!
set update task local.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
PURCHASEORDER = EBELN
* POHEADER =
TESTRUN = ''
NO_PRICE_FROM_PO = 'X'
TABLES
RETURN = P_RETURN1
POITEM = P_POITEM
POITEMX = P_POITEMX
POSCHEDULE = P_POSCHEDULE
POSCHEDULEX = P_POSCHEDULEX
* POCOND = POCOND
* POCONDX = POCONDX
.
*----------------------------------------------***** USEFUL
commit work and wait.
ENDIF.
CLEAR P_POITEM[].
CLEAR P_POITEMX[].
CLEAR P_POSCHEDULE[].
CLEAR P_POSCHEDULEX[].
ENDFORM. " BAPI_EKKO_CHANGE
Answer:
I am being able to set the deletion flag using BAPI_PO_CHANGE and then use a "commit and wait" after it, but the doucment flow (between the SD document and the PO) is not automatically updated.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = lv_po_num
TABLES
RETURN = t_return
POITEM = t_item
POITEMX = t_itemx.
commit work and wait.
Is there some way by which the BAPI should be used for the above?
Am I not passing some variable?

More Articles:

BAPI_SALESORDER_CHANGE ---How to change VBAP-KWMENG ?
sold to/ship to report?
how to code my requirement?
Restricted field width when sending e-mail?
Dynamic SQL Query?
How can i copy data from one custome table to other custome?