LIKP-WADAT in VL01NO Transaction
Hello,
In the second screen of VL01NO Transactin, I have fill LIKP-WADAT(Planned GI Date) with the current date as default.
Please advise me with User Exit or Customer Exit or with BADI.
I tried implementing the userexit USEREXIT_MOVE_FIELD_TO_LIKP, but the things are not working.
Regards
Pushparaj
P287176 wrote:>
> Hello,
> In the second screen of VL01NO Transactin, I have fill LIKP-WADAT(Planned GI Date) with the current date as default.
> Please advise me with User Exit or Customer Exit or with BADI.
>
> I tried implementing the userexit USEREXIT_MOVE_FIELD_TO_LIKP, but the things are not working.
>
> Regards
> Pushparaj
Try to do in copy routines. transaction: VTLA.
or
try changing XLIKP-WADAT instead of LIKP-WADAT
Edited by: Sampath Kumar on Oct 26, 2009 12:04 PM
Similar Messages
-
IDOC fill the field likp-wadat
I guru,
i need fill the field likp-wadat when I run an idoc DESADV, but I don't find the field in IDOC...
you know what is it?
thanks in advancesI tried to search the facility /AFS/DELVRY03 but seems not to be on the field to fill likp-wadat.
I also read the documentation but, nothing.
can you help me???
V. -
Add one Select-Options : LIKP-LGBZO into Shipment Transaction - VT02N
Hello,
Transaction - VT02N(Change Shipment) -- Now choose Select Deliveries(F6).
Now one Selection-Screen will come to Select Outbound Deliveries.
In this Screen I want to add one more Select-Options (LIKP-LGBZO)
How can I add this Select-Options into this Screen.
Please provide solution .
Edited by: Matt on Sep 22, 2010 10:04 AM - edit title - causing problems displaying in Firefox.Hi,
we can not modify SAP Standard screen with out access key.
If you want any field validation try this Exit:
Enhancement V56BMOD Transportation processing: Field modification
Thanks,
AMS -
Creating select option to get wadat from likp to use in the query
Hi People,
Urgent Help. I have to make a select-option in my selection screen for date to use the field wadat from likp. Now the after the following code what should I be doing:
Selection-Screen BEGIN OF BLOCK b with frame Title t1.
PARAMETERS:
SELECT-OPTIONS: p_date for likp-wadat.
SELECTION-SCREEN END OF BLOCK b.
INITIALIZATION.
AT SELECTION-SCREEN.
START-OF-SELECTION.
<b>SELECT avbeln alfdat awadat akunnr bwerks bspart INTO
CORRESPONDING FIELDS OF TABLE typ_tab FROM likp as a INNER JOIN lips as b on avbeln = bvbeln where wadat IN p_dat.</b>
On the selection screen there will be two boxes for the from -to date...How does it work? If I have to make it only for one date or for range of dates. Please help asap. I have to use this value in a report to pull out delivery document details from likp and lips through the query mentioned above.
Thanks in advance.
AMHey Nishanth,
Thanks for the reply. I made the changes as suggested but when I am entering a date which does not exist in the table, the screen does nothing. Can you suggest something for that.
Here is my code:
tables: likp.
SELECTION-SCREEN BEGIN OF BLOCK b_0 WITH FRAME TITLE date.
SELECT-OPTIONS p_date FOR likp-wadat NO-EXTENSION.
PARAMETERS p_glAccNo(80) TYPE C.
SELECTION-SCREEN END OF BLOCK b_0.
DATA: BEGIN OF typ_likp occurs 0,
vbeln LIKE likp-vbeln, " Bill Of Lading Number
lfdat LIKE likp-lfdat,
wadat LIKE likp-wadat,
END OF typ_likp.
AT SELECTION-SCREEN ON p_date.
if p_date[] is NOT INITIAL.
SELECT vbeln wadat INTO TABLE typ_likp FROM LIKP WHERE wadat IN p_date.
IF sy-subrc <> 0.
WRITE: / 'No Values for this date.'.
Exit.
ENDIF.
ELSE.
WRITE: 'NO ENTRIES HAVE BEEN MADE'.
ENDIF.
START-OF-SELECTION.
SELECT vbeln lfdat wadat INTO TABLE typ_likp fROM LIKP where
wadat in p_date.
LOOP AT typ_likp.
Write: / typ_likp-vbeln, typ_likp-lfdat, typ_likp-wadat,
/ 'I am here.'.
ENDLOOP.
Please reply soon. I need to finish this at the earliest.
Thanks for your help, regards,
AM -
Hello ,
I have Implemented a field exit for Data element WADAT, but my requrement is, The value In the field LIKP-WADAT in VLO2n/VLO1N TRansaction should not be allowed to change even a single time.
Is there any user exit do statisfy my requirement
cheers.Field exit can be used to validate a user entry and not restrict a user entry. Even if you implement field exit user can always go and change the contents of field and in field exit ( only triggered in PAI ) there is no way to determine if field value was changed .
You should make the field output only in case you dont want users to change it.
Check if you have BADI LE_SHP_DELIVERY_PROC in your system. In this BADI you can use method CHANGE_FIELD_ATTRIBUTES to set the attributes of LIKP-WADAT in parameter CT_FIELD_ATTRIBUTES to disable input .
Cheers.
Sanjay -
Regarding field likp-anzpk updation
hi experts,
in my requirement i have to update the field (likp-anzpk) in vl02n transaction with total no packages based on the total line
items weight , but i found in some of the threads , that the field will be updated automatically when the packaging functionality
is once activated ,
i asked my client abt it ,they said that they r not activated packaging functionality.
is there any other way to update this field , i tried writing code in badi LE_SHP_DELIVERY_PROC and in method
IF_EX_LE_SHP_DELIVERY_PROC~SAVE_DOCUMENT_PREPARE , but it is useless
pls suggest me on this if there is any other way.\
thanks.hi break point,
my clients actual requirement was , he creates stock transfer advice (STA) against the PO using the transaction
VL10B , the moment STA was created ,he was asking for the field likp-anzpk has to be updated when he go to
display mode to VL02N, when he double clicks on the generated STA no from VL10B.
i have tried in the method BEFORE SAVE AND PUBLISH DOCUMENT,it was executing when the user pressed SAVE
button in VL02N ,
can any body pls suggest which method i have to use to update the field likp-anzpk immediately when the STA was created
from VL10B before the display of the sta in vl02n.
let me know that any USER-EXIT or BADI exists to fullfill this req
regards\
maheshlap -
How to get the open order quantity for a material
Hi All,
We need to get the open order quantity for materials. At present we are using the following logic...
SELECT VBAKVBELN VBAPPOSNR VBAP~KWMENG
INTO TABLE IT_VBAP
FROM VBAP
INNER JOIN VBAK ON VBAKVBELN = VBAPVBELN
INNER JOIN VAPMA ON VAPMAVBELN = VBAPVBELN
AND VAPMAPOSNR = VBAPPOSNR
INNER JOIN VBUP ON VBUPVBELN = VBAPVBELN
AND VBUPPOSNR = VBAPPOSNR
WHERE VAPMA~MATNR = IT_OUTPUT-MATNR
AND VAPMA~WERKS = IT_OUTPUT-WERKS
AND VBAK~AUART IN S_AUART
AND VBUP~GBSTA NE 'C'.
But the Query takes quite a long time as it does a full range scan on all the tables. Is there any way the query can be improved, may be by creating an index etc? Or is there anyother way by which i can get the required data?
Any input is appreciated.
Regards
Brain.This could help.
*& Report: zsdvr055 date written: 03/24/00 *
*& Author: Brian Huntley last update: 03/24/00 *
*& Program Title: Open Order Report *
*& Description: This report will create a list of sales documents *
*& that are open (contain at least one item that is not shipped). *
*& The report will sort by ship-to customer name and by sales *
*& document number. *
*& Tables: *
*& Files: *
*& Transactions: *
*& Changes: *
REPORT ZSDVR055 LINE-SIZE 255.
TABLES: VBPA,
VBAP,
VBUP,
VBAK,
VBKD,
KNA1,
VBEP,
VBFA,
LIKP,
LIPS,
EKET,
T171T.
define hashed table for selected ship-to and sold-to SO's
TYPES: BEGIN OF TVBPA_TYPE,
VBELN LIKE VBPA-VBELN, "sales document
POSNR LIKE VBPA-POSNR, "item number
PARVW LIKE VBPA-PARVW, "partner function
KUNNR LIKE VBPA-KUNNR, "customer number
END OF TVBPA_TYPE.
DATA: TVBPA TYPE HASHED TABLE OF TVBPA_TYPE
WITH UNIQUE KEY VBELN POSNR PARVW WITH HEADER LINE.
define internal table for all selected SO's
DATA: BEGIN OF ITAB0 OCCURS 0,
VBELN LIKE VBPA-VBELN, "sales document
END OF ITAB0.
define internal table for all selected SO items
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
MATNR LIKE VBAP-MATNR, "material
ARKTX LIKE VBAP-ARKTX, "description
PSTYV LIKE VBAP-PSTYV, "item category
KDMAT LIKE VBAP-KDMAT, "customer material
NETWR LIKE VBAP-NETWR, "net value
WAERK LIKE VBAP-WAERK, "currency
KWMENG LIKE VBAP-KWMENG, "quantity
ERDAT LIKE VBAP-ERDAT, "entry date
NETPR LIKE VBAP-NETPR, "net price
KPEIN LIKE VBAP-KPEIN, "pricing unit
PRCTR LIKE VBAP-PRCTR, "profit center
ERNAM LIKE VBAK-ERNAM, "entered by
AUART LIKE VBAK-AUART, "order type
VKORG LIKE VBAK-VKORG, "sales organization
VTWEG LIKE VBAK-VTWEG, "distribution channel
VDATU LIKE VBAK-VDATU, "requested date (header)
BNAME LIKE VBAK-BNAME, "name of orderer
KUNNR LIKE VBAK-KUNNR, "sold-to customer
BZIRK LIKE VBKD-BZIRK, "sales district
KURSK LIKE VBKD-KURSK, "conversion rate
BSTKD LIKE VBKD-BSTKD, "customer PO
LFGSA LIKE VBUP-LFGSA, "overall delivery status
FKSAA LIKE VBUP-FKSAA, "overall billing status
KUNWE LIKE VBPA-KUNNR, "ship-to customer
NAME1 LIKE KNA1-NAME1, "ship-to customer name
ORT01 LIKE KNA1-ORT01, "ship-to address
REGIO LIKE KNA1-REGIO, "ship-to region (state)
LAND1 LIKE KNA1-LAND1, "ship-to country
END OF ITAB.
create internal table for open orders
DATA: BEGIN OF ITAB1 OCCURS 0,
KUNNR LIKE VBAK-KUNNR, "sold-to customer
KUNWE LIKE VBPA-KUNNR, "ship-to customer
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
ZDATE1 LIKE VBEP-EDATU, "requested date
ZDATE2 LIKE VBEP-EDATU, "scheduled date (confirm)
ZDATE3 LIKE VBEP-EDATU, "committed date
ZQTY1 LIKE VBAP-KWMENG, "qty ordered
ZQTY2 LIKE VBEP-BMENG, "backlog qty
ZEXTD LIKE VBAP-NETWR, "backlog net value
ZDESC(30) TYPE C, "backlog description
END OF ITAB1.
define internal table for SO schedule lines
DATA: BEGIN OF ITAB2A OCCURS 0,
WADAT LIKE VBEP-WADAT, "planned goods issue date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
WMENG LIKE VBEP-WMENG, "qty ordered
BMENG LIKE VBEP-BMENG, "qty confirmed
END OF ITAB2A.
define internal table for SO item request dates
DATA: BEGIN OF ITAB2B OCCURS 0,
EDATU LIKE VBEP-EDATU, "delivery date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
WMENG LIKE VBEP-WMENG, "qty ordered
END OF ITAB2B.
define internal table for SO item commit dates
DATA: BEGIN OF ITAB2C OCCURS 0,
EDATU LIKE VBEP-EDATU, "delivery date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
ROMS1 LIKE VBEP-WMENG, "committed qty
END OF ITAB2C.
define internal table for SO item deliveries
DATA: BEGIN OF ITAB3 OCCURS 0,
VGBEL LIKE LIPS-VGBEL, "sales document
VGPOS LIKE LIPS-VGPOS, "sales document item
VBELN LIKE LIKP-VBELN, "delivery number
POSNR LIKE LIPS-POSNR, "delivery item number
WADAT LIKE LIKP-WADAT, "planned GI date
WADAT_IST LIKE LIKP-WADAT_IST, "actual GI date
LFIMG LIKE LIPS-LFIMG, "actual qty delivered
ERDAT LIKE LIKP-ERDAT, "date created
ERZET LIKE LIKP-ERZET, "time created
END OF ITAB3.
define internal table for SO item / delivery cross reference
DATA: BEGIN OF ITAB4 OCCURS 0,
VBELV LIKE VBFA-VBELV, "sales document
POSNV LIKE VBFA-POSNV, "sales document item
VBELN LIKE VBFA-VBELN, "delivery number
POSNN LIKE VBFA-POSNN, "delivery item
VBTYP_N LIKE VBFA-VBTYP_N, "document category
RFMNG LIKE VBFA-RFMNG, "qty delivered
PLMIN LIKE VBFA-PLMIN, "plus/minus flag
END OF ITAB4.
define local variables
DATA: ORDR_QTY LIKE VBEP-WMENG, "order qty
CONF_QTY LIKE VBEP-BMENG, "confirmed qty
NOCONF_QTY LIKE VBEP-BMENG, "qty not confirmed
DELV_QTY LIKE VBEP-WMENG, "qty delivered
NODELV_QTY LIKE VBEP-WMENG, "qty not delivered
REMAIN_QTY LIKE VBEP-WMENG, "qty remain to get conf date
REQ_DATE LIKE VBEP-EDATU, "request date
COM_DATE LIKE VBEP-EDATU, "committed date
DELV_QTY1 LIKE VBEP-WMENG, "preceding delivery qty
REMAIN_QTY1 LIKE VBEP-WMENG, "qty remain to get reqest date
REMAIN_QTY2 LIKE VBEP-WMENG, "qty remain to get commit date
THIRD_QTY LIKE VBEP-WMENG, "3rd party no PO qty
SO_STOCK LIKE MSKA-KALAB, "sales order stock
ZPRICE LIKE VBAP-NETPR, "unit price USD
ADRS1(40) TYPE C, "concatenated city and region
ADRS2(45) TYPE C, "city, region and country
ADRS3(80) TYPE C, "name, city, rgn, ctry
ZCNTR TYPE I. "counter
define select options
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG DEFAULT '1000',
S_VTWEG FOR VBAK-VTWEG DEFAULT '10' NO-DISPLAY,
S_SPART FOR VBAK-SPART DEFAULT '00' NO-DISPLAY,
S_KUNNR FOR VBPA-KUNNR MATCHCODE OBJECT DEBI,
S_KUNWE FOR VBPA-KUNNR MATCHCODE OBJECT DEBI.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS:
S_BZIRK FOR VBKD-BZIRK,
S_PRCTR FOR VBAP-PRCTR,
S_MATNR FOR VBAP-MATNR MATCHCODE OBJECT MAT1,
S_ERNAM FOR VBAK-ERNAM,
S_ERDAT FOR VBAP-ERDAT.
SELECTION-SCREEN END OF BLOCK BLK1.
AT SELECTION-SCREEN.
IF S_KUNNR IS INITIAL AND S_KUNWE IS INITIAL.
MESSAGE E005(ZM) WITH TEXT-100.
ENDIF.
MAIN PROGRAM
INITIALIZATION.
INCLUDE ZSYHEADR.
START-OF-SELECTION.
PERFORM 100_GET_SO_ITEMS.
PERFORM 200_GET_NO_DELIVERY.
PERFORM 300_GET_NO_GOODS_ISSUE.
PERFORM 400_GET_PARTIAL_DELIVERY.
PERFORM 500_GET_THIRD_PARTY.
PERFORM 900_CREATE_LIST.
FORM 100_GET_SO_ITEMS
FORM 100_GET_SO_ITEMS.
get SO's for selected ship-to and sold-to customers
REFRESH TVBPA.
IF NOT S_KUNNR IS INITIAL.
SELECT VBELN POSNR PARVW KUNNR
FROM VBPA INTO TABLE TVBPA
WHERE KUNNR IN S_KUNNR AND PARVW = 'AG' AND VBELN < '0080000000'.
ENDIF.
IF NOT S_KUNWE IS INITIAL.
SELECT VBELN POSNR PARVW KUNNR
FROM VBPA APPENDING TABLE TVBPA
WHERE KUNNR IN S_KUNWE AND PARVW = 'WE' AND VBELN < '0080000000'.
ENDIF.
DESCRIBE TABLE TVBPA LINES ZCNTR.
IF ZCNTR = 0.
WRITE: /1 'No data found for selection'.
STOP.
ENDIF.
eliminate duplicate SO's
LOOP AT TVBPA.
CLEAR ITAB0.
MOVE TVBPA-VBELN TO ITAB0-VBELN.
APPEND ITAB0.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM ITAB0.
get SO detail
SELECT VBAP~VBELN VBAP~POSNR VBAP~MATNR VBAP~ARKTX VBAP~PSTYV
VBAP~KDMAT VBAP~NETWR VBAP~WAERK VBAP~KWMENG VBAP~ERDAT
VBAP~NETPR VBAP~KPEIN VBAP~PRCTR VBAK~ERNAM VBAK~AUART
VBAK~VKORG VBAK~VTWEG VBAK~VDATU VBAK~BNAME VBAK~KUNNR
VBKD~BZIRK VBKD~KURSK VBKD~BSTKD VBUP~LFGSA VBUP~FKSAA
FROM VBAP INNER JOIN VBUP ON VBUP~VBELN = VBAP~VBELN AND
VBUP~POSNR = VBAP~POSNR
INNER JOIN VBKD ON VBKD~VBELN = VBAP~VBELN AND
VBKD~POSNR = VBAP~POSNR
INNER JOIN VBAK ON VBAK~VBELN = VBAP~VBELN
INTO TABLE ITAB FOR ALL ENTRIES IN ITAB0
WHERE VBAP~VBELN = ITAB0-VBELN AND VBAP~MATNR IN S_MATNR AND
VBAP~ERDAT IN S_ERDAT AND VBAP~PRCTR IN S_PRCTR AND
VBAP~ABGRU = SPACE AND VBKD~BZIRK IN S_BZIRK AND
VBAK~VKORG IN S_VKORG AND VBAK~VTWEG IN S_VTWEG AND
VBAK~SPART IN S_SPART AND VBAK~KUNNR IN S_KUNNR AND
VBAK~ERNAM IN S_ERNAM.
IF SY-SUBRC <> 0.
WRITE: /1 'No data found for selection'.
STOP.
ENDIF.
loop thru SO items
LOOP AT ITAB.
get ship-to customer
IF NOT S_KUNWE IS INITIAL.
CLEAR TVBPA.
READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
POSNR = ITAB-POSNR PARVW = 'WE'.
IF SY-SUBRC <> 0.
READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
POSNR = '000000' PARVW = 'WE'.
ENDIF.
MOVE TVBPA-KUNNR TO ITAB-KUNWE.
ELSE.
CLEAR ITAB-KUNWE.
SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
PARVW = 'WE'.
IF SY-SUBRC <> 0.
SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
WHERE VBELN = ITAB-VBELN AND POSNR = '000000' AND
PARVW = 'WE'.
ENDIF.
ENDIF.
IF NOT ITAB-KUNWE IN S_KUNWE.
DELETE ITAB.
CONTINUE.
ENDIF.
get ship-to customer address info
SELECT SINGLE NAME1 ORT01 REGIO LAND1 FROM KNA1
INTO (ITAB-NAME1, ITAB-ORT01, ITAB-REGIO, ITAB-LAND1)
WHERE KUNNR = ITAB-KUNWE.
MODIFY ITAB.
ENDLOOP.
SORT ITAB BY VBELN POSNR.
ENDFORM.
FORM 200_GET_NO_DELIVERY
get detail for SO items w/ no deliveries for order document types
(ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 200_GET_NO_DELIVERY.
LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
AUART = 'ZPSO' OR AUART = 'ZZNC'.
select if delivery status = A (not delivered)
IF ITAB-LFGSA = 'A'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select schedule lines for SO item and write to internal table itab2a
SELECT WADAT VBELN POSNR WMENG BMENG
FROM VBEP INTO TABLE ITAB2A
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
select sched lines w/request date and write to internal table itab2b
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
select sched lines w/commit date and write to internal table itab2c
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2A BY WADAT.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
ORDR_QTY = 0.
CONF_QTY = 0.
NOCONF_QTY = 0.
calculate the unconfirmed qty for a SO item
LOOP AT ITAB2A.
CONF_QTY = CONF_QTY + ITAB2A-BMENG.
ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
ENDLOOP.
NOCONF_QTY = ORDR_QTY - CONF_QTY.
LOOP AT ITAB2A WHERE BMENG <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB2A-BMENG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB2A-BMENG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB2A-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB2A-BMENG.
ITAB1-ZDESC = 'no delivery, confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDLOOP.
get request date for SO item
IF NOCONF_QTY <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING NOCONF_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING NOCONF_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = NOCONF_QTY.
ITAB1-ZDESC = 'no delivery, not confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 300_GET_NO_GOODS_ISSUE
get detail for SO items w/deliveries and no goods issue for
doc types (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 300_GET_NO_GOODS_ISSUE.
get detail for deliveries w/no goods issue
SELECT VBELN WADAT WADAT_IST ERDAT ERZET
FROM LIKP INTO (LIKP-VBELN, LIKP-WADAT, LIKP-WADAT_IST,
LIKP-ERDAT, LIKP-ERZET)
WHERE WADAT_IST = 0.
select if actual qty delivered <> 0
CLEAR LIPS.
SELECT POSNR VGBEL VGPOS LFIMG
FROM LIPS INTO (LIPS-POSNR, LIPS-VGBEL, LIPS-VGPOS, LIPS-LFIMG)
WHERE VBELN = LIKP-VBELN AND LFIMG <> 0.
select if goods movement status on delivery = A (no goods issue)
CLEAR VBUP.
SELECT SINGLE WBSTA FROM VBUP INTO VBUP-WBSTA
WHERE VBELN = LIKP-VBELN AND POSNR = LIPS-POSNR.
IF VBUP-WBSTA = 'A'.
CLEAR ITAB3.
ITAB3-VGBEL = LIPS-VGBEL.
ITAB3-VGPOS = LIPS-VGPOS.
ITAB3-VBELN = LIKP-VBELN.
ITAB3-POSNR = LIPS-POSNR.
ITAB3-WADAT = LIKP-WADAT.
ITAB3-WADAT_IST = LIKP-WADAT_IST.
ITAB3-LFIMG = LIPS-LFIMG.
ITAB3-ERDAT = LIKP-ERDAT.
ITAB3-ERZET = LIKP-ERZET.
APPEND ITAB3.
ENDIF.
ENDSELECT.
ENDSELECT.
SORT ITAB3 BY VGBEL VGPOS VBELN POSNR.
loop thru deliveries w/no goods issue and get SO item detail
LOOP AT ITAB3.
CLEAR ITAB.
READ TABLE ITAB WITH KEY VBELN = ITAB3-VGBEL POSNR = ITAB3-VGPOS.
IF SY-SUBRC <> 0.
IF ITAB-AUART = 'ZZOR' OR ITAB-AUART = 'ZZC1' OR
ITAB-AUART = 'ZZCO' OR ITAB-AUART = 'ZZRP' OR
ITAB-AUART = 'ZZRW' OR ITAB-AUART = 'KE' OR
ITAB-AUART = 'KR' OR ITAB-AUART = 'ZCHP' OR
ITAB-AUART = 'ZPSO' OR ITAB-AUART = 'ZZNC'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select delivery qty for SO item and write to internal table
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
calculate total delivery qty for SO item
DELV_QTY = 0.
DELV_QTY1 = 0.
LOOP AT ITAB4.
IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
ITAB-AUART = 'KR').
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
determine if delivery for SO item precedes delivery w/no goods
issue (to determine request date and qty)
CLEAR LIKP.
SELECT SINGLE ERDAT ERZET
FROM LIKP INTO (LIKP-ERDAT, LIKP-ERZET)
WHERE VBELN = ITAB4-VBELN.
IF LIKP-ERDAT < ITAB3-ERDAT OR ( LIKP-ERDAT = ITAB3-ERDAT
AND LIKP-ERZET < ITAB3-ERZET ).
DELV_QTY1 = DELV_QTY1 + ITAB4-RFMNG.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDIF.
ENDLOOP.
get request dates for SO item
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
select sched lines w/commit date and write to itab2c
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
loop thru request dates and delete request date entries for
quantity(s) for preceding deliveries
REMAIN_QTY1 = DELV_QTY1.
LOOP AT ITAB2B.
IF ITAB2B-WMENG > REMAIN_QTY1.
ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
MODIFY ITAB2B.
EXIT.
ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
DELETE ITAB2B.
EXIT.
ELSE.
REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
DELETE ITAB2B.
ENDIF.
ENDLOOP.
loop thru commit dates and delete commit date entries for
quantity(s) for preceding deliveries
REMAIN_QTY2 = DELV_QTY1.
LOOP AT ITAB2C.
IF ITAB2C-ROMS1 > REMAIN_QTY2.
ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
MODIFY ITAB2C.
EXIT.
ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
DELETE ITAB2C.
EXIT.
ELSE.
REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
DELETE ITAB2C.
ENDIF.
ENDLOOP.
if planned goods issue date is 0, put qty in non-confirmed
get request date for SO item
IF ITAB3-WADAT <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB3-LFIMG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB3-LFIMG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB3-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB3-LFIMG.
ITAB1-ZDESC = 'delivery, no goods issue'.
ELSE.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB3-LFIMG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB3-LFIMG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB3-LFIMG.
ITAB1-ZDESC = 'delivery, no goods issue date'.
ENDIF.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 400_GET_PARTIAL_DELIVERY
get detail for SO items w/partial deliveries for document types
(ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 400_GET_PARTIAL_DELIVERY.
process SO items for selected order types
LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
AUART = 'ZPSO' OR AUART = 'ZZNC'.
select if delivery status = B (partially delivered)
IF ITAB-LFGSA = 'B'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select delivery qty for SO item and write to internal table
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
calculate total delivery qty for SO item
DELV_QTY = 0.
LOOP AT ITAB4.
IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
ITAB-AUART = 'KR').
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDIF.
ENDLOOP.
select schedule lines for SO item and write to internal table
REFRESH ITAB2A.
SELECT WADAT VBELN POSNR WMENG BMENG
FROM VBEP INTO TABLE ITAB2A
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
get request dates from schedule line table
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
get commit dates from schedule line table
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
SORT ITAB2A BY WADAT.
loop thru request dates and delete request date entries for
quantity(s) already delivered
REMAIN_QTY1 = DELV_QTY.
LOOP AT ITAB2B.
IF ITAB2B-WMENG > REMAIN_QTY1.
ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
MODIFY ITAB2B.
EXIT.
ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
DELETE ITAB2B.
EXIT.
ELSE.
REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
DELETE ITAB2B.
ENDIF.
ENDLOOP.
loop thru commit dates and delete request date entries for
quantity(s) already delivered
REMAIN_QTY2 = DELV_QTY.
LOOP AT ITAB2C.
IF ITAB2C-ROMS1 > REMAIN_QTY2.
ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
MODIFY ITAB2C.
EXIT.
ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
DELETE ITAB2C.
EXIT.
ELSE.
REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
DELETE ITAB2C.
ENDIF.
ENDLOOP.
ORDR_QTY = 0.
CONF_QTY = 0.
NOCONF_QTY = 0.
calculate the unconfirmed qty for SO item
LOOP AT ITAB2A.
ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
CONF_QTY = CONF_QTY + ITAB2A-BMENG.
ENDLOOP.
NOCONF_QTY = ORDR_QTY - CONF_QTY.
NODELV_QTY = ORDR_QTY - DELV_QTY.
loop thru schedule lines and process entries with no related
delivery(s)
REMAIN_QTY = DELV_QTY.
LOOP AT ITAB2A.
IF ITAB2A-BMENG <> 0.
IF ITAB2A-BMENG <= REMAIN_QTY.
REMAIN_QTY = REMAIN_QTY - ITAB2A-BMENG.
ELSE.
ITAB2A-BMENG = ITAB2A-BMENG - REMAIN_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB2A-BMENG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB2A-BMENG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB2A-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB2A-BMENG.
ITAB1-ZDESC = 'partial delivery'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
REMAIN_QTY = 0.
ENDIF.
ENDIF.
ENDLOOP.
if total unconfirmed >= total not delivered, qty is unconfirmed
IF NOCONF_QTY >= NODELV_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING NODELV_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING NODELV_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = NODELV_QTY.
ITAB1-ZDESC = 'partial delv, not confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 500_GET_THIRD_PARTY
get detail for third party SO items
FORM 500_GET_THIRD_PARTY.
process SO items for selected order types
LOOP AT ITAB WHERE PSTYV = 'TAS' AND ( AUART = 'ZZOR' OR
AUART = 'ZZC1' OR AUART = 'ZZCO' OR AUART = 'ZZRP' OR
AUART = 'ZZRW' OR AUART = 'KE' OR AUART = 'KR' OR
AUART = 'ZCHP' OR AUART = 'ZPSO' OR AUART = 'ZZNC' ).
select if billing status <> C (billed)
IF ITAB-FKSAA <> 'C'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
get request dates from schedule line table
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
get commit dates from schedule line table
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
get PO number(s) for SO item and write to internal table
REFRESH ITAB4.
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
VBTYP_N = 'V' AND RFMNG <> 0.
calculate total delivery qty for PO item
DELV_QTY = 0.
LOOP AT ITAB4.
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDLOOP.
loop thru PO's for SO item
LOOP AT ITAB4.
select delivery lines for PO item
SELECT EINDT EBELN EBELP MENGE FROM EKET
INTO (EKET-EINDT, EKET-EBELN, EKET-EBELP, EKET-MENGE)
WHERE EBELN = ITAB4-VBELN AND EBELP = ITAB4-POSNN.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING EKET-MENGE REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING EKET-MENGE COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = EKET-EINDT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = EKET-MENGE.
ITAB1-ZDESC = '3rd party item'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
APPEND ITAB1.
ENDSELECT.
ENDLOOP.
if total delivery qty < order qty, put remaining in non-confirmed
IF DELV_QTY < ITAB-KWMENG.
THIRD_QTY = ITAB-KWMENG - DELV_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING THIRD_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING THIRD_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE2 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = THIRD_QTY.
ITAB1-ZDESC = '3rd party item, no PO'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
APPEND ITAB1.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 900_CREATE_LIST
process open business detail and create list
FORM 900_CREATE_LIST.
if internal table is empty, write message and exit
DESCRIBE TABLE ITAB1 LINES ZCNTR.
IF ZCNTR = 0.
WRITE: / 'No Data Found for Selection'.
STOP.
ENDIF.
SORT ITAB1 BY KUNNR KUNWE VBELN POSNR.
loop thru sorted table and create list
LOOP AT ITAB1.
IF ITAB1-ZDATE1 = SPACE.
ITAB1-ZDATE1 = '99991231'.
ENDIF.
IF ITAB1-ZDATE3 = SPACE.
ITAB1-ZDATE3 = '99991231'.
ENDIF.
get SO item detail
CLEAR ITAB.
READ TABLE ITAB WITH KEY VBELN = ITAB1-VBELN
POSNR = ITAB1-POSNR BINARY SEARCH.
print sold-to and ship-to customer header info
AT NEW KUNWE.
CLEAR KNA1.
SELECT SINGLE NAME1 FROM KNA1 INTO KNA1-NAME1
WHERE KUNNR = ITAB1-KUNNR.
CONCATENATE ITAB-ORT01 ITAB-REGIO INTO ADRS1 SEPARATED BY ', '.
CONCATENATE ADRS1 ITAB-LAND1 INTO ADRS2 SEPARATED BY ' '.
CONCATENATE ITAB-NAME1 ADRS2 INTO ADRS3 SEPARATED BY ' '.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: /1 'Sold-to:', 10 ITAB1-KUNNR, 18 KNA1-NAME1,
56 'Ship-to:', 65 ITAB1-KUNWE, 73 ADRS3.
FORMAT RESET.
SKIP.
ENDAT.
print out backlog detail
CLEAR T171T.
SELECT SINGLE BZTXT FROM T171T INTO T171T-BZTXT
WHERE SPRAS = SY-LANGU AND BZIRK = ITAB-BZIRK.
WRITE: /1 ITAB1-VBELN,
13(6) ITAB1-POSNR NO-ZERO,
21 ITAB-MATNR,
41 ITAB-ARKTX,
83 ITAB1-ZDATE1,
95 ITAB1-ZDATE3,
107 ITAB1-ZDATE2,
119 ITAB-ERNAM,
129 ITAB-BZIRK, 135 T171T-BZTXT,
157(20) ITAB-BSTKD,
179(12) ITAB1-ZQTY1 DECIMALS 0,
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2,
225 ITAB1-ZDESC.
AT END OF VBELN.
SKIP.
ENDAT.
print footing at ship-to customer
AT END OF KUNWE.
SUM.
ULINE: /193(12), 207(16).
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: /1 'Total: Sold-to:', 18 ITAB1-KUNNR,
25 '/', 27 'Ship-to:', 36 ITAB1-KUNWE,
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2.
FORMAT RESET.
SKIP 2.
ENDAT.
AT LAST.
SUM.
ULINE: /193(12), 207(16).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE: /1 'Report Total:',
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2.
FORMAT RESET.
ENDAT.
ENDLOOP.
ENDFORM.
FORM GET_REQUEST_DATE
subroutine to get request date for SO item
FORM GET_REQUEST_DATE TABLES FTAB STRUCTURE ITAB2B
USING CONF_QTY REQ_DATE.
DATA: REMAIN LIKE VBEP-WMENG, "qty remaining
CNTR TYPE I, "loop counter
TAB_INDEX TYPE I. "table index
initialize
REMAIN = 0.
REQ_DATE = SPACE.
get first request date from table
TAB_INDEX = 1.
READ TABLE FTAB INDEX TAB_INDEX.
if request date not found, set request date to blank
IF SY-SUBRC <> 0.
REQ_DATE = SPACE.
EXIT.
ELSE.
REQ_DATE = FTAB-EDATU.
ENDIF.
calculate quantity remaining for request date
REMAIN = FTAB-WMENG - CONF_QTY.
if qty remaining > 0, update request date with qty remaining
IF REMAIN > 0.
FTAB-WMENG = REMAIN.
MODIFY FTAB INDEX TAB_INDEX.
if qty remaining = 0, delete request date (so next request
date will be used for next confirmed qty)
ELSEIF REMAIN = 0.
DELETE FTAB INDEX TAB_INDEX.
if qty remaining < 0, find next request date and update
ELSE.
CNTR = 0.
WHILE REMAIN < 0 OR CNTR < 10.
DELETE FTAB INDEX TAB_INDEX.
TAB_INDEX = TAB_INDEX + 1.
READ TABLE FTAB INDEX TAB_INDEX.
REMAIN = REMAIN + FTAB-WMENG.
CNTR = CNTR + 1.
ENDWHILE.
IF REMAIN = 0.
DELETE FTAB INDEX TAB_INDEX.
ELSEIF REMAIN > 0.
FTAB-WMENG = REMAIN.
MODIFY FTAB INDEX TAB_INDEX.
ENDIF.
ENDIF.
ENDFORM.
FORM GET_COMMIT_DATE
subroutine to get commit date for SO item
FORM GET_COMMIT_DATE TABLES CTAB STRUCTURE ITAB2C
USING CONF_QTY COM_DATE.
DATA: REMAIN LIKE VBEP-WMENG, "qty remaining
CNTR TYPE I, "loop counter
TAB_INDEX TYPE I. "table index
initialize
REMAIN = 0.
COM_DATE = SPACE.
get first commit date from table
TAB_INDEX = 1.
READ TABLE CTAB INDEX TAB_INDEX.
if request date not found, set request date to blank
IF SY-SUBRC <> 0.
COM_DATE = SPACE.
EXIT.
ELSE.
COM_DATE = CTAB-EDATU.
ENDIF.
calculate quantity remaining for request date
REMAIN = CTAB-ROMS1 - CONF_QTY.
if qty remaining > 0, update request date with qty remaining
IF REMAIN > 0.
CTAB-ROMS1 = REMAIN.
MODIFY CTAB INDEX TAB_INDEX.
if qty remaining = 0, delete request date (so next request
date will be used for next confirmed qty)
ELSEIF REMAIN = 0.
DELETE CTAB INDEX TAB_INDEX.
if qty remaining < 0, find next request date and update
ELSE.
CNTR = 0.
WHILE REMAIN < 0 OR CNTR < 10.
DELETE CTAB INDEX TAB_INDEX.
TAB_INDEX = TAB_INDEX + 1.
READ TABLE CTAB INDEX TAB_INDEX.
REMAIN = REMAIN + CTAB-ROMS1.
CNTR = CNTR + 1.
ENDWHILE.
IF REMAIN = 0.
DELETE CTAB INDEX TAB_INDEX.
ELSEIF REMAIN > 0.
CTAB-ROMS1 = REMAIN.
MODIFY CTAB INDEX TAB_INDEX.
ENDIF.
ENDIF.
ENDFORM.
END-OF-REPORT. -
hello experts
I would like to calclute the invoice value and display in the output (invoice value = VBEP-NETWR/VBEP-FKIMG) , where should i add the code? In the select stament? code help is higly appreciated.
Thanks
mohan
follows the program
Global structure of list
type-pools: slis.
tables: likp,
lips,
vbfa,
kssk,
klah,
ausp,
cabn,
vbak,
mara,
vbrk,
ser01,
vbpa,
nast,
zseri,
ltap,
pa0001,
kna1,
objk,
viqmel,
viqmma.
types: begin of i_delivery,
vbeln like likp-vbeln,
posnr like lips-posnr,
kunnr like likp-kunnr,
kunag like likp-kunag,
vkorg like vbak-vkorg,
matnr like lips-matnr,
lfart like likp-lfart,
arktx like vbap-arktx,
vgbel like lips-vgbel,
vgpos like lips-vgpos,
pstyv like lips-pstyv,
wadat type likp-wadat,
lfdat type likp-lfdat,
prodh type lips-prodh,
lfimg type lips-lfimg,
vkbur type lips-vkbur,
werks type lips-werks,
vkgrp type lips-vkgrp,
mvgr1 type lips-mvgr1,
sernr like equi-sernr,
sernp like equi-sernr,
equnr like equi-equnr,
kttxt like qpct-kurztext,
bstnk like vbak-bstnk,
vbelv like lips-vgbel,
posnv like lips-posnv,
uecha like lips-uecha,
ernam like vbak-ernam,
erdat like vbak-erdat,
serail like lips-serail,
anzsn like lips-anzsn,
auart like vbak-auart ,
netwr like vbap-netwr,
fstno like vbpa-pernr,
fstnm like pa0001-ename,
ename like pa0001-ename,
qname like ltap-qname,
name1 like kna1-name1,
name3 like kna1-name2,
pernr like vbpa-pernr,
aufnr like viqmel-aufnr,
qmnum like viqmel-qmnum,
mngrp like viqmma-mngrp,
qmcod like viqmel-qmcod,
qmcol like viqmma-mncod,
cotxt(20),
end of i_delivery.
Global structure of list
*/ Selection and Input Parameters
selection-screen begin of block block2 with frame title text-003.
select-options: s_vkorg for likp-vkorg no intervals.
select-options: s_vbeln for likp-vbeln,
s_lfart for likp-lfart,
s_kunnr for likp-kunnr,
s_erdat for likp-erdat,
s_wadat for likp-wadat,
s_werks for lips-werks,
s_matnr for lips-matnr,
s_prodh for lips-prodh,
s_qmnum for viqmel-qmnum.
selection-screen end of block block2.
selection-screen begin of block block4 with frame title text-002.
select-options: s_vbelv for vbak-vbeln,
s_auart for vbak-auart.
selection-screen end of block block4.
parameters: p_vari like disvariant-variant.
ranges: r_vbeln for likp-vbeln.
data: gt_fieldcat type slis_t_fieldcat_alv.
data: gt_outtab type i_delivery occurs 0 with header line,
rt_outtab1 type i_delivery occurs 0 with header line,
i_nast type nast occurs 0 with header line,
gt_list_top_of_page type slis_t_listheader,
gt_events type slis_t_event,
gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
data: g_repid like sy-repid,
g_count like sy-tabix.
data: begin of i_serial occurs 0,
obknr type ser01-obknr,
lief_nr type ser01-lief_nr,
posnr type ser01-posnr,
anzsn type ser01-anzsn,
end of i_serial.
data: begin of i_object_numbers occurs 0,
obknr type objk-obknr,
obzae type objk-obzae,
sernr type objk-sernr,
equnr type objk-equnr,
matnr type objk-matnr,
taser type objk-taser,
end of i_object_numbers.
data: g_save(1) type c,
g_default(1) TYPE c,
g_exit(1) type c,
gx_variant like disvariant,
g_variant like disvariant.
data: g_mnkat like viqmma-mnkat,
g_mngrp like viqmma-mngrp,
g_atinn like ausp-atinn.
Initialization fieldcatalog
initialization.
g_repid = sy-repid.
perform fieldcat_init using gt_fieldcat[].
move: 'I' to s_vkorg-sign,
'EQ' to s_vkorg-option,
'5090' to s_vkorg-low.
append s_vkorg.
move: 'I' to s_lfart-sign,
'EQ' to s_lfart-option,
'LF' to s_lfart-low.
append s_lfart.
g_save = 'A'.
perform variant_init.
Get default variant
gx_variant = g_variant.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
exporting
i_save = g_save
changing
cs_variant = gx_variant
exceptions
not_found = 2.
if sy-subrc = 0.
p_vari = gx_variant-variant.
endif.
at selection-screen on value-request for p_vari.
perform f4_for_variant.
at selection-screen.
perform pai_of_selection_screen.
Start of Selection
start-of-selection.
perform e03_eventtab_build using gt_events[].
perform select_data tables gt_outtab.
Display list
end-of-selection.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
is_variant = g_variant
i_save = g_save
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
tables
t_outtab = gt_outtab.
Forms
Initialization fieldcatalog
form fieldcat_init
using rt_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv.
data: pos type i value 1.
clear ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_s = 'Delivery'.
ls_fieldcat-seltext_m = 'Delivery'.
ls_fieldcat-key = 'X'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-seltext_s = 'Item'.
ls_fieldcat-seltext_m = 'Item'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFART'.
ls_fieldcat-seltext_s = 'Del Type'.
ls_fieldcat-seltext_m = 'Delivery Type'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VGBEL'.
ls_fieldcat-seltext_s = 'Source Doc'.
ls_fieldcat-seltext_m = 'Source Doc'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = 'Type'.
ls_fieldcat-seltext_m = 'Type'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-seltext_s = 'Customer'.
ls_fieldcat-seltext_m = 'Customer'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name1'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_s = 'Plant'.
ls_fieldcat-seltext_m = 'Plant'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = 'Material'.
ls_fieldcat-seltext_m = 'Material'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-seltext_s = 'Speciality'.
ls_fieldcat-seltext_m = 'Speciality'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PRODH'.
ls_fieldcat-seltext_s = 'Hierarchy'.
ls_fieldcat-seltext_m = 'Prod Hierarchy'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ARKTX'.
ls_fieldcat-seltext_s = 'Description'.
ls_fieldcat-seltext_m = 'Description'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERNAM'.
ls_fieldcat-seltext_s = 'Created By'.
ls_fieldcat-seltext_m = 'Created By'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-seltext_s = 'Created On'.
ls_fieldcat-seltext_m = 'Created On'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT'.
ls_fieldcat-seltext_s = 'GoodsMvt.Date'.
ls_fieldcat-seltext_m = 'Goods Mvt Date'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Shipped'.
ls_fieldcat-seltext_m = 'Serial Shipped'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNP'.
ls_fieldcat-seltext_s = 'Old Serial'.
ls_fieldcat-seltext_m = 'Old Serial'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELV'.
ls_fieldcat-seltext_s = 'Invoice'.
ls_fieldcat-seltext_m = 'Invoice'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NETWR'.
ls_fieldcat-seltext_s = 'Invoice Amt'.
ls_fieldcat-seltext_m = 'Invoice Value'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMNUM'.
ls_fieldcat-seltext_s = 'Notification'.
ls_fieldcat-seltext_m = 'Notification'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOD'.
ls_fieldcat-seltext_s = 'Rep LevKST'.
ls_fieldcat-seltext_m = 'Repair Level KST'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'COTXT'.
ls_fieldcat-seltext_s = 'CdTXT KST'.
ls_fieldcat-seltext_m = 'Repair Level Text KST'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOL'.
ls_fieldcat-seltext_s = 'Rep LevKSE'.
ls_fieldcat-seltext_m = 'Repair Level KSE'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KTTXT'.
ls_fieldcat-seltext_s = 'CdTXT KSE'.
ls_fieldcat-seltext_m = 'Repair Level Text KSE'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
endform. "fieldcat_init
Data selection
form select_data tables rt_outtab like gt_outtab[].
clear: r_vbeln[].
Read all Invoices for the Selection
select distinct h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
d~werks
into (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv,
rt_outtab-werks)
from likp as h inner join lips as d
on h~vbeln = d~vbeln
where h~vbeln in s_vbeln
and h~vkorg in s_vkorg
and h~lfart in s_lfart
and h~kunnr in s_kunnr
and h~erdat in s_erdat
and d~matnr in s_matnr
and d~werks in s_werks
and d~prodh in s_prodh
and d~vgbel in s_vbelv
and d~matnr like 'S%'.
select single * from vbak where vbeln = rt_outtab-vgbel.
if: sy-subrc eq 0.
move vbak-vbeln to rt_outtab-vgbel.
move vbak-auart to rt_outtab-auart.
endif.
select single * from mara where matnr = rt_outtab-matnr
and mtart eq 'FERT'.
check sy-subrc eq 0.
if not rt_outtab-posnv is initial.
rt_outtab-vgpos = rt_outtab-posnv.
endif.
clear: vbfa.
select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
from vbfa where vbelv eq rt_outtab-vbeln
and posnv eq rt_outtab-posnr
and vbtyp_n eq 'M'.
append rt_outtab.
if not r_vbeln-low is initial.
if r_vbeln-low gt rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
endif.
if r_vbeln-high lt rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
endif.
else.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
endif.
clear: rt_outtab.
endselect.
if not r_vbeln is initial.
move: 'I' to r_vbeln-sign,
'BT' to r_vbeln-option.
append r_vbeln.
select * into corresponding fields of table i_serial
from ser01 where lief_nr in r_vbeln.
endif.
sort i_serial.
if not i_serial[] is initial.
select * into corresponding fields of table i_object_numbers
from objk
for all entries in i_serial
where obknr eq i_serial-obknr
and taser eq 'SER01'.
endif.
sort i_object_numbers by obknr obzae.
loop at rt_outtab.
Read the Sold To Name
select single name1 into rt_outtab-name1
from kna1 where kunnr eq rt_outtab-kunnr.
Read Ship-to Customer
clear: objk.
if not rt_outtab-serail is initial.
read table i_serial with key lief_nr = rt_outtab-vbeln
posnr = rt_outtab-posnr.
if sy-subrc eq 0.
do i_serial-anzsn times.
read table i_object_numbers with key obknr = i_serial-obknr
matnr = rt_outtab-matnr
binary search.
if sy-subrc eq 0.
rt_outtab-sernr = i_object_numbers-sernr.
delete i_object_numbers index sy-tabix.
move '1' to rt_outtab-lfimg.
clear: rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.
select single aufnr qmnum equnr qmcod qmgrp qmkat
into (rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)
from viqmel where matnr = rt_outtab-matnr
and serialnr = rt_outtab-sernr
and qmart eq 'S4'
and qmnum in s_qmnum.
clear: rt_outtab-cotxt.
select single kurztext into rt_outtab-cotxt
from qpct where katalogart eq g_mnkat
and codegruppe eq g_mngrp
and code eq rt_outtab-qmcod
and sprache eq sy-langu.
Read Serial Number from Name Plate Data.
clear: klah, kssk, ausp, cabn, g_atinn.
select single atinn into (g_atinn) from cabn
where atnam = 'SBANK_SERIAL_NUMBER'.
select single atwrt
into (rt_outtab-sernp)
from ( klah as a inner join kssk as k
on aclint = kclint )
join ausp as p
on kobjek = pobjek
and p~atinn = g_atinn
and pklart = aklart
where a~klart = '002'
and a~class = 'KSE_SN_ENDOSCOPES'
and k~objek = rt_outtab-equnr.
*KSE Repair level (activity code text from KSE-SM07 code group)
clear: rt_outtab-qmcol, g_mngrp, g_mnkat.
clear: rt_outtab-qmcol.
clear: g_mnkat, g_mngrp.
select single mnkat mngrp mncod into
(g_mnkat, g_mngrp, rt_outtab-qmcol)
from viqmma where qmnum = rt_outtab-qmnum
and mngrp eq 'KSE-SM07'
and kzloesch eq space.
clear: rt_outtab-kttxt.
select single kurztext into rt_outtab-kttxt
from qpct where katalogart eq g_mnkat
and codegruppe eq g_mngrp
and code eq rt_outtab-qmcol
and sprache eq sy-langu.
rt_outtab1 = rt_outtab.
append rt_outtab1.
endif.
enddo.
endif.
endif.
endloop.
clear: rt_outtab[].
rt_outtab[] = rt_outtab1[].
sort rt_outtab by vbeln posnr.
endform.
FORM get_repname *
--> P_VBELN *
--> P_POSNR *
--> P_PERNR *
--> P_ENAME *
form get_repname using p_vbeln
p_posnr
changing p_pernr
p_ename. "
data: i_vbpa like vbpa occurs 0 with header line.
clear: i_vbpa[].
call function 'Z_DETERMINE_ACTIVE_SALES_REP'
exporting
g_salesdocument = p_vbeln
g_sales_item = p_posnr
tables
st_vbpa = i_vbpa.
read table i_vbpa index 1.
if sy-subrc = 0.
p_pernr = i_vbpa-pernr.
select single ename into p_ename
from pa0001
where pernr = i_vbpa-pernr.
endif.
endform. " get_repname
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
form e03_eventtab_build using e03_lt_events type slis_t_event.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = e03_lt_events.
read table e03_lt_events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move gc_formname_top_of_page to ls_event-form.
append ls_event to e03_lt_events.
endif.
endform.
FORM TOP_OF_PAGE *
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gt_list_top_of_page.
endform.
*& Form USER_COMMAND
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
perform display_delivery using r_ucomm
rs_selfield.
endcase.
endform.
*& Form display_delivery
form display_delivery
using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case rs_selfield-sel_tab_field.
when '1-VBELN'.
set parameter id 'VL' field rs_selfield-value.
call transaction 'VL03N' and skip first screen.
when '1-VBELV'.
set parameter id 'VF' field rs_selfield-value.
call transaction 'VF03N' and skip first screen.
endcase.
endform.
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
form variant_init.
clear g_variant.
g_variant-report = g_repid.
endform. " VARIANT_INIT
*& Form F4_FOR_VARIANT
text
--> p1 text
<-- p2 text
form f4_for_variant.
call function 'REUSE_ALV_VARIANT_F4'
exporting
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
importing
e_exit = g_exit
es_variant = gx_variant
exceptions
not_found = 2.
if sy-subrc = 2.
message id sy-msgid type 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
if g_exit = space.
p_vari = gx_variant-variant.
endif.
endif.
endform.
*& Form PAI_OF_SELECTION_SCREEN
text
form pai_of_selection_screen.
if not p_vari is initial.
move g_variant to gx_variant.
move p_vari to gx_variant-variant.
call function 'REUSE_ALV_VARIANT_EXISTENCE'
exporting
i_save = g_save
changing
cs_variant = gx_variant.
g_variant = gx_variant.
else.
perform variant_init.
endif.
endform.Well, I've made some assumptions here, but I think this will work. Of course you need to create a new field in your internal table to hold the calculated value. Here I call it INVVALUE. The issue here is that I'm a little concerned with the SELECT to VBFA, not sure that this is correct if you are trying to get the billing document.
form select_data tables rt_outtab like gt_outtab[].
clear: r_vbeln[].
* Read all Invoices for the Selection
select distinct h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
d~werks
into (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv,
rt_outtab-werks)
from likp as h inner join lips as d
on h~vbeln = d~vbeln
where h~vbeln in s_vbeln
and h~vkorg in s_vkorg
and h~lfart in s_lfart
and h~kunnr in s_kunnr
and h~erdat in s_erdat
and d~matnr in s_matnr
and d~werks in s_werks
and d~prodh in s_prodh
and d~vgbel in s_vbelv
and d~matnr like 'S%'.
select single * from vbak where vbeln = rt_outtab-vgbel.
if: sy-subrc eq 0.
move vbak-vbeln to rt_outtab-vgbel.
move vbak-auart to rt_outtab-auart.
endif.
select single * from mara where matnr = rt_outtab-matnr
and mtart eq 'FERT'.
check sy-subrc eq 0.
if not rt_outtab-posnv is initial.
rt_outtab-vgpos = rt_outtab-posnv.
endif.
clear: vbfa.
<b> select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
from vbfa where vbelv eq rt_outtab-vbeln
and posnv eq rt_outtab-posnr
and vbtyp_n eq 'M'.</b>
<b> data: xvbrp type vbrp.
select Single * from vbrp into xvbrp
where vbeln = rt_outtab-vbeln " Need to be billing document
and posnr = rt_outtab-posnr.
rt_outtab-INVVALUE = xvbrp-netwr / xvbrp-fkimg. </b>
append rt_outtab.
if not r_vbeln-low is initial.
if r_vbeln-low gt rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
endif.
if r_vbeln-high lt rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
endif.
else.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
endif.
clear: rt_outtab.
endselect.
Regards,
Rich Heilman -
Questions on BDC program statements.....
Hi,
Currently i am checking below BDC program for packing material use.
But there is a statement that i am not very clear what it is for...
PERFORM bdc_field USING 'BDC_CURSOR'
'V51VE-EXIDV(01)'.
For the 'V51VE-EXIDV(01)', here why need to add an (01) at the end. What does the (01) means??
Thanks!!!!
LOOP AT i_lips.
CLEAR: i_bdc_tab,i_msg_tab.
REFRESH: i_bdc_tab,i_msg_tab.
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'
i_lips-vbeln.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VERP_T'.
*perform bdc_field using 'LIKP-BLDAT'
* record-BLDAT_002.
PERFORM bdc_field USING 'BDC_CURSOR'
'LIPS-POSNR(01)'.
*perform bdc_field using 'LIKP-WADAT'
* record-WADAT_003.
*perform bdc_field using 'LIKP-WAUHR'
* record-WAUHR_004.
*perform bdc_field using 'LIKP-BTGEW'
* record-BTGEW_005.
*perform bdc_field using 'LIKP-GEWEI'
* record-GEWEI_006.
PERFORM bdc_dynpro USING 'SAPLV51G' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BDC_CURSOR'
'V51VE-VHILM(01)'.
PERFORM bdc_field USING 'V51VE-VHILM(01)'
'BOX'.
*Select all materails
PERFORM bdc_dynpro USING 'SAPLV51G' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=HU_MARKA'.
*Select all Boxes
PERFORM bdc_dynpro USING 'SAPLV51G' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=HUMARKHU'.
*perform bdc_field using 'V51VE-SELKZ(01)'
* record-SELKZ_01_008.
PERFORM bdc_dynpro USING 'SAPLV51G' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=HU_VERP'.
PERFORM bdc_field USING 'BDC_CURSOR'
'V51VE-EXIDV(01)'.
PERFORM bdc_dynpro USING 'SAPLV51G' '6000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'BDC_CURSOR'
'V51VE-EXIDV(01)'.
CALL TRANSACTION 'VL02N' USING i_bdc_tab
MODE p_mode
MESSAGES INTO i_msg_tab.
Message was edited by:
Hoo LaaAnd if this is a BDC running in background, or a call transaction, then placing the cursor on a given field has no effect unless it is needed for navigation to the next screen.
When you record a BDC using SHDB there are a lot of statements like this that are added in but are not needed for the BDC to work.
Another example is the "BDC_SUBSCR" field name - this does not in most cases appear to have any effect on how the BDC is processed.
Also, the recording will include fields which have default values on the screen that you do not need to overwrite with the same value from the BDC.
I often delete these statements from the recording, taking care that I understand what the impact is. You can try commenting out the line and see what difference it makes to processing.
When using a BDC for updating a lot of records, having less of these types of lines in the BDCDATA table will speed performance a bit.
Andrew -
Hi,
Pls fin the error in this program. I am unable to upload.
Regards,
Karthik
Program ID : ZRFC_RUSHORDER
Transaction Code : Z*
Description : RFC For Sales Process using Transaction Method calling
3 Transactions VA01,VL23 & VF06
Change History
Date | Programmer | Corr. # | Description
| | |
| | |
FUNCTION ZRFC_RUSHORDER .
""Local interface:
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
*" RO_HEADER STRUCTURE ZSD_HEADER
*" RO_ITEM STRUCTURE ZSD_ITEM
INTERNAL TABLES,STRUCTURES & VARIABLES
*TABLES : ZSO_CREATE_TEXT.
DATA: CTU LIKE APQI-PUTACTIVE,
MODE LIKE APQI-PUTACTIVE,
UPDATE LIKE APQI-PUTACTIVE,
GROUP LIKE APQI-GROUPID,
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE.
DATA: T_VBELN LIKE VBFA-VBELN.
data: MESSTAB1 LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE.
DATA: NODATA_CHARACTER VALUE ' '.
DATA : SORDER_FINAL LIKE VBAK-VBELN,
SORDER(15) TYPE C,
V_CODE(2) TYPE C,
V_PLANT LIKE EKPO-WERKS,
YEAR_CONVERSION(1) TYPE C.
DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
DATA : V_DATE LIKE SY-DATUM,
V_TIME LIKE SY-UZEIT.
DATA : SESSION_NAM(30) TYPE C.
CTU = ' '.
MODE = 'N'.
USER = SY-UNAME.
CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
SESSION_NAM.
GROUP = 'RUSH_ORDER'.
KEEP = 'X'.
UPDATE = 'L'.
HOLDDATE = ''.
NODATA = '/'.
SUBRC = 0.
*CREATING SESSSION
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
LOOP AT RO_HEADER.
MOVE RO_HEADER-SORDER TO SORDER.
V_PLANT = SORDER+0(4).
SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
IF SORDER+4(4) = '2005'.
YEAR_CONVERSION = 'E'.
ELSEIF SORDER+4(4) = '2006'.
YEAR_CONVERSION = 'F'.
ELSEIF SORDER+4(4) = '2007'.
YEAR_CONVERSION = 'G'.
ELSEIF SORDER+4(4) = '2008'.
YEAR_CONVERSION = 'H'.
ELSEIF SORDER+4(4) = '2009'.
YEAR_CONVERSION = 'J'.
ELSEIF SORDER+4(4) = '2010'.
YEAR_CONVERSION = 'K'.
ELSEIF SORDER+4(4) = '2011'.
YEAR_CONVERSION = 'L'.
ELSEIF SORDER+4(4) = '2012'.
YEAR_CONVERSION = 'M'.
ELSEIF SORDER+4(4) = '2013'.
YEAR_CONVERSION = 'N'.
ELSEIF SORDER+4(4) = '2014'.
YEAR_CONVERSION = 'P'.
ELSEIF SORDER+4(4) = '2015'.
YEAR_CONVERSION = 'Q'.
ELSEIF SORDER+4(4) = '2016'.
YEAR_CONVERSION = 'R'.
ELSEIF SORDER+4(4) = '2017'.
YEAR_CONVERSION = 'S'.
ELSEIF SORDER+4(4) = '2018'.
YEAR_CONVERSION = 'T'.
ELSEIF SORDER+4(4) = '2019'.
YEAR_CONVERSION = 'U'.
ELSEIF SORDER+4(4) = '2020'.
YEAR_CONVERSION = 'V'.
ELSEIF SORDER+4(4) = '2021'.
YEAR_CONVERSION = 'W'.
ELSEIF SORDER+4(4) = '2022'.
YEAR_CONVERSION = 'X'.
ELSEIF SORDER+4(4) = '2023'.
YEAR_CONVERSION = 'Y'.
ELSEIF SORDER+4(4) = '2024'.
YEAR_CONVERSION = 'Z'.
ELSEIF SORDER+4(4) = '2025'.
YEAR_CONVERSION = 'A'.
ELSEIF SORDER+4(4) = '2026'.
YEAR_CONVERSION = 'B'.
ELSEIF SORDER+4(4) = '2027'.
YEAR_CONVERSION = 'C'.
ENDIF.
CONCATENATE YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
CLEAR YEAR_CONVERSION.
CLEAR V_CODE.
CLEAR V_PLANT.
Text Element Creation for Sales order.
ZSO_CREATE_TEXT-SORDER = SORDER_FINAL.
ZSO_CREATE_TEXT-LR_NUMBER = RO_HEADER-LR_NUMBER.
ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
ZSO_CREATE_TEXT-Z003 = RO_HEADER-Z003.
ZSO_CREATE_TEXT-Z004 = RO_HEADER-Z004.
INSERT ZSO_CREATE_TEXT.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-SPART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
'ZKSO'. "AUART_001.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
RO_HEADER-VKORG. "VKORG_002.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
RO_HEADER-VTWEG. "VTWEG_003.
PERFORM BDC_FIELD USING 'VBAK-SPART'
RO_HEADER-SPART. "SPART_004.
Sales Order Date insertion.......
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKAU'.
PERFORM BDC_FIELD USING 'VBAK-VBELN'
SORDER_FINAL.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM.
WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUDAT'.
PERFORM BDC_FIELD USING 'VBAK-AUDAT'
RO_HEADER-SODATE. "Document Date
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
RO_HEADER-SODATE. "Pricing Date
Billing Screen ***********************
perform bdc_dynpro using 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-FKDAT'.
PERFORM BDC_FIELD USING 'VBKD-FKDAT'
RO_HEADER-SODATE. "Billing date
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKO1'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
RO_HEADER-SODATE. "Delivery Date.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM. "ZTERM_011.
************************Added for test 25-02******************
PERFORM BDC_FIELD USING 'RV45A-KETDAT' " CNGD FROM 'KEDAT' TO 'KETDAT'.
RO_HEADER-SODATE. "REQ DELVY DATE.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' "CNGD FROM 'RV45A' TO 'VBKD'.
RO_HEADER-SODATE. "PRICING DATE.
************************Added for test 25-02******************
*Dont DELETE, For Future Use of Inco terms 1 & 2.
*PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBKD-INCO2'.
*PERFORM BDC_FIELD USING 'VBKD-INCO1'
RO_HEADER-INCO1. "INCO1_012.
*PERFORM BDC_FIELD USING 'VBKD-INCO2'
RO_HEADER-INCO2. "INCO2_013.
Header condition types......................................
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(05)'.
IF RO_HEADER-KSCHL1 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR1.
ENDIF.
IF RO_HEADER-KSCHL2 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR2.
ENDIF.
IF RO_HEADER-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR3.
ENDIF.
*change on 11.04.2006 for adding rounding off condition type.
IF RO_HEADER-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR4.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
Dont DELETE, For Future Use of : Sales Person Data.................
*PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=HEAD'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=T\08'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=PAAN'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_024.
*perform bdc_field using 'GVS_TC_DATA-REC-PARVW(09)'
'VE'."REC-PARVW_09_025.
*perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(09)'
'0'. "REC-PARTNER_09_026.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_027.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POAN'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
*FETCHING LINE ITEM DATA.
LOOP AT RO_ITEM WHERE SORDER = RO_HEADER-SORDER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=POAN'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(02)' RO_ITEM-MATNR.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(02)' RO_ITEM-QTY.
PERFORM BDC_FIELD USING 'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
PERFORM BDC_FIELD USING 'VBAP-WERKS(02)' RO_ITEM-PLANT.
PERFORM BDC_FIELD USING 'VBAP-LGORT(02)' RO_ITEM-SLOC.
PERFORM BDC_FIELD USING 'VBAP-CHARG(02)' RO_ITEM-BATCH.
*FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
PERFORM BDC_FIELD USING 'VBAP-PSTYV(02)'
'ZANN'.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
Condition Types For The Items
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PKO1'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
Condition Type 1...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
Condition Type 2...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
Condition Type 3.............
IF RO_ITEM-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
ENDIF.
Condition Type 4..............
IF RO_ITEM-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
ENDIF.
Condition Type 5...............
IF RO_ITEM-KSCHL5 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
ENDIF.
Condition Type 6...............
IF RO_ITEM-KSCHL6 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
ENDIF.
ENDLOOP.
Saving The Sales Document
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VA01'
CTU
MODE
UPDATE.
*CALL TRANSACTION 'VA01' USING BDCDATA1
MODE
MODE 'A'
UPDATE
UPDATE 'A'
MESSAGES INTO MESSTAB.
ENDLOOP.
CALL TRANSACTION 'VA01' USING BDCDATA1
MODE 'A'
UPDATE 'A'
MESSAGES INTO MESSTAB1.
APPEND MESSTAB1.
*SELECT SINGLE VBELN INTO T_VBELN FROM VBFA
WHERE VBELV = RO_HEADER-SORDER." AND VBTYP_N = 'J'.
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' T_VBELN. "'7012000733'.
perform bdc_dynpro using 'SAPMV50A' '1000'.
perform bdc_field using 'BDC_OKCODE' '=WABU_T'. "'=SICH_T'.
**perform bdc_field using 'LIKP-BLDAT' RO_HEADER-SODATE. '27.06.2006'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-WADAT_IST'.
perform bdc_field using 'LIKP-WADAT' RO_HEADER-SODATE. " '26.05.2006'.
**perform bdc_field using 'LIKP-WAUHR' '00:00:00'.
perform bdc_field using 'LIKP-BTGEW' '10'.
perform bdc_field using 'LIKP-GEWEI' 'KG'.
perform bdc_field using 'LIKP-WADAT_IST' RO_HEADER-SODATE." '26.05.2006'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VL02N'
CTU
MODE
UPDATE.
ENDLOOP.
IF SY-SUBRC <> 0.
SUBRC = SY-SUBRC.
EXIT.
*else.
update zrush_order set PROCESSED = 'X'.
where sorder = SORDER_FINAL and
sodate = RO_HEADER-SODATE.
ENDIF.
PROCESSING OUT BOUND DELIVERY
*PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
*PERFORM BDC_FIELD USING 'BDC_CURSOR' '06/09'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=IMED' .
*PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
PROCESSING INVOICE DELIVERY
*PERFORM BDC_DYNPRO USING 'RV60SBAT' '1000'.
*PERFORM BDC_FIELD USING 'BDC_CURSOR' 'IMMEDI'.
**SELECTION SCREEN PARAMETER FOR VF06
*PERFORM BDC_FIELD USING 'VKOR1' '1000'.
*PERFORM BDC_FIELD USING 'FKDAB' ' '.
*PERFORM BDC_FIELD USING 'ALLEA' 'X'.
*PERFORM BDC_FIELD USING 'ALLEL' 'X'.
*WRITE SY-DATUM TO V_DATE.
*WRITE SY-UZEIT TO V_TIME.
*ADD '03' TO V_TIME+2(02).
*PERFORM BDC_FIELD USING 'EXDATE' V_DATE. "V_DATE.
*PERFORM BDC_FIELD USING 'EXTIME' V_TIME. "V_TIME.
*PERFORM BDC_FIELD USING 'IMMEDI' 'X'.
*PERFORM BDC_FIELD USING 'NUMBJOBS' ' '.
*PERFORM BDC_FIELD USING 'MAX_CUST' ' '.
*PERFORM BDC_FIELD USING 'UTASY' 'X'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ONLI'.
*PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
*PERFORM BDC_DYNPRO USING 'RV60SBAT' '1000'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '/E'.
*PERFORM BDC_TRANSACTION TABLES MESSTAB
*USING 'VF06'
CTU
MODE
UPDATE.
PERFORM CLOSE_GROUP USING CTU.
wait up to 2 seconds.
submit ZVF06_SCHEDULE and return.
wait up to 2 seconds.
ENDFUNCTION.y u are unable to Upload?
-
Hello experts
I have to read serial number from characteristic "SBANK_SERIAL_NUMBER" in
class "KSE_SN_ENDOSCOPEs" contained in a name plate data of a instument. i wrote the code but iam unable to see the results at output.
Thanks
SP
Program goes like this
Global structure of list
type-pools: slis.
tables: likp,
lips,
vbfa,
kssk,
klah,
vbak,
mara,
vbrk,
ser01,
vbpa,
nast,
zseri,
ltap,
pa0001,
kna1,
objk,
viqmel,
viqmma.
types: begin of i_delivery,
vbeln like likp-vbeln,
posnr like lips-posnr,
kunnr like likp-kunnr,
kunag like likp-kunag,
vkorg like vbak-vkorg,
matnr like lips-matnr,
lfart like likp-lfart,
arktx like vbap-arktx,
vgbel like lips-vgbel,
vgpos like lips-vgpos,
pstyv like lips-pstyv,
wadat type likp-wadat,
lfdat type likp-lfdat,
prodh type lips-prodh,
lfimg type lips-lfimg,
vkbur type lips-vkbur,
vkgrp type lips-vkgrp,
mvgr1 type lips-mvgr1,
sernr like objk-sernr,
sernp like equi-sernr,
equnr like equi-equnr,
bstnk like vbak-bstnk,
vbelv like lips-vgbel,
posnv like lips-posnv,
uecha like lips-uecha,
ernam like vbak-ernam,
erdat like vbak-erdat,
serail like lips-serail,
anzsn like lips-anzsn,
auart like vbak-auart ,
netwr like vbap-netwr,
fstno like vbpa-pernr,
fstnm like pa0001-ename,
ename like pa0001-ename,
qname like ltap-qname,
name1 like kna1-name1,
name3 like kna1-name2,
pernr like vbpa-pernr,
aufnr like viqmel-aufnr,
qmnum like viqmel-qmnum,
mngrp like viqmma-mngrp,
qmcod like viqmel-qmcod,
qmcol like viqmma-mncod,
qmgrp like viqmel-qmgrp,
cotxt(20),
end of i_delivery.
Global structure of list
*/ Selection and Input Parameters
selection-screen begin of block block2 with frame title text-003.
select-options: s_vkorg for likp-vkorg no intervals,
s_matnr for lips-matnr,
s_kunag for likp-kunag.
select-options: s_werks for lips-werks.
select-options: s_vbeln for vbfa-vbeln,
s_waist for likp-wadat_ist.
select-options: s_vgbel for lips-vgbel.
selection-screen end of block block2.
ranges: r_vbeln for likp-vbeln.
data: gt_fieldcat type slis_t_fieldcat_alv.
data: gt_outtab type i_delivery occurs 0 with header line,
rt_outtab1 type i_delivery occurs 0 with header line,
i_nast type nast occurs 0 with header line,
gt_list_top_of_page type slis_t_listheader,
gt_events type slis_t_event,
gc_formname_top_of_page type slis_formname value 'TOP_OF_PAGE'.
data: g_repid like sy-repid,
g_count like sy-tabix.
data: begin of i_serial occurs 0,
obknr type ser01-obknr,
lief_nr type ser01-lief_nr,
posnr type ser01-posnr,
anzsn type ser01-anzsn,
end of i_serial.
data: begin of i_object_numbers occurs 0,
obknr type objk-obknr,
sernr type objk-sernr,
matnr type objk-matnr,
taser type objk-taser,
equnr type objk-equnr,
end of i_object_numbers.
data: g_save(1) type c,
g_default(1) TYPE c,
g_exit(1) type c,
gx_variant like disvariant,
g_variant like disvariant.
data: g_mnkat like viqmma-mnkat,
g_mngrp like viqmma-mngrp.
Initialization fieldcatalog
initialization.
g_repid = sy-repid.
perform fieldcat_init using gt_fieldcat[].
move: 'I' to s_vkorg-sign,
'EQ' to s_vkorg-option,
'5090' to s_vkorg-low.
append s_vkorg.
move: 'I' to s_werks-sign,
'EQ' to s_werks-option,
'9000' to s_werks-low.
append s_werks.
g_save = 'A'.
perform variant_init.
Get default variant
gx_variant = g_variant.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
exporting
i_save = g_save
changing
cs_variant = gx_variant
exceptions
not_found = 2.
if sy-subrc = 0.
p_vari = gx_variant-variant.
endif.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
*AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
Start of Selection
start-of-selection.
*PERFORM e03_eventtab_build USING gt_events[].
perform select_data tables gt_outtab.
Display list
end-of-selection.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
is_variant = g_variant
i_save = g_save
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
tables
t_outtab = gt_outtab.
Forms
Initialization fieldcatalog
form fieldcat_init
using rt_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv.
data: pos type i value 1.
clear ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_s = 'Delivery'.
ls_fieldcat-seltext_m = 'Delivery'.
ls_fieldcat-key = 'X'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-seltext_s = 'Item'.
ls_fieldcat-seltext_m = 'Item'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFART'.
ls_fieldcat-seltext_s = 'Del Type'.
ls_fieldcat-seltext_m = 'Delivery Type'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PSTYV'.
ls_fieldcat-seltext_s = 'Category'.
ls_fieldcat-seltext_m = 'Item Category'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VGBEL'.
ls_fieldcat-seltext_s = 'Source Doc'.
ls_fieldcat-seltext_m = 'Source Doc'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = 'Type'.
ls_fieldcat-seltext_m = 'Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'BSTNK'.
ls_fieldcat-seltext_s = 'Cust PO'.
ls_fieldcat-seltext_m = 'Customer PO'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-seltext_s = 'Customer'.
ls_fieldcat-seltext_m = 'Customer'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name1'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNAG'.
ls_fieldcat-seltext_s = 'Sold-To'.
ls_fieldcat-seltext_m = 'Sold-To'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME3'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PERNR'.
ls_fieldcat-seltext_s = 'Rep'.
ls_fieldcat-seltext_m = 'Sales Rep'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ENAME'.
ls_fieldcat-seltext_s = 'Rep Name'.
ls_fieldcat-seltext_m = 'Rep Name'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'FSTNO'.
ls_fieldcat-seltext_s = 'FST'.
ls_fieldcat-seltext_m = 'FST No'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'FSTNM'.
ls_fieldcat-seltext_s = 'FST Name'.
ls_fieldcat-seltext_m = 'FST Name'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VKBUR'.
ls_fieldcat-seltext_s = 'Area'.
ls_fieldcat-seltext_m = 'Area'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VKGRP'.
ls_fieldcat-seltext_s = 'Region'.
ls_fieldcat-seltext_m = 'Region'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_s = 'Plant'.
ls_fieldcat-seltext_m = 'Plant'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = 'Material'.
ls_fieldcat-seltext_m = 'Material'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-seltext_s = 'Speciality'.
ls_fieldcat-seltext_m = 'Speciality'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial'.
ls_fieldcat-seltext_m = 'Serial'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ARKTX'.
ls_fieldcat-seltext_s = 'Description'.
ls_fieldcat-seltext_m = 'Description'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERNAM'.
ls_fieldcat-seltext_s = 'Created By'.
ls_fieldcat-seltext_m = 'Created By'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-seltext_s = 'Created On'.
ls_fieldcat-seltext_m = 'Created On'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VSTEL'.
ls_fieldcat-seltext_s = 'Ship Point'.
ls_fieldcat-seltext_m = 'Shipping Point'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT'.
ls_fieldcat-seltext_s = 'GoodsMvt.Date'.
ls_fieldcat-seltext_m = 'Goods Mvt Date'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Shipped'.
ls_fieldcat-seltext_m = 'SBANK Serial'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNP'.
ls_fieldcat-seltext_s = 'SBANK Serial'.
ls_fieldcat-seltext_m = 'SBANK Serial'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELV'.
ls_fieldcat-seltext_s = 'Invoice'.
ls_fieldcat-seltext_m = 'Invoice'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NETWR'.
ls_fieldcat-seltext_s = 'Invoice Amt'.
ls_fieldcat-seltext_m = 'Invoice Value'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFIMG'.
ls_fieldcat-seltext_s = 'Del Qty'.
ls_fieldcat-seltext_m = 'Delivery Qty'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMNUM'.
ls_fieldcat-seltext_s = 'Notification'.
ls_fieldcat-seltext_m = 'Notification'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOD'.
ls_fieldcat-seltext_s = 'KST Rep Level '.
ls_fieldcat-seltext_m = 'KST Repair Level '.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOL'.
ls_fieldcat-seltext_s = 'KSE Rep Level'.
ls_fieldcat-seltext_m = 'KSE Repair Level'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Nbr'.
ls_fieldcat-seltext_m = 'Serial Nbr'.
append ls_fieldcat to rt_fieldcat.
clear ls_fieldcat.
endform. "fieldcat_init
Data selection
form select_data tables rt_outtab like gt_outtab[].
clear: r_vbeln[].
Read all Invoices for the Selection
select distinct h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
into (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv)
from likp as h inner join lips as d
on h~vbeln = d~vbeln
where h~vbeln in s_vbeln
and h~vkorg in s_vkorg
AND h~lfart EQ 'LF'
AND h~kunnr IN s_kunnr
and h~kunag in s_kunag
AND h~erdat IN s_erdat
and d~matnr in s_matnr
AND d~prodh IN s_prodh
AND d~vgbel IN s_vbelv
and d~matnr like 'S%'.
select single * from vbak where vbeln = rt_outtab-vgbel.
if: sy-subrc eq 0.
move vbak-vbeln to rt_outtab-vgbel.
move vbak-auart to rt_outtab-auart.
endif.
select single * from mara where matnr = rt_outtab-matnr
and mtart eq 'FERT'.
check sy-subrc eq 0.
if not rt_outtab-posnv is initial.
rt_outtab-vgpos = rt_outtab-posnv.
endif.
clear: vbfa.
select single vbeln rfwrt into (rt_outtab-vbelv, rt_outtab-netwr)
from vbfa where vbelv eq rt_outtab-vgbel
and posnv eq rt_outtab-vgpos
and vbtyp_n eq 'M'.
append rt_outtab.
if not r_vbeln-low is initial.
if r_vbeln-low gt rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
endif.
if r_vbeln-high lt rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
endif.
else.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
endif.
clear: rt_outtab.
endselect.
if not r_vbeln is initial.
move: 'I' to r_vbeln-sign,
'BT' to r_vbeln-option.
append r_vbeln.
select * into corresponding fields of table i_serial
from ser01 where lief_nr in r_vbeln.
endif.
sort i_serial.
if not i_serial[] is initial.
select * into corresponding fields of table i_object_numbers
from objk
for all entries in i_serial
where obknr eq i_serial-obknr
and taser eq 'SER01'.
endif.
sort i_object_numbers by obknr.
loop at rt_outtab.
Read Ship-to Customer
SELECT SINGLE adrnr INTO vbpa-adrnr FROM vbpa
WHERE vbeln EQ rt_outtab-vgbel
AND parvw EQ 'WE'.
Read the Sold To Name
SELECT SINGLE name1 INTO rt_outtab-name1
FROM kna1 WHERE kunnr EQ rt_outtab-kunnr.
CLEAR: rt_outtab-pernr.
PERFORM get_repname USING rt_outtab-vgbel
rt_outtab-vgpos
CHANGING rt_outtab-pernr
rt_outtab-ename.
Read the Sold To Name
SELECT SINGLE name1 INTO rt_outtab-name3
FROM kna1 WHERE kunnr EQ rt_outtab-kunag.
SELECT SINGLE pernr INTO rt_outtab-fstno FROM vbpa
WHERE vbeln EQ rt_outtab-vgbel
AND parvw EQ 'P3'.
CLEAR: vbpa-adrnr.
CLEAR: pa0001.
SELECT SINGLE ename INTO rt_outtab-fstnm FROM pa0001
WHERE pernr EQ rt_outtab-fstno.
Read Ship-to Customer
clear: objk.
if not rt_outtab-serail is initial.
read table i_serial with key lief_nr = rt_outtab-vbeln
posnr = rt_outtab-posnr.
if sy-subrc eq 0.
do i_serial-anzsn times.
read table i_object_numbers with key obknr = i_serial-obknr
binary search.
if sy-subrc eq 0.
rt_outtab-equnr = i_object_numbers-equnr.
rt_outtab-sernr = i_object_numbers-sernr.
delete i_object_numbers index sy-tabix.
move '1' to rt_outtab-lfimg.
select single aufnr qmnum equnr qmcod
into (rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod)
from viqmel where kdauf = rt_outtab-vgbel
and kdpos = rt_outtab-vgpos.
AND qmnum IN s_qmnum.
check sy-subrc eq 0.
select single qmnum aufnr qmgrp qmcod from viqmel
into (rt_outtab-qmnum, rt_outtab-aufnr,
rt_outtab-qmgrp, rt_outtab-qmcod)
where equnr = rt_outtab-equnr.
<b>Read Serial Number from Name Plate Data.
clear: klah, kssk.
select single atwrt
into (rt_outtab-sernp)
into (rt_outtab-sernr)
from ( klah as a inner join kssk as k
on aclint = kclint )
join ausp as p
on kobjek = pobjek
and kclint = patinn
where a~klart = '002'
and a~class = 'KSE_SN_ENDOSCOPES'
and k~objek = rt_outtab-equnr.</b>
*KSE Repair level (activity code text from KSE-SM07 code group)
clear: rt_outtab-qmcol.
clear: g_mnkat, g_mngrp.
select single mnkat mngrp mncod into
(g_mnkat, g_mngrp, rt_outtab-qmcol)
from viqmma where qmnum = rt_outtab1-qmnum
and mngrp eq 'KSE-SM07'
and kzloesch eq space.
select single kurztext into rt_outtab1-cotxt
from qpct where katalogart eq g_mnkat
and codegruppe eq g_mngrp
and code eq rt_outtab-qmcol
and sprache eq sy-langu.
rt_outtab1 = rt_outtab.
append rt_outtab1.
endif.
enddo.
endif.
endif.
endloop.
clear: rt_outtab[].
rt_outtab[] = rt_outtab1[].
sort rt_outtab by vbeln posnr.
endform.
FORM get_repname *
--> P_VBELN *
--> P_POSNR *
--> P_PERNR *
--> P_ENAME *
form get_repname using p_vbeln
p_posnr
changing p_pernr
p_ename. "
data: i_vbpa like vbpa occurs 0 with header line.
clear: i_vbpa[].
call function 'Z_DETERMINE_ACTIVE_SALES_REP'
exporting
g_salesdocument = p_vbeln
g_sales_item = p_posnr
tables
st_vbpa = i_vbpa.
read table i_vbpa index 1.
if sy-subrc = 0.
p_pernr = i_vbpa-pernr.
select single ename into p_ename
from pa0001
where pernr = i_vbpa-pernr.
endif.
endform. " get_repname
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
form e03_eventtab_build using e03_lt_events type slis_t_event.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = e03_lt_events.
read table e03_lt_events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move gc_formname_top_of_page to ls_event-form.
append ls_event to e03_lt_events.
endif.
endform.
FORM TOP_OF_PAGE *
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gt_list_top_of_page.
endform.
*& Form USER_COMMAND
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
perform display_delivery using r_ucomm
rs_selfield.
endcase.
endform.
*& Form display_delivery
form display_delivery
using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case rs_selfield-sel_tab_field.
when '1-VBELN'.
set parameter id 'VL' field rs_selfield-value.
call transaction 'VL03N' and skip first screen.
when '1-VBELV'.
set parameter id 'VF' field rs_selfield-value.
call transaction 'VF03N' and skip first screen.
endcase.
endform.
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
form variant_init.
clear g_variant.
g_variant-report = g_repid.
endform. " VARIANT_INIT
*& Form F4_FOR_VARIANT
text
--> p1 text
<-- p2 text
form f4_for_variant.
call function 'REUSE_ALV_VARIANT_F4'
exporting
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
importing
e_exit = g_exit
es_variant = gx_variant
exceptions
not_found = 2.
if sy-subrc = 2.
message id sy-msgid type 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
if g_exit = space.
p_vari = gx_variant-variant.
endif.
endif.
endform.
*& Form PAI_OF_SELECTION_SCREEN
text
form pai_of_selection_screen.
IF NOT p_vari IS INITIAL.
move g_variant to gx_variant.
MOVE p_vari TO gx_variant-variant.
call function 'REUSE_ALV_VARIANT_EXISTENCE'
exporting
i_save = g_save
changing
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
perform variant_init.
ENDIF.
endform. " PAI_OF_SELECTION_SCREENHi,
Please try like this.
clear: klah, kssk.
<b>select single p~atwrt</b>
into (rt_outtab-sernr)
from klah as a inner join kssk as k
on aclint = kclint
<b>inner join ausp as p</b>
on kobjek = pobjek
and kclint = patinn
where a~klart = '002'
and a~class = 'KSE_SN_ENDOSCOPES'
and k~objek = rt_outtab-equnr.
Regards,
Ferry Lianto -
DELIVERY & GI PROBLEM SD:ABAP PROGRAM
HAI FRIENDS
I HAVE CREATED ONE SALES ORDER. NOW I WANT DELIVERY(VL02N) AND GOODS ISSUER FOR THAT SALES ORDER. I WANT BDC RECORDING
Program ID : ZRFC_RUSHORDER
Transaction Code : Z*
Author : Veerendra kumar E
Description : RFC For Sales Process using Session Method calling
3 Transactions VA01,VL23 & VF06
Project : KURLON
Version : 1.0
Change History
Date | Programmer | Corr. # | Description
| | |
| | |
FUNCTION ZRFC_RUSHORDER .
""Local interface:
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
*" RO_HEADER STRUCTURE ZSD_HEADER
*" RO_ITEM STRUCTURE ZSD_ITEM
INTERNAL TABLES,STRUCTURES & VARIABLES
*TABLES : ZSO_CREATE_TEXT.
DATA: CTU LIKE APQI-PUTACTIVE,
MODE LIKE APQI-PUTACTIVE,
UPDATE LIKE APQI-PUTACTIVE,
GROUP LIKE APQI-GROUPID,
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE.
DATA : SORDER_FINAL LIKE VBAK-VBELN,
SORDER(15) TYPE C,
V_CODE(2) TYPE C,
V_PLANT LIKE EKPO-WERKS,
YEAR_CONVERSION(1) TYPE C.
DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
DATA : V_DATE LIKE SY-DATUM,
V_TIME LIKE SY-UZEIT.
DATA : SESSION_NAM(30) TYPE C.
CTU = ' '.
MODE = 'N'.
USER = SY-UNAME.
CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
SESSION_NAM.
GROUP = 'RUSH_ORDER'.
KEEP = 'X'.
UPDATE = 'L'.
HOLDDATE = ''.
NODATA = '/'.
SUBRC = 0.
*CREATING SESSSION
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
LOOP AT RO_HEADER.
MOVE RO_HEADER-SORDER TO SORDER.
V_PLANT = SORDER+0(4).
SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
IF SORDER+4(4) = '2005'.
YEAR_CONVERSION = 'E'.
ELSEIF SORDER+4(4) = '2006'.
YEAR_CONVERSION = 'F'.
ELSEIF SORDER+4(4) = '2007'.
YEAR_CONVERSION = 'G'.
ELSEIF SORDER+4(4) = '2008'.
YEAR_CONVERSION = 'H'.
ELSEIF SORDER+4(4) = '2009'.
YEAR_CONVERSION = 'J'.
ELSEIF SORDER+4(4) = '2010'.
YEAR_CONVERSION = 'K'.
ELSEIF SORDER+4(4) = '2011'.
YEAR_CONVERSION = 'L'.
ELSEIF SORDER+4(4) = '2012'.
YEAR_CONVERSION = 'M'.
ELSEIF SORDER+4(4) = '2013'.
YEAR_CONVERSION = 'N'.
ELSEIF SORDER+4(4) = '2014'.
YEAR_CONVERSION = 'P'.
ELSEIF SORDER+4(4) = '2015'.
YEAR_CONVERSION = 'Q'.
ELSEIF SORDER+4(4) = '2016'.
YEAR_CONVERSION = 'R'.
ELSEIF SORDER+4(4) = '2017'.
YEAR_CONVERSION = 'S'.
ELSEIF SORDER+4(4) = '2018'.
YEAR_CONVERSION = 'T'.
ELSEIF SORDER+4(4) = '2019'.
YEAR_CONVERSION = 'U'.
ELSEIF SORDER+4(4) = '2020'.
YEAR_CONVERSION = 'V'.
ELSEIF SORDER+4(4) = '2021'.
YEAR_CONVERSION = 'W'.
ELSEIF SORDER+4(4) = '2022'.
YEAR_CONVERSION = 'X'.
ELSEIF SORDER+4(4) = '2023'.
YEAR_CONVERSION = 'Y'.
ELSEIF SORDER+4(4) = '2024'.
YEAR_CONVERSION = 'Z'.
ELSEIF SORDER+4(4) = '2025'.
YEAR_CONVERSION = 'A'.
ELSEIF SORDER+4(4) = '2026'.
YEAR_CONVERSION = 'B'.
ELSEIF SORDER+4(4) = '2027'.
YEAR_CONVERSION = 'C'.
ENDIF.
CONCATENATE YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
CLEAR YEAR_CONVERSION.
CLEAR V_CODE.
CLEAR V_PLANT.
Text Element Creation for Sales order.
ZSO_CREATE_TEXT-SORDER = SORDER_FINAL.
ZSO_CREATE_TEXT-LR_NUMBER = RO_HEADER-LR_NUMBER.
ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
ZSO_CREATE_TEXT-Z003 = RO_HEADER-Z003.
ZSO_CREATE_TEXT-Z004 = RO_HEADER-Z004.
INSERT ZSO_CREATE_TEXT.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-SPART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
'ZKSO'. "AUART_001.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
RO_HEADER-VKORG. "VKORG_002.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
RO_HEADER-VTWEG. "VTWEG_003.
PERFORM BDC_FIELD USING 'VBAK-SPART'
RO_HEADER-SPART. "SPART_004.
Sales Order Date insertion.......
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKAU'.
PERFORM BDC_FIELD USING 'VBAK-VBELN'
SORDER_FINAL.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM.
WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUDAT'.
PERFORM BDC_FIELD USING 'VBAK-AUDAT'
RO_HEADER-SODATE. "Document Date
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
RO_HEADER-SODATE. "Pricing Date
Billing Screen ***********************
perform bdc_dynpro using 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-FKDAT'.
PERFORM BDC_FIELD USING 'VBKD-FKDAT'
RO_HEADER-SODATE. "Billing date
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKO1'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
RO_HEADER-SODATE. "Delivery Date.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM. "ZTERM_011.
************************Added for test 25-02******************
PERFORM BDC_FIELD USING 'RV45A-KETDAT' " CNGD FROM 'KEDAT' TO 'KETDAT'.
RO_HEADER-SODATE. "REQ DELVY DATE.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' "CNGD FROM 'RV45A' TO 'VBKD'.
RO_HEADER-SODATE. "PRICING DATE.
************************Added for test 25-02******************
*Dont DELETE, For Future Use of Inco terms 1 & 2.
*PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBKD-INCO2'.
*PERFORM BDC_FIELD USING 'VBKD-INCO1'
RO_HEADER-INCO1. "INCO1_012.
*PERFORM BDC_FIELD USING 'VBKD-INCO2'
RO_HEADER-INCO2. "INCO2_013.
Header condition types......................................
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(05)'.
IF RO_HEADER-KSCHL1 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR1.
ENDIF.
IF RO_HEADER-KSCHL2 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR2.
ENDIF.
IF RO_HEADER-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR3.
ENDIF.
*change on 11.04.2006 for adding rounding off condition type.
IF RO_HEADER-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR4.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
Dont DELETE, For Future Use of : Sales Person Data.................
*PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=HEAD'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=T\08'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=PAAN'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_024.
*perform bdc_field using 'GVS_TC_DATA-REC-PARVW(09)'
'VE'."REC-PARVW_09_025.
*perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(09)'
'0'. "REC-PARTNER_09_026.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_027.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POAN'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
*FETCHING LINE ITEM DATA.
LOOP AT RO_ITEM WHERE SORDER = RO_HEADER-SORDER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=POAN'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(02)' RO_ITEM-MATNR.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(02)' RO_ITEM-QTY.
PERFORM BDC_FIELD USING 'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
PERFORM BDC_FIELD USING 'VBAP-WERKS(02)' RO_ITEM-PLANT.
PERFORM BDC_FIELD USING 'VBAP-LGORT(02)' RO_ITEM-SLOC.
PERFORM BDC_FIELD USING 'VBAP-CHARG(02)' RO_ITEM-BATCH.
*FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
PERFORM BDC_FIELD USING 'VBAP-PSTYV(02)'
'ZANN'.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
Condition Types For The Items
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PKO1'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
Condition Type 1...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
Condition Type 2...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
Condition Type 3.............
IF RO_ITEM-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
ENDIF.
Condition Type 4..............
IF RO_ITEM-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
ENDIF.
Condition Type 5...............
IF RO_ITEM-KSCHL5 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
ENDIF.
Condition Type 6...............
IF RO_ITEM-KSCHL6 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
ENDIF.
ENDLOOP.
Saving The Sales Document
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VA01'
CTU
MODE
UPDATE.
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' LIKP-VBELN." '7012000733'.
perform bdc_dynpro using 'SAPMV50A' '1000'.
perform bdc_field using 'BDC_OKCODE' '=SICH_T'.
*perform bdc_field using 'LIKP-BLDAT' RO_HEADER-SODATE. '27.06.2006'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-WADAT_IST'.
perform bdc_field using 'LIKP-WADAT' RO_HEADER-SODATE. " '26.05.2006'.
*perform bdc_field using 'LIKP-WAUHR' '00:00:00'.
perform bdc_field using 'LIKP-BTGEW' '10'.
perform bdc_field using 'LIKP-GEWEI' 'KG'.
perform bdc_field using 'LIKP-WADAT_IST' RO_HEADER-SODATE." '26.05.2006'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VL02N'
CTU
MODE
UPDATE.Hi,
From the explanation given, I think if you change the transaction from VL02N to VL01N this should work, because the delivery has not been created yet,
Regards, -
hi,
i am making report in alv in which i have to display the sub totals and den full total.
is it possible to display sub total in ALV acccording to material type wise or itemid wise.
plzz help me with some example.
If find useful he or she will definately rewarded.........Hi,
The following example for sub totall for ALV report..
u have to pass do_sum = 'X'. for perticuler fileds.
if it is use full answer reward me a points..
*& Report ZDEL_ALV1
*Description: This ALV interactive report is display Delivary
status
REPORT zdel_alv1 NO STANDARD PAGE HEADING LINE-SIZE 255 LINE-COUNT 60.
*TABLE DECLARATION
TABLES : likp, "Delivery Header Data
lips, "Delivery item Data
vbup. "sales document item status
TYPE-POOLS : slis.
*SRUCTURE DECLARATION
*THIS TABLE FOR HEADER DETAILS
TYPES : BEGIN OF t_likp ,
vbeln LIKE likp-vbeln, "Delivery number
kosta like vbup-kosta,
kunnr LIKE likp-kunnr, "Customer number
wadat LIKE likp-wadat, "Planned goods movement date
ernam LIKE likp-ernam, "Name of person
vkorg LIKE likp-vkorg, "Sales organization
lfart LIKE likp-lfart, "DELIVERY TYPE
ntgew LIKE likp-ntgew, "NET WEIGHT
END OF t_likp.
*THIS TABLE FOR ITEM DETAILS
TYPES : BEGIN OF t_lips ,
vbeln LIKE lips-vbeln, "Delivery number
posnr LIKE lips-posnr, "delivery item
matnr LIKE lips-matnr, "Material number
lfimg LIKE lips-lfimg, "Actual quantity delivered
ntgew LIKE lips-ntgew, "Net weight
exbwr LIKE lips-exbwr, "Externally entered posting amount
arktx LIKE lips-arktx, "Short text SO Item
END OF t_lips.
*THIS IS FOR FINAL OUTPUT
TYPES : BEGIN OF t_vbup ,
vbeln LIKE likp-vbeln, "Delivery number
kosta LIKE vbup-kosta, "Picking status/Putaway status
posnr LIKE vbup-posnr, "delivery item
matnr LIKE lips-matnr, "Material number
lfimg LIKE lips-lfimg, "Actual quantity delivered
ntgew LIKE lips-ntgew, "Net weight
exbwr LIKE lips-exbwr, "Externally entered posting amount
arktx LIKE lips-arktx, "SHORT text SO Item
description(20), "for display text
END OF t_vbup.
*INTERNAL TABLES
DATA : i_likp TYPE STANDARD TABLE OF t_likp.
DATA : i_lips TYPE STANDARD TABLE OF t_lips.
DATA : i_vbup TYPE STANDARD TABLE OF t_vbup.
DATA : repid LIKE sy-repid.
DATA : delivar1(10) TYPE c.
*WORK AREA
DATA : wa_likp TYPE t_likp.
DATA : wa_lips TYPE t_lips.
DATA : wa_vbup TYPE t_vbup.
DATA: i_vbup1 LIKE wa_vbup OCCURS 0 WITH HEADER LINE.
*SLIS TABLE DECLARATIONS
DATA: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_events TYPE slis_t_event,
w_events TYPE slis_alv_event,
i_fieldcat1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_layout TYPE slis_layout_alv.
*SELECTING RANGE OF VALUES
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_vbeln FOR likp-vbeln,
s_kunnr FOR likp-kunnr,
s_wadat FOR likp-wadat.
SELECTION-SCREEN END OF BLOCK b1 .
*CHOOSE ONE CHECK BOX FOR DISPLAYING THE DELIVARY STATUS
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS : cb_kostc AS CHECKBOX,"DEFAULT 'X',
cb_kosta AS CHECKBOX,
cb_kostb AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b2.
*INTIALIZATION CHECK
INITIALIZATION.
repid = sy-repid.
*START-OF-SELECTION
START-OF-SELECTION.
PERFORM get_data.
PERFORM get_field.
PERFORM GET_EVENTS.
PERFORM display.
*END-OF-SELECTION
END-OF-SELECTION.
*& Form RUCOMM
This form getting details from lips table for displaying
the item details and all select statements for delivary status
-->R_UCOMM text
-->RS_SELFIELDtext
FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE
slis_selfield.
IF rs_selfield-fieldname = 'VBELN'.
delivar1 = rs_selfield-value.
ENDIF.
IF cb_kostc = 'X'.
SELECT VBELN KOSTA FROM VBUP
INTO TABLE I_VBUP
WHERE VBELN IN DELIVAR
AND KOSTA = 'C'.
SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
WHERE VBELN EQ DELIVAR1.
REFRESH i_vbup1[].
CLEAR i_vbup1.
SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
b~arktx
INTO TABLE i_vbup
FROM vbup AS a INNER JOIN lips AS b
ON avbeln = bvbeln
WHERE a~vbeln EQ delivar1
AND kosta = 'C'.
ELSEIF cb_kosta = 'X'.
SELECT VBELN KOSTA FROM VBUP
INTO TABLE I_VBUP
WHERE VBELN IN DELIVAR
AND KOSTA = 'A'.
SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
b~arktx
INTO TABLE i_vbup
FROM vbup AS a INNER JOIN lips AS b
ON avbeln = bvbeln
WHERE a~vbeln EQ delivar1
AND kosta = 'A'.
ELSEIF cb_kostb = 'X'.
SELECT VBELN KOSTA FROM VBUP
INTO TABLE I_VBUP
WHERE VBELN IN DELIVAR
AND KOSTA = 'B'.
SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
b~arktx
INTO TABLE i_vbup
FROM vbup AS a INNER JOIN lips AS b
ON avbeln = bvbeln
WHERE a~vbeln EQ delivar1
AND kosta = 'B'.
ENDIF.
CLEAR i_vbup1.
LOOP AT i_vbup INTO wa_vbup.
i_vbup1-vbeln = wa_vbup-vbeln.
i_vbup1-kosta = wa_vbup-kosta.
IF wa_vbup-kosta = 'C'.
i_vbup1-description = 'COMPLETELY PROCESSED'.
ELSEIF wa_vbup-kosta = 'B'.
i_vbup1-description = 'PARTIALLY PROCESSED'.
ELSEIF wa_vbup-kosta = 'A'.
i_vbup1-description = 'NOT YET PROCESSED'.
ENDIF.
i_vbup1-posnr = wa_vbup-posnr.
i_vbup1-matnr = wa_vbup-matnr.
i_vbup1-lfimg = wa_vbup-lfimg.
i_vbup1-ntgew = wa_vbup-ntgew.
i_vbup1-exbwr = wa_vbup-exbwr.
i_vbup1-arktx = wa_vbup-arktx.
APPEND i_vbup1 .
ENDLOOP.
SORT i_vbup1 BY vbeln matnr lfimg.
DELETE ADJACENT DUPLICATES FROM i_vbup1 COMPARING vbeln matnr lfimg.
SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
WHERE VBELN EQ DELIVAR1.
*This function module for displaying the item details
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
it_fieldcat = i_fieldcat1[]
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_user_command = 'USER_COMMAND1'
it_events = i_events
TABLES
t_outtab = i_vbup1
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR i_vbup1.
ENDFORM. "RUCOMM
*& Form USER_COMMAND1
text
-->R_UCOMM1 text
-->RS_SELFIELDtext
FORM user_command1 USING r_ucomm1 LIKE sy-ucomm rs_selfield1 TYPE
slis_selfield.
DATA: deliv(10) TYPE c.
IF rs_selfield1 = 'VBELN'.
deliv = rs_selfield1-value.
ENDIF.
SET PARAMETER ID 'VL' FIELD delivar1.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDFORM. "USER_COMMAND1
*& Form GET_DATA
This form for getting the data from likp table
--> p1 text
<-- p2 text
FORM get_data .
SELECT VBELN KUNNR WADAT FROM LIKP INTO TABLE I_LIKP
WHERE VBELN IN S_VBELN
AND KUNNR IN S_KUNNR
AND WADAT IN S_WADAT.
REFRESH i_likp[].
CLEAR i_likp.
IF cb_kostc = 'X' AND cb_kosta = ' ' AND cb_kostb = ''.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND a~kosta = 'C'.
ELSEIF cb_kosta = 'X' AND cb_kostb = ' ' AND cb_kostc = ''.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND a~kosta = 'A'.
ELSEIF cb_kostb = 'X' AND cb_kosta = '' AND cb_kostc = ''.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND kosta = 'B'.
ELSEIF cb_kostc = 'X' AND cb_kosta = 'X' AND cb_kostb = 'X'.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND kosta NE ' '.
ENDIF.
DELETE ADJACENT DUPLICATES FROM i_likp.
ENDFORM. " GET_DATA
*& Form GET_FIELD
This form for defining the every fields from likp & lips tables
FORM get_field .
*This fields are retrieving from header table(likp)
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'VBELN'.
i_fieldcat-seltext_m = 'SALES ORDER NO'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'KUNNR'.
i_fieldcat-seltext_m = 'CUSTOMER NO'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'WADAT'.
i_fieldcat-seltext_m = 'DATE'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'ERNAM'.
i_fieldcat-seltext_m = 'NAME OF PERSON'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'VKORG'.
i_fieldcat-seltext_m = 'SALES ORGANIZATION'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'LFART'.
i_fieldcat-seltext_m = 'DELIVERY TYPE'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'NTGEW'.
i_fieldcat-seltext_m = 'NET WEIGHT'.
i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
*This fields are retrieving from item table(lips)
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'VBELN'.
i_fieldcat1-seltext_m = 'DELIVAR NO'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'POSNR'.
i_fieldcat1-seltext_m = 'DELIVERY ITEM'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'MATNR'.
i_fieldcat1-seltext_m = 'MATERIAL NO'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'LFIMG'.
i_fieldcat1-seltext_m = 'ACTUAL QUANTITY'.
i_fieldcat1-do_sum = 'X'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'NTGEW'.
i_fieldcat1-seltext_m = 'NET WEIGHT'.
i_fieldcat1-do_sum = 'X'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'EXBWR'.
i_fieldcat1-seltext_m = 'AMOUNT'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'ARKTX'.
i_fieldcat1-seltext_m = 'SHORT TEXT FOR so ITEM'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'DESCRIPTION'.
i_fieldcat1-seltext_m = 'PICKING STATUS'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
ENDFORM. " GET_FIELD
*& Form GET_EVENTS
This form defining the events
*FORM GET_EVENTS .
CLEAR W_EVENTS.
W_EVENTS-NAME = 'USER_COMMAND'.
W_EVENTS-FORM = 'RUCOMM'.
APPEND W_EVENTS TO I_EVENTS.
*ENDFORM. " GET_EVENTS
*& Form DISPLAY
This form is going to display header details from likp table
FORM display .
*This function module for displaying the header details
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = i_fieldcat[]
i_save = 'X'
it_events = i_events
TABLES
t_outtab = i_likp
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY
*& Form TOP-OF-PAGE
This form is going to display top-of-page header text
FORM top-of-page.
DATA: i_list_comments TYPE slis_t_listheader.
DATA: w_list_comments TYPE slis_listheader.
CLEAR: i_list_comments[].
w_list_comments-typ = 'H'. "H=Header, S=Selection, A=Action
w_list_comments-info = 'DELIVERY ORDER DETAILS'.
APPEND w_list_comments TO i_list_comments.
w_list_comments-typ = 'A'. " H = Header, S = Selection, A = Action
w_list_comments-info = 'Basic list'.
APPEND w_list_comments TO i_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'enjoy'
it_list_commentary = i_list_comments.
ENDFORM. "TOP-OF-PAGE
*& Form TOP_OF_PAGE
This form is going to display top-of-page item text
FORM top_of_page.
DATA: i_list_comments TYPE slis_t_listheader.
DATA: w_list_comments TYPE slis_listheader.
DATA : i_line LIKE w_list_comments-info.
CONCATENATE 'DELIVERY ITEM DETAILS :' delivar1 INTO i_line .
SEPARATED BY SPACE.
CLEAR: i_list_comments[].
w_list_comments-typ = 'H'. "H=Header, S=Selection, A=Action
w_list_comments-info = i_line.
APPEND w_list_comments TO i_list_comments.
w_list_comments-typ = 'A'. " H = Header, S = Selection, A = Action
w_list_comments-info = 'Secondary list'.
APPEND w_list_comments TO i_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'enjoy'
it_list_commentary = i_list_comments.
ENDFORM. "TOP_OF_PAGE -
Run time error in ALV editable
Hi Gurus
I am getting a run time error when I edit a field in the ALV report and press enter. The run time error is : GETWA_NOT_ASSIGNED. It says I tried to access an unassigned field symbol. I have not used any field symbols in my field catalog or anywhere. It also says that the location of the termination was : cl_gui_alv_grid .
I have to get this report working today at anycost. Any help will be very usefulYes , I have internal tables , a whole lot of them ...here is the code.
REPORT ZSCREENREPORT NO STANDARD PAGE HEADING MESSAGE-ID YE.
TABLES : VBUK ,
VEPVG ,
LIKP ,
VTTP ,
LIPS ,
LQUA ,
MAKT.
DATA : PWERKS TYPE LIPS-WERKS , PLGNUM TYPE LIPS-LGNUM.
DATA PTKNUM TYPE VTTP-TKNUM.
DATA PVBELN TYPE LIPS-VBELN.
DATA : t_toolbar type ui_functions with header line.
DATA OKCODE LIKE SY-UCOMM.
DATA S_OKCODE LIKE SY-UCOMM.
DATA B_VIEWREPORT.
DATA B_CLEARALL.
DATA B_PRINT.
DATA pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
*DATA: g_event_receiver TYPE REF TO lcl_event_receiver.
*TYPES: PR_DATA_CHANGED TYPE xxxxxx.
*TYPES: LCL_EVENT_RECEIVER TYPE .
class lcl_event_receiver definition deferred.
selection-screen begin of block b2 with frame title text-001.
selection-screen begin of block b1 with frame.
BLOCK B1 FOR FIRST SET OF SELECT OPTIONS
ALL ENTRIES ARE NECESSARY IN THIS BLOCK
SELECT-OPTIONS : S_ORG FOR LIKP-VKORG MODIF ID B1, "Sales Org
S_DISCHA FOR LIKP-VTWIV MODIF ID B1, "Dis Cha
S_DIV FOR LIKP-SPAIV MODIF ID B1, "Division
S_SPOINT FOR LIKP-VSTEL MODIF ID B1. "Shipping
"point
selection-screen end of block b1.
selection-screen begin of block b3 with frame.
*BLOCK B3 FOR PICKING DATE . THIS FIELD IS OBLIGATORY
PARAMETERS : P_DEL LIKE VBUK-KOSTK DEFAULT 'A'.
SELECT-OPTIONS : S_PICDAT FOR LIKP-KODAT OBLIGATORY ,
S_PGDAT FOR LIKP-WADAT .
selection-screen end of block b3.
selection-screen begin of block b4 with frame.
BLOCK B4 FOR SHIPMENT NUMBER / DELIVERY NUMBER. ONLY ONE CAN BE
*ENTERED
SELECT-OPTIONS: S_SHNUM FOR VTTP-TKNUM MODIF ID B2 , " Shipment
"Number
S_DENUM FOR LIKP-VBELN MODIF ID B2 . " Delivery
" Number
selection-screen end of block b4.
PARAMETERS : C_BBINS AS CHECKBOX .
selection-screen end of block b2.
RANGES : R_ORG FOR VEPVG-VKORG , "Sales Org
R_DISCHA FOR VEPVG-VTWEG , "Dis Cha
R_DIV FOR VEPVG-SPART , "Division
R_SPOINT FOR VEPVG-VSTEL , "Shipping point
R_PICDAT FOR LIKP-KODAT , " Planned Pick Date
R_PGDAT FOR LIKP-WADAT , " Planned goods issue
R_SHNUM FOR VTTK-TKNUM , " Shipment Number
R_DENUM FOR LIKP-VBELN , " Delivery Number
R_VBELN FOR VBUK-VBELN ,
R_MATNR FOR LIPS-MATNR .
DATA : BEGIN OF ITAB1 OCCURS 0.
DATA: MATL LIKE LIPS-MATNR,
QUANT LIKE LIPS-LFIMG,
UOM LIKE LIPS-VRKME,
KUNR LIKE LIKP-KUNNR ,
WERKS LIKE LIKP-WERKS,
LGNUM LIKE LIPS-LGNUM,
LGTYP LIKE LIPS-LGTYP ,
VBELN LIKE LIPS-VBELN ,
TKNUM LIKE VTTP-TKNUM.
DATA : END OF ITAB1.
DATA : BEGIN OF ITAB2 OCCURS 0.
DATA :
MATL LIKE LIPS-MATNR,
QUANT TYPE I,
UOM LIKE LIPS-VRKME,
KUNR LIKE LIKP-KUNNR.
DATA : END OF ITAB2.
DATA : BEGIN OF ITAB3 OCCURS 0.
DATA : MATL LIKE LIPS-MATNR,
QUANT LIKE LIPS-LFIMG,
UOM LIKE LIPS-VRKME,
KUNR LIKE LIKP-KUNNR.
DATA : END OF ITAB3.
DATA : BEGIN OF ITAB_VBELN OCCURS 0.
DATA : IBLN LIKE VBUK-VBELN.
DATA : END OF ITAB_VBELN.
DATA : BEGIN OF DEMANDTAB OCCURS 0.
DATA : D_MATL LIKE LIPS-MATNR,
D_MQUANT LIKE LIPS-LFIMG,
D_MUOM LIKE LIPS-VRKME,
D_QUANT LIKE LIPS-LFIMG,
D_UOM LIKE LIPS-VRKME,
D_KUNR LIKE LIKP-KUNNR.
DATA : END OF DEMANDTAB.
DATA : VMATNR LIKE LIPS-MATNR,
VKUNR LIKE LIKP-KUNNR,
VQUANT LIKE LIPS-VRKME.
DATA : BEGIN OF INVTAB OCCURS 0.
DATA : IMATL LIKE LIPS-MATNR,
IBINLOC LIKE LQUA-LGPLA,
IBATCH LIKE LQUA-CHARG,
IWARSTK LIKE LQUA-VERME,
IUOM LIKE LQUA-MEINS.
DATA : END OF INVTAB.
DATA : BEGIN OF ITABX OCCURS 0.
DATA : XMATL LIKE LIPS-MATNR,
XMATDESC LIKE MAKT-MAKTX,
XQUANT TYPE I,
XUOM LIKE LIPS-VRKME,
XBALQ TYPE I.
EXPAND.
DATA : END OF ITABX.
DATA : BEGIN OF ITABMASTER OCCURS 0 .
DATA : MMATL LIKE LIPS-MATNR,
MKUNR LIKE LIKP-KUNNR,
M_KQUANT TYPE I,
M_KUOM LIKE LIPS-VRKME,
MBINLOC LIKE LQUA-LGPLA,
MBATCH LIKE LQUA-CHARG,
MWATSTK LIKE LQUA-VERME,
M_IUOM LIKE LQUA-MEINS.
DATA : END OF ITABMASTER.
DATA : BEGIN OF ITABDESC OCCURS 0.
DATA : MATNR LIKE MAKT-MATNR,
MATDESC LIKE MAKT-MAKTX.
DATA : END OF ITABDESC.
TYPES : BEGIN OF ITABT ,
FMATL LIKE LIPS-MATNR,
FINDEX LIKE SY-TABIX,
FKEY LIKE LIPS-MATNR,
FMATDESC LIKE MAKT-MAKTX,
FQUANT LIKE LIPS-LFIMG,
FUOM LIKE ITAB1-UOM,
FKUNR LIKE LIKP-KUNNR,
F_KQUANT LIKE LIPS-LFIMG,"TYPE I,
F_KUOM LIKE LIPS-VRKME,
F_BALQUANT LIKE LIPS-LFIMG,"TYPE I,
FBINLOC LIKE LQUA-LGPLA,
FBATCH LIKE LQUA-CHARG,
FWATSTK LIKE LQUA-VERME,
F_IUOM LIKE LQUA-MEINS ,
SEL_QUANT type LIPS-LFIMG," corr_1,
END OF ITABT.
DATA : BEGIN OF FLAGTAB OCCURS 0 .
DATA : SEL_QUANT TYPE I , FKEY LIKE LIPS-MATNR.
DATA : END OF FLAGTAB.
DATA : ITAB type ITABT occurs 0 with header line .
data : itab_w like line of itab .
DATA t_layout type lvc_s_layo.
DATA: ok_code LIKE sy-ucomm .
DATA:
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container.
DATA : I_SELECTED_ROWS TYPE LVC_T_ROW,
W_SELECTED_ROWS TYPE LVC_T_ROW,
I_MODIFIED TYPE STANDARD TABLE OF ITABT,
W_MODIFIED TYPE ITABT,
WA TYPE ITABT.
*field catalogs -
DATA : WA_FIELDCAT TYPE lvc_t_fcat with header line.
data : fcat type lvc_t_fcat WITH HEADER LINE .
FIELD-SYMBOLS : <FS_FIELDCAT> TYPE LVC_S_FCAT .
DATA : V_VALID TYPE C.
clear fcat.
CLASS LCL_EVENTS_D0100 DEFINITION
CLASS LCL_EVENT_receiver DEFINITION.
PUBLIC SECTION.
METHODS :
handle_data_changed for event data_changed
of cl_gui_alv_grid
IMPORTING er_data_changed.
ENDCLASS.
data : my_application type ref to lcl_event_receiver.
CLASS LCL_EVENTS_D0100 IMPLEMENTATION
CLASS LCL_EVENT_receiver IMPLEMENTATION.
METHOD handle_data_changed.
DATA: ls_good TYPE lvc_s_modi.
DATA : L_PLANETYPE TYPE LIPS-ANZSN.
data : swapper type LIPS-ANZSN .
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN 'SEL_QUANT'.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id = ls_good-row_id
i_fieldname = ls_good-fieldname
IMPORTING
e_value = l_planetype.
*read table itab into itab_w index ls_good-row_id.
swapper = itab_w-f_balquant - l_planetype.
move swapper to itab_w-f_balquant.
modify itab FROM itab_w .
ENDCASE.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
DATA: g_event_receiver TYPE REF TO lcl_event_receiver.
INITIALIZATION.
S_PICDAT-SIGN = 'I'.
S_PICDAT-OPTION = 'BT'.
S_PGDAT-SIGN = 'I'.
S_PGDAT-OPTION = 'BT'.
S_PICDAT-LOW = SY-DATUM.
S_PICDAT-HIGH = SY-DATUM + 1.
APPEND S_PICDAT.
S_PGDAT-LOW = SY-DATUM.
S_PGDAT-HIGH = SY-DATUM + 1.
APPEND S_PGDAT.
**--VALIDATIONS--
AT SELECTION-SCREEN .
IF S_ORG IS initial AND S_DISCHA IS INITIAL AND S_DIV IS
INITIAL AND S_SPOINT IS initial AND S_SHNUM IS INITIAL AND S_DENUM IS
INITIAL .
MESSAGE E082(YE) WITH 'AT LEAST ONE FIELD MUST BE ENTERED'.
ENDIF.
DATA LV_COUNT TYPE I VALUE 0.
IF NOT S_ORG IS initial OR NOT S_DISCHA IS INITIAL OR NOT S_DIV IS
INITIAL OR NOT S_SPOINT IS initial.
lv_COUNT = 1.
ENDIF.
IF NOT S_SHNUM IS INITIAL .
LV_COUNT = LV_COUNT + 1.
ENDIF.
IF NOT S_DENUM IS INITIAL .
LV_COUNT = LV_COUNT + 1.
ENDIF.
IF LV_COUNT > 1.
MESSAGE E081(YE) WITH 'Please Enter Only in Block1 Or Block3' .
endif.
read table s_PICDAT index 1.
data: days type i.
days = s_PICDAT-high - s_PICDAT-low .
if days > 2.
message e080(YE) with 'Range can not be > 2 days'.
endif.
read table s_PGDAT index 1.
data: days2 type i.
days2 = s_PGDAT-high - s_PGDAT-low .
if days2 > 2.
message e080(YE) with 'Range can not be > 2 days'.
endif.
VALIDATIONS FOR FIRST BLOCK---------------------------------------
*IF S_SHNUM IS INITIAL AND S_DENUM IS INITIAL.
IF S_ORG IS INITIAL OR S_SPOINT IS INITIAL OR S_DISCHA IS INITIAL OR
*S_DIV IS INITIAL .
*MESSAGE E083(YE) WITH 'ALL FIELDS IN BLOCK ONE REQUIRED'.
ENDIF.
*ENDIF.
*--START OF SELECTION--
START-OF-SELECTION .
IF NOT S_ORG IS initial OR NOT S_DISCHA IS INITIAL OR NOT S_DIV IS
INITIAL OR NOT S_SPOINT IS initial.
PERFORM INPUTBLOCK1.
PERFORM TABPRINT1.
ENDIF.
IF NOT S_SHNUM IS INITIAL .
PERFORM INPUTBLOCK2 .
PERFORM TABPRINT1.
ENDIF .
IF NOT S_DENUM IS INITIAL .
PERFORM INPUTBLOCK3 .
PERFORM TABPRINT1.
ENDIF .
CLEAR ITAB2.
*LOOP AT ITABX.
R_MATNR-SIGN = 'I'.
R_MATNR-OPTION = 'EQ'.
R_MATNR-LOW = ITABX-XMATL.
APPEND R_MATNR. CLEAR R_MATNR.
*ENDLOOP.
PERFORM WARINVENTORY.
PERFORM WARMASTERUPLD.
CALL SCREEN 100.
*=====================================================
*& Module user_command_0100 input
text
MODULE USER_COMMAND_0100 INPUT.
SAVED_OKCODE = OKCODE.
S_OKCODE = OKCODE.
CLEAR OKCODE.
CASE S_OKCODE.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
LEAVE PROGRAM.
WHEN OTHERS.
call method go_grid->check_changed_data
importing
e_valid = V_VALID .
PERFORM SAVE_ITAB.
endcase.
case sy-ucomm.
when 'b_clearall'.
loop at itab.
itab-sel_quant = 30.
modify itab.
endloop.
CALL TRANSACTION 'YWMINI'.
ENDCASE.
call method go_grid->check_changed_data.
importing
e_valid = v_valid.
*LOOP AT ITAB.
*IF ITAB-SEL_QUANT NE 0.
*MOVE ITAB-SEL_QUANT TO FLAGTAB-SEL_QUANT.
*MOVE ITAB-FKEY TO FLAGTAB-FKEY.
*COLLECT FLAGTAB.
*ENDIF.
*ENDLOOP.
LOOP AT ITAB.
LOOP AT FLAGTAB WHERE FKEY = ITAB-FKEY.
ITAB-F_BALQUANT = ITAB-F_BALQUANT - FLAGTAB-SEL_QUANT.
MODIFY ITAB.
ENDLOOP.
*ENDLOOP.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
*SET PF-STATUS 'ZSTAT'.
set pf-status 'STAT'.
SET TITLEBAR 'WAVEPICK'.
*call screen 1010 .
IF go_custom_container IS INITIAL.
CREATE OBJECT go_custom_container
EXPORTING container_name = 'ALV_CONTAINER'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
set handler pr_data_changed=>on_data_changed
*for all instances.
call method go_grid->register_edit_event
exporting
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_data_changed FOR go_grid.
PERFORM xclude_toolbar.
PERFORM CREATE_FIELDCAT.
PERFORM load_data_into_grid.
ENDIF.
else .
call method my_application->refresh_table_display.
endif.
*call method go_grid->register_edit_event
*exporting
*i_event_id = cl_gui_alv_grid=>mc_evt_enter.
*CALL METHOD GO_GRID->REFRESH_TABLE_DISPLAY
perform load_data_into_grid.
CLEAR ITAB1.
READ TABLE ITAB1 .
PWERKS = ITAB1-WERKS.
PLGNUM = ITAB1-LGNUM.
PVBELN = ITAB1-VBELN.
PTKNUM = ITAB1-TKNUM.
ENDMODULE. " STATUS_0100 OUTPUT
FORM INPUTBLOCK1 *
FORM INPUTBLOCK1.
SELECT LIPSMATNR LIPSLFIMG LIPSVRKME LIKPKUNNR LIPS~WERKS
LIPS~LGNUM
LIPSLGTYP LIPSVBELN INTO TABLE ITAB1 FROM
LIPS JOIN LIKP ON LIPSVBELN = LIKPVBELN JOIN VBUK ON LIKP~VBELN =
VBUK~VBELN WHERE
LIKP~VKORG IN S_ORG AND
LIKP~VTWIV IN S_DISCHA AND
LIKP~SPAIV IN S_DIV AND
LIKP~VSTEL IN S_SPOINT AND
LIKP~KODAT IN S_PICDAT AND
LIKP~WADAT IN S_PGDAT AND
LIPS~LGTYP = '001' ." AND
*VBUK~KOSTK = 'A' .
ENDFORM .
FORM INPUTBLOCK2 *
FORM INPUTBLOCK2.
SELECT LIPSMATNR LIPSLFIMG LIPSVRKME LIKPKUNNR INTO
TABLE ITAB1
FROM LIPS JOIN LIKP ON LIPSVBELN = LIKPVBELN JOIN VTTP ON LIKP~VBELN =
VTTPVBELN JOIN VBUK ON LIKPVBELN = VBUK~VBELN WHERE
VTTP~TKNUM IN S_SHNUM
AND
LIKP~KODAT IN S_PICDAT AND
LIKP~WADAT IN S_PGDAT AND
VBUK~KOSTK = 'A'.
ENDFORM.
FORM INPUTBLOCK3 *
FORM INPUTBLOCK3 .
SELECT LIPSMATNR LIPSLFIMG LIPSVRKME LIKPKUNNR INTO
TABLE ITAB1
FROM LIPS JOIN LIKP ON LIPSVBELN = LIKPVBELN JOIN VBUK ON LIKP~VBELN =
VBUKVBELN WHERE LIKPVBELN IN
S_DENUM
AND
LIKP~KODAT IN S_PICDAT AND
LIKP~WADAT IN S_PGDAT AND
VBUK~KOSTK = 'A'.
ENDFORM.
FORM TABPRINT1 *
FORM TABPRINT1.
LOOP AT ITAB1 .
MOVE: ITAB1-MATL TO ITAB2-MATL,
ITAB1-UOM TO ITAB2-UOM,
ITAB1-KUNR TO ITAB2-KUNR,
ITAB1-QUANT TO ITAB2-QUANT.
COLLECT ITAB2.
ENDLOOP.
LOOP AT ITAB2.
MOVE ITAB2-MATL TO ITABX-XMATL.
MOVE ITAB2-QUANT TO ITABX-XQUANT.
MOVE ITAB2-UOM TO ITABX-XUOM.
MOVE ITABX-XQUANT TO ITABX-XBALQ.
COLLECT ITABX.
ENDLOOP.
clear ITABX .
LOOP AT ITABX.
R_MATNR-SIGN = 'I'.
R_MATNR-OPTION = 'EQ'.
R_MATNR-LOW = ITABX-XMATL.
APPEND R_MATNR. CLEAR R_MATNR.
ENDLOOP.
SELECT MAKTMATNR MAKTMAKTX INTO TABLE ITABDESC FROM MAKT
WHERE MAKT~MATNR IN R_MATNR .
DATA C_DESC LIKE MAKT-MAKTX.
C_DESC = '0'.
LOOP AT ITABDESC .
IF ITABDESC-MATNR = C_DESC .
DELETE ITABDESC.
ELSE .
C_DESC = ITABDESC-MATNR.
ENDIF.
ENDLOOP.
LOOP AT ITABDESC.
LOOP AT ITABX WHERE XMATL = ITABDESC-MATNR.
ITABX-XMATDESC = ITABDESC-MATDESC.
MODIFY ITABX.
ENDLOOP.
ENDLOOP.
CLEAR ITABX.
*ENDSELECT.
ENDFORM.
FORM WARINVENTORY *
FORM WARINVENTORY.
*Select matnr from LQUA
into LQUA where
matnr in r_matnr.
endselect.
*if not r_matnr-low is initial .
MESSAGE E080(YE) WITH 'NOT IN RANGE'.
SELECT LQUAMATNR LQUALGPLA LQUACHARG LQUAVERME LQUA~MEINS INTO TABLE
INVTAB FROM LQUA WHERE LQUA~MATNR
IN R_MATNR AND LQUAWERKS = ITAB1-WERKS AND LQUALGNUM = ITAB1-LGNUM AND
LQUA~LGTYP = '001' AND
NOT LQUA~LGPLA = '000'.
ENDFORM .
FORM WARMASTERUPLD *
FORM WARMASTERUPLD .
LOOP AT ITAB2.
DELETE ITAB2.
LOOP AT INVTAB WHERE IMATL = ITAB2-MATL.
MOVE: ITAB2-MATL TO ITABMASTER-MMATL ,
ITAB2-KUNR TO ITABMASTER-MKUNR,
ITAB2-QUANT TO ITABMASTER-M_KQUANT,
ITAB2-UOM TO ITABMASTER-M_KUOM ,
INVTAB-IBINLOC TO ITABMASTER-MBINLOC,
INVTAB-IBATCH TO ITABMASTER-MBATCH,
INVTAB-IWARSTK TO ITABMASTER-MWATSTK,
INVTAB-IUOM TO ITABMASTER-M_IUOM.
APPEND ITABMASTER.
DELETE INVTAB.
CLEAR INVTAB.
CLEAR ITAB2.
EXIT.
ENDLOOP.
ENDLOOP.
IF NOT INVTAB[] IS INITIAL.
LOOP AT INVTAB.
MOVE: INVTAB-IMATL TO ITABMASTER-MMATL,
INVTAB-IBINLOC TO ITABMASTER-MBINLOC,
INVTAB-IBATCH TO ITABMASTER-MBATCH,
INVTAB-IWARSTK TO ITABMASTER-MWATSTK,
INVTAB-IUOM TO ITABMASTER-M_IUOM.
ITABMASTER-MKUNR = SPACE.
ITABMASTER-M_KQUANT = SPACE.
ITABMASTER-M_KUOM = SPACE.
APPEND ITABMASTER.
ENDLOOP.
ENDIF.
*-- BEGIN ITAB UPLOAD--
DATA : MATCHK LIKE ITABX-XMATL VALUE 0.
LOOP AT ITABX.
DELETE ITAB2.
LOOP AT ITABMASTER WHERE MMATL = ITABX-XMATL.
IF ITABX-XMATL NE MATCHK .
IF ITABMASTER-MMATL = ITABX-XMATL.
MOVE:
ITABX-XMATL TO ITAB-FMATL,
ITABMASTER-MMATL TO ITAB-FKEY,
ITABX-XMATDESC TO ITAB-FMATDESC,
ITABX-XQUANT TO ITAB-FQUANT,
ITABX-XUOM TO ITAB-FUOM ,
ITABX-XBALQ TO ITAB-F_BALQUANT.
MATCHK = ITABX-XMATL.
ELSE .
MOVE ITABMASTER-MMATL TO ITAB-FKEY.
ITAB-FMATL = SPACE .
ITAB-FMATDESC = SPACE.
ITAB-FQUANT = SPACE .
ITAB-FUOM = SPACE .
ITAB-F_BALQUANT = SPACE.
ENDIF.
MOVE:
ITABMASTER-MKUNR TO ITAB-FKUNR,
ITABMASTER-M_KQUANT TO ITAB-F_KQUANT,
ITABMASTER-M_KUOM TO ITAB-F_KUOM,
ITABMASTER-MBINLOC TO ITAB-FBINLOC,
ITABMASTER-MBATCH TO ITAB-FBATCH,
ITABMASTER-MWATSTK TO ITAB-FWATSTK,
ITABMASTER-M_IUOM TO ITAB-F_IUOM.
ITAB-FINDEX = SY-TABIX.
ITAB-SEL_QUANT = 0.
APPEND ITAB.
DELETE INVTAB.
CLEAR INVTAB.
CLEAR ITABX.
*EXIT.
ENDLOOP.
ENDLOOP.
*----- END ITAB UPLOAD--
*TEST----
*LOOP AT ITABMASTER.
DELETE ITAB2.
LOOP AT ITABX WHERE XMATL = ITABMASTER-MMATL.
**IF ITABX-XMATL NE MATCHK .
*MOVE:
ITABX-XMATL TO ITAB-FMATL,
ITABX-XMATDESC TO ITAB-FMATDESC,
ITABX-XQUANT TO ITAB-FQUANT,
ITABX-XUOM TO ITAB-FUOM ,
ITABX-XBALQ TO ITAB-F_BALQUANT,
ITABMASTER-MKUNR TO ITAB-FKUNR,
ITABMASTER-M_KQUANT TO ITAB-F_KQUANT,
ITABMASTER-M_KUOM TO ITAB-F_KUOM,
ITABMASTER-MBINLOC TO ITAB-FBINLOC,
ITABMASTER-MBATCH TO ITAB-FBATCH,
ITABMASTER-MWATSTK TO ITAB-FWATSTK,
ITABMASTER-M_IUOM TO ITAB-F_IUOM.
APPEND ITAB.
DELETE INVTAB.
CLEAR INVTAB.
CLEAR ITABX.
**EXIT.
ENDLOOP.
*ENDLOOP.
*SORT ITAB BY FMATL.
*END TEST----
ENDFORM.
FORM load_data_into_grid *
FORM load_data_into_grid.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
IS_LAYOUT = t_layout
i_structure_name = 'ITABT'
IT_TOOLBAR_EXCLUDING = t_toolbar[]
CHANGING
it_outtab = ITAB[]
IT_FIELDCATALOG = fcat[]
*call method go_grid->refresh_table_display
*EXPORTING
*i_event_id = cl_gui_alv_grid=>mc_evt_modified.
i_structure_name = 'ITABT'
CHANGING
IT_OUTTAB = ITAB[]
ENDFORM.
form create_fieldcat.
CLEAR wa_fieldcat.
WA_FIELDCAT-REPTEXT = 'MATERIAL'.
WA_FIELDCAT-COLTEXT = 'MATERIAL'.
wa_fieldcat-fieldname = 'FMATL'.
wa_fieldcat-col_pos = 1.
wa_FIELDCAT-ref_table = 'ITAB'.
wa_fieldcat-outputlen = 8.
APPEND wa_fieldcat to fcat .
CLEAR wa_fieldcat.
WA_FIELDCAT-REPTEXT = 'MATERIAL'.
WA_FIELDCAT-COLTEXT = 'MATERIAL DESCRIPTION'.
wa_fieldcat-fieldname = 'FMATDESC'.
wa_fieldcat-col_pos = 2.
wa_FIELDCAT-ref_table = 'ITAB'.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat to fcat .
CLEAR wa_fieldcat.
WA_FIELDCAT-COLTEXT = 'QUANTITY'.
wa_fieldcat-fieldname = 'FQUANT'.
wa_fieldcat-col_pos = 8.
wa_FIELDCAT-ref_table = 'ITAB'.
wa_fieldcat-outputlen = 8.
WA_FIELDCAT-QUANTITY = 'VRKME'.
WA_FIELDCAT-QFIELDNAME = 'VRKME'.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'FUOM'.
wa_fieldcat-col_pos = 4.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'UOM'.
wa_fieldcat-outputlen = 4.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'FKUNR'.
wa_fieldcat-col_pos = 5.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'CUSTOMER'.
wa_fieldcat-outputlen = 8.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'F_KQUANT'.
wa_fieldcat-col_pos = 6.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'QUANTITY'.
wa_fieldcat-outputlen = 8.
WA_FIELDCAT-QUANTITY = 'VRKME'.
WA_FIELDCAT-QFIELDNAME = 'VRKME'.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'F_KUOM'.
wa_fieldcat-col_pos = 7.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'UOM'.
wa_fieldcat-outputlen = 4.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
WA_FIELDCAT-COLTEXT = 'BALANCE QTY TO PICK'.
wa_fieldcat-fieldname = 'F_BALQUANT'.
wa_fieldcat-col_pos = 8.
wa_FIELDCAT-ref_table = 'ITAB'.
wa_fieldcat-outputlen = 8.
WA_FIELDCAT-QUANTITY = 'VRKME'.
WA_FIELDCAT-QFIELDNAME = 'VRKME'.
APPEND wa_fieldcat to fcat .
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'FBINLOC'.
wa_fieldcat-col_pos = 9.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'BIN LOCATION'.
wa_fieldcat-outputlen = 8.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'FBATCH'.
wa_fieldcat-col_pos = 10.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'BATCH'.
wa_fieldcat-outputlen = 8.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'FWATSTK'.
wa_fieldcat-col_pos = 11.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'WAREHOUSE STK'.
wa_fieldcat-outputlen = 8.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'F_IUOM'.
wa_fieldcat-col_pos = 12.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'UOM'.
wa_fieldcat-outputlen = 4.
APPEND wa_fieldcat to fcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'SEL_QUANT'.
wa_fieldcat-col_pos = 13.
wa_FIELDCAT-ref_table = 'ITAB'.
WA_FIELDCAT-COLTEXT = 'SELECTED QTY'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-outputlen = 8.
WA_FIELDCAT-QUANTITY = 'VRKME'.
WA_FIELDCAT-QFIELDNAME = 'VRKME'.
APPEND wa_fieldcat to fcat.
*LOOP AT FCAT ASSIGNING <FS_FIELDCAT>.
*CASE <FS_FIELDCAT>-FIELDNAME.
*WHEN 'SEL_QUANT'.
*<FS_FIELDCAT>-EDIT = 'X'.
*ENDCASE.
*ENDLOOP.
*CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
*EXPORTING
*I_STRUCTURE_NAME = 'ITABT'
*CHANGING
*CT_FIELDCATALOG = FCAT.
*LOOP AT FCAT ASSIGNING <FS_FIELDCAT>.
*CASE <FS_FIELDCAT>-FIELDNAME.
*WHEN 'SEL_QUANT'.
*<FS_FIELDCAT>-EDIT = 'X'.
*ENDCASE.
*ENDLOOP.
endform.
form xclude_toolbar .
t_toolbar = '&DETAIL'.
append t_toolbar.
t_toolbar = '&&SEP00'.
append t_toolbar.
t_toolbar = '&&SEP01'.
append t_toolbar.
t_toolbar = '&&SEP02'.
append t_toolbar.
t_toolbar = '&SORT_ASC'.
append t_toolbar.
t_toolbar = '&SORT_DSC'.
append t_toolbar.
t_toolbar = '&FIND'.
append t_toolbar.
t_toolbar = '&MB_FILTER'.
append t_toolbar.
t_toolbar = '&&SEP04'.
append t_toolbar.
t_toolbar = '&MB_SUM'.
append t_toolbar.
t_toolbar = '&MB_SUB_TOTAL'.
append t_toolbar.
t_toolbar = '&PRINT_BACK'.
append t_toolbar.
t_toolbar = '&MB_VIEW'.
append t_toolbar.
t_toolbar = '&MB_EXPORT'.
append t_toolbar.
t_toolbar = '&GRAPH'.
append t_toolbar.
t_toolbar = '&COLO'.
append t_toolbar.
t_toolbar = '&&SEP06'.
append t_toolbar.
t_toolbar = '&&SEP07'.
append t_toolbar.
t_toolbar = '&INFO'.
append t_toolbar.
t_toolbar = '&&SEP03'.
append t_toolbar.
endform.
FORM SAVE_ITAB.
*CALL METHOD GO_GRID->GET_SELECTED_ROWS
*IMPORTING
*ET_INDEX_ROWS = I_SELECTED_ROWS.
*LOOP AT I_SELECTED_ROWS INTO W_SELECTED_ROWS.
*READ TABLE ITAB INTO WA INDEX W_SELECTED_ROWS-INDEX.
*IF SY-SUBRC EQ 0.
*MOVE-CORRESPONDING WA TO W_MODIFIED.
*APPEND W_MODIFIED TO I_MODIFIED.
*ENDIF.
*ENDLOOP.
*MODIFY ITAB FROM TABLE I_MODIFIED.
*ENDFORM.
ENDFORM. -
UPDATE of Delivery via shipment
Hi,
I want to make an update on the delivery Goods Issue date
(LIKP-WADAT) when there is a change on the relevant shipment completion date (VTTK-DPABF) of this delivery.
But I do not want to make a direct update.
Because of change logs in the delivery !
I've used a BADI but it creates locks on the deliveries because of the commit work in the badi and my "call transaction" command did not work.
Which is best way to do it ?
Please help.
Best.
eviento.Hi,
Could someone tell me the parameters I have to pass to change the planned GI on the delivery.
I am currently passing
VBKOK_WA-VBELN_VL = 'delivery number'
VBKOK_WA-vbtyp_vl = 'J'
VBKOK_WA-KZWAD = 'X'
VBKOK_WA-WADAT = 'NEW Planned GI date'
COMMIT = 'X'
and delivery VBKOK_WA-VBELN_VL
should that be enough to change the date ?
Maybe you are looking for
-
Can't drag and drop into Preview's sidebar
Most of the time that I try to drag and drop image into Preview's sidebar (OS10.5.2), it doesn't work -- no cursor, no nothin'. Strangely enough, I can open one or more of the very same images using "open" in the menu, but I can't drag them from one
-
Can I use iTunes in iMovie?
Can I use songs I have purchased at the iTunes Store in my iMovie projects? This would be strictly for home use, not for any commercial purpose. Would I have to do a file conversion?
-
Nexus N7K Sup 1 replacement to SUP2E rollback plan and EPLD upgrad time.
Dear Expert, My customer has N7K SUP1 with HA as below and I need to replace 2 with SUP2E 6.1.2 from SUP1(6.1.1). As per Cisco document, it is required EPLD upgrade from SUP1 to SUP2E with Fabric-2 module, but there is no guide time for EPLD. Mod P
-
How to Change POs before to be sent to the supplier
Hi gurus, My client needs in some cases make some changes manually in the PO (before the PO is sent to the supplier). All PO comes from SC initially, where is the WF. However, there are some functionalities that only the PO has, for instance, schedul
-
Issues with Samsung SSD after Mavericks
I bought a Samsung SSD 830 in the Summer of 2011 (for my Mid 2010 MacBook Pro), and it's been working fantastically until I upgraded to Mavericks. What's peculiar is that my computer works fine when it's plugged in to my Time Machine external HD via