Select on VBRK
Hi Xperts,
very simple, following query takes long time.......pls suggest alternative.
SELECT * INTO TABLE IT_VBRK FROM VBRK
WHERE ( FKDAT >= FIRST_DATE AND FKDAT <= LAST_DATE )
and VBTYP = 'M' AND FKSTO <> 'X'.
Dear all,
Heartly thanks to everybody for their contribution in soultioning.
I tried with everything you all have suggested............sorry to say but nothing works.
This single query takes over all 80-90% of processing time of whole program.
It fetches around 12299 entries from VBRK table.
Hence, I am planning to write another program which fetch data and keep in dataset. My actual (main ) program will get data from dataset and do further processing.
How's this alternative, is it recommended.............???
Pls suggest.
Thanks & Regards,
Chetan Joshi.
Similar Messages
-
Select statement not populating the internal table
Hi,
I have a requirement where I have to upload a file from C drive, the fields in this file are VBELN, description & date of creation.
I am able to get this file into the internal table. After this i need to cross check the VBELN against VBRK-VBELN, if present then update a Z-table.... How do I do the cross check part ?...
if not tw_zvatcn[] is initial,
select * from vbrk
into table tw_vbrk
for all entries in tw_zvatcn
where vbeln = tw_zvztcn-vbeln
and vkorg = p_vkorg.
if sy-subrc = 0.
modify ztzb from lw_zvatcn.
endif.
endif.
Internal table tw_vbrk is coming blank, which is not correct because I see the data in db tbl VBRKIs p_vkorg a parameter or select option.
If it is parameter and is blank you will not get data in the table.
In that case make a condition for that field also.
if not tw_zvatcn[] is initial.
if p_vkorg is not initial.
select * from vbrk
into table tw_vbrk
for all entries in tw_zvatcn
where vbeln = tw_zvztcn-vbeln
and vkorg = p_vkorg.
if sy-subrc = 0.
modify ztzb from lw_zvatcn.
endif.
else.
select * from vbrk
into table tw_vbrk
for all entries in tw_zvatcn
where vbeln = tw_zvztcn-vbeln.
if sy-subrc = 0.
modify ztzb from lw_zvatcn.
endif.
endif.
endif. -
Find total quantity from vbrk and vbrp
Hi frinds doing a report to display sales in 3 month 6 month snd past 12 months but didnt get logic to find out
here is my code
SELECT vbrk~vbeln
vbrk~fkdat
vbrp~fkimg
vbrp~matnr
vbrp~werks
INTO CORRESPONDING FIELDS OF TABLE iquan
FROM vbrk INNER JOIN
vbrp ON vbrkvbeln = vbrpvbeln
WHERE vbrk~fkdat >= w_date " w_date =past 12month
AND vbrp~matnr IN s_matnr " = imatr-matnr
AND vbrp~werks IN s_werks. " = imatr-werks
**now how to find the total sales quantity
i tried in this way its not working "iquan is same as iquan1 with added added sales field.
LOOP AT iquan.
READ TABLE iquan1 WITH KEY matnr = iquan-matnr
werks = iquan-werks.
IF sy-subrc = 0.
IF w_date3 LE iquan-fkdat.
w_tot3 = w_tot3 + iquan-fkimg.
ELSEIF
w_date2 LE iquan-fkdat.
w_tot2 = w_tot2 + iquan-fkimg.
ELSEIF
w_date1 LE iquan-fkdat.
w_tot1 = w_tot1 + iquan-fkimg.
ENDIF.
iquan-sale12 = w_tot1.
iquan-sale6 = w_tot2.
iquan-sale3 = w_tot3.
ENDIF.
MODIFY iquan.
ENDLOOP.
*PLs pls pls pls help me with code or suggestion
0ut put shpuld be
material plant sales 3months 6months 12 months
01 0040 130 00.00 120
regardsHi Farukh,
Try this code. This will definitely help you.
<b>REPORT ZTEST .</b>
<b>TABLES:</b> VBRK,
VBRP.
<b>SELECT-OPTIONS :</b>
s_matnr FOR VBRP-MATNR,
S_WERKS FOR VBRP-WERKS.
<b>DATA:</b> BEGIN OF STRUCT,
matnr LIKE vbrp-matnr,
werks LIKE vbrp-werks,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat,
fkimg LIKE vbrp-fkimg,
sale6 LIKE vbrp-fkimg,
sale12 LIKE vbrp-fkimg,
sale3 LIKE vbrp-fkimg,
END OF STRUCT,
IQUAN LIKE TABLE OF STRUCT WITH HEADER LINE,
IQUAN1 LIKE TABLE OF IQUAN WITH HEADER LINE.
<b>DATA:</b> w_tot1 LIKE iquan-fkimg,
w_tot2 LIKE iquan-fkimg,
w_tot3 LIKE iquan-fkimg.
<b>DATA:</b> W_DATE1 LIKE SY-DATUM,
W_DATE2 LIKE SY-DATUM,
W_DATE3 LIKE SY-DATUM.
**assign dates
W_DATE1 = '20051107' .
W_DATE2 = '20060507' .
W_DATE3 = '20060807'.
<b>SELECT</b> vbrk~vbeln
vbrk~fkdat
vbrp~fkimg
vbrp~matnr
vbrp~werks
INTO CORRESPONDING FIELDS OF TABLE iquan
FROM vbrk INNER JOIN
vbrp ON vbrkvbeln = vbrpvbeln
WHERE vbrk~fkdat >= w_date1 " w_date1 =past 12month
AND vbrp~matnr IN s_matnr " = imatr-matnr
AND vbrp~werks IN s_werks. " = imatr-werks
<b>SORT</b> IQUAN BY MATNR WERKS.
IQUAN1[] = IQUAN[].
<b>LOOP AT iquan.</b>
READ TABLE iquan1 WITH KEY matnr = iquan-matnr
werks = iquan-werks.
IF sy-subrc = 0.
"w_date3 : PAST 3 MONTHS
IF w_date3 LE iquan-fkdat.
w_tot3 = w_tot3 + iquan-fkimg.
ELSEIF
"w_date2 : PAST 6 MONTHS
w_date2 LE iquan-fkdat.
w_tot2 = w_tot2 + iquan-fkimg.
ELSEIF
"w_date1 : PAST 12 MONTHS
w_date1 LE iquan-fkdat.
w_tot1 = w_tot1 + iquan-fkimg.
ENDIF.
iquan-SALE12 = w_tot1.
iquan-sale6 = w_tot2.
iquan-Sale3 = w_tot3.
ENDIF.
<b> MODIFY iquan.</b>
ENDLOOP.
<b>LOOP AT IQUAN.</b>
STRUCT = IQUAN.
<b>AT END OF WERKS.</b>
<b>WRITE:/</b>
STRUCT-matnr, ' ',
STRUCT-werks, ' ',
STRUCT-sale6, ' ',
STRUCT-sale12, ' ',
STRUCT-sale3.
ENDAT.
<b>ENDLOOP.</b>
<b>The output is:</b>
9767A002AA 3201 10,255.000 0.000 0.000
C9138-60001 3201 10,255.000 2,000.000 0.000
C9361-30001 3201 10,255.000 2,004.000 0.000
Hope this will solve your purpose.
Regards,
Pragya -
Combinataion between VBRK AND LIPS
hi,
I have a requirement, where i have to combine two tables , which doesnt have any field in common. but i have to combine the tables
VBRK and LIPS.
from lips
i have to select matnr and lfimg.
from vbrk, i have to take vkorg,vtweg, kunrg.
how can i take the materials from lips for the partiicular VKORG or KUNRG.?
the only possible link, i have got is linking vbuk with both the tables.since the vbuk-vbeln hold the vbeln of both these tables.
i m not willing to use join also.
I prefer for all entries.
can some one help me out with the codes.hi,
DATA:it_lips LIKE lips OCCURS 0 WITH HEADER LINE.
DATA:it_vbrp LIKE vbrp OCCURS 0 WITH HEADER LINE.
DATA:it_vbrk LIKE vbrk OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
SELECT * FROM lips
INTO TABLE it_lips
UP TO 1000 ROWS.
*where vbeln in s_vbeln and matnr in s_matnr.
IF NOT it_lips[] IS INITIAL.
SELECT * FROM vbrp INTO TABLE it_vbrp
FOR ALL ENTRIES IN it_lips
WHERE vgbel = it_lips-vbeln
AND vgpos = it_lips-posnr
AND vgtyp = 'J'.
ENDIF.
IF NOT it_vbrp[] IS INITIAL.
SELECT * FROM vbrk INTO TABLE it_vbrk
FOR ALL ENTRIES IN it_vbrp
WHERE vbeln = it_vbrp-vbeln.
ENDIF.
LOOP AT it_vbrk.
WRITE: / it_vbrk-vbeln,it_vbrk-vkorg,it_vbrk-vtweg,it_vbrk-kunrg.
ENDLOOP.
( If you are not getting entries into it_lips means you have to use conversion exit function module for vbeln in the tbale s_vbeln )
Regds
Sivaparvathi
Please dont forget to reward points if helpful..
Edited by: Siva Parvathi on Jan 10, 2008 8:50 AM -
How to split this select query
Hi all,
Can any one help me to split this single select query into 9 select query.
select KNA1STCEG VBRKBUKRS VBRKVKORG VBRKVBELN VBRKFKDAT VBRKFKART VBRKVBTYP VBRKVBUND VBRKKUNAG VBRKKUNRG VBRK~NETWR
VBRKWAERK VBRKFKSTO VBRKSFAKN VBRKLAND1 T001WKUNNR VBRPPOSNR VBRPWERKS VBRPFKIMG VBRPVRKME VBRPPRSDT
VBRPNETWR VBRPVGBEL VBRPVGPOS VBRPMATNR VBRPPRCTR VBRPCHARG VBRPAUBEL VBRPAUPOS VBRPVBELN T001WAERS T001~BUKRS
MBEWSTPRS MBEWPEINH MBEWMATNR MBEWBWKEY LIKPLFART LIKPWERKS LIKPVBELN MBEW_RECVSTPRS MBEW_RECV~PEINH
MBEW_RECVBWKEY MBEW_RECVMATNR CKMLCRBDATJ CKMLCRPOPER CKMLCRSTPRS CKMLCRWAERS CKMLCRPEINH CKMLCRCURTP
CKMLCRKALNR CKMLCR_RECVSTPRS CKMLCR_RECVWAERS CKMLCR_RECVPEINH CKMLCR_RECVCURTP CKMLCR_RECVBDATJ CKMLCR_RECV~POPER
CKMLCR_RECV~KALNR
from ( KNA1
left outer join VBRK
on VBRKKUNRG = KNA1KUNNR
inner join T001W
on T001WKUNNR = VBRKKUNAG
inner join VBRP
on VBRPVBELN = VBRKVBELN
inner join T001
on T001BUKRS = VBRKBUKRS
left outer join MBEW
on MBEWMATNR = VBRPMATNR
and MBEWBWKEY = VBRPWERKS
left outer join LIKP
on LIKPVBELN = VBRPVGBEL
inner join MBEW as MBEW_RECV
on MBEW_RECVBWKEY = T001WBWKEY
and MBEW_RECVMATNR = VBRPMATNR
inner join CKMLCR
on CKMLCRKALNR = MBEWKALN1
inner join CKMLCR as CKMLCR_RECV
on CKMLCR_RECVKALNR = MBEW_RECVKALN1 )
where VBRP~WERKS in SP$00005
and VBRP~MATNR in SP$00008
and VBRP~CHARG in SP$00009
and VBRP~AUBEL in SP$00017
and CKMLCR~CURTP in SP$00015
and CKMLCR~BDATJ in SP$00013
and CKMLCR~POPER in SP$00014
and CKMLCR_RECV~CURTP in SP$00019
and CKMLCR_RECV~BDATJ in SP$00020
and CKMLCR_RECV~POPER in SP$00018 .Hi, it is not good for your performance to split into 9 selects but the select you are now using is also not so good. Start with VBRP instead of KNA1.
You can do it in the following way. For example:
DATA tb_kna1 TYPE STANDARD TABLE OF kna1.
DATA tb_vbrk TYPE STANDARD TABLE OF vrbk.
DATA tb_vrbp TYPE STANDARD TABLE OF vrbp.
Start with VRBP for a better performance
SELECT * FROM vrbp
INTO CORRESPONDING FIELDS OF TABLE tb_vbrp
WHERE werks IN .... etc.
SELECT * FROM vbrk
INTO CORRESPONDING FIELDS OF TABLE tb_vbrk
FOR ALL ENTRIES IN tb_vrbp
WHERE vbeln = tb_vrbp-vbeln.
SELECT * FROM kna1
INTO CORRESPONDING FIELDS OF TABLE tb_kna1
FOR ALL ENTRIES IN tb_vrbk
WHERE kunnr = tb_vrbk-kunnr.
Success. -
Picking up tvzbt-vtext w.r t vbrk-zterm and vbeln in vbrk
Hi Folks,
Can anyone here please give me the select statement for picking up tvzbt-vtext
with respect to vbrk-zterm and vbrk-vbeln.
Do I need to use joins?
Kindly provide me the select statement.
Points will be given.
K.Kiran.Hi!
* declare gt_main
TYPES: BEGIN OF t_main
vbeln LIKE vbrk-vbeln,
zterm LIKE tvzbt-zterm,
vtext LIKE tvzbt-vtext,
END OF t_main.
DATA: gt_main TYPE STANDARD TABLE OF t_main,
wa_main LIKE LINE OF gt_main.
SELECT * FROM vbrk
INNER JOIN tvzbt ON vbrk~zterm = tvzbt~zterm
INTO CORRESPONDING FIELDS OF gt_main
WHERE vbrk~vbeln IN so_vbeln AND
tvzbt~spras = sy-langu.
This is the whole coding.
Regards
Tamá -
Can anyone tell me how to link the three tables?
I need to get header information from all three tables for a query.
Any suggestions is greatly appreciated,
Thanks,
MichelleHi Mitchelle , Please find the detail below.
Technically
Select all the VBELN from VBAK then select VBELN & POSNR from VBAP with reference to VBAK-VBELN.
Then select VBELN POSNR from LIPS (Delivery Item) with reference to VBAP VBELN and POSNR against VGBEL VGPOS in LIPS.
then select the VBRK-VBELN with reference to the VBRK-VGBEL = LIPS-VBELN and VBRK-VGPOS = LIPS-POSNR.
Functionally
VBAK - Sales Document Header
VBAP - Sales Item
LIKP - Delivery Document Header
LIPS - Delievry Item
VBRK - Billing Document Header
An delievry can be created with reference to Sales order and an billing document can be created either with reference to the Sales Document or Delievry Documents that depends on the config.
Please refer the below link for details
http://www.erpgenie.com/abap/tables_sd.htm
Regards,
SEN
Edited by: Senthil Nattamai Sekar on Aug 1, 2008 2:32 AM -
Help in defaulting a value in a program
I have a program called MV45AZZA, and I got the following requirement
In MV45AFZZ we need to default VBAP-BWTAR = RH while new items are added in transaction VA01 and VA02, if sales org = 5090, order type = ZSBK and MBEW-BWTTY = 1 for the VBAP-MATNR. Once defaulted user should be able to change it to new value in VA01 and VA02, in that case system should not overwrite it with default value.
Sales order functionality needs to be changed to account for Sbank sales updating to repair profit center.
any help in coding is highly appreciated. i know little ABAP and I would appreciate if somebody can help in adding the code.Please highlight the code you added
Please check the Program below.
Thanks
SP
*TABLES: zue003, tvarv.
*DATA: werks LIKE vbap-werks.
Start of DEVK923935.
Global Definition
INCLUDE zsdi_mv45afzz_top.
FORM ZZEXAMPLE *
text...................................... *
*FORM ZZEXAMPLE.
*ENDFORM.
*eject
FORM USEREXIT_DELETE_DOCUMENT *
This userexit can be used to delete data in additional tables *
when a sales document is deleted. *
This form is called in dialog at the end of form BELEG_LOESCHEN*
just before form BELEG_SICHERN is performed to delete the *
datas on the database. *
FORM userexit_delete_document.
ENDFORM.
*eject
FORM USEREXIT_FIELD_MODIFICATION *
This userexit can be used to modify the attributes of *
screen fields. *
This form is processed for each field in the screen. *
The use of the fields screen-group1 to screen-group4 is: *
Screen-group1: Automatic modification contolles by transaction*
MFAW. *
Screen-group2: Contents 'LOO' for steploop-fields. *
Screen-group3: Used for modififaction, which are dependent on *
control tables or other fix information. *
Screen-group4: Unused *
For field mofifications, which are dependent on the document *
status, you can use the status field in the workareas *
XVBAP for item status and XVBUK for header status. *
This form is called from module FELDAUSWAHL. *
FORM userexit_field_modification.
DATA: zvbtyp LIKE vbfa-vbtyp_n,
zvbeln LIKE vbfa-vbeln.
CASE SCREEN-GROUP3.
WHEN '900'.
IF VBAK-VBTYP NE 'A'.
SCREEN-ACTIVE = 0.
ENDIF.
ENDCASE.
CASE SCREEN-NAME.
WHEN 'VBAK-VBELN'.
SCREEN-ACTIVE = 0.
ENDCASE.
IF vbap-pstyv = 'IRLA'.
CHECK sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
SELECT SINGLE vbtyp_n INTO zvbtyp FROM vbfa
WHERE vbelv = xvbap-vbeln AND posnv = vbap-posnr.
CHECK sy-subrc <> 0.
IF sy-subrc <> 0.
CASE screen-group2.
WHEN 'LOO'.
IF screen-name = 'VBAP-WERKS'.
screen-input = 1.
ENDIF.
ENDCASE.
ENDIF.
ENDIF.
ENDIF.
Make Reject Reason modifiable when document category is 'RETURNS'
06/10/02
Modified by Ak for check on subsequent credit memo
This opens up the field - reason for rejection - for change even after
the material has been received into the system on the returns delivery
but before the Returns Credit Memo has been issued.
Changed field to be modified from Reason for Rejection to Item
Category on the line item for which no credit to be given.
select single * from vbfa where vbelv = vbak-vbeln and
vbtyp_n = 'O'.
select a Returns Credit Memo document from VBFA that has NOT been
cancelled. if the selection is successful, credit has been issued and
the field should stay locked. however, if selection is unsuccessful
and since no credit has been issued, the field for item category
must be available for changing, if need be.
check: vbak-vbtyp = 'H'.
IF vbak-vbtyp = 'H'.
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
SELECT SINGLE vbrk~vbeln INTO zvbeln
FROM vbfa INNER JOIN vbrk ON vbfavbeln = vbrkvbeln
WHERE vbfavbelv = vbak-vbeln AND vbfaposnv = vbap-posnr
AND vbfavbtyp_n = 'O' AND vbrkfksto NE 'X'.
CHECK sy-subrc NE 0.
CASE screen-group2.
WHEN 'LOO'.
IF screen-name = 'VBAP-PSTYV'.
screen-input = 1.
ENDIF.
ENDCASE.
ENDIF.
ENDIF.
INCLUDE zue_sd_0029.
**If no invoice is created then make PSTYV ready for input for item
**category IRIN.
INCLUDE zue_sd_0031.
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBAK *
This userexit can be used to move some fields into the sales *
dokument header workaerea VBAK. *
SVBAK-TABIX = 0: Create header *
SVBAK-TABIX > 0: Change header *
This form is called at the end of form VBAK_FUELLEN. *
FORM userexit_move_field_to_vbak.
vbak-zzfield = xxxx-zzfield2.
**Ernesto EDIT for UE DEMO 10/16/2002
SELECT single * INTO TABLE i_tvarv FROM tvarv WHERE name =
*ZKS_KSEASORG'.
Start of DEVK923935.
Initialization Section
INCLUDE zsdi_mv45afzz_initialization.
End of DEVK923935.
**{ INSERT SNDK900075 1
Change user exit according to Online Documentation to
copy ship-to info to sale doc header (VBAK)
*CODE BELOW*REPLACED WITH zue_sd_0017***********
IF vbak-kvgr1 IS INITIAL AND
vbak-kvgr2 IS INITIAL AND
vbak-kvgr3 IS INITIAL AND
vbak-kvgr4 IS INITIAL AND
vbak-kvgr5 IS INITIAL.
SELECT SINGLE vkgrp vkbur kvgr1 kvgr2 kvgr3 kvgr4 kvgr5
FROM knvv INTO (vbak-vkgrp, vbak-vkbur, vbak-kvgr1, vbak-kvgr2,
vbak-kvgr3, vbak-kvgr4, vbak-kvgr5)
WHERE kunnr = kuwev-kunnr AND
vkorg = vbak-vkorg AND
vtweg = vbak-vtweg AND
spart = vbak-spart.
ENDIF.
*CODE ABOVE*REPLACED WITH zue_sd_0017***********
INCLUDE zue_sd_0017.
*CODE BELOW*REPLACED WITH zue_sd_0017***********
IF svbak-tabix = 0.
SELECT SINGLE vsbed FROM knvv INTO vbak-vsbed
*WHERE kunnr = kuwev-kunnr AND
vkorg = vbak-vkorg AND
vtweg = vbak-vtweg AND
spart = vbak-spart.
ENDIF.
*CODE ABOVE*REPLACED WITH zue_sd_0017***********
Start of DEVK915182
**Ernesto EDIT for UE DEMO 10/15/2002.
READ TABLE i_tvarv WITH KEY name = 'ZKS_KSEASORG'.
IF sy-subrc = 0.
IF vbak-vkorg = i_tvarv-low.
IF vbak-vkorg IN i_zsd01_vkorg.
IF sy-tcode EQ 'VA01'.
IF sy-dynnr EQ '4021'.
IF sy-ucomm NE 'SICH'.
l_pop_type = 'X'.
INCLUDE zue_sd_0027.
PERFORM partner_validation USING 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
end-of DEVK915182
Project : KSEA - Sales Force Expansion of 1st Jan 2003
Include for KSEA Sales Org 5010 only for PopUp Windows " 12/23/2002
INCLUDE zsd_salesforce_expnsn_hdr." Include 1 of 4
*/ Description : KSE Modification to remove the billing block for
*/ returns/credits/debits if sales Org is 5090.
*ORIGINAL CODE
*if vbak-vkorg = '5090' and vbak-vbtyp ca 'HKL'.
*vbak-faksk = ' '.
*endif.
IF sy-tcode = 'VA01'.
IF vbak-vkorg IN i_zsd09_vkorg.
IF vbak-vbtyp IN i_zsd09_vbtyp.
vbak-faksk = ' '.
ENDIF.
ENDIF.
ENDIF.
BREAK-POINT.
INCLUDE zue_sd_0039.
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBAP *
This userexit can be used to move some fields into the sales *
dokument item workaerea VBAP *
SVBAP-TABIX = 0: Create item *
SVBAP-TABIX > 0: Change item *
This form is called at the end of form VBAP_FUELLEN. *
FORM userexit_move_field_to_vbap.
VBAP-zzfield = xxxx-zzfield2.
*{ INSERT SNDK900164 1
Item Category Determination
DATA: zzbukrs LIKE tvko-bukrs,
zzmtpos LIKE mvke-mtpos.
DATA: BEGIN OF zzwerks OCCURS 0,
werks LIKE marc-werks,
END OF zzwerks.
DATA: zdoccat LIKE tvak-vbklt,
zvmsta LIKE mvke-vmsta,
zspvbc LIKE tvms-spvbc,
zvmstb LIKE tvmst-vmstb.
DATA: z_xvbap LIKE xvbap,
yp1 LIKE t001k-bwkey,
z_uepos_bukrs LIKE t001k-bukrs.
IF i_zsd01_vkorg[] IS INITIAL.
If the initialization was not performed in the Fill VBAK,
reload data
INCLUDE zsdi_mv45afzz_initialization.
ENDIF.
SELECT SINGLE bukrs
INTO zzbukrs
FROM tvko
WHERE vkorg = vbak-vkorg.
SELECT w~werks
INTO TABLE zzwerks
FROM t001w AS w JOIN t001k AS k
ON wbwkey = kbwkey
WHERE k~bukrs = zzbukrs.
SELECT SINGLE mtpos INTO zzmtpos
FROM mvke
WHERE matnr = vbap-matnr
AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg.
Export Plant - inport in ZXQSMU07
EXPORT zz_plant = vbap-werks TO MEMORY ID 'ZZPLANT'. " KN05
check vbap-pstyv = 'TAN' or vbap-pstyv = 'TANN'.
removed the CHECK statement and replaced by IF-ENDIF.
inserted by arvind r kulkarni for TAN, TANN switching
IF vbap-pstyv = 'TAN' OR vbap-pstyv = 'TANN'
OR vbap-pstyv = 'REN' " KN02
OR vbap-pstyv = 'RENN' . " KN02
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
check sy-subrc ne 0.
IF sy-subrc NE 0.
IF vbap-pstyv = 'TAN'.
vbap-pstyv = 'ZAN'.
ELSEIF vbap-pstyv = 'REN'. " KN02
vbap-pstyv = 'YREN'. " KN02
ELSEIF vbap-pstyv = 'RENN'. " KN02
vbap-pstyv = 'YRNN'. " KN02
ELSEIF vbap-pstyv = 'TANN'.
vbap-pstyv = 'ZANN'.
ENDIF.
ENDIF.
ENDIF.
INCLUDE zue_sd_0014.
Begin insert for check for discontinued material in repair orders
LOGIC: For IRAT item categories, check if the material status field *
blank or populated. *
If populated, get the value of the D-Chain specific status *
and issue warning/error message with the associated text *
from config the D-Chain specific material status. *
Included YRAT to this logic (YRAT is free IRAT); 11/22/2002. *
IF vbap-pstyv = 'IRAT' OR vbap-pstyv = 'YRAT'.
CLEAR: zvmsta, zvmstb, zspvbc.
SELECT SINGLE vmsta INTO zvmsta FROM mvke WHERE
matnr = vbap-matnr AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg.
CHECK: NOT zvmsta IS INITIAL.
IF NOT zvmsta IS INITIAL.
SELECT SINGLE spvbc INTO zspvbc FROM tvms WHERE
vmsta = zvmsta.
SELECT SINGLE vmstb INTO zvmstb FROM tvmst WHERE
spras = sy-langu AND vmsta = zvmsta.
CASE zspvbc.
WHEN 'A'.
MESSAGE ID 'V1' TYPE 'W' NUMBER '028' WITH zvmsta zvmstb.
WHEN 'B'.
MESSAGE ID 'V1' TYPE 'E' NUMBER '028' WITH zvmsta zvmstb.
ENDCASE.
ENDIF.
ENDIF.
End insert for check for discontinued material in repair orders
INCLUDE zue_sd_0004.
INCLUDE zue_sd_0005.
end of DEVK923935.
****************END OF TEST SOURCE CODE******************
Begin Insert to assign material entered for TRADE material
Ak; 11/08/2002.
For trade material, the system will now mandate entry of higher level
item number and based on this, the system will bring in specialty,
material number (into material entered) and profit centre from this
higher level item into the line item for material TRADE.
Added MVGR2 & 3 to pass onto TRADE material; 11/12/2002 - Arvind.
Added material a/c assignment grp to trade-in material.
Added ZTRD item category to this logic. - Arvind 11/18/2002.
INCLUDE zzsdprc01.
INCLUDE zue_sd_0028.
End Insert to assign material entered for TRADE material
********************End of DIP Profile change************************
Get custom group data from MVKE (Sales Data for Material) by Material
when order type is 'RAS' (Repairs/Service)
and populate line item's Additional data A
INCLUDE zue_sd_0006.
INCLUDE zue_sd_0001.
include ZUE_SD_0032.
INCLUDE zue_sd_0002.
Get similar data (as above) from Servicable Material
INCLUDE zue_sd_0003.
*} INSERT
Determine Delivery Priority from SH Partner
11/02/2001
SELECT SINGLE lprio
FROM knvv
INTO vbap-lprio
WHERE kunnr = kuwev-kunnr AND
vkorg = vbak-vkorg AND
vtweg = vbak-vtweg AND
spart = vbak-spart.
Determine Delivery Priority for Order Type RAS
INCLUDE zsd_check_pstyv_werks.
To re-determine Matwa if the replacement item is changed afterwards
Niranjan 05/10/05 and ECLARKE
INCLUDE zue_sd_0021.
Mod for all sales organizations
Determination of Profit Center
06/24/03
INCLUDE zue_sd_0007.
End PRCTR Determination for KSI's document
KSI modification
Code to enter the actual part number of the item being repaired,
rather than "REPAIR"
09/18/02 GM
DATA: intercoflag TYPE c.
PERFORM zz_determine_cross_comp USING vbak-vkorg
vbap-werks
intercoflag.
IF intercoflag = 'Y'
AND
( vbap-pstyv = 'IRIN' OR vbap-pstyv = 'ZRIN' ).
SELECT SINGLE matwa INTO vbap-matwa FROM vbap
WHERE vbeln = vbap-vbeln AND posnr = vbap-uepos.
IF sy-subrc NE 0.
MESSAGE e006(z1) WITH vbap-uepos.
ENDIF.
ENDIF.
End material look up modification GM 9/17/02
KSI modification
DP90 Only:
Remove Billing Block from IRIN items and moved them to the header
10/06/02 CNG
11/18/2002 Tr-DEVK917363
Added Sales Orgs 5040 & 5060
KSI modification
06/10/2003 CNG CN01
If IRIN, clear billing block at item level
IF sy-tcode = 'DP90'.
IF vbap-werks = '7000' AND vbak-vkorg = '5010' AND" SM01-
vbap-pstyv = 'IRIN'." SM01-
IF vbap-werks = '7000' AND" SM01+
( vbak-vkorg IN i_zsd01_vkorg OR" SM01+
vbak-vkorg = '5040' OR" SM01+
Removed >>
vbak-vkorg = '5060' )" SM01+ CN01-
AND vbap-pstyv = 'IRIN'." SM01+ CN01-
vbak-faksk = '02'.
Removed <<
Inserted - check and block for line item IRIN only
vbak-vkorg = '5060' )." SM01+
vbak-faksk = '02'.
IF vbap-pstyv = 'IRIN'." CN01+
CLEAR vbap-faksp.
Inserted - check and block for line item IRIN only
ENDIF.
ENDIF.
ENDIF.
KSI modification
Routine to populate VBAP-ZZEDATU and VBAP-ZZVDATU on change and
creation of order
02/10/03 CNG
PERFORM check_custom_dates.
KSE Modification to create return item automatically**
Copied from Niranjan's routine tested in SND210 Date 04/05/03
INCLUDE zue_sd_0008.
User Exit for Service Processing - Clear Results
Analysis Key in sales order item for non-KSE service
items. DEVK927084 W. Miller 05/12/2003
Changed to validate by plant instead of sales org.
06/30/03 BEGIN>>>
if not vbak-vkorg = '5090' and vbap-bedae = 'SE'.
*Added 5000 for KSEM Prjct 02-09-2006 EC
IF NOT ( vbap-werks = '9000' OR vbap-werks = '5000' )
AND ( vbap-bedae = 'SE' OR VBAP-BEDAE = 'SERA' ).
06/30/03 END <<<<
CLEAR vbap-abgrs.
ENDIF.
End of DEVK924084
*/ Author : w/ Trimb.
*/ Date : 10/07/2003 ---> Repair No : DEVK930002
*/ Description : KSE Modification For plant 9000, to check the
*/ material is 'Non-R' for RAS order type
*/ and is 'R' for ZREX and ZWAR order types.
*Added lines below for - There is a user exit which exists that does
*not allow materials that do not begin with an "R" to be posted into
*plant 9000 if they are attached to a ZWAR order type. KSE/KSEA would
*like to modify this exit to allow materials with profit centers
*5090-03003 and 5090-04003 to be posted.
*ECLARKE/Niranjan 07-29-2004
*________________________n 07-29-2004__________________
DATA: flag_dexe.
TABLES: zzue027.
CLEAR: flag_dexe.
SELECT SINGLE werks auart prctr INTO (zzue027-werks, zzue027-auart,
zzue027-prctr) FROM zzue027 WHERE werks = vbap-werks AND auart =
vbak-auart AND prctr = vbap-prctr.
IF sy-subrc = 0.
flag_dexe = 'X'.
ENDIF.
*________________________ 07-29-2004__________________
IF flag_dexe IS INITIAL. " 07-29-2004
IF vbap-werks IN i_zsd09_werks.
IF ( vbak-auart IN i_zsd02_auart AND vbap-pstyv IN i_zsd04_pstyv AND
vbap-matwa(1) = 'R' ) OR ( vbak-auart IN i_zsd02_auart AND
vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) = 'R' ).
IF vbap-matwa(1) = 'R'.
MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
IF vbap-matnr(1) = 'R'.
MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
ELSEIF ( vbak-auart IN i_zsd03_auart AND vbap-pstyv IN
i_zsd04_pstyv AND vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN
i_zsd03_auart AND vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' )
OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv IN i_zsd04_pstyv AND
vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv
IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' ).
IF vbap-matwa(1) <> 'R'.
MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
IF vbap-matnr(1) <> 'R'.
MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
INCLUDE zue_sd_0015.
include zue_sd_0019
Enhancement to populate Storage Location for sales order 5090
and plant 9000. But any companies can use it as long as entries are
maintained in table zsd_default_sloc
Niranjan 02/11/04
DEVK933987 - MV45AFZZ - MPitisci 4/12/2004
DEVK933989 - ZUE_SD_0019 include
DEVK933998 - ZSD_DEFAULT_SLOC table
INCLUDE zue_sd_0019.
To give hard error for D-CHin status 07 for items catgories other
than trade.
04/10/05
INCLUDE zue_sd_0034.
Checks if the storage location value is changed and checks to see if
the storage location correlates to the P3 Partner function rules
08/05/2005
INCLUDE zue_sd_0036.
INCLUDE zue_sd_0013.
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBEP *
This userexit can be used to move some fields into the sales *
dokument schedule line workaerea VBEP *
SVBEP-TABIX = 0: Create schedule line *
SVBEP-TABIX > 0: Change schedule line *
This form is called at the end of form VBEP_FUELLEN. *
FORM userexit_move_field_to_vbep.
DATA: intercoflag TYPE c.
VBEP-zzfield = xxxx-zzfield2.
Assign 'ZP' to Schedule line Category for Acct Assignment Grp =
Chui 10/23/2001
DATA: zzbukrs LIKE tvko-bukrs,
zzmtpos LIKE mvke-mtpos.
DATA: z_vbelv LIKE vbfa-vbelv," KN03
z_auart LIKE vbak-auart," KN03
z_vbtyp LIKE vbak-vbtyp," KN03
z_ettyp LIKE vbep-ettyp," KN03
z_pstyv LIKE vbap-pstyv," KN04
z_posnr LIKE vbap-posnr." KN04
DATA: BEGIN OF zzwerks OCCURS 0,
werks LIKE marc-werks,
END OF zzwerks.
IF vbak-vbtyp CN 'AB'. "ECLARKE 01-26-04
SELECT SINGLE bukrs
INTO zzbukrs
FROM tvko
WHERE vkorg = vbak-vkorg.
SELECT w~werks
INTO TABLE zzwerks
FROM t001w AS w JOIN t001k AS k
ON wbwkey = kbwkey
WHERE k~bukrs = zzbukrs.
SELECT SINGLE mtpos INTO zzmtpos
FROM mvke
WHERE matnr = vbap-matnr
AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg.
*lines added for valuated customer-returns project by msn
110903. It will set required schedule line category YR on specific
item categories if the document created is of type RE with reference
document being an invoice of type F2
*ECLARKE & MILIND NAND. 11-11-2003.
*Schedule Line Category - Valuate Customer Returns Stock
INCLUDE zue_sd_0010.
CASE vbap-pstyv.
WHEN 'ZRPN'.
EXIT.
WHEN 'TAN' OR 'TANN'.
IF vbkd-ktgrd = '01'. " Added 6/5/02
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
**Ernesto EDIT for UE DEMO 10/15/2002
***************TEST FUNCTION MODULE FOR USER EXIT MAINT.******
**ADDED A CASE STATEMENT BELOW.
CALL FUNCTION 'Z_UE_SD_GET_SCHEDULE_LINE_CAT'
EXPORTING
pstyv = vbap-pstyv
ktgrd = vbkd-ktgrd
ettyp2 = vbep-ettyp
IMPORTING
ettyp = vbep-ettyp.
****************END OF TEST SOURCE CODE******************
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
check sy-subrc ne 0.
IF sy-subrc NE 0.
Change inserted by Arvind R Kulkarni; 07/22/2002
TAN -> ZAN; TANN => ZANN
vbap-pstyv = 'ZAN'.
IF vbap-pstyv = 'TAN'.
vbap-pstyv = 'ZAN'.
ELSEIF vbap-pstyv = 'TANN'.
vbap-pstyv = 'ZANN'.
ENDIF.
end of change
ENDIF.
*ADDED CASE HERE FOR TEST FOR SYNTAX CHECK 10/15/2002
*CASE vbap-pstyv.
WHEN 'ZAN'.
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
CHECK sy-subrc EQ 0.
vbap-pstyv = 'TAN'.
WHEN 'ZANN'.
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
CHECK sy-subrc EQ 0.
vbap-pstyv = 'TANN'.
WHEN 'ZTAN'.
IF vbkd-ktgrd = '01'. " Added 6/5/02
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
check sy-subrc ne 0.
IF sy-subrc NE 0.
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
03/23/2005 KN03 Set Schedule Line default to ZF order type ZFD,
item cat ZTAN, sales org 5060, 5070, and 5071
IF vbak-auart EQ 'ZFD' AND
( vbak-vkorg = '5060' OR vbak-vkorg = '5070'
OR vbak-vkorg = '5071' ).
vbep-ettyp = 'ZF'.
ENDIF.
Begin of insertion for IRAT processing
Arvind R Kulkarni; Dated: 07/17/2002.
Changed to include YRAT; ; 11/22/2002
WHEN 'IRAT' OR 'YRAT'.
IF vbak-auart NE 'ZWAR'.
the sales order is NOT a ZWAR
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
IF sy-subrc NE 0.
the transaction IS intercompany
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'YN'.
ELSE.
vbep-ettyp = 'YL'.
ENDIF.
ELSE.
the transaction IS NOT intercompany
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZN'.
ELSE.
vbep-ettyp = 'ZL'.
ENDIF.
ENDIF.
IF vbkd-ktgrd = '01'.
sale is to an affiliate in local sales org
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'YN'.
ELSE.
vbep-ettyp = 'YL'.
ENDIF.
ENDIF.
ELSE.
the sales order IS a ZWAR
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
IF sy-subrc NE 0.
the transaction IS intercompany
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ELSE.
the transaction IS NOT intercompany
NOTHING NEEDS TO BE DONE FOR ZWAR DOMESTIC
STD SCHED LINE CATEGORIES TO BE MAINTAINED.
IF VBEP-ETTYP = 'CN'.
VBEP-ETTYP = 'ZN'.
ELSE.
VBEP-ETTYP = 'ZL'.
ENDIF.
ENDIF.
IF VBKD-KTGRD = '01'.
sale is to an affiliate in local sales org
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
ENDIF.
End of insertion for IRAT processing
WHEN 'IRRS' OR 'IRRE' OR 'IRLA' OR 'IRLB' OR 'KBN' OR 'TAQ'
KSI Modification 04/22/03
Exclude check for item category 'YKW'
OR 'YTAN' OR 'ZKLN' OR 'KAN' OR 'ZTAQ'
OR 'YKW' OR 'IRRP' OR 'ZKBC' OR 'ZKBN' OR 'ZKAN' OR 'KLN'.
or 'ZKEN' OR 'ZKEC' or ZREK OR 'KEN'.
EXIT.
WHEN 'ZTR1' OR 'ZRBB' OR 'ZREB' OR 'ZREC' OR 'ZREF' OR 'ZREN'
Removed ZRTN to validate plant 9000
OR 'ZRFF' OR 'ZRNB' OR 'ZRNN' OR 'REN' OR 'RENN'
OR 'ZLN' OR 'IRAL' OR 'ZTR0' OR 'KLN'.
EXIT.
03/23/2005 KN03 set default sched line for KE & ZKE
WHEN 'KEN' OR 'ZKEG' OR 'ZKEN' OR 'ZKEC'.
IF vbak-vkorg EQ '5070'.
vbep-ettyp = 'Z0'.
ENDIF.
WHEN 'ZREK'.
INCLUDE zue_sd_0033.
IF vbap-werks = '9000'. " KN04
IF vbkd-ktgrd = '01'. " KN04
IF z_auart = 'ZFD ' and z_pstyv = 'KLN '. " KN04
vbep-ettyp = 'YK'. " KN04
ENDIF.
ENDIF.
ENDIF.
KSE Modification 04/10/03
For Item Cate 'ZRTN'
Assign 'YQ' to Schedule line cat, if cross-company
'YU' if not.
WHEN 'ZRTN'.Hi,
Step 1) Create a include ZSD_DEFAULT_BWTAR and add the following code
DATA: S_MBEW TYPE MBEW.
Check for create and change.
IF T180-TRTYP = 'H' OR T180-TRTYP = 'V'.
IF VBAK-VKORG = '5090' AND VBAK-AUART = 'ZSBK'.
SELECT SINGLE * FROM MBEW
INTO S_MBEW
WHERE MATNR = VBAP-MATNR
AND BWKEY = VBAP-WERKS.
IF SY-SUBRC = 0 AND S_MBEW-BWTTY = '1'.
Check if it is for line item creation.
WHen the changes the value this will not trigger.
IF SVBAP-TABIX = 0.
VBAP-BWTAR = 'RH'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
STEP 2)
Add the include to the subroutine USEREXIT_FIELD_TO_VBAP. The include statement is marked in bold.
*TABLES: zue003, tvarv.
*DATA: werks LIKE vbap-werks.
Start of DEVK923935.
Global Definition
INCLUDE zsdi_mv45afzz_top.
FORM ZZEXAMPLE *
text...................................... *
*FORM ZZEXAMPLE.
*ENDFORM.
*eject
FORM USEREXIT_DELETE_DOCUMENT *
This userexit can be used to delete data in additional tables *
when a sales document is deleted. *
This form is called in dialog at the end of form BELEG_LOESCHEN*
just before form BELEG_SICHERN is performed to delete the *
datas on the database. *
FORM userexit_delete_document.
ENDFORM.
*eject
FORM USEREXIT_FIELD_MODIFICATION *
This userexit can be used to modify the attributes of *
screen fields. *
This form is processed for each field in the screen. *
The use of the fields screen-group1 to screen-group4 is: *
Screen-group1: Automatic modification contolles by transaction*
MFAW. *
Screen-group2: Contents 'LOO' for steploop-fields. *
Screen-group3: Used for modififaction, which are dependent on *
control tables or other fix information. *
Screen-group4: Unused *
For field mofifications, which are dependent on the document *
status, you can use the status field in the workareas *
XVBAP for item status and XVBUK for header status. *
This form is called from module FELDAUSWAHL. *
FORM userexit_field_modification.
DATA: zvbtyp LIKE vbfa-vbtyp_n,
zvbeln LIKE vbfa-vbeln.
CASE SCREEN-GROUP3.
WHEN '900'.
IF VBAK-VBTYP NE 'A'.
SCREEN-ACTIVE = 0.
ENDIF.
ENDCASE.
CASE SCREEN-NAME.
WHEN 'VBAK-VBELN'.
SCREEN-ACTIVE = 0.
ENDCASE.
IF vbap-pstyv = 'IRLA'.
CHECK sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
SELECT SINGLE vbtyp_n INTO zvbtyp FROM vbfa
WHERE vbelv = xvbap-vbeln AND posnv = vbap-posnr.
CHECK sy-subrc <> 0.
IF sy-subrc <> 0.
CASE screen-group2.
WHEN 'LOO'.
IF screen-name = 'VBAP-WERKS'.
screen-input = 1.
ENDIF.
ENDCASE.
ENDIF.
ENDIF.
ENDIF.
Make Reject Reason modifiable when document category is 'RETURNS'
06/10/02
Modified by Ak for check on subsequent credit memo
This opens up the field - reason for rejection - for change even after
the material has been received into the system on the returns delivery
but before the Returns Credit Memo has been issued.
Changed field to be modified from Reason for Rejection to Item
Category on the line item for which no credit to be given.
select single * from vbfa where vbelv = vbak-vbeln and
vbtyp_n = 'O'.
select a Returns Credit Memo document from VBFA that has NOT been
cancelled. if the selection is successful, credit has been issued and
the field should stay locked. however, if selection is unsuccessful
and since no credit has been issued, the field for item category
must be available for changing, if need be.
check: vbak-vbtyp = 'H'.
IF vbak-vbtyp = 'H'.
IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
SELECT SINGLE vbrk~vbeln INTO zvbeln
FROM vbfa INNER JOIN vbrk ON vbfavbeln = vbrkvbeln
WHERE vbfavbelv = vbak-vbeln AND vbfaposnv = vbap-posnr
AND vbfavbtyp_n = 'O' AND vbrkfksto NE 'X'.
CHECK sy-subrc NE 0.
CASE screen-group2.
WHEN 'LOO'.
IF screen-name = 'VBAP-PSTYV'.
screen-input = 1.
ENDIF.
ENDCASE.
ENDIF.
ENDIF.
INCLUDE zue_sd_0029.
**If no invoice is created then make PSTYV ready for input for item
**category IRIN.
INCLUDE zue_sd_0031.
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBAK *
This userexit can be used to move some fields into the sales *
dokument header workaerea VBAK. *
SVBAK-TABIX = 0: Create header *
SVBAK-TABIX > 0: Change header *
This form is called at the end of form VBAK_FUELLEN. *
FORM userexit_move_field_to_vbak.
vbak-zzfield = xxxx-zzfield2.
**Ernesto EDIT for UE DEMO 10/16/2002
SELECT single * INTO TABLE i_tvarv FROM tvarv WHERE name =
*ZKS_KSEASORG'.
Start of DEVK923935.
Initialization Section
INCLUDE zsdi_mv45afzz_initialization.
End of DEVK923935.
**{ INSERT SNDK900075 1
Change user exit according to Online Documentation to
copy ship-to info to sale doc header (VBAK)
*CODE BELOW*REPLACED WITH zue_sd_0017***********
IF vbak-kvgr1 IS INITIAL AND
vbak-kvgr2 IS INITIAL AND
vbak-kvgr3 IS INITIAL AND
vbak-kvgr4 IS INITIAL AND
vbak-kvgr5 IS INITIAL.
SELECT SINGLE vkgrp vkbur kvgr1 kvgr2 kvgr3 kvgr4 kvgr5
FROM knvv INTO (vbak-vkgrp, vbak-vkbur, vbak-kvgr1, vbak-kvgr2,
vbak-kvgr3, vbak-kvgr4, vbak-kvgr5)
WHERE kunnr = kuwev-kunnr AND
vkorg = vbak-vkorg AND
vtweg = vbak-vtweg AND
spart = vbak-spart.
ENDIF.
*CODE ABOVE*REPLACED WITH zue_sd_0017***********
INCLUDE zue_sd_0017.
*CODE BELOW*REPLACED WITH zue_sd_0017***********
IF svbak-tabix = 0.
SELECT SINGLE vsbed FROM knvv INTO vbak-vsbed
*WHERE kunnr = kuwev-kunnr AND
vkorg = vbak-vkorg AND
vtweg = vbak-vtweg AND
spart = vbak-spart.
ENDIF.
*CODE ABOVE*REPLACED WITH zue_sd_0017***********
Start of DEVK915182
**Ernesto EDIT for UE DEMO 10/15/2002.
READ TABLE i_tvarv WITH KEY name = 'ZKS_KSEASORG'.
IF sy-subrc = 0.
IF vbak-vkorg = i_tvarv-low.
IF vbak-vkorg IN i_zsd01_vkorg.
IF sy-tcode EQ 'VA01'.
IF sy-dynnr EQ '4021'.
IF sy-ucomm NE 'SICH'.
l_pop_type = 'X'.
INCLUDE zue_sd_0027.
PERFORM partner_validation USING 'X'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
end-of DEVK915182
Project : KSEA - Sales Force Expansion of 1st Jan 2003
Include for KSEA Sales Org 5010 only for PopUp Windows " 12/23/2002
INCLUDE zsd_salesforce_expnsn_hdr." Include 1 of 4
*/ Description : KSE Modification to remove the billing block for
*/ returns/credits/debits if sales Org is 5090.
*ORIGINAL CODE
*if vbak-vkorg = '5090' and vbak-vbtyp ca 'HKL'.
*vbak-faksk = ' '.
*endif.
IF sy-tcode = 'VA01'.
IF vbak-vkorg IN i_zsd09_vkorg.
IF vbak-vbtyp IN i_zsd09_vbtyp.
vbak-faksk = ' '.
ENDIF.
ENDIF.
ENDIF.
BREAK-POINT.
INCLUDE zue_sd_0039.
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBAP *
This userexit can be used to move some fields into the sales *
dokument item workaerea VBAP *
SVBAP-TABIX = 0: Create item *
SVBAP-TABIX > 0: Change item *
This form is called at the end of form VBAP_FUELLEN. *
FORM userexit_move_field_to_vbap.
VBAP-zzfield = xxxx-zzfield2.
*{ INSERT SNDK900164 1
Item Category Determination
DATA: zzbukrs LIKE tvko-bukrs,
zzmtpos LIKE mvke-mtpos.
DATA: BEGIN OF zzwerks OCCURS 0,
werks LIKE marc-werks,
END OF zzwerks.
DATA: zdoccat LIKE tvak-vbklt,
zvmsta LIKE mvke-vmsta,
zspvbc LIKE tvms-spvbc,
zvmstb LIKE tvmst-vmstb.
DATA: z_xvbap LIKE xvbap,
yp1 LIKE t001k-bwkey,
z_uepos_bukrs LIKE t001k-bukrs.
IF i_zsd01_vkorg[] IS INITIAL.
If the initialization was not performed in the Fill VBAK,
reload data
INCLUDE zsdi_mv45afzz_initialization.
ENDIF.
SELECT SINGLE bukrs
INTO zzbukrs
FROM tvko
WHERE vkorg = vbak-vkorg.
SELECT w~werks
INTO TABLE zzwerks
FROM t001w AS w JOIN t001k AS k
ON wbwkey = kbwkey
WHERE k~bukrs = zzbukrs.
SELECT SINGLE mtpos INTO zzmtpos
FROM mvke
WHERE matnr = vbap-matnr
AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg.
Export Plant - inport in ZXQSMU07
EXPORT zz_plant = vbap-werks TO MEMORY ID 'ZZPLANT'. " KN05
check vbap-pstyv = 'TAN' or vbap-pstyv = 'TANN'.
removed the CHECK statement and replaced by IF-ENDIF.
inserted by arvind r kulkarni for TAN, TANN switching
IF vbap-pstyv = 'TAN' OR vbap-pstyv = 'TANN'
OR vbap-pstyv = 'REN' " KN02
OR vbap-pstyv = 'RENN' . " KN02
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
check sy-subrc ne 0.
IF sy-subrc NE 0.
IF vbap-pstyv = 'TAN'.
vbap-pstyv = 'ZAN'.
ELSEIF vbap-pstyv = 'REN'. " KN02
vbap-pstyv = 'YREN'. " KN02
ELSEIF vbap-pstyv = 'RENN'. " KN02
vbap-pstyv = 'YRNN'. " KN02
ELSEIF vbap-pstyv = 'TANN'.
vbap-pstyv = 'ZANN'.
ENDIF.
ENDIF.
ENDIF.
INCLUDE zue_sd_0014.
Begin insert for check for discontinued material in repair orders
LOGIC: For IRAT item categories, check if the material status field *
blank or populated. *
If populated, get the value of the D-Chain specific status *
and issue warning/error message with the associated text *
from config the D-Chain specific material status. *
Included YRAT to this logic (YRAT is free IRAT); 11/22/2002. *
IF vbap-pstyv = 'IRAT' OR vbap-pstyv = 'YRAT'.
CLEAR: zvmsta, zvmstb, zspvbc.
SELECT SINGLE vmsta INTO zvmsta FROM mvke WHERE
matnr = vbap-matnr AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg.
CHECK: NOT zvmsta IS INITIAL.
IF NOT zvmsta IS INITIAL.
SELECT SINGLE spvbc INTO zspvbc FROM tvms WHERE
vmsta = zvmsta.
SELECT SINGLE vmstb INTO zvmstb FROM tvmst WHERE
spras = sy-langu AND vmsta = zvmsta.
CASE zspvbc.
WHEN 'A'.
MESSAGE ID 'V1' TYPE 'W' NUMBER '028' WITH zvmsta zvmstb.
WHEN 'B'.
MESSAGE ID 'V1' TYPE 'E' NUMBER '028' WITH zvmsta zvmstb.
ENDCASE.
ENDIF.
ENDIF.
End insert for check for discontinued material in repair orders
INCLUDE zue_sd_0004.
INCLUDE zue_sd_0005.
end of DEVK923935.
****************END OF TEST SOURCE CODE******************
Begin Insert to assign material entered for TRADE material
Ak; 11/08/2002.
For trade material, the system will now mandate entry of higher level
item number and based on this, the system will bring in specialty,
material number (into material entered) and profit centre from this
higher level item into the line item for material TRADE.
Added MVGR2 & 3 to pass onto TRADE material; 11/12/2002 - Arvind.
Added material a/c assignment grp to trade-in material.
Added ZTRD item category to this logic. - Arvind 11/18/2002.
INCLUDE zzsdprc01.
INCLUDE zue_sd_0028.
End Insert to assign material entered for TRADE material
********************End of DIP Profile change************************
Get custom group data from MVKE (Sales Data for Material) by Material
when order type is 'RAS' (Repairs/Service)
and populate line item's Additional data A
INCLUDE zue_sd_0006.
INCLUDE zue_sd_0001.
include ZUE_SD_0032.
INCLUDE zue_sd_0002.
Get similar data (as above) from Servicable Material
INCLUDE zue_sd_0003.
*} INSERT
Determine Delivery Priority from SH Partner
11/02/2001
SELECT SINGLE lprio
FROM knvv
INTO vbap-lprio
WHERE kunnr = kuwev-kunnr AND
vkorg = vbak-vkorg AND
vtweg = vbak-vtweg AND
spart = vbak-spart.
Determine Delivery Priority for Order Type RAS
INCLUDE zsd_check_pstyv_werks.
To re-determine Matwa if the replacement item is changed afterwards
Niranjan 05/10/05 and ECLARKE
INCLUDE zue_sd_0021.
Mod for all sales organizations
Determination of Profit Center
06/24/03
INCLUDE zue_sd_0007.
End PRCTR Determination for KSI's document
KSI modification
Code to enter the actual part number of the item being repaired,
rather than "REPAIR"
09/18/02 GM
DATA: intercoflag TYPE c.
PERFORM zz_determine_cross_comp USING vbak-vkorg
vbap-werks
intercoflag.
IF intercoflag = 'Y'
AND
( vbap-pstyv = 'IRIN' OR vbap-pstyv = 'ZRIN' ).
SELECT SINGLE matwa INTO vbap-matwa FROM vbap
WHERE vbeln = vbap-vbeln AND posnr = vbap-uepos.
IF sy-subrc NE 0.
MESSAGE e006(z1) WITH vbap-uepos.
ENDIF.
ENDIF.
End material look up modification GM 9/17/02
KSI modification
DP90 Only:
Remove Billing Block from IRIN items and moved them to the header
10/06/02 CNG
11/18/2002 Tr-DEVK917363
Added Sales Orgs 5040 & 5060
KSI modification
06/10/2003 CNG CN01
If IRIN, clear billing block at item level
IF sy-tcode = 'DP90'.
IF vbap-werks = '7000' AND vbak-vkorg = '5010' AND" SM01-
vbap-pstyv = 'IRIN'." SM01-
IF vbap-werks = '7000' AND" SM01+
( vbak-vkorg IN i_zsd01_vkorg OR" SM01+
vbak-vkorg = '5040' OR" SM01+
Removed >>
vbak-vkorg = '5060' )" SM01+ CN01-
AND vbap-pstyv = 'IRIN'." SM01+ CN01-
vbak-faksk = '02'.
Removed <<
Inserted - check and block for line item IRIN only
vbak-vkorg = '5060' )." SM01+
vbak-faksk = '02'.
IF vbap-pstyv = 'IRIN'." CN01+
CLEAR vbap-faksp.
Inserted - check and block for line item IRIN only
ENDIF.
ENDIF.
ENDIF.
KSI modification
Routine to populate VBAP-ZZEDATU and VBAP-ZZVDATU on change and
creation of order
02/10/03 CNG
PERFORM check_custom_dates.
KSE Modification to create return item automatically**
Copied from Niranjan's routine tested in SND210 Date 04/05/03
INCLUDE zue_sd_0008.
User Exit for Service Processing - Clear Results
Analysis Key in sales order item for non-KSE service
items. DEVK927084 W. Miller 05/12/2003
Changed to validate by plant instead of sales org.
06/30/03 BEGIN>>>
if not vbak-vkorg = '5090' and vbap-bedae = 'SE'.
*Added 5000 for KSEM Prjct 02-09-2006 EC
IF NOT ( vbap-werks = '9000' OR vbap-werks = '5000' )
AND ( vbap-bedae = 'SE' OR VBAP-BEDAE = 'SERA' ).
06/30/03 END <<<<
CLEAR vbap-abgrs.
ENDIF.
End of DEVK924084
*/ Author : w/ Trimb.
*/ Date : 10/07/2003 ---> Repair No : DEVK930002
*/ Description : KSE Modification For plant 9000, to check the
*/ material is 'Non-R' for RAS order type
*/ and is 'R' for ZREX and ZWAR order types.
*Added lines below for - There is a user exit which exists that does
*not allow materials that do not begin with an "R" to be posted into
*plant 9000 if they are attached to a ZWAR order type. KSE/KSEA would
*like to modify this exit to allow materials with profit centers
*5090-03003 and 5090-04003 to be posted.
*ECLARKE/Niranjan 07-29-2004
*________________________n 07-29-2004__________________
DATA: flag_dexe.
TABLES: zzue027.
CLEAR: flag_dexe.
SELECT SINGLE werks auart prctr INTO (zzue027-werks, zzue027-auart,
zzue027-prctr) FROM zzue027 WHERE werks = vbap-werks AND auart =
vbak-auart AND prctr = vbap-prctr.
IF sy-subrc = 0.
flag_dexe = 'X'.
ENDIF.
*________________________ 07-29-2004__________________
IF flag_dexe IS INITIAL. " 07-29-2004
IF vbap-werks IN i_zsd09_werks.
IF ( vbak-auart IN i_zsd02_auart AND vbap-pstyv IN i_zsd04_pstyv AND
vbap-matwa(1) = 'R' ) OR ( vbak-auart IN i_zsd02_auart AND
vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) = 'R' ).
IF vbap-matwa(1) = 'R'.
MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
IF vbap-matnr(1) = 'R'.
MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
ELSEIF ( vbak-auart IN i_zsd03_auart AND vbap-pstyv IN
i_zsd04_pstyv AND vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN
i_zsd03_auart AND vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' )
OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv IN i_zsd04_pstyv AND
vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv
IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' ).
IF vbap-matwa(1) <> 'R'.
MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
IF vbap-matnr(1) <> 'R'.
MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
vbap-pstyv.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
INCLUDE zue_sd_0015.
include zue_sd_0019
Enhancement to populate Storage Location for sales order 5090
and plant 9000. But any companies can use it as long as entries are
maintained in table zsd_default_sloc
Niranjan 02/11/04
DEVK933987 - MV45AFZZ - MPitisci 4/12/2004
DEVK933989 - ZUE_SD_0019 include
DEVK933998 - ZSD_DEFAULT_SLOC table
INCLUDE zue_sd_0019.
To give hard error for D-CHin status 07 for items catgories other
than trade.
04/10/05
INCLUDE zue_sd_0034.
Checks if the storage location value is changed and checks to see if
the storage location correlates to the P3 Partner function rules
08/05/2005
INCLUDE zue_sd_0036.
INCLUDE zue_sd_0013.
<b>**************New code********
INCLUDE ZSD_DEFAULT_BWTAR.
********************************</b>
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBEP *
This userexit can be used to move some fields into the sales *
dokument schedule line workaerea VBEP *
SVBEP-TABIX = 0: Create schedule line *
SVBEP-TABIX > 0: Change schedule line *
This form is called at the end of form VBEP_FUELLEN. *
FORM userexit_move_field_to_vbep.
DATA: intercoflag TYPE c.
VBEP-zzfield = xxxx-zzfield2.
Assign 'ZP' to Schedule line Category for Acct Assignment Grp =
Chui 10/23/2001
DATA: zzbukrs LIKE tvko-bukrs,
zzmtpos LIKE mvke-mtpos.
DATA: z_vbelv LIKE vbfa-vbelv," KN03
z_auart LIKE vbak-auart," KN03
z_vbtyp LIKE vbak-vbtyp," KN03
z_ettyp LIKE vbep-ettyp," KN03
z_pstyv LIKE vbap-pstyv," KN04
z_posnr LIKE vbap-posnr." KN04
DATA: BEGIN OF zzwerks OCCURS 0,
werks LIKE marc-werks,
END OF zzwerks.
IF vbak-vbtyp CN 'AB'. "ECLARKE 01-26-04
SELECT SINGLE bukrs
INTO zzbukrs
FROM tvko
WHERE vkorg = vbak-vkorg.
SELECT w~werks
INTO TABLE zzwerks
FROM t001w AS w JOIN t001k AS k
ON wbwkey = kbwkey
WHERE k~bukrs = zzbukrs.
SELECT SINGLE mtpos INTO zzmtpos
FROM mvke
WHERE matnr = vbap-matnr
AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg.
*lines added for valuated customer-returns project by msn
110903. It will set required schedule line category YR on specific
item categories if the document created is of type RE with reference
document being an invoice of type F2
*ECLARKE & MILIND NAND. 11-11-2003.
*Schedule Line Category - Valuate Customer Returns Stock
INCLUDE zue_sd_0010.
CASE vbap-pstyv.
WHEN 'ZRPN'.
EXIT.
WHEN 'TAN' OR 'TANN'.
IF vbkd-ktgrd = '01'. " Added 6/5/02
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
**Ernesto EDIT for UE DEMO 10/15/2002
***************TEST FUNCTION MODULE FOR USER EXIT MAINT.******
**ADDED A CASE STATEMENT BELOW.
CALL FUNCTION 'Z_UE_SD_GET_SCHEDULE_LINE_CAT'
EXPORTING
pstyv = vbap-pstyv
ktgrd = vbkd-ktgrd
ettyp2 = vbep-ettyp
IMPORTING
ettyp = vbep-ettyp.
****************END OF TEST SOURCE CODE******************
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
check sy-subrc ne 0.
IF sy-subrc NE 0.
Change inserted by Arvind R Kulkarni; 07/22/2002
TAN -> ZAN; TANN => ZANN
vbap-pstyv = 'ZAN'.
IF vbap-pstyv = 'TAN'.
vbap-pstyv = 'ZAN'.
ELSEIF vbap-pstyv = 'TANN'.
vbap-pstyv = 'ZANN'.
ENDIF.
end of change
ENDIF.
*ADDED CASE HERE FOR TEST FOR SYNTAX CHECK 10/15/2002
*CASE vbap-pstyv.
WHEN 'ZAN'.
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
CHECK sy-subrc EQ 0.
vbap-pstyv = 'TAN'.
WHEN 'ZANN'.
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
CHECK sy-subrc EQ 0.
vbap-pstyv = 'TANN'.
WHEN 'ZTAN'.
IF vbkd-ktgrd = '01'. " Added 6/5/02
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
check sy-subrc ne 0.
IF sy-subrc NE 0.
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
03/23/2005 KN03 Set Schedule Line default to ZF order type ZFD,
item cat ZTAN, sales org 5060, 5070, and 5071
IF vbak-auart EQ 'ZFD' AND
( vbak-vkorg = '5060' OR vbak-vkorg = '5070'
OR vbak-vkorg = '5071' ).
vbep-ettyp = 'ZF'.
ENDIF.
Begin of insertion for IRAT processing
Arvind R Kulkarni; Dated: 07/17/2002.
Changed to include YRAT; ; 11/22/2002
WHEN 'IRAT' OR 'YRAT'.
IF vbak-auart NE 'ZWAR'.
the sales order is NOT a ZWAR
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
IF sy-subrc NE 0.
the transaction IS intercompany
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'YN'.
ELSE.
vbep-ettyp = 'YL'.
ENDIF.
ELSE.
the transaction IS NOT intercompany
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZN'.
ELSE.
vbep-ettyp = 'ZL'.
ENDIF.
ENDIF.
IF vbkd-ktgrd = '01'.
sale is to an affiliate in local sales org
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'YN'.
ELSE.
vbep-ettyp = 'YL'.
ENDIF.
ENDIF.
ELSE.
the sales order IS a ZWAR
READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
IF sy-subrc NE 0.
the transaction IS intercompany
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ELSE.
the transaction IS NOT intercompany
NOTHING NEEDS TO BE DONE FOR ZWAR DOMESTIC
STD SCHED LINE CATEGORIES TO BE MAINTAINED.
IF VBEP-ETTYP = 'CN'.
VBEP-ETTYP = 'ZN'.
ELSE.
VBEP-ETTYP = 'ZL'.
ENDIF.
ENDIF.
IF VBKD-KTGRD = '01'.
sale is to an affiliate in local sales org
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
ENDIF.
End of insertion for IRAT processing
WHEN 'IRRS' OR 'IRRE' OR 'IRLA' OR 'IRLB' OR 'KBN' OR 'TAQ'
KSI Modification 04/22/03
Exclude check for item category 'YKW'
OR 'YTAN' OR 'ZKLN' OR 'KAN' OR 'ZTAQ'
OR 'YKW' OR 'IRRP' OR 'ZKBC' OR 'ZKBN' OR 'ZKAN' OR 'KLN'.
or 'ZKEN' OR 'ZKEC' or ZREK OR 'KEN'.
EXIT.
WHEN 'ZTR1' OR 'ZRBB' OR 'ZREB' OR 'ZREC' OR 'ZREF' OR 'ZREN'
Removed ZRTN to validate plant 9000
OR 'ZRFF' OR 'ZRNB' OR 'ZRNN' OR 'REN' OR 'RENN'
OR 'ZLN' OR 'IRAL' OR 'ZTR0' OR 'KLN'.
EXIT.
03/23/2005 KN03 set default sched line for KE & ZKE
WHEN 'KEN' OR 'ZKEG' OR 'ZKEN' OR 'ZKEC'.
IF vbak-vkorg EQ '5070'.
vbep-ettyp = 'Z0'.
ENDIF.
WHEN 'ZREK'.
INCLUDE zue_sd_0033.
IF vbap-werks = '9000'. " KN04
IF vbkd-ktgrd = '01'. " KN04
IF z_auart = 'ZFD ' and z_pstyv = 'KLN '. " KN04
vbep-ettyp = 'YK'. " KN04
ENDIF.
ENDIF.
ENDIF.
KSE Modification 04/10/03
For Item Cate 'ZRTN'
Assign 'YQ' to Schedule line cat, if cross-company
'YU' if not.
WHEN 'ZRTN'.
KN03 for KSI set default schedule line for order type ZREK
INCLUDE zue_sd_0033.
IF svbep-tabix IS INITIAL.
IF vbap-werks = '9000'.
IF vbkd-ktgrd = '01'. " KN04
IF z_auart = 'ZFD' and z_pstyv = 'KLN '. " KN04
vbep-ettyp = 'YK'. " KN04
ELSE. " KN04
vbep-ettyp = 'YQ'.
ENDIF.
ELSE.
vbep-ettyp = 'YU'.
ENDIF.
ENDIF.
ENDIF.
KN03 for KSI set default schedule line for order type ZREK
INCLUDE zue_sd_0033.
WHEN OTHERS.
IF vbkd-ktgrd = '01'.
IF vbep-ettyp = 'CN'.
vbep-ettyp = 'ZA'.
ELSE.
vbep-ettyp = 'ZP'.
ENDIF.
ENDIF.
ENDCASE.
endif.
Redetermine Movement Type
PERFORM tvep_select(sapmv45a) USING vbep-ettyp
charx
sy-subrc.
vbep-bwart = tvep-bwart.
ENDIF.
KSE Mod
User Exit for Repair Replacement
Export VBEP-ETTYP, imported by RV64A950
04/18/03
EXPORT i_ettyp = vbep-ettyp TO MEMORY ID 'ZZSCHEDULE'.
**lines added for valuated customer-returns project by msn
110903. It will set required schedule line category YR on specific
item categories if the document created is of type RE with reference
document being an invoice of type F2
**. 11-11-2003.
**Schedule Line Category - Valuate Customer Returns Stock
BREAK-POINT.
INCLUDE zue_sd_0010.
*KSEA Modification to default item creation date for the IRAT
*line item schedule line. SAP Note 23281
04/01/04
INCLUDE zue_sd_0020.
ENDFORM.
*eject
FORM USEREXIT_MOVE_FIELD_TO_VBKD *
This userexit can be used to move some fields into the sales *
dokument business data workaerea VBKD *
SVBKD-TABIX = 0: Create data *
SVBKD-TABIX > 0: Change data *
This form is called at the end of form VBKD_FUELLEN. *
FORM userexit_move_field_to_vbkd.
VBKD-zzfield = xxxx-zzfield2.
Get Customer group, Price group and Price list type *
by Ship-to party
10/04/2001
DATA: yp1 LIKE t001k-bwkey,
z_uepos_bukrs LIKE t001k-bukrs.
*Request by Customer Service - Marian Favors 11-08-2004
TABLES: zzue030. "ECLARKE 11-08-2004
SELECT SINGLE tcode INTO zzue030-tcode FROM zzue030
WHERE tcode = sy-tcode. "ECLARKE 11-08-2004
IF sy-subrc = 0. "ECLARKE 11-08-2004
Removed check for customer group as this was required by Steve Ludewig
IF " vbkd-kdgrp IS INITIAL AND "Arvind Kulkarni; 08/05/2002.
vbkd-konda IS INITIAL AND
vbkd-pltyp IS INITIAL.
SELECT SINGLE kdgrp konda pltyp bzirk
INTO (vbkd-kdgrp, vbkd-konda, vbkd-pltyp, vbkd-bzirk)
FROM knvv
WHERE kunnr = kuwev-kunnr
AND vkorg = vbak-vkorg
AND vtweg = vbak-vtweg
AND spart = vbak-spart.
ENDIF.
ENDIF. "ECLARKE 11-08-2004
Redetermine Schedule line Category if Acct Assignment Grp is changed
to
Chui 10/23/2001
IF svbkd-tabix > 0 AND sy-dynnr = '4311'.
IF vbkd-ktgrd = '01' AND vbep-ettyp <> 'ZP'.
PERFORM userexit_move_field_to_vbep.
ENDIF.
ENDIF.
INCLUDE zzsdprc01.
To make the value of the field VBAK-ZUONR same as VBKD-BSTKD
05/04/04
vbak-zuonr = vbkd-bstkd.
ENDFORM.
*eject
FORM USEREXIT_NUMBER_RANGE *
This userexit can be used to determine the numberranges for *
the internal document number. *
US_RANGE_INTERN - internal number range *
This form is called from form BELEG_SICHERN *
FORM userexit_number_range USING us_range_intern.
Example: Numer range from TVAK like in standard
US_RANGE_INTERN = TVAK-NUMKI.
ENDFORM.
*eject
FORM USEREXIT_PRICING_PREPARE_TKOMK *
This userexit can be used to move additional fields into the *
communication table which is used for pricing: *
TKOMK for header fields *
This form is called from form PREISFINDUNG_VORBEREITEN. *
FORM userexit_pricing_prepare_tkomk.
TKOMK-zzfield = xxxx-zzfield2.
*{ INSERT SNDK900075 1
tkomk-aland = t001-land1.
*} INSERT
Fill Zip code with Ship-to party's
tkomk-post_code1 = kuwev-pstlz.
ENDFORM.
*eject
FORM USEREXIT_PRICING_PREPARE_TKOMP *
This userexit can be used to move additional fields into the *
communication table which is used for pricing: *
TKOMP for item fields *
This form is called from form PREISFINDUNG_VORBEREITEN. *
FORM userexit_pricing_prepare_tkomp.
TKOMP-zzfield = x -
Print smartform from background
Dear Experts,
I have requirement to create delivery then create bill automatically so i open background job from program (A) and submit the creating program for bill (B) via this job what happened is the delivery creating is ok, the delivery printing is ok and the billing creation is ok but the billing printing program (C) is not ok where the spool is creating with status waiting so can any body help how to print from background job??
program (A) (Create backgroundjob and submit program via it)
FORM USEREXIT_SAVE_DOCUMENT.
DATA: jobcount TYPE tbtcjob-jobcount,
new_time type TBTCJOB-SDLSTRTTM.
data : p_vbeln TYPE likp-vbeln.
DATA : v_JOB_WAS_RELEASED LIKE BTCH0000-CHAR1.
break rurik.
if T180-TRTYP = 'H'
and ( likp-lfart = 'ZDCF'
or likp-lfart = 'ZDCI'
or likp-lfart = 'ZDCO'
or likp-lfart = 'ZDCP'
or likp-lfart = 'ZDCR'
or likp-lfart = 'ZDOB'
or likp-lfart = 'ZDOT'
or likp-lfart = 'ZDQT'
or likp-lfart = 'ZDRE' - Ian
or likp-lfart = 'ZDSO').
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = 'SD_AUTOMATION'
SDLSTRTDT = NO_DATE
SDLSTRTTM = NO_TIME
JOBCLASS =
IMPORTING
JOBCOUNT = jobcount
CHANGING
RET =
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4.
SUBMIT zsd_create_billing_document
with vbeln EQ LIKP-VBELN
AND RETURN
VIA JOB 'SD_AUTOMATION'
NUMBER jobcount.
new_time = sy-uzeit + 10. "short delay
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = jobcount
jobname = 'SD_AUTOMATION'
STRTIMMED = 'X'
SDLSTRTDT = sy-datum
SDLSTRTTM = new_time
IMPORTING
JOB_WAS_RELEASED = v_JOB_WAS_RELEASED
EXCEPTIONS
CANT_START_IMMEDIATE = 1
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEX = 6
LOCK_FAILED = 7
INVALID_TARGET = 8
OTHERS = 9
ENDIF.
ENDFORM.
Program B (Creat bill)
REPORT zsd_create_billing_document
NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES: vbup, vbak, vbuk.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA done(1).
PARAMETERS vbeln TYPE likp-vbeln.
DATA sal_vbeln TYPE vbeln..
DATA messtab LIKE TABLE OF bdcmsgcoll WITH HEADER LINE.
DATA billing_doc TYPE vbeln.
DATA messagetext(200).
MESSAGE s002(zsd).
WRITE: / vbeln.
DATA : v_print TYPE i.
CALL FUNCTION 'ENQUEUE_EVVBLKE'
EXPORTING
MODE_LIKP = 'E'
MANDT = SY-MANDT
vbeln = vbeln
X_VBELN = ' '
_SCOPE = '2'
_wait = 'X'
" _wait = space
_COLLECT = ' '
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3
MESSAGE s005(zsd).
*In case ZSOT automatic billing once we create delivery and post goods issue manual.
SELECT SINGLE vbelv
FROM vbfa
INTO sal_vbeln
WHERE vbeln = vbeln
AND vbtyp_v = 'C'.
SELECT SINGLE *
FROM vbak
WHERE vbeln = sal_vbeln.
import v_print to v_print FROM MEMORY id 'PRINTFLAG'.
IF vbak-auart EQ 'ZSOT'.
IF v_print eq '1'.
PERFORM create_document USING vbeln
CHANGING sy-subrc.
ENDIF.
ELSE.
*Other than ZSOT Post Goods issue from ZPGI2 and from there automatic billing.
ENDIF.
*& Form CREATE_DOCUMENT
text
-->P_VBELN text
FORM create_document USING p_vbeln
CHANGING sysubrc.
PERFORM bdc_dynpro USING 'SAPMV60A' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KOMFK-VBELN(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'KOMFK-VBELN(01)'
p_vbeln."'1130010202'.
PERFORM bdc_dynpro USING 'SAPMV60A' '0104'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBRK-FKART'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
CALL FUNCTION 'DEQUEUE_EVVBLKE'
EXPORTING
MODE_LIKP = 'E'
MANDT = SY-MANDT
vbeln = vbeln
X_VBELN = ' '
_SCOPE = '3'
_SYNCHRON = ' '
_COLLECT = ' '
CALL TRANSACTION 'VF01' USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO messtab.
READ TABLE messtab WITH KEY msgtyp = 'E'.
IF sy-subrc EQ 0.
sysubrc = 4.
ELSE.
sysubrc = 0.
ENDIF.
LOOP AT messtab.
sy-msgty = messtab-msgtyp.
sy-msgid = messtab-msgid.
sy-msgno = messtab-msgnr.
sy-msgv1 = messtab-msgv1.
sy-msgv2 = messtab-msgv2.
sy-msgv3 = messtab-msgv3.
sy-msgv4 = messtab-msgv4.
CALL FUNCTION '/SAPTRX/GET_MESSAGE_TEXT'
EXPORTING
msgid = sy-msgid
msgno = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv2
msgv3 = sy-msgv3
msgv4 = sy-msgv4
IMPORTING
messagetext = messagetext
EXCEPTIONS
no_message_retrieved = 1
OTHERS = 2.
WRITE: / messagetext.
CLEAR messagetext.
ENDLOOP.
*... refresh tables
REFRESH: messtab, bdcdata.
ENDFORM. "CREATE_DOCUMENT
*& Form BDC_DYNPRO
text
-->PROGRAM text
-->DYNPRO text
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
Insert field *
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
*& Form change_status
text
--> p1 text
<-- p2 text
FORM change_status .
*Change status if delivery and the billing document has been created
SELECT *
FROM vbup
WHERE vbeln = vbeln
AND fksta NE 'C'.
vbup-fksta = 'C'.
vbup-gbsta = 'C'.
MODIFY vbup.
ENDSELECT.
UPDATE vbuk
SET fkstk = 'C'
gbstk = 'C'
WHERE vbeln = vbeln.
ENDFORM. " change_status
Program C (Print Bill)
REPORT z_sdps_invoice.
*& <Module>: SD Smart Forms.
*& Type : Executable
*& Request No.:
*& Author/Co. : Ahmed Al Eryani
*& Created On : 26.02.2007
*& Finished : 24.2007
*& Description:
*& MODIFICATION LOG
*& Modified by :
*& Request No. :
*& Dev. Class :
*& Date Modified:
*& Description :
TABLES: vbrk, kna1, vbrp, makt, konv, vbkd.
SELECTION-SCREEN BEGIN OF BLOCK a.
PARAMETER: p_vbeln LIKE vbrp-vbeln OBLIGATORY MATCHCODE OBJECT vmcf. "Billing document No
"SELECT-OPTIONS s_bukrs FOR bkpf-bukrs. "Company Code
SELECTION-SCREEN END OF BLOCK a.
*itab is object of our smart form structre
DATA: itab TYPE zsd_invoice OCCURS 0 WITH HEADER LINE.
DATA: wa_footer TYPE zsd_invv1.
DATA: t_items TYPE zsd_inv WITH HEADER LINE,
w_items TYPE LINE OF zsd_inv,
it_footer TYPE zsd_inv1,
w_footer TYPE LINE OF zsd_inv1.
DATA: amountspell LIKE spell.
DATA: g_fm_name TYPE rs38l_fnam.
DATA: mnumvflag(10) TYPE c.
DATA: coun TYPE i,
totalforitems TYPE kwert,
lasttotal(8) TYPE p DECIMALS 2,
lasttotalc(11) TYPE c,
firstpart(11) TYPE c,
secondpart(2) TYPE c.
DATA: currency TYPE waerk.
DATA: currtxet(50) TYPE c.
*Header internal table
DATA: BEGIN OF t_header OCCURS 0,
vbeln LIKE vbrk-vbeln,"Document no
name1 LIKE kna1-name1,"Customer Name
adrnr LIKE kna1-adrnr,"Customer Address
bstkd LIKE vbkd-bstkd,"
kunnr LIKE kna1-kunnr,"Customer Account no
waerk LIKE vbrk-waerk, "currency key
aubel LIKE vbrp-aubel,
kunrg LIKE vbrk-kunrg,
street LIKE adrc-street,
fkart LIKE vbrk-fkart,
lgort LIKE lips-lgort,"Stord bin
lgobe LIKE t001l-lgobe,
ktokd LIKE kna1-ktokd,
PSTYV LIKE vbrp-PSTYV,
orgbil LIKE vbfa-vbelv,
END OF t_header.
*detail internal table
DATA: BEGIN OF t_items1 OCCURS 0,
matnr LIKE vbrp-matnr,"Material Number
posnr LIKE vbrp-posnr,
vgpos LIKE vbrp-vgpos,
maktx LIKE makt-maktx,"Material Description
lgort LIKE vbrp-lgort,"Storage location
fkimg LIKE vbrp-fkimg,"
knumv LIKE vbrk-knumv,"
unitprice LIKE konv-kawrt,
total LIKE konv-kawrt,
waers LIKE konv-waers,
kkurs LIKE konv-kkurs,
vgbel LIKE vbrp-vgbel,
lgpbe LIKE lips-lgpbe,
vgtyp LIKE vbrp-vgtyp,
END OF t_items1.
DATA: v_belnr TYPE belnr_d.
*Unit price internal table
DATA: BEGIN OF t_untprice OCCURS 0,
kschl LIKE konv-kschl,"condition type
kawrt LIKE konv-kawrt,"unit price
END OF t_untprice.
*Condition(spcial deduction)
DATA: BEGIN OF t_spcialcnd OCCURS 0,
kschl LIKE konv-kschl,"condition type
kwert LIKE konv-kwert,"Deduction value
END OF t_spcialcnd.
DATA: t_tax LIKE TABLE OF t_spcialcnd WITH HEADER LINE,
v_tax LIKE konv-kwert.
DATA: BEGIN OF t_curtxt OCCURS 0,
ltext LIKE tcurt-ltext,
END OF t_curtxt.
DATA :return_code TYPE i," VALUE 999,
us_screen TYPE c. "VALUE 'X'.
declaration of data
INCLUDE rlb_invoice_data_declare.
definition of forms
INCLUDE rlb_invoice_form01.
INCLUDE rlb_print_forms.
START-OF-SELECTION.
"IF p_vbeln IS NOT INITIAL.
PERFORM entry USING return_code us_screen.
"ENDIF.
FORM ENTRY
FORM entry USING return_code us_screen.
DATA: lf_retcode TYPE sy-subrc.
CLEAR retcode.
xscreen = us_screen.
perform processing using us_screen
changing lf_retcode.
if lf_retcode ne 0.
return_code = 1.
else.
return_code = 0.
endif.
IF p_vbeln IS INITIAL.
p_vbeln = nast-objky.
ENDIF.
"get header data
SELECT SINGLE vbrk~vbeln vbrk~waerk vbrp~aubel vbrk~kunrg vbrk~fkart vbrp~lgort vbrp~PSTYV
INTO (t_header-vbeln, t_header-waerk, t_header-aubel, t_header-kunrg, t_header-fkart,
t_header-lgort, t_header-PSTYV)
FROM vbrk JOIN vbrp ON vbrp~vbeln = vbrk~vbeln
JOIN kna1 ON vbrk~kunrg = kna1~kunnr
WHERE vbrk~vbeln = p_vbeln.
IF t_header-PSTYV = 'ZREN'.
SELECT SINGLE VBELV
INTO t_header-orgbil
FROM vbfa
WHERE vbeln = p_vbeln
and VBTYP_V = 'M'.
ENDIF.
SELECT SINGLE t001l~lgobe
INTO t_header-lgobe
FROM t001l
WHERE t001l~lgort = t_header-lgort.
SELECT SINGLE kna1~name1 kna1~adrnr kna1~kunnr kna1~ktokd
INTO (t_header-name1, t_header-adrnr, t_header-kunnr, t_header-ktokd)
FROM kna1 "ON vbrk~kunrg = kna1~kunnr
WHERE kna1~kunnr = t_header-kunrg
AND spras = 'AR'.
IF t_header-name1 IS INITIAL.
SELECT SINGLE kna1~name1 kna1~adrnr kna1~kunnr kna1~ktokd
INTO (t_header-name1, t_header-adrnr, t_header-kunnr, t_header-ktokd)
FROM kna1 "ON vbrk~kunrg = kna1~kunnr
WHERE kna1~kunnr = t_header-kunrg
AND spras = 'EN'.
ENDIF.
IF t_header-ktokd = 'ZONE'.
SELECT SINGLE belnr
INTO v_belnr
FROM bkpf
WHERE xblnr = p_vbeln.
SELECT SINGLE name1
INTO t_header-name1
FROM bsec
WHERE belnr = v_belnr.
ENDIF.
SELECT SINGLE adrc~street
INTO t_header-street
FROM adrc
WHERE addrnumber = t_header-adrnr
AND langu = 'AR'.
IF t_header-street IS INITIAL.
SELECT SINGLE adrc~street
INTO t_header-street
FROM adrc
WHERE addrnumber = t_header-adrnr
AND langu = 'EN'.
ENDIF.
"get details data
SELECT vbrp~matnr vbrp~posnr vbrp~vgpos vbrp~fkimg
vbrk~knumv vbrp~matnr vbrp~vgbel vbrp~vgtyp"makt~maktx
INTO CORRESPONDING FIELDS OF TABLE t_items1
FROM vbrp "JOIN makt ON vbrp~matnr = makt~matnr
JOIN vbrk ON vbrp~vbeln = vbrk~vbeln
"join konv on vbrk~knumv = konv~knumv
WHERE vbrp~vbeln = p_vbeln
AND vbrp~fkimg NE '0.000'.
"AND makt~spras = 'E'.
break arasmy.
LOOP AT t_items1.
SELECT SINGLE lips~lgpbe
INTO t_items1-lgpbe
FROM lips
WHERE vbeln = t_items1-vgbel
AND posnr = t_items1-vgpos.
SELECT SINGLE makt~maktx
INTO t_items1-maktx
FROM makt
WHERE matnr = t_items1-matnr
AND makt~spras = 'EN'.
SELECT SINGLE konv~kbetr konv~kwert konv~waers konv~kkurs
INTO (t_items1-unitprice, t_items1-total, t_items1-waers,
t_items1-kkurs)
FROM konv
WHERE konv~kschl = 'NETW'"'ZSPC' "'ZSP1'
AND konv~knumv = t_items1-knumv
AND kposn = t_items1-posnr.
t_items1-unitprice = ( t_items1-total / t_items1-fkimg ) * t_items1-kkurs.
MODIFY t_items1.
mnumvflag = t_items1-knumv."Number of the document condition
ENDLOOP.
*get the deduction value for the document condiotion no
SELECT konvkschl konvkwert
INTO CORRESPONDING FIELDS OF TABLE t_spcialcnd
FROM konv
WHERE konv~kschl IN ('ZSSD', 'ZSCD', 'ZSDD', 'ZSPD', 'ZSWD', 'ZMW1', 'ZSGS', 'ZMW2')
AND konv~knumv = mnumvflag.
Get tax 10%
SELECT konvkschl konvkwert
APPENDING CORRESPONDING FIELDS OF TABLE t_tax
FROM konv
WHERE konv~kschl = 'MWST'
AND konv~knumv = mnumvflag.
itab-invn = t_header-vbeln.
itab-orgbil = t_header-orgbil.
itab-cusna = t_header-name1.
itab-addr = t_header-street.
itab-custn = t_header-kunrg.
itab-sord = t_header-aubel.
itab-fkart = t_header-fkart.
itab-lgort = t_header-lgort.
itab-lgobe = t_header-lgobe.
itab-PSTYV = t_header-PSTYV.
currency = t_header-waerk.
LOOP AT t_items1.
w_items-matn = t_items1-matnr.
w_items-matdes = t_items1-maktx.
w_items-stloc = t_items1-lgpbe."lgort.
w_items-qunt = t_items1-fkimg.
w_items-total = t_items1-total.
totalforitems = totalforitems + w_items-total.
COLLECT w_items INTO t_items.
endloop.
LOOP AT t_items1.
LOOP AT t_items WHERE matn = t_items1-matnr.
t_items-prc = t_items1-unitprice.
MODIFY t_items.
ENDLOOP.
ENDLOOP.
LOOP AT t_items.
coun = coun + 1.
t_items-itmn = coun.
MODIFY t_items.
ENDLOOP.
w_footer-totalforitems = totalforitems.
LOOP AT t_spcialcnd.
CASE t_spcialcnd-kschl.
WHEN 'ZSSD'.
w_footer-spdisc = w_footer-spdisc + t_spcialcnd-kwert.
WHEN 'ZSCD'.
w_footer-comdisc = w_footer-comdisc + t_spcialcnd-kwert.
WHEN 'ZSDD'.
w_footer-DIFMAT = w_footer-DIFMAT + t_spcialcnd-kwert.
when 'ZSPD'.
w_footer-trgtdisc = w_footer-trgtdisc + t_spcialcnd-kwert.
WHEN 'ZMW2'.
w_footer-comindisc = w_footer-comindisc + t_spcialcnd-kwert.
WHEN 'ZSWD'.
w_footer-cshdisc = w_footer-cshdisc + t_spcialcnd-kwert.
WHEN 'ZSGS'.
w_footer-stampsdisc = w_footer-stampsdisc + t_spcialcnd-kwert.
ENDCASE.
w_footer-ttldisc = w_footer-spdisc + w_footer-comdisc + w_footer-trgtdisc
+ w_footer-cshdisc + w_footer-DIFMAT + w_footer-stampsdisc.
ENDLOOP.
w_footer-aftrdiscnts = w_footer-totalforitems + w_footer-ttldisc.
LOOP AT t_tax WHERE kwert NE '0.00'.
w_footer-saltax = w_footer-saltax + t_tax-kwert.
ENDLOOP.
w_footer-totalaftrtax = w_footer-aftrdiscnts + w_footer-saltax.
w_footer-total = w_footer-totalaftrtax + w_footer-comindisc.
lasttotal = w_footer-total.
APPEND w_footer TO it_footer.
SELECT tcurt~ltext
INTO CORRESPONDING FIELDS OF TABLE t_curtxt
FROM tcurt
WHERE tcurt~spras = 'AR'
AND tcurt~waers = currency.
LOOP AT t_curtxt.
currtxet = t_curtxt-ltext.
ENDLOOP.
itab[] = t_header[].
lasttotalc = lasttotal.
SPLIT lasttotalc AT '.' INTO firstpart secondpart.
lasttotal = firstpart / 100.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = lasttotal
currency = ''"CURRENCY
filler = space
language = 'A'
IMPORTING
in_words = amountspell
EXCEPTIONS
not_found = 1
too_large = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
--split amount--
BREAK radha.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'Z_INVOICE_PARTS2'
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
fm_name = g_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DATA : control_parameters TYPE ssfctrlop,
print_options TYPE ssfcompop.
DATA : document_output_info TYPE ssfcrespd,
job_output_info TYPE ssfcrescl,
job_output_options TYPE ssfcresop.
DATA : count TYPE i.
control_parameters-langu = 'AR'.
control_parameters-no_dialog = 'X'."Don't show Dialog
print_options-tdarmod = '1'.
print_options-tdcopies = '001'.
print_options-tddest = 'LP02'.
print_options-tdprinter = 'ZARSWIN'.
print_options-tdimmed = 'X'.
print_options-tddelete = 'X'.
print_options-tdlifetime = '8'.
print_options-tddest = 'LP03'."nast-ldest.
"print_options-tddest = nast-ldest.
"print_options-tdcopies = pv_copies.
print_options-tddelete = 'X'.
print_options-tdfinal = 'X'.
print_options-tdnewid = 'X'.
WHILE count ne 1.
IF job_output_info-outputdone ne 'X'.
CALL FUNCTION g_fm_name
EXPORTING
ARCHIVE_INDEX =
ARCHIVE_INDEX_TAB =
ARCHIVE_PARAMETERS =
control_parameters = control_parameters
MAIL_APPL_OBJ =
MAIL_RECIPIENT =
MAIL_SENDER =
output_options = print_options
user_settings = space
header = itab
amountspell = amountspell
currtxt = currtxet
secondpart = secondpart
wa_footer = w_footer
IMPORTING
DOCUMENT_OUTPUT_INFO = document_output_info
JOB_OUTPUT_INFO = job_output_info
JOB_OUTPUT_OPTIONS = job_output_options
TABLES
it_items = t_items
it_footer = it_footer
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5
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. "ENTRYHi,
lw_control_param-device = 'PRINTER'.
lw_control_param-getotf = c_x.
lw_control_param-no_dialog = c_x.
lw_composer_param-tdnoprev = c_x.
<b>*lw_composer_param-tddest = 'LONSC0P310'.</b>
<b>lw_composer_param-tddest = 'XXXX'.</b> <b>"Four digits</b>
<i>lw_composer_param-tdnewid = c_x.
lw_composer_param-tdfinal = c_x.</i> --> Not required
In place of 'XXXX', replace it by a 4 digit value. It would be available in transaction SPAD->Output Devices->Double click your output device. On the right hand side there would be a field Short Name. Replace 'XXXX' with that value.
Best regards,
Prashant -
Report for displaying BSID & VBRP Details ( Outstanding Invoice details )
Dear friends,
For creatinf a report.
First I have to select the details from BSID. Then on the basis of VBELN fiels in BSID , I have to take the Details from VBRK & VBRP based . But VBELN field is null for some BSID Recors. Then How can I pick the VBRK & VBRP Details?
Thanks in Advance.
Regards,
LIJOYou will have entries in BSID-VBELN where the Document Type is RV.
Try this:
Select * where BSID-BELNR = VBRK-BELNR
now Select * where VBRK-VBELN = VBRP-VBELN
Hope that helps.
Cheers. -
Not getting output undr billing details and item details in printng invoice
In form interface under import tab i have declared 1 value i.e. IM_FS_KNA1 type KNA1 I have not declared anything except this in form interface.
In Global Definitions under Global Data tab:
IM_T_KNA1 TYPE TABLE OF KNA1
IM_FS_VBRK TYPE VBRK
IM_FS_VBRP TYPE VBRP
W_TOTAL TYPE VBRP-NETWR
IM_T_VBRK TYPE TABLE OF VBRK
IM_T_VBRP TYPE TABLE OF VBRP
under Currency/ Quant Fields
IM_FS_VBRP-NETWR IM_FS_VBRK-WAERK C CURR
In Billin Window, there is a loop from IM_T_VBRK INTO IM_FS_VBRK where KUNAG = IM_FS_KUNNR
In main window, i've created a table for displaying item details
I'm only getting data of Customer in Customer Details window after using driver program. I've checked the entries in the table but for those inputs i'm not getting the desired output..
Following is the code that i'm using for driver program:
*& Report ZPRINTINVOICE2
REPORT ZPRINTINVOICE2.
TABLES:
kna1,
vbrk,
vbrp.
PARAMETERS :
p_kunnr LIKE vbrk-kunag,
p_vbeln LIKE vbrk-vbeln.
DATA :
/1BCDWB/SF00000214 TYPE rs38l_fnam. " Name of the Function Module
DATA : t_vbrk LIKE
STANDARD TABLE
OF vbrk.
DATA: t_vbrp LIKE
STANDARD TABLE
OF vbrp.
DATA :
fs_kna1 TYPE kna1, " Holds Customer Details
fs_vbrk LIKE LINE OF t_vbrk, " Holds BillingDoc Header Details
fs_vbrp LIKE LINE OF t_vbrp. " Holds BillingDoc Item Details
START-OF-SELECTION.
SELECT SINGLE *
FROM kna1
INTO fs_kna1
WHERE kunnr EQ p_kunnr.
SELECT *
FROM vbrk
INTO TABLE t_vbrk
WHERE kunag EQ p_kunnr
AND vbeln EQ p_vbeln.
SELECT *
FROM vbrp
INTO TABLE t_vbrp
FOR ALL ENTRIES IN t_vbrk
WHERE vbeln = t_vbrk-vbeln.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZTRYINVOICE2'
IMPORTING
fm_name = /1BCDWB/SF00000214
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION /1BCDWB/SF00000214
EXPORTING
im_fs_kna1 = fs_kna1
im_t_vbrk = t_vbrk
im_t_vbrp = t_vbrp
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
plz help......Hi Neha,
Modify your CALL FUNCTION /1BCDWB/SF00000214 like below :
CALL FUNCTION /1BCDWB/SF00000214
EXPORTING
im_fs_kna1 = im_fs_kna1
TABLES
im_t_vbrk = im_t_vbrk
im_t_vbrp = im_t_vbrp
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
At Smarforms > Form Interface > Import :
im_fs_kna1.
At Smarforms > Form Interface > Tables :
im_t_vbrk , im_t_vbrp
BR
Dep -
ERROR WHILE TRANSPORTING SMARTFORM
hi friend,
when i try to transport my smartform it shows the error message like this
1. Object CUAD ZINVOICE_11 is inactiv
2. Object REPT ZINVOICE_11 is inactiv
what are CUAD and REPT .
My Code is.
REPORT ZINVOICE_11.
*& Report Z_INVOICE_PRINT *
*& changes done by : Bhupinder Singh
*REPORT Z_INVOICE_PRINT_FINAL .
constants : sf_name(30) type c value 'ZINVOICE_11'.
parameters : vbeln like vbrk-vbeln .
data : perf type c.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS: pre RADIOBUTTON GROUP RAD1 DEFAULT 'X',
post RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK B1.
data : form_name type RS38L_FNAM.
data : ivbrk like vbrk occurs 0 with header line.
data : ivbrp1 like vbrp occurs 0 with header line.
data : ivbrpf like vbrp occurs 0 with header line.
data : ivbrp like vbrp occurs 0 with header line.
data : ivbap like vbap occurs 0 with header line.
data : ivbkd like vbkd occurs 0 with header line.
data : ikna1 like kna1 occurs 0 with header line.
data : ikonv like konv occurs 0 with header line.
data : ilips like lips occurs 0 with header line.
data : ivepo like vepo occurs 0 with header line.
data : ivekp like vekp occurs 0 with header line.
data : ikonv1 like konv occurs 0 with header line.
data : ikonv2 like konv occurs 0 with header line.
data : netwt like vekp-ntgew.
data : grwt like vekp-brgew.
select * from vbrp into table ivbrp where vbeln = vbeln.
select * from vbrk into table ivbrk where vbeln = vbeln.
data : vknumv like konv-knumv.
loop at ivbrk.
move ivbrk-knumv to vknumv.
endloop.
loop at ivbrp.
select * from konv into table ikonv1 where knumv = vknumv and kposn = ivbrp-posnr and kschl = 'ZFOB'.
select * from konv into table ikonv2 where knumv = vknumv and kposn = ivbrp-posnr and kschl = 'ZDS3'.
endloop.
data : ins like konv-kbetr.
data : dis like konv-kbetr.
data : fght like KONV-KBETR.
loop at ikonv1.
ins = ins + ikonv1-kbetr.
endloop.
loop at ikonv2.
dis = dis + ikonv2-kbetr.
endloop.
if pre = 'X'.
select * from vbrp into table ivbrp where vbeln = vbeln order by matkl.
loop at ivbrp.
on change of ivbrp-matkl.
clear ivbrp1.
refresh ivbrp1.
move ivbrp-matkl to ivbrp1-arktx.
insert ivbrp1 into ivbrp.
modify ivbrp.
endon.
endloop.
endif.
ivbrpf[] = ivbrp[].
select * from vbrp into table ivbrp where vbeln = vbeln.
select * from vbrk into table ivbrk where vbeln = vbeln.
select * from lips into table ilips for all entries in ivbrp where vbeln = ivbrp-vgbel and posnr = ivbrp-vgpos.
select * from vepo into table ivepo for all entries in ilips where vbeln = ilips-vbeln and posnr = ilips-posnr.
select * from vekp into table ivekp for all entries in ivepo where venum = ivepo-venum.
loop at ivekp.
if ivekp-gewei = 'G'.
ivekp-ntgew = ivekp-ntgew / 1000.
ivekp-brgew = ivekp-brgew / 1000.
endif.
netwt = netwt + ivekp-ntgew.
grwt = grwt + ivekp-brgew.
endloop.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = sf_name
VARIANT = ' '
DIRECT_CALL = ' '
IMPORTING
FM_NAME = form_name
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION form_name
EXPORTING
vbeln = vbeln
perf = perf
pre = pre
post = post
dis = dis
ins = ins
vknumv = vknumv
netwt = netwt
grwt = grwt
fght = fght
VECS = VECS
TABLES
IVBRK = IVBRK
IVBRP = IVBRP
IVBRPf = IVBRPf
IVBaP = IVBaP
IKna1 = IKna1
Ivbkd = Ivbkd
ivbrp1 = ivbrp1
ikonv = ikonv
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
INCLUDE ZINVOICE_STATUS_0001O01.
INCLUDE ZINVOICE_USER_COMMAND_0001I01.
whaT SHOULD i do to active it and transport it.dear bhupi,
When u transporting u r any object , please magke sure u r whole object is in active mode ,otherwise its shows erroe like object in in active mode.
Regards ,
Nikhil Narkhede -
hi all,
i have problem with the print program.in this it is printing the from in pre printed format.
but as comapny's pre printed format has been changed so
they are not willing to carry it on.
so they have given me a format to design the form .
i have designed the form and assined my from name in the
print program but i was not able to see output ie my form
which i have designed.
my form name is zinv.
so for this i am sending my print prog so what changes i have to make in it so that i can see my form after executing it.
plz give me the solution.
REPORT ZSI-01 LINE-SIZE 132.
PROGRAM NAME : ZINVOICE AUTHOR : SATYA *
START DATE : 11-04-98 END DATE : *
REQUEST NO : REQUESTED BY : SELVAM *
CHANGE DATE : 12.05.98 CHANGED BY : *
OBJECTIVE :INVOICE PRINTING ON LAYOUT SET. *
LAYOUT SET ZINVOICE *
PF-STATUS 100. *
changed and transfered on 16.04.99 REQUESTED BY SELVAM. *
THIS IS THE LATEST VERSION OF INVOICE PROG CHANGES MADE BY raghu *
ON 16/04/99 *
RECENT COPY WITH SECOND SALES & TAX EMPTED REQ SELVAM 24/6/98 *
copy with form sale req by selvam 27/07/98 *
PRINT-CONTROL FUNCTION 'CI015'.
*TRANSPARETN TABLES
TABLES : KOMK.
TABLES : KOMV.
TABLES : KOMP.
TABLES : KNVK.
TABLES : OBJK.
TABLES : SER01.
TABLES : T001W.
TABLES : MKPF.
TABLES : KONV .
TABLES : LIKP.
TABLES : VBFA . "
TABLES : VBAK . "Header table for the invoice document
TABLES : VBAP . "Line item table for the invoice document
TABLES : KNA1 . "Customer master table for the customer details
TABLES : MARA . "Material master table
TABLES : ITCPO. "SYSTEM TABLE FOR LAYOUT SETS COMMUNICATION
TABLES : ITCPP. "SYSTEM TABLE FOR LAYOUT SETS COMMUNICATION
TABLES : VBRK. "HEADER TABLE FOR BILLING DOCUMENT
TABLES : VBRP. "LINE ITEM FOR BILLING DOCUMENT
TABLES : VBPA. "PARTNER FOR SALES DOCUMENT
TABLES : KNB1.
TABLES : LIPS.
TABLES : TVM1T.
TABLES : SADR.
*INTERNAL TABLES
DATA : BEGIN OF INV_TAB OCCURS 0.
DATA : BILLNO LIKE VBRP-VBELN.
DATA : END OF INV_TAB.
DATA : BEGIN OF I_TAB OCCURS 0.
DATA : SDNO LIKE LIKP-VBELN.
DATA : INVO LIKE VBRK-VBELN.
DATA : ORNO LIKE VBAK-VBELN.
DATA : END OF I_TAB.
*FOR READ PRICE
DATA: BEGIN OF TKOMV OCCURS 0.
INCLUDE STRUCTURE KOMV.
DATA: END OF TKOMV.
DATA: BEGIN OF TKOMVD OCCURS 0.
INCLUDE STRUCTURE KOMVD.
DATA: END OF TKOMVD.
DATA : BEGIN OF CTYPE OCCURS 0.
DATA :SIGN(1).
DATA :OPTIONS(2).
DATA :LOW(4).
DATA :HIGH(4).
DATA : END OF CTYPE.
*header data
DATA : BEGIN OF HEAD_TAB.
DATA : DOCNO LIKE VBRK-VBELN.
DATA : SALOF LIKE VBRK-VKORG.
DATA : DOCDT LIKE VBRK-FKDAT.
DATA : PLANT LIKE LIKP-WERKS.
DATA : PNAM1 LIKE T001W-NAME1.
DATA : PNAM2 LIKE T001W-NAME2.
DATA : PNAM3 LIKE T001W-NAME1.
DATA : PNAM4 LIKE T001W-NAME2.
DATA : PNAM5 LIKE T001W-PSTLZ.
DATA : PCSTNO(35).
DATA : PLSTNO(35).
*DATA : POREF LIKE VBAK-BSTNK.
DATA : POREF(30).
DATA : PODAT LIKE VBAK-BSTDK.
DATA : CCODE LIKE KNA1-KUNNR.
DATA : CPERSON LIKE KNVK-NAME1.
DATA : TPHONE LIKE VBPA-PARNR.
DATA : SALESOR LIKE VBAK-AUFNR.
DATA : BILLCUR LIKE VBAK-WAERK.
DATA : CARNAME(35).
DATA : SPSHIPI(40).
DATA : SPCARIN(40).
DATA : LRNO(20).
DATA : LRDT(20).
DATA : MODEPAY(20).
DATA : CSTNO(30).
DATA : LSTNO(30).
DATA : STAMT TYPE P DECIMALS 2. "SUB TOTAL
DATA : STAXAMT TYPE P DECIMALS 2. "SALES TAX AMOUNT
DATA : FCHRG TYPE P DECIMALS 2.
DATA : OCHRG LIKE VBRP-NETWR.
DATA : AMOUNTINWORDS(150).
DATA : GTOTAL TYPE P DECIMALS 2.
DATA : FROMDATE(10).
DATA : ENDDATE(10).
DATA : END OF HEAD_TAB.
DATA : B_PRNCTR TYPE I VALUE 0 .
*sold to party
DATA : BEGIN OF SOLDP_TAB.
DATA : NAME LIKE KNA1-NAME1.
DATA : ADD1 LIKE KNA1-NAME2.
DATA : ADD2 LIKE KNA1-NAME3.
DATA : ADD3 LIKE KNA1-ORT01.
DATA : ADD4 LIKE KNA1-PSTLZ.
DATA : ADD5 LIKE KNA1-REGIO.
DATA : ADD6 LIKE KNA1-NAME4.
DATA : END OF SOLDP_TAB.
DATA : B_SURCHARG VALUE 'N'.
ship to party
DATA : BEGIN OF SHIPP_TAB.
DATA : NAME LIKE KNA1-NAME1.
DATA : ADD1 LIKE KNA1-NAME2.
DATA : ADD2 LIKE KNA1-NAME3.
DATA : ADD3 LIKE KNA1-ORT01.
DATA : ADD4 LIKE KNA1-PSTLZ.
DATA : ADD5 LIKE KNA1-REGIO.
DATA : ADD6 LIKE KNA1-NAME4.
DATA : END OF SHIPP_TAB.
LINE ITEMS
DATA : BEGIN OF LINE_TAB OCCURS 0.
DATA : B_LONO(4).
DATA : CFAMOUNT LIKE VBRK-NETWR.
DATA : SLNO(4).
DATA : PRODCODE(6).
DATA : SERNO(20).
DATA : DESC(40).
DATA : UOM(4).
DATA : QTY(5).
DATA : RATE TYPE P DECIMALS 2.
DATA : AMOUNT TYPE P DECIMALS 2.
DATA : STAX(5).
DATA : OTAX(5).
DATA : B_TAXAMOUNT_LINE LIKE VBRP-NETWR.
DATA : POSNR LIKE VBRP-POSNR . " ADDED BY ANIL
DATA : END OF LINE_TAB.
*serial Nos
DATA : BEGIN OF SER_TAB OCCURS 0.
DATA : SERNO(20).
DATA : SLNO(4).
DATA : END OF SER_TAB.
*structure for carried forward.
DATA : BEGIN OF SUBTOT.
DATA : B_SUBTOTAL LIKE VBRK-NETWR.
DATA : END OF SUBTOT.
*STRUCTURE for layout set
DATA : BEGIN OF SERALIGN.
DATA : TEXT(10).
DATA : B_SL1 LIKE SER_TAB-SERNO.
DATA : B_SL2 LIKE SER_TAB-SERNO.
DATA : B_SL3 LIKE SER_TAB-SERNO.
DATA : END OF SERALIGN.
*VARIABLES
DATA : B_DIVIDE LIKE VBRP-NETWR.
DATA : B_PRNUCOMM LIKE SY-UCOMM.
DATA : B_NEWPAGE.
DATA : B_INVRATE LIKE VBRP-NETWR.
DATA : B_INVSTAX LIKE VBRP-NETWR.
DATA : B_TAX(4),B_TOT(4).
DATA : B_DIFFCOUNT TYPE I.
DATA : B_COUNTOFRECORDS TYPE I.
DATA : B_TOTALINDICATOR(256).
DATA : B_TEMP(25).
DATA : B_TEMP1(25).
DATA : B_AMOUNTSTRING1(36).
DATA : B_AMOUNTSTRING2(35).
DATA : B_AMOUNTSTRING3(35).
DATA : B_ORDERREFNO LIKE VBRK-XBLNR.
DATA : B_RATEFORITEM LIKE VBRK-NETWR.
DATA : B_TOTALAMOUNT TYPE P DECIMALS 2 VALUE 0. "TOTAL INVOICE AMOUNT
DATA : B_CUSTOMERNO LIKE VBAK-KUNNR. "CUSTOMER NO FROM VBAK TABLE
DATA : B_RECORDCOUNTER TYPE I. "RECORD COUNTER
DATA : B_AMOUNTINWORDS(200). "AMOUNT STORED IN WORDS
DATA : B_DECIMALAMOUNTINWORDS(40). "DEC PART OF THE AMOUNT WORD
DATA : B_AMOUNTINWORDSFINAL(256). "TOTAL AMOUNT IN WORDS
DATA : B_CUSTOMERCODE LIKE VBAK-KUNNR. "CUSTOMER CODE
DATA : B_STRINGLENGTH TYPE I.
DATA : B_INVFORCHARGE LIKE VBRP-NETWR.
DATA : B_INVOCTROI LIKE VBRP-NETWR.
DATA : B_INVTOT LIKE VBRP-NETWR.
DATA : B_INVNO LIKE VBAK-VBELN.
DATA : B_RECCOUNT TYPE I VALUE 0 , START TYPE I VALUE 0.
DATA : IFSELECTED TYPE C VALUE 'X'.
DATA : B_TOTAL_TAX LIKE VBRK-NETWR.
DATA : B_IFSERVICEORDER(1) VALUE 'T'.
DATA : ANS(1).
DATA : B_SHIP_TO_PARTY LIKE KNA1-KUNNR.
DATA : B_SOLDTOPARTYCODE LIKE KNA1-KUNNR.
DATA B_STR(35).
DATA : RECNO LIKE SY-INDEX VALUE 1.
DATA : B_SPCFLAG VALUE 'F'.
DATA : B_TAX_INFO1(80) .
DATA : B_SECOND_SALE(250) .
DATA : B_EXEMPTED(250) .
DATA : B_HEXEMPTED(250) .
DATA : B_TAX_STR(250).
DATA : B_FORM_TEXT(250) .
DATA : B_FORM_TYPE(25) .
DATA : TXT(60).
DATA : BEGIN OF FORM_TAB OCCURS 0 ,
MVGR1 LIKE VBRP-MVGR1 ,
SLNO(5) ,
END OF FORM_TAB .
DATA : OLD_MVGR1 LIKE TVM1T-MVGR1 , B_FORM_IND LIKE SY-TABIX .
DATA : B_TAX_LEN TYPE I .
DATA : FKART LIKE VBRK-FKART.
SET PF-STATUS '100'.
SELECTION-SCREEN BEGIN OF BLOCK B_1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS SEL1 FOR VBRK-VBELN MATCHCODE OBJECT VMCF MEMORY ID VF.
SELECT-OPTIONS SEL2 FOR LIKP-VBELN MATCHCODE OBJECT VMVL MEMORY ID VL.
SELECT-OPTIONS SEL4 FOR VBAK-KUNNR MEMORY ID VAG.
SELECTION-SCREEN END OF BLOCK B_1.
SELECTION-SCREEN BEGIN OF BLOCK B_2 WITH FRAME TITLE TEXT-005.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(3) TEXT-002.
PARAMETERS : PRINTSL RADIOBUTTON GROUP GRP1.
SELECTION-SCREEN COMMENT 7(2) TEXT-003.
PARAMETERS : NPRINTSL RADIOBUTTON GROUP GRP1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B_2.
PERFORM INIT.
CLEAR HEAD_TAB.
IF SEL2 EQ SPACE AND SEL1 EQ SPACE.
IF SEL4 EQ SPACE.
PERFORM WIN_INFO(ZURL) USING 'Error' 'Enter atleast one' 'Value'.
EXIT.
ENDIF.
ENDIF.
PERFORM WRITEITEMS. "Selection Screen
FORM MAIN *
FORM MAIN.
B_PRNCTR = 0 .
LOOP AT I_TAB.
CLEAR : B_SECOND_SALE , B_EXEMPTED , B_TAX_LEN .
read table i_tab index recno.
PERFORM SOLD_TO_PARTY_CHANGE USING I_TAB-INVO.
if sy-subrc eq 0.
B_INVNO = I_TAB-SDNO.
PERFORM FILL_CHAR(ZURL) USING 10 '0' I_TAB-SDNO CHANGING B_INVNO.
PERFORM FILL_CHAR(ZURL) USING 10 '0' I_TAB-INVO
CHANGING I_TAB-INVO.
CLEAR HEAD_TAB-GTOTAL.
PERFORM ASSIGN.
perform alignwrite.
PERFORM OPENFORM USING 'ZINVOICEDUMMY'.
PERFORM LAYOUTSETWRITE.
DATA : B_SRLNO(4) VALUE 0.
DATA : B_CTR TYPE I VALUE 0.
DATA : B_LOOPCTR TYPE I VALUE 0.
DATA : B_AMT1 LIKE VBRK-NETWR.
DATA : B_TEXTELEMENT(3).
SUBTOT-B_SUBTOTAL = 0.
B_SRLNO = 0.
LOOP AT LINE_TAB.
ADD 1 TO B_SRLNO.
MOVE B_SRLNO TO LINE_TAB-B_LONO.
PERFORM TAX_INFO_DETERMINE USING B_SRLNO.
" ADDED BY ANIL
SUBTOT-B_SUBTOTAL = B_AMT1 + LINE_TAB-AMOUNT.
"add line_tab-amount to subtot-b_subtotal.
MOVE SUBTOT-B_SUBTOTAL TO B_AMT1.
PERFORM LAYOUTSETMAIN USING '100'.
MOVE '101' TO B_TEXTELEMENT.
IF PRINTSL EQ 'X'.
MOVE 'Serial No:' TO SERALIGN-TEXT.
LOOP AT SER_TAB WHERE SLNO EQ LINE_TAB-SLNO.
IF B_LOOPCTR EQ B_CTR.
MOVE SER_TAB-SERNO TO SERALIGN-B_SL1.
ADD 1 TO B_CTR.
PERFORM LAYOUTSETMAIN USING B_TEXTELEMENT.
ENDIF.
IF B_LOOPCTR EQ B_CTR.
MOVE SER_TAB-SERNO TO SERALIGN-B_SL2.
ADD 1 TO B_CTR.
PERFORM LAYOUTSETMAIN USING B_TEXTELEMENT.
ENDIF.
IF B_LOOPCTR EQ B_CTR.
MOVE SER_TAB-SERNO TO SERALIGN-B_SL3.
ADD 1 TO B_CTR.
PERFORM LAYOUTSETMAIN USING B_TEXTELEMENT.
ENDIF.
B_LOOPCTR = B_LOOPCTR + 1.
MOVE '103' TO B_TEXTELEMENT.
MOVE ' ' TO SERALIGN-TEXT.
ENDLOOP.
ENDIF.
ENDLOOP.
HEAD_TAB-GTOTAL = B_INVRATE + B_INVSTAX + B_INVTOT +
B_INVOCTROI + B_INVFORCHARGE.
HEAD_TAB-OCHRG = B_INVTOT.
IF HEAD_TAB-PLANT EQ '0020'.
PERFORM LAYOUTSETMAIN USING '104'.
ENDIF.
IF B_SURCHARG = 'Y'.
PERFORM LAYOUTSETMAIN USING '105'.
ENDIF.
DESCRIBE TABLE FORM_TAB LINES SY-TABIX .
IF SY-TABIX > 0 .
SORT FORM_TAB BY MVGR1 .
CLEAR : OLD_MVGR1 , B_FORM_IND .
LOOP AT FORM_TAB .
IF FORM_TAB-MVGR1 <> OLD_MVGR1 AND B_FORM_IND > 1 .
SELECT SINGLE * FROM TVM1T WHERE MVGR1 = OLD_MVGR1 .
CONCATENATE '. :' TVM1T-BEZEI INTO B_FORM_TYPE
SEPARATED BY SPACE .
PERFORM PRINT_TAX_INFO USING B_FORM_TEXT B_FORM_TYPE .
CLEAR B_FORM_TEXT .
ENDIF .
ADD 1 TO B_FORM_IND .
OLD_MVGR1 = FORM_TAB-MVGR1 .
CONCATENATE B_FORM_TEXT ',' FORM_TAB-SLNO INTO B_FORM_TEXT
SEPARATED BY SPACE .
ENDLOOP .
SELECT SINGLE * FROM TVM1T WHERE MVGR1 = OLD_MVGR1 .
CONCATENATE '. :' TVM1T-BEZEI INTO B_FORM_TYPE
SEPARATED BY SPACE .
PERFORM PRINT_TAX_INFO USING B_FORM_TEXT B_FORM_TYPE .
CLEAR B_FORM_TEXT .
ENDIF .
PERFORM LAYOUTSETMAIN USING '109'.
B_TAX_LEN = STRLEN( B_SECOND_SALE ) .
IF B_TAX_LEN > 0 .
PERFORM PRINT_TAX_INFO USING B_SECOND_SALE
'. : Second Sales - No Tax' .
ENDIF .
B_TAX_LEN = STRLEN( B_EXEMPTED ) .
IF B_TAX_LEN > 0 .
PERFORM PRINT_TAX_INFO USING B_EXEMPTED
'. : Software Exempted From Tax' .
ENDIF .
B_TAX_LEN = STRLEN( B_HEXEMPTED ) .
IF B_TAX_LEN > 0 .
PERFORM PRINT_TAX_INFO USING B_HEXEMPTED
'. : Exempted From Tax' .
ENDIF .
MOVE 'Sales Tax Shown is inclusive of surcharge @ 10%'
TO B_TAX_STR.
REFRESH : FORM_TAB .
CLEAR : B_SECOND_SALE , B_EXEMPTED , B_TAX_LEN ,B_FORM_TEXT,
FORM_TAB , B_HEXEMPTED .
PERFORM CONVERT.
PERFORM LAYOUTFOOTER USING '102'.
PERFORM CLOSEFORM(ZURL).
PERFORM INIT.
endif.
ENDLOOP.
ENDFORM.
FORM ASSIGN *
FORM ASSIGN.
B_INVSTAX = 0.
B_INVRATE = 0.
REFRESH SER_TAB.
perform gettax using i_tab-invo.
HEAD_TAB-DOCNO = I_TAB-INVO.
SELECT SINGLE * FROM VBRK WHERE VBELN EQ HEAD_TAB-DOCNO.
HEAD_TAB-DOCDT = VBRK-FKDAT.
FKART = VBRK-FKART.
CLEAR HEAD_TAB-SALESOR.
SELECT SINGLE * FROM VBAK WHERE VBELN = I_TAB-ORNO.
MOVE VBAK-VKBUR TO HEAD_TAB-SALOF.
MOVE VBAK-BSTNK TO HEAD_TAB-POREF.
MOVE VBAK-BSTDK TO HEAD_TAB-PODAT.
MOVE HEAD_TAB-PODAT TO B_STR.
CONCATENATE B_STR6(2) '.' B_STR4(2) '.' B_STR+2(2) INTO B_STR.
CONCATENATE HEAD_TAB-POREF '/' B_STR INTO B_STR.
MOVE B_STR TO HEAD_TAB-POREF.
SELECT SINGLE * FROM VBPA WHERE VBELN EQ I_TAB-INVO AND PARVW EQ 'RE'.
IF B_SPCFLAG EQ 'T'.
SELECT SINGLE * FROM KNA1 WHERE KUNNR EQ B_SOLDTOPARTYCODE.
SELECT SINGLE * FROM KNB1 WHERE KUNNR EQ B_SOLDTOPARTYCODE.
SELECT SINGLE * FROM KNVK WHERE KUNNR EQ B_SOLDTOPARTYCODE.
move knvk-name1 to head_tab-cperson.
move knvk-telf1 to head_tab-tphone.
MOVE KNA1-NAME1 TO SOLDP_TAB-NAME. "SOLD TO PARTY
MOVE KNA1-NAME2 TO SOLDP_TAB-ADD1. "SOLD TO PARTY
MOVE KNA1-NAME3 TO SOLDP_TAB-ADD2. "SOLD TO PARTY
MOVE KNA1-NAME4 TO SOLDP_TAB-ADD6. "added By deepak 26/11/98
MOVE KNA1-ORT01 TO SOLDP_TAB-ADD3. "SOLD TO PARTY
MOVE KNA1-PSTLZ TO SOLDP_TAB-ADD4. "SOLD TO PARTY
MOVE KNA1-REGIO TO SOLDP_TAB-ADD5. "SOLD TO PARTY
ELSE.
SELECT SINGLE * FROM KNB1 WHERE KUNNR EQ VBPA-KUNNR.
IF VBPA-ADRNR EQ SPACE.
SELECT SINGLE * FROM KNA1 WHERE KUNNR EQ VBPA-KUNNR.
MOVE KNA1-NAME1 TO SOLDP_TAB-NAME. "SOLD TO PARTY
MOVE KNA1-NAME2 TO SOLDP_TAB-ADD1. "SOLD TO PARTY
MOVE KNA1-NAME3 TO SOLDP_TAB-ADD2. "SOLD TO PARTY
MOVE KNA1-NAME4 TO SOLDP_TAB-ADD6. "added By deepak 26/11/98
MOVE KNA1-ORT01 TO SOLDP_TAB-ADD3. "SOLD TO PARTY
MOVE KNA1-PSTLZ TO SOLDP_TAB-ADD4. "SOLD TO PARTY
MOVE KNA1-REGIO TO SOLDP_TAB-ADD5. "SOLD TO PARTY
ELSE.
SELECT SINGLE * FROM SADR WHERE ADRNR EQ VBPA-ADRNR.
MOVE SADR-NAME1 TO SOLDP_TAB-NAME. "SOLD TO PARTY
MOVE SADR-NAME2 TO SOLDP_TAB-ADD1. "SOLD TO PARTY
MOVE SADR-NAME3 TO SOLDP_TAB-ADD2. "SOLD TO PARTY
MOVE SADR-NAME4 TO SOLDP_TAB-ADD6.
MOVE SADR-ORT01 TO SOLDP_TAB-ADD3. "SOLD TO PARTY
MOVE SADR-PSTLZ TO SOLDP_TAB-ADD4. "SOLD TO PARTY
MOVE SADR-REGIO TO SOLDP_TAB-ADD5. "SOLD TO PARTY
ENDIF.
ENDIF.
insereted by anil on request by raghu 4/7/98
select single * from knvk where kunnr eq vbpa-kunnr.
CLEAR VBPA .
SELECT * FROM VBPA WHERE VBELN EQ VBAK-VBELN AND PARVW = 'AP' AND
( PARNR NE SPACE OR ADRNR NE SPACE ) .
IF NOT VBPA-ADRNR IS INITIAL .
SELECT SINGLE * FROM SADR WHERE ADRNR = VBPA-ADRNR .
MOVE SADR-NAME3 TO HEAD_TAB-CPERSON.
MOVE SADR-TELF1 TO HEAD_TAB-TPHONE.
ELSE .
SELECT SINGLE * FROM KNVK WHERE PARNR = VBPA-PARNR .
MOVE KNVK-NAME1 TO HEAD_TAB-CPERSON.
MOVE KNVK-TELF1 TO HEAD_TAB-TPHONE.
ENDIF .
EXIT .
ENDSELECT .
MOVE VBAK-VKBUR TO HEAD_TAB-SALOF.
MOVE VBAK-VBELN TO HEAD_TAB-SALESOR.
MOVE VBAK-WAERK TO HEAD_TAB-BILLCUR.
MOVE KNA1-KUNNR TO HEAD_TAB-CCODE.
END OF INSERTION
SELECT SINGLE * FROM VBPA WHERE VBELN EQ I_TAB-INVO AND PARVW EQ 'WE'.
IF VBPA-ADRNR EQ SPACE.
SELECT SINGLE * FROM KNA1 WHERE KUNNR EQ VBPA-KUNNR.
MOVE KNA1-KUNNR TO B_SHIP_TO_PARTY."SHIP TO PARTY
MOVE KNA1-NAME1 TO SHIPP_TAB-NAME. "SHIP TO PARTY
MOVE KNA1-NAME2 TO SHIPP_TAB-ADD1. "SHIP TO PARTY
MOVE KNA1-NAME3 TO SHIPP_TAB-ADD2. "SHIP TO PARTY
MOVE KNA1-NAME4 TO SHIPP_TAB-ADD6. " add by deepak on 26/11/98
MOVE KNA1-ORT01 TO SHIPP_TAB-ADD3. "SHIP TO PARTY
MOVE KNA1-PSTLZ TO SHIPP_TAB-ADD4. "SHIP TO PARTY
MOVE KNA1-REGIO TO SHIPP_TAB-ADD5. "SHIP TO PARTY
ELSE.
SELECT SINGLE * FROM SADR WHERE ADRNR EQ VBPA-ADRNR.
move kna1-kunnr to b_ship_to_party. "SHIP TO PARTY
MOVE SADR-NAME1 TO SHIPP_TAB-NAME. "SHIP TO PARTY
MOVE SADR-NAME2 TO SHIPP_TAB-ADD1. "SHIP TO PARTY
MOVE SADR-NAME3 TO SHIPP_TAB-ADD2. "SHIP TO PARTY
MOVE SADR-NAME4 TO SHIPP_TAB-ADD6.
MOVE SADR-ORT01 TO SHIPP_TAB-ADD3. "SHIP TO PARTY
MOVE SADR-PSTLZ TO SHIPP_TAB-ADD4. "SHIP TO PARTY
MOVE SADR-REGIO TO SHIPP_TAB-ADD5. "SHIP TO PARTY
ENDIF.
IF B_IFSERVICEORDER EQ 'F'.
SELECT SINGLE * FROM LIPS WHERE VBELN EQ B_INVNO.
MOVE LIPS-WERKS TO HEAD_TAB-PLANT.
ELSE.
SELECT SINGLE * FROM VBRP WHERE VBELN EQ I_TAB-INVO
AND FKIMG NE 0.
MOVE VBRP-WERKS TO HEAD_TAB-PLANT.
endif.
SELECT SINGLE * FROM T001W WHERE WERKS EQ HEAD_TAB-PLANT.
SELECT SINGLE * FROM SADR WHERE ADRNR EQ T001W-ADRNR.
MOVE SADR-NAME1 TO HEAD_TAB-PNAM1.
MOVE SADR-NAME2 TO HEAD_TAB-PNAM2.
MOVE SADR-NAME3 TO HEAD_TAB-PNAM3.
MOVE SADR-NAME4 TO HEAD_TAB-PNAM4.
MOVE SADR-PSTLZ TO HEAD_TAB-PNAM5.
PERFORM GETCST-LST USING T001W-ADRNR.
DATA : B_AMOUNT_ITEM LIKE VBRP-NETWR .
PERFORM GETTAXFORLINEITEMS USING I_TAB-INVO.
B_INVOCTROI = 0.
B_INVFORCHARGE = 0.
B_INVTOT = 0.
SELECT * FROM VBRP WHERE VBELN = I_TAB-INVO "changed on 15/4
AND FKIMG NE 0.
B_AMOUNT_ITEM = 0.
MOVE VBRP-POSNR+2(4) TO LINE_TAB-SLNO.
MOVE VBRP-POSNR TO LINE_TAB-POSNR.
MOVE VBRP-MATNR+13(5) TO LINE_TAB-PRODCODE.
MOVE VBRP-ARKTX TO LINE_TAB-DESC.
SELECT SINGLE * FROM LIPS WHERE VBELN EQ B_INVNO
AND VGPOS EQ VBRP-POSNR.
SELECT SINGLE * FROM SER01 WHERE LIEF_NR EQ LIPS-VBELN
AND POSNR EQ LIPS-POSNR.
IF SY-SUBRC EQ 0.
SELECT * FROM OBJK WHERE OBKNR EQ SER01-OBKNR.
MOVE OBJK-SERNR TO SER_TAB-SERNO.
MOVE VBRP-POSNR+2(4) TO SER_TAB-SLNO.
WRITE SER_TAB-SERNO NO-ZERO TO SER_TAB-SERNO.
CONDENSE SER_TAB-SERNO NO-GAPS.
APPEND SER_TAB.
ENDSELECT.
ENDIF.
MOVE VBRP-FKIMG TO B_TEMP.
SPLIT B_TEMP AT '.' INTO B_TEMP1 B_TEMP.
CONDENSE B_TEMP1 NO-GAPS.
MOVE B_TEMP1 TO LINE_TAB-QTY.
IF VBRP-KZWI2 GT 0.
B_DIVIDE = VBRP-KZWI2 / VBRP-FKIMG.
MOVE B_DIVIDE TO LINE_TAB-RATE.
B_DIVIDE = 0.
ELSE.
B_DIVIDE = VBRP-KZWI1 / VBRP-FKIMG.
MOVE B_DIVIDE TO LINE_TAB-RATE.
B_DIVIDE = 0.
ENDIF.
B_AMOUNT_ITEM = LINE_TAB-RATE * VBRP-FKIMG.
add line_tab-rate to b_invrate.
ADD B_AMOUNT_ITEM TO B_INVRATE.
MOVE B_AMOUNT_ITEM TO LINE_TAB-AMOUNT.
MOVE VBRP-VRKME TO LINE_TAB-UOM.
B_TOTAL_TAX = 0.
write : / 'before loop' , vbrp-posnr.
LOOP AT TKOMV WHERE KPOSN EQ VBRP-POSNR AND KNUMV = VBRK-KNUMV.
write : / vbrp-posnr , tkomv-kposn.
IF TKOMV-KSCHL IN CTYPE.
B_TOTAL_TAX = B_TOTAL_TAX +
( ( ( TKOMV-KBETR * TKOMV-KAWRT ) * 100 ) / 100000 ).
b_total_tax = b_total_tax + tkomv-kwert.
ADD TKOMV-KWERT TO B_INVSTAX.
ENDIF.
IF TKOMV-KSCHL EQ 'ZOCT'.
ADD TKOMV-KWERT TO B_INVOCTROI.
ENDIF.
IF TKOMV-KSCHL EQ 'ZF00' OR TKOMV-KSCHL EQ 'ZF01'.
ADD TKOMV-KWERT TO B_INVFORCHARGE.
ENDIF.
IF TKOMV-KSCHL EQ 'ZIN6'.
ADD TKOMV-KWERT TO B_INVTOT.
ENDIF.
ENDLOOP.
B_SURCHARG = 'N'.
B_TOT = 0.
SORT TKOMV BY KSCHL.
LOOP AT TKOMV WHERE KPOSN EQ VBRP-POSNR AND KNUMV = VBRK-KNUMV AND
KSCHL IN CTYPE.
IF TKOMV-KSCHL = 'ZIN1' OR TKOMV-KSCHL = 'ZIN2'.
B_TAX = TKOMV-KBETR / 10.
ENDIF.
IF TKOMV-KSCHL = 'ZIN3'.
B_TAX = B_TAX + ( B_TAX * ( TKOMV-KBETR / 10 ) / 100 ).
ENDIF.
IF TKOMV-KSCHL = 'ZIN4'.
B_TAX = B_TAX + ( B_TAX * ( TKOMV-KBETR / 10 ) / 100 ).
B_SURCHARG = 'Y'.
ENDIF.
ENDLOOP.
LOOP AT TKOMV WHERE KSCHL = 'ZIN6'.
B_TOT = TKOMV-KBETR / 10.
ENDLOOP.
MOVE B_TOTAL_TAX TO LINE_TAB-B_TAXAMOUNT_LINE.
" b_tax = ( line_tab-b_taxamount_line / line_tab-amount ) * 100.
MOVE B_TAX TO LINE_TAB-STAX .
MOVE B_TOT TO LINE_TAB-OTAX.
**Recently added**
B_AMOUNT_ITEM = 0.
B_TOTAL_TAX = 0.
B_TAX = 0.
B_TOT = 0.
b_invrate = 0.
***till here
APPEND LINE_TAB.
ENDSELECT.
PERFORM PRINTTEXT.
ENDFORM.
END-OF-SELECTION .
FORM WRITEITEMS *
FORM WRITEITEMS.
DATA : POPULATE TYPE I.
PERFORM SELECTDATA.
DESCRIBE TABLE INV_TAB LINES POPULATE.
IF POPULATE NE 0.
LOOP AT INV_TAB.
ULINE AT 5(83).
AT FIRST.
WRITE : /5 '|' ,10 '|SALES DOCUMENT NO' COLOR 3,
30 '|DELIVERY DOCUMENT NO' COLOR 3,
52 '|PAYER.. ' COLOR 3 ,
87 '|'.
ULINE AT /5(83).
ENDAT.
SELECT * FROM VBRK WHERE VBELN EQ INV_TAB-BILLNO.
CLEAR LIKP-VBELN.
IF VBRK-RFBSK = 'C'.
MOVE VBRK-VBELN TO HEAD_TAB-DOCNO.
MOVE VBRK-FKDAT TO HEAD_TAB-DOCDT.
SELECT * FROM VBFA WHERE VBELN EQ VBRK-VBELN.
" and vbtyp_v ca 'JBGC'.
IF VBFA-VBTYP_V EQ 'G' OR VBFA-VBTYP_V EQ 'C'.
B_IFSERVICEORDER = 'F'.
ENDIF.
IF VBFA-VBTYP_V = 'J'.
B_IFSERVICEORDER = 'T'.
ENDIF.
ENDSELECT.
IF B_IFSERVICEORDER EQ 'T'.
SELECT SINGLE * FROM VBFA WHERE VBELN EQ VBRK-VBELN
AND VBTYP_V EQ 'J'.
SELECT * FROM LIKP WHERE VBELN EQ VBFA-VBELV.
IF SY-SUBRC NE 4.
SELECT SINGLE * FROM KNA1 WHERE KUNNR EQ VBRK-KUNRG.
IFSELECTED = 'X'.
WRITE : /5 '|' ,8 IFSELECTED AS CHECKBOX ,10 '|',
11 VBRK-VBELN ,30 '|' ,31 LIKP-VBELN ,52 '|',
53 KNA1-NAME1 ,87 '|', LIKP-WERKS.
ULINE AT /5(83).
B_RECCOUNT = B_RECCOUNT + 1.
ENDIF.
ENDSELECT.
ELSE.
SELECT SINGLE * FROM KNA1 WHERE KUNNR EQ VBRK-KUNRG.
IFSELECTED = 'X'.
WRITE : /5 '|' ,8 IFSELECTED AS CHECKBOX ,10 '|',
11 VBRK-VBELN ,30 '|' ,31 LIKP-VBELN ,52 '|',
53 KNA1-NAME1 ,87 '|', LIKP-WERKS.
ULINE AT /5(83).
B_RECCOUNT = B_RECCOUNT + 1.
ENDIF.
ELSE.
IFSELECTED = ' '.
CASE VBRK-RFBSK.
WHEN 'A'.
TXT = 'Billing document blocked for forwarding to FI'.
WHEN 'B'.
TXT = 'Posting document not created (account determ.error)'.
WHEN 'D'.
TXT = 'Billing document is not relevant for accounting'.
WHEN 'E'.
TXT = 'Billing document has been completed by cancellation'.
WHEN 'F'.
TXT = 'Posting document not created (pricing error)'.
WHEN 'G'.
TXT = 'Posting document not created (export data missing)'.
WHEN 'H'.
TXT = 'Posting using invoice list'.
WHEN 'I'.
TXT = 'Posting using invoice list (account determination error)'.
WHEN 'J'.
TXT = 'Accounting document created, accrual still incomplete'.
ENDCASE.
ULINE AT /5(83).
WRITE : /5 '|' ,8 IFSELECTED AS CHECKBOX INPUT OFF ,10 '|',
11 VBRK-VBELN ,30 '|' ,52 '|',
53 KNA1-NAME1 ,87 '|', LIKP-WERKS.
ULINE AT /5(83).
WRITE :/5 '|' , 8 TXT , 87 '|'.
ULINE AT /5(83).
ENDIF.
ENDSELECT.
ENDLOOP.
ENDIF.
ENDFORM.
AT USER-COMMAND.
DATA : CHECK(1).
DATA : TOTALLINES LIKE SY-INDEX.
START = 4.
REFRESH LINE_TAB.
REFRESH SER_TAB.
B_PRNUCOMM = SY-UCOMM.
DESCRIBE TABLE I_TAB LINES TOTALLINES.
IF SY-UCOMM NE 'NEXT' AND SY-UCOMM NE 'LAST'.
do b_reccount times.
REFRESH I_TAB.
DO.
READ LINE START FIELD VALUE IFSELECTED INTO CHECK.
IF SY-SUBRC EQ 0.
IF CHECK EQ 'X'.
READ LINE START FIELD VALUE LIKP-VBELN INTO I_TAB-SDNO.
READ LINE START FIELD VALUE VBRK-VBELN INTO I_TAB-INVO.
SELECT SINGLE * FROM VBFA WHERE VBELN EQ I_TAB-INVO
AND VBTYP_V EQ 'C'.
SELECT SINGLE * FROM VBRK WHERE VBELN EQ I_TAB-INVO.
I_TAB-ORNO = VBRK-ZUONR.
APPEND I_TAB.
CLEAR I_TAB.
CHECK = ' '.
ENDIF.
START = START + 2.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
DATA : B_UCOMM LIKE SY-UCOMM.
MOVE SY-UCOMM TO B_UCOMM.
CASE B_UCOMM.
WHEN 'NEXT'.
RECNO = RECNO + 1.
IF RECNO GT TOTALLINES.
RECNO = 1.
ENDIF.
read table i_tab index recno.
perform sold_to_party_change using i_tab-invo.
PERFORM MAIN.
WHEN 'LAST'.
RECNO = RECNO - 1.
IF RECNO LT 1.
RECNO = 1.
ENDIF.
read table i_tab index recno.
perform sold_to_party_change using i_tab-invo.
PERFORM MAIN.
WHEN 'PRIN'.
read table i_tab index recno.
set pf-status '101'.
perform sold_to_party_change using i_tab-invo.
PRINT-CONTROL FUNCTION 'CI015'.
PERFORM MAIN.
WHEN 'PREV'.
READ TABLE I_TAB INDEX RECNO.
NEW-PAGE PRINT OFF NO-TITLE NO-HEADING LINE-SIZE 132 LINE-COUNT 65.
set pf-status '102'.
perform sold_to_party_change using i_tab-invo.
PRINT-CONTROL FUNCTION 'CI015'.
PERFORM MAIN.
WHEN 'QUIT'.
LEAVE SCREEN .
EXIT.
ENDCASE.
FORM PRINTTEXT *
FORM PRINTTEXT.
PERFORM READTEXT USING '0002' 'VBBK'.
PERFORM READTEXT USING '0003' 'VBBK'.
PERFORM READTEXT USING '0004' 'VBBK'.
PERFORM READTEXT USING '0012' 'VBBK'.
PERFORM READTEXT USING '0013' 'VBBK'.
PERFORM READTEXT USING '0022' 'VBBK'.
PERFORM READTEXT USING 'Z103' 'VBBP' .
PERFORM READTEXT USING 'Z104' 'VBBP' .
added by praveen as per selvam's request.
IF FKART = 'FV'.
PERFORM READTEXT USING 'ZIS1' 'VBBK'.
PERFORM READTEXT USING 'ZIS2' 'VBBK'.
ENDIF.
ENDFORM.
FORM READTEXT *
--> B_ID *
FORM READTEXT USING B_ID B_OBJECT.
DATA : BEGIN OF HEADER1 OCCURS 0.
INCLUDE STRUCTURE THEAD.
DATA : END OF HEADER1.
DATA : BEGIN OF LINE1 OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA : END OF LINE1.
DATA : B_NAME LIKE THEAD-TDNAME.
B_NAME = I_TAB-SDNO.
PERFORM FILL_CHAR(ZURL) USING 10 '0' I_TAB-SDNO CHANGING B_NAME.
added by praveen to pick up from and to date for invoice.
IF B_ID = 'ZIS1' OR B_ID = 'ZIS2'.
B_NAME = I_TAB-INVO.
ENDIF.
IF B_OBJECT = 'VBBP'.
CONCATENATE I_TAB-ORNO VBRP-POSNR INTO B_NAME.
ENDIF.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = B_ID
LANGUAGE = 'E'
NAME = B_NAME
OBJECT = B_OBJECT
header = header1
IMPORTING
HEADER = HEADER1
TABLES
LINES = LINE1
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
DATA : LINE(40).
LOOP AT LINE1.
LINE = LINE1-TDLINE.
ENDLOOP.
CASE B_ID.
WHEN '0002'.
HEAD_TAB-CARNAME = LINE.
WHEN '0012'.
HEAD_TAB-SPSHIPI = LINE.
WHEN '0013'.
HEAD_TAB-SPCARIN = LINE.
WHEN '0003'.
HEAD_TAB-LRNO = LINE.
WHEN '0004'.
HEAD_TAB-LRDT = LINE.
WHEN '0022'.
HEAD_TAB-MODEPAY = LINE.
WHEN 'Z103'.
HEAD_TAB-CSTNO = LINE.
WHEN 'Z104'.
HEAD_TAB-LSTNO = LINE.
WHEN 'ZIS1'.
HEAD_TAB-FROMDATE = LINE.
CONDENSE HEAD_TAB-FROMDATE NO-GAPS.
WHEN 'ZIS2'.
HEAD_TAB-ENDDATE = LINE.
CONDENSE HEAD_TAB-ENDDATE NO-GAPS.
ENDCASE.
ENDFORM.
FORM INIT *
FORM INIT.
CLEAR HEAD_TAB.
REFRESH LINE_TAB.
CLEAR LINE_TAB.
REFRESH SER_TAB.
CLEAR SER_TAB.
B_DIFFCOUNT = 0.
B_COUNTOFRECORDS = 0.
B_ORDERREFNO = ' '.
B_RATEFORITEM = ' '.
B_TOTALAMOUNT = 0.
B_CUSTOMERNO = ' '.
B_RECORDCOUNTER = 0.
B_AMOUNTINWORDS = ' '.
B_DECIMALAMOUNTINWORDS = ' '.
B_AMOUNTINWORDSFINAL = ' '.
B_CUSTOMERCODE = ' '.
B_STRINGLENGTH = 0.
B_INVNO = ' '.
B_RECCOUNT = 0 .
START = 0.
IFSELECTED = ' '.
ANS = ' '.
ENDFORM.
FORM GETTAX *
--> INVO *
FORM GETTAX USING INVO.
DATA: BEGIN OF TKOMVD OCCURS 0.
INCLUDE STRUCTURE KOMVD.
DATA: END OF TKOMVD.
DATA: BEGIN OF COMM_ITEM_E OCCURS 0.
INCLUDE STRUCTURE KOMP .
DATA: END OF COMM_ITEM_E.
REFRESH TKOMV.
MOVE 'I' TO CTYPE-SIGN.
MOVE 'BT' TO CTYPE-OPTIONS.
MOVE 'ZIN4' TO CTYPE-HIGH.
MOVE 'ZIN1' TO CTYPE-LOW.
APPEND CTYPE.
SELECT SINGLE * FROM VBRK WHERE VBELN = INVO.
MOVE-CORRESPONDING VBRK TO KOMK.
CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
EXPORTING
COMM_HEAD_I = KOMK
COMM_ITEM_I = KOMP
TABLES
TKOMV = TKOMV
TKOMVD = TKOMVD
EXCEPTIONS
OTHERS = 1.
SUB TOTAL AMOUNT
LOOP AT TKOMV .
IF TKOMV-KSCHL EQ 'ZSRP'.
HEAD_TAB-STAMT = HEAD_TAB-STAMT + TKOMV-KWERT.
ENDIF.
ENDLOOP.
*SALES TAX AMOUNT
SELECT * FROM VBRP WHERE VBELN EQ INVO AND FKIMG NE 0. "changed on 15/4
LOOP AT TKOMV WHERE KPOSN EQ VBRP-POSNR.
IF TKOMV-KSCHL IN CTYPE.
HEAD_TAB-STAXAMT = HEAD_TAB-STAXAMT + TKOMV-KWERT.
ENDIF.
ENDLOOP.
ENDSELECT.
FORWARDING CHARGES
LOOP AT TKOMV.
IF TKOMV-KSCHL EQ 'ZF00'.
HEAD_TAB-FCHRG = HEAD_TAB-FCHRG + TKOMV-KWERT.
ENDIF.
IF TKOMV-KSCHL EQ 'ZIN6'.
HEAD_TAB-OCHRG = HEAD_TAB-OCHRG + TKOMV-KWERT.
ENDIF.
ENDLOOP.
*grand total
CLEAR HEAD_TAB-GTOTAL.
HEAD_TAB-GTOTAL = HEAD_TAB-GTOTAL + HEAD_TAB-FCHRG.
HEAD_TAB-GTOTAL = HEAD_TAB-GTOTAL + HEAD_TAB-STAXAMT.
HEAD_TAB-GTOTAL = HEAD_TAB-GTOTAL + HEAD_TAB-STAMT.
HEAD_TAB-GTOTAL = HEAD_TAB-GTOTAL + HEAD_TAB-OCHRG.
PERFORM CONVERT.
ENDFORM.
*& Form GETCST-LST
FORM GETCST-LST USING B_REGION.
SELECT SINGLE * FROM SADR WHERE ADRNR EQ B_REGION.
MOVE SADR-TELTX TO HEAD_TAB-PLSTNO.
MOVE SADR-TELX1 TO HEAD_TAB-PCSTNO.
ENDFORM. " GETCST-LST
*& Form ALIGNWRITE
FORM ALIGNWRITE.
*set pf-status '102'.
PERFORM HEADER.
DATA : LINECTR TYPE I VALUE 0.
DATA : B_RATE(12),B_AMOUNT(13).
DATA : B_SCOUNT TYPE I VALUE 0.
DATA B_SRLNO TYPE I VALUE 0.
DATA : B_FLAG TYPE I VALUE 0.
DATA : B_SUBTOTAL LIKE VBRP-NETWR VALUE 0.
LOOP AT LINE_TAB.
ADD 1 TO LINECTR.
ADD 1 TO B_SRLNO.
B_RATE = LINE_TAB-RATE.
B_AMOUNT = LINE_TAB-AMOUNT.
WRITE : / ' ',7(4) B_SRLNO.
WRITE :14 LINE_TAB-PRODCODE.
WRITE :23 LINE_TAB-DESC.
WRITE :67(3) LINE_TAB-UOM.
WRITE :73(5) LINE_TAB-QTY RIGHT-JUSTIFIED.
WRITE :80(14) LINE_TAB-RATE RIGHT-JUSTIFIED.
B_SUBTOTAL = B_SUBTOTAL + LINE_TAB-AMOUNT.
WRITE :95(12) LINE_TAB-AMOUNT RIGHT-JUSTIFIED.
CONDENSE LINE_TAB-STAX NO-GAPS.
LINE_TAB-STAX =
( LINE_TAB-B_TAXAMOUNT_LINE / LINE_TAB-AMOUNT ) * 100.
WRITE :110 LINE_TAB-STAX(5).
PERFORM IFENDOFPAGE USING LINECTR B_SUBTOTAL.
" write :95 line_tab-otax.
B_SCOUNT = 0.
IF PRINTSL EQ 'X'.
DESCRIBE TABLE SER_TAB LINES B_FLAG.
IF B_FLAG NE 0.
WRITE : / ' ',12 'Serial Nos :'.
ADD 1 TO LINECTR.
ENDIF.
LOOP AT SER_TAB WHERE SLNO EQ LINE_TAB-SLNO.
B_SCOUNT = B_SCOUNT + 1.
WRITE : (18)SER_TAB-SERNO NO-GAP,' '.
IF B_SCOUNT EQ 3.
WRITE : /23 ' '.
ADD 1 TO LINECTR.
B_SCOUNT = 0.
ENDIF.
PERFORM IFENDOFPAGE USING LINECTR B_SUBTOTAL.
ENDLOOP.
B_SCOUNT = 0.
ENDIF.
ENDLOOP.
DATA : B_EXTRA TYPE I.
B_EXTRA = 23 - LINECTR.
DO B_EXTRA TIMES.
WRITE : ' ' ,/.
ENDDO.
PERFORM FOOTER.
ENDFORM. " ALIGNWRITE
**form footer **
FORM FOOTER.
WRITE :/ ' '.
WRITE :/ ' ',24 HEAD_TAB-BILLCUR,58 B_INVRATE,
101 HEAD_TAB-CARNAME+0(15).
WRITE :/58 B_INVSTAX ,79 HEAD_TAB-CARNAME+15(20).
WRITE :/54 'TOT:', HEAD_TAB-OCHRG ,95 HEAD_TAB-LRNO.
WRITE :/58 B_INVFORCHARGE , 89 HEAD_TAB-LRDT.
WRITE :/17 HEAD_TAB-LSTNO,58 B_INVOCTROI , 99 HEAD_TAB-MODEPAY.
HEAD_TAB-GTOTAL = B_INVRATE + B_INVSTAX + B_INVOCTROI + B_INVFORCHARGE.
WRITE :/17 HEAD_TAB-CSTNO,61 HEAD_TAB-GTOTAL.
PERFORM CONVERT.
WRITE :/ ' ',/,/.
WRITE :/17 HEAD_TAB-PLSTNO4(31),44 B_AMOUNTINWORDS0(100).
WRITE :/17 HEAD_TAB-PCSTNO4(31),44 B_AMOUNTINWORDS100(100).
WRITE : /.
ENDFORM.
*HEADER INFO PRINTING*
FORM HEADER.
DATA : B_POREF(35).
*concatenate head_tab-poref '/' head_tab-podat into b_poref.
CONDENSE HEAD_TAB-PODAT.
CONDENSE HEAD_TAB-POREF.
FORMAT INTENSIFIED OFF.
WRITE : / ' ',/,/. "a line feed is removed
WRITE : / ' ',83 HEAD_TAB-PNAM1.
WRITE : / ' ',83 HEAD_TAB-PNAM2.
WRITE : / ' ',83 HEAD_TAB-PNAM3.
PRINT-CONTROL FUNCTION 'CI010'.
WRITE : /13 HEAD_TAB-DOCNO,61 HEAD_TAB-DOCDT.
PRINT-CONTROL FUNCTION 'CI015'.
WRITE : ' ',86 HEAD_TAB-PNAM5.
WRITE :/83 HEAD_TAB-PNAM4.
WRITE : / ' ',/, 90 HEAD_TAB-SPSHIPI+0(30).
WRITE : /8 SOLDP_TAB-NAME ,47 SHIPP_TAB-NAME,
90 HEAD_TAB-SPSHIPI+30(10).
WRITE : / ' ',8 SOLDP_TAB-ADD1 , 47 SHIPP_TAB-ADD1.
WRITE : / ' ',8 SOLDP_TAB-ADD2 , 47 SHIPP_TAB-ADD2.
WRITE : / ' ',8 SOLDP_TAB-ADD6 , 47 SHIPP_TAB-ADD6,
90 HEAD_TAB-SPCARIN+0(30).
WRITE : / ' ',8 SOLDP_TAB-ADD3 , 47 SHIPP_TAB-ADD3,
90 HEAD_TAB-SPCARIN+30(10).
WRITE : / ' ',8 SOLDP_TAB-ADD4 , 47 SHIPP_TAB-ADD4.
WRITE : / ' ',25 HEAD_TAB-CCODE ,68 HEAD_TAB-CPERSON ,
109 HEAD_TAB-SALESOR,/.
MOVE HEAD_TAB-PODAT TO B_STR.
CONCATENATE B_STR6(2) '.' B_STR4(2) '.' B_STR+2(2) INTO B_STR.
CONCATENATE HEAD_TAB-POREF '/' B_STR INTO B_STR.
MOVE B_STR TO HEAD_TAB-POREF.
WRITE : / ' ',25 B_STR.
WRITE : ' ',64 HEAD_TAB-TPHONE NO-ZERO,109 HEAD_TAB-SALOF.
WRITE : / ' ',/,/,/,/.
ENDFORM.
FORM CONVERT *
FORM CONVERT.
DATA : B_WORDS(100).
DATA : B_DECIS(100).
DATA : TEMP1(40).
DATA : TEMP2(40).
CALL FUNCTION 'Z_CONVERSION_TO_WORDS'
EXPORTING
AMOUNT = HEAD_TAB-GTOTAL
IMPORTING
IN_WORDS = B_WORDS
IN_DECMS = B_DECIS
EXCEPTIONS
TOO_LARGE = 1
OTHERS = 2.
MOVE HEAD_TAB-GTOTAL TO TEMP1.
SPLIT TEMP1 AT '.' INTO TEMP1 TEMP2.
IF HEAD_TAB-BILLCUR EQ 'INR'.
IF TEMP2 NE '00'.
CONCATENATE 'Rupees' B_WORDS 'and paise' B_DECIS
INTO B_AMOUNTINWORDS SEPARATED BY SPACE.
ELSE.
CONCATENATE 'Rupees' B_WORDS B_DECIS
INTO B_AMOUNTINWORDS SEPARATED BY SPACE.
ENDIF.
ELSE.
CONCATENATE HEAD_TAB-BILLCUR B_WORDS B_DECIS
INTO B_AMOUNTINWORDS SEPARATED BY SPACE.
ENDIF.
ENDFORM.
FORM GETTAXFORLINEITEMS *
--> INVO *
FORM GETTAXFORLINEITEMS USING INVO.
DATA: BEGIN OF TKOMVD OCCURS 0.
INCLUDE STRUCTURE KOMVD.
DATA: END OF TKOMVD.
CLEAR CTYPE.
CLEAR KOMK.
SELECT SINGLE * FROM VBRK WHERE VBELN = INVO.
MOVE-CORRESPONDING VBRK TO KOMK.
CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
EXPORTING
COMM_HEAD_I = KOMK
COMM_ITEM_I = KOMP
TABLES
TKOMV = TKOMV
TKOMVD = TKOMVD
EXCEPTIONS
OTHERS = 1.
DATA : B_TAX TYPE I.
*SALES TAX pervcentage for line items.
MOVE 'I' TO CTYPE-SIGN.
MOVE 'BT' TO CTYPE-OPTIONS.
MOVE 'ZIN4' TO CTYPE-HIGH.
MOVE 'ZIN1' TO CTYPE-LOW.
APPEND CTYPE.
ENDFORM.
FORM IFENDOFPAGE *
--> LINECTR *
--> B_SUBTOTAL *
FORM IFENDOFPAGE USING LINECTR B_SUBTOTAL.
IF LINECTR EQ 19.
WRITE : / ' ',/,10 'Carried forward '.
PERFORM PUTALINE.
WRITE :83 B_SUBTOTAL.
ADD 1 TO LINECTR.
"do 37 times.
DO 24 TIMES.
WRITE : ' ',/.
ENDDO.
PERFORM HEADER.
WRITE : /10 'Brought forward'.
PERFORM PUTALINE.
WRITE : 83 B_SUBTOTAL.
LINECTR = 1.
ENDIF.
ENDFORM.
FORM PUTALINE *
FORM PUTALINE.
DO 27 TIMES.
WRITE : '-'.
ENDDO.
WRITE '>'.
ENDFORM.
FORM ERRORCHECK *
--> SY-SUBRC *
FORM ERRORCHECK USING SY-SUBRC.
IF SY-SUBRC NE 0.
PERFORM WIN_INFO(ZURL) USING 'Error' 'Document does not exists'
'Please re-enter the doc #'.
SET SCREEN 1000.
LEAVE SCREEN.
EXIT.
ENDIF.
ENDFORM.
FORM SOLD_TO_PARTY_CHANGE *
--> B_INVNO *
FORM SOLD_TO_PARTY_CHANGE USING B_INVNO.
*TO CHANGE THE SOLD TO PARTY FOR THE BILLING DOCUMENT.
DATA : BEGIN OF NEW_SHIP_TAB OCCURS 0.
DATA : DESC(20).
DATA : CUSTCODE LIKE KNA1-KUNNR.
DATA : DUMMY(5).
DATA : CUSTNAME LIKE KNA1-NAME1.
DATA : END OF NEW_SHIP_TAB.
DATA : B_TABIX LIKE SY-TABIX.
DATA : B_SOLDCODE LIKE KNA1-KUNNR.
DATA : B_PAYCODE LIKE KNA1-KUNNR.
SELECT * FROM VBPA WHERE VBELN EQ B_INVNO
AND PARVW IN ('RE','WE','AG').
SELECT SINGLE * FROM KNA1 WHERE KUNNR EQ VBPA-KUNNR.
MOVE KNA1-NAME1 TO NEW_SHIP_TAB-CUSTNAME.
MOVE KNA1-KUNNR TO NEW_SHIP_TAB-CUSTCODE.
MOVE ' ' TO NEW_SHIP_TAB-DUMMY.
CASE VBPA-PARVW.
WHEN 'WE'.
MOVE 'SHIP TO PARTY' TO NEW_SHIP_TAB-DESC.
MOVE KNA1-KUNNR TO B_PAYCODE.
WHEN 'RE'.
MOVE KNA1-KUNNR TO B_SOLDTOPARTYCODE.
MOVE 'PAYER ' TO NEW_SHIP_TAB-DESC.
WHEN 'AG'.
MOVE KNA1-KUNNR TO B_SOLDCODE.
MOVE 'SOLD TO PARTY' TO NEW_SHIP_TAB-DESC.
ENDCASE.
APPEND NEW_SHIP_TAB.
ENDSELECT.
B_SPCFLAG = 'F'.
IF B_SOLDCODE NE B_SOLDTOPARTYCODHi Sanjeev ,
Please observe your code carefully.
You say you have assigned your form name in the Print Program ,but i am not able to find it.
Your program uses the Subroutine
PERFORM OPENFORM USING 'ZINVOICEDUMMY'
where the 'ZINVOICEDUMMY' is the parameter value your are passing for FORM but your form name is zinv.
so you have to pass your form name using this subroutine.
PERFORM OPENFORM USING 'ZINV'
FORM OPENFORM USING B_FORMNAME.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
FORM = B_FORMNAME
OPTIONS = ITCPO
DEVICE = B_ELEMENT
IMPORTING
RESULT = ITCPP
EXCEPTIONS
CANCELLED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
OTHERS = 6.
ENDFORM.
Regards,
AShwini -
CL_GUI_CONTAINER data refresh problem.
Hi experts,
I am using below code in module pool programming. I want to refresh data in Cont for ALV or HTML at run time.
but it is not working, plz help?????
Code:
TABLES: vbrk.
TYPES : BEGIN OF ty_html,
dataset(255) TYPE c,
END OF ty_html.
DATA : splitter TYPE REF TO cl_gui_splitter_container.
DATA: cont TYPE REF TO cl_gui_container,
html TYPE REF TO cl_gui_html_viewer,
salv TYPE REF TO cl_salv_table.
DATA: it_data TYPE STANDARD TABLE OF vbrk,
ts_data TYPE STANDARD TABLE OF ty_html,
w_url TYPE char255.
SELECTION-SCREEN : BEGIN OF SCREEN 1001.
PARAMETERS: rb_alv RADIOBUTTON GROUP rb1,
rb_graph RADIOBUTTON GROUP rb1.
SELECT-OPTIONS : s_fkdat FOR vbrk-fkdat.
SELECTION-SCREEN END OF SCREEN 1001.
START-OF-SELECTION.
IF splitter IS INITIAL.
CREATE OBJECT splitter
EXPORTING
parent = cl_gui_container=>screen0
rows = 2
columns = 1
align = 15. " (splitter fills the hole custom container)
ENDIF.
IF cont IS NOT INITIAL.
cont->free( ).
ENDIF.
CALL METHOD splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = cont.
SELECT * FROM vbrk INTO TABLE it_data
WHERE fkdat IN s_fkdat.
IF rb_alv = 'X'.
IF html IS NOT INITIAL.
html->free( ).
ENDIF.
TRY.
cl_salv_table=>factory(
EXPORTING
r_container = cont
IMPORTING
r_salv_table = salv
CHANGING
t_table = it_data ).
CATCH cx_salv_msg. "#EC NO_HANDLER
ENDTRY.
ELSE.
*** APPEND SOMETHING IN TS_DATA.
IF html IS INITIAL.
CREATE OBJECT html
EXPORTING
parent = cont
EXCEPTIONS
cntl_error = 1
cntl_install_error = 2
dp_install_error = 3
dp_error = 4
OTHERS = 5.
CALL METHOD html->load_data
EXPORTING
* url = w_url
type = 'text'
subtype = 'html'
IMPORTING
assigned_url = w_url
CHANGING
data_table = ts_data
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
CALL METHOD html->show_url
EXPORTING
url = w_url
in_place = 'X'
EXCEPTIONS
cntl_error = 1
cnht_error_not_allowed = 2
cnht_error_parameter = 3
dp_error_general = 4
OTHERS = 5.
IF sy-subrc <> 0.
ENDIF.
html->set_ui_flag( html->uiflag_no3dborder ).
ENDIF.
ENDIF.Hi neran,
before u split the container, u have to create the container.
create object cont "Creating Docking Container
exporting
side = 4 "At Bottom
ratio = 70
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
"u have to pass the container name
IF splitter IS INITIAL.
CREATE OBJECT splitter
EXPORTING
parent = cont " pass the container name
rows = 2
columns = 1
align = 15. " (splitter fills the hole custom container)
ENDIF.
"Then u need another objects, which ref to cl_gui_container, to get the splitted containers -
More than 255 bytes in SO_NEW_DOCUMENT_ATT_SEND_API1
I know they are some posts about this topic already but I have read them all but I still don't have the solution. I hope someone could help me with this:
The problem is this: I have an internal table and I make an excell file of it which is mailed (sapmail) to the user who started the program. I all works fine except for the problem of the 255 limit. This happens because SOLISTI1 has an 255 limit. The excell attachment is mailed but it breaks after 255 characters (the total characters is about 500).
I know there are some solutions with TABLE_COMPRESS and TABLE_DECOMPRESS but I don't know on which moment you should compress or decompress which table! Below if my coding hope someone can help:
REPORT ZDTAFNAME_K.
tables: marc,
lips,
vbrp,
mara,
kna1,
vbak,
VBKD,
vbrk,
vbap,
vbep,
mvke,
mbew.
selection-screen: begin of block select with frame title text-f70.
select-options art for marc-matnr.
select-options abc for marc-abcin.
select-options fak for vbrp-vbeln default '20406070'.
Select-options dat for vbrp-erdat.
selection-screen: end of block select.
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT '31dtg'.
data: rule(2) value '.,'.
data: begin of itab occurs 0,
deb like vbak-kunnr, "Debiteurennummer
debnaam like kna1-name1, "Naam debiteur
bestnr like vbkd-bstkd, "Bestelnr klant
artnr like marc-matnr, "Artikelnr
oms like lips-arktx, "Omschrijving
type like mara-groes, "Type
fab like lips-matkl, "Fabrikaat
faktuurdat like vbrp-erdat, "Faktuurdatum
faksrt like vbrk-fkart, "Faktuursoort
faktuur like vbrp-vbeln, "Faktuurnr
fakpos like vbrp-posnr, "Faktuurpositie
fakaantal(11) type c , "Faktuuraantal
fakeenh like vbrp-meins, "Faktuureenheid
fakwaarde(11) type c , "Faktuurwaarde
orddat like vbap-erdat, "Orderdatum
ordsrt like vbak-auart, "Ordersoort
verkoper like vbak-ernam, "Verkoper
ordnr like lips-vgbel, "Ordernr
ordnrpos like lips-vgpos, "Order positie
artklant like vbap-kdmat, "Artikelnr klant
ordaant(11) type c, "Order aantal
ordeenh like vbap-meins, "Order eenheid
ordwaarde(11) type c, "Nettowaarde orderpositie
postype like vbap-pstyv, "Positietype
gevlevdat like vbep-edatu, "Gevraagde leverdatum
levdat like lips-erdat, "Werkelijke leverdatum
levnr like lips-vbeln, "Leveringsnr
levpos like lips-posnr, "Levering positie
levaant(11) type c, "Leveringsaantal
leveenh like lips-meins, "Leveringseenheid
min(11) type c, "Bestelpunt
max(11) type c, "Max vrd
basiseenh like mara-meins, "Basiseenheid
abc like marc-abcin, "ABC Classificatie
artsoort like mara-mtart, "Artikelsoort
vkstatus(2) type c, "Verkoopstatus
ikstatus(2) type c, "Inkoopstatus
minlev(11) type c, "Min levereenheid
afrd(11) type c, "Afrondingswaarde
vprs(11) type c, "VPRS
vprseenh(11) type c, "VPRS eenheid
end of itab.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
select * from vbrk client specified where
mandt = sy-mandt and
vbeln in fak and
erdat in dat and
fkart = 'F2'.
select * from vbrp client specified where
mandt = sy-mandt and
vbeln = vbrk-vbeln and
erdat in dat and
matnr in art.
select single * from marc client specified where
mandt = sy-mandt and
werks = 610 and
matnr = vbrp-matnr and
abcin in abc.
if sy-subrc = 0.
itab-levnr = vbrp-vgbel.
itab-levpos = vbrp-vgpos.
itab-faksrt = vbrk-fkart.
select single * from mara client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-type = mara-groes.
itab-basiseenh = mara-meins.
endif.
select single * from mvke client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-vkstatus = mvke-vmsta.
itab-minlev = mvke-scmng.
endif.
select single * from mbew client specified where
mandt = sy-mandt and
matnr = marc-matnr and
bwkey = 610.
if sy-subrc = 0.
itab-vprs = mbew-verpr.
itab-vprseenh = mbew-peinh.
endif.
select single * from vbak client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel.
if sy-subrc = 0.
itab-deb = vbak-kunnr.
itab-ordsrt = vbak-auart.
endif.
select single * from vbap client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel and
posnr = vbrp-aupos.
if sy-subrc = 0.
itab-verkoper = vbap-ernam.
itab-orddat = vbap-erdat.
itab-artklant = vbap-kdmat.
itab-ordaant := vbap-kwmeng.
itab-ordeenh = vbap-meins.
itab-ordwaarde := vbap-netwr.
itab-postype = vbap-pstyv.
endif.
select single * from vbep client specified where
mandt = sy-mandt and
vbeln = vbap-vbeln and
posnr = vbap-posnr and
etenr = '0001'.
if sy-subrc = 0.
itab-gevlevdat = vbep-edatu.
endif.
select single * from vbkd client specified where
mandt = sy-mandt and
vbeln = vbak-vbeln.
if sy-subrc = 0.
itab-bestnr = vbkd-bstkd.
endif.
select single * from lips client specified where
mandt = sy-mandt and
vbeln = vbrp-vgbel and
posnr = vbrp-vgpos.
if sy-subrc = 0.
itab-levdat = lips-erdat.
itab-levaant = lips-lfimg.
itab-leveenh = lips-meins.
else.
clear itab-levnr.
clear itab-levpos.
clear itab-levaant.
clear itab-levdat.
endif.
select single * from kna1 client specified where
mandt = sy-mandt and
kunnr = vbak-kunnr.
if sy-subrc = 0.
itab-debnaam = kna1-name1.
endif.
itab-artnr = marc-matnr.
itab-oms = vbrp-arktx.
itab-fab = vbrp-matkl.
itab-abc = marc-abcin.
itab-artsoort = mara-mtart.
itab-min = marc-minbe.
itab-max = marc-mabst.
itab-afrd = marc-bstrf.
itab-ikstatus = marc-mmsta.
itab-faktuur = vbrp-vbeln.
itab-fakpos = vbrp-posnr.
*UNPACK VBRP-FKIMG TO ITAB-FAKAANTAL.
*shift itab-fakaantal right by 3 places.
itab-fakaantal = vbrp-fkimg.
translate itab-fakaantal using rule.
itab-fakeenh = vbrp-meins.
itab-faktuurdat = vbrp-erdat.
*UNPACK VBRP-NETWR TO ITAB-FAKWAARDE.
*shift itab-FAKWAARDE right by 2 places.
itab-FAKWAARDE = vbrp-netwr.
Translate van velden
translate itab-fakwaarde using rule.
translate itab-fakaantal using rule.
translate itab-ordaant using rule.
translate itab-ordwaarde using rule.
translate itab-min using rule.
translate itab-max using rule.
translate itab-vkstatus using rule.
translate itab-ikstatus using rule.
itab-ordnr = vbrp-aubel.
itab-ordnrpos = vbrp-aupos.
append itab.
endif.
endselect. " Select * from vbrp.
endselect.
endform.
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'DEBNR' 'NAAM' 'BESTELNR'
'ARTNR' 'OMSCHRIJVING' 'TYPE'
'FABRIKAAT' 'FAKTUURDATUM' 'FAKSRT'
'FAKTUURNR' 'FAK.POS.' 'FAK.AANTAL'
'FAK.EENH' 'FAKTUUR WAARDE' 'ORDER DATUM'
'ORDSRT' 'VERKOPER' 'ORDERNR.' 'ORDER.POS.'
'ARTNR KLANT' 'ORDER AANTAL' 'ORDER EENH'
'ORDERWAARDE' 'POS.TYPE' 'GEVRAAGDE LEVDAT'
'WERKELIJKE LEVDAT' 'LEVERINGSNR' 'LEV.POS'
'LEV.AANTAL' 'LEV.EENH' 'BESTELPUNT'
'MAX VRD' 'BASISEENH' 'ABC' 'ARTSRT.'
'VK.STATUS' 'IK.STATUS' 'MIN.LEVEENH.'
'AFDRONDINGSWAARDE' 'VPRS' 'PER'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT ITAB.
CONCATENATE itab-deb itab-debnaam itab-bestnr itab-artnr
itab-oms itab-type itab-fab itab-faktuurdat
itab-faksrt itab-faktuur itab-fakpos
itab-fakaantal itab-fakeenh itab-fakwaarde
itab-orddat itab-ordsrt itab-verkoper itab-ordnr
itab-ordnrpos itab-artklant itab-ordaant
itab-ordeenh itab-ordwaarde itab-postype
itab-gevlevdat itab-levdat itab-levnr itab-levpos
itab-levaant itab-leveenh itab-min itab-max
itab-basiseenh itab-abc itab-artsoort itab-vkstatus
itab-ikstatus itab-minlev itab-afrd itab-vprs
itab-vprseenh
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
MOVE: SY-UNAME TO t_RECEIVERs-RECEIVER,
'X' TO t_RECEIVERs-EXPRESS,
'B' TO t_RECEIVERs-REC_TYPE.
APPEND t_RECEIVERs.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Please find attached a list test ekpo records'.
APPEND it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODYThanks Kunal Ghosh for your replies. I did try to condense it but it was still more than 255 characters.
I solved it by using chunks! I spend more than a week to solve this problem! The solution is so simple. Here's the new code for everybody who has the same problem:
REPORT ZDTAFNAME_K_ART no standard page heading line-size 250.
tables: marc,
lips,
vbrp,
mara,
kna1,
vbak,
VBKD,
vbrk,
vbap,
vbep,
mvke,
mbew.
selection-screen: begin of block select with frame title text-f70.
select-options art for marc-matnr.
select-options abc for marc-abcin.
select-options fak for vbrp-vbeln.
Select-options dat for vbrp-erdat.
select-options fsoort for vbrk-fkart.
select-options vest for marc-werks.
selection-screen: end of block select.
*parameters: p_email type somlreci1-receiver
DEFAULT '31dtg'.
data: p_email like somlreci1-receiver.
data: rule(2) value '.,'.
data: begin of itab occurs 0,
deb like vbak-kunnr, "Debiteurennummer
debnaam like kna1-name1, "Naam debiteur
bestnr like vbkd-bstkd, "Bestelnr klant
artnr like marc-matnr, "Artikelnr
oms like lips-arktx, "Omschrijving
type like mara-groes, "Type
fab like lips-matkl, "Fabrikaat
faktuurdat like vbrp-erdat, "Faktuurdatum
faksrt like vbrk-fkart, "Faktuursoort
faktuur like vbrp-vbeln, "Faktuurnr
fakpos like vbrp-posnr, "Faktuurpositie
fakaantal(11) type c , "Faktuuraantal
fakeenh like vbrp-meins, "Faktuureenheid
fakwaarde(11) type c , "Faktuurwaarde
orddat like vbap-erdat, "Orderdatum
ordsrt like vbak-auart, "Ordersoort
verkoper like vbak-ernam, "Verkoper
ordnr like lips-vgbel, "Ordernr
ordnrpos like lips-vgpos, "Order positie
artklant like vbap-kdmat, "Artikelnr klant
ordaant(11) type c, "Order aantal
ordeenh like vbap-meins, "Order eenheid
ordwaarde(11) type c, "Nettowaarde orderpositie
postype like vbap-pstyv, "Positietype
gevlevdat like vbep-edatu, "Gevraagde leverdatum
levdat like lips-erdat, "Werkelijke leverdatum
levnr like lips-vbeln, "Leveringsnr
levpos like lips-posnr, "Levering positie
levaant(11) type c, "Leveringsaantal
leveenh like lips-meins, "Leveringseenheid
min(11) type c, "Bestelpunt
max(11) type c, "Max vrd
basiseenh like mara-meins, "Basiseenheid
abc like marc-abcin, "ABC Classificatie
artsoort like mara-mtart, "Artikelsoort
vkstatus(2) type c, "Verkoopstatus
ikstatus(2) type c, "Inkoopstatus
minlev(11) type c, "Min levereenheid
afrd(11) type c, "Afrondingswaarde
vprs(11) type c, "VPRS
vprseenh(11) type c, "VPRS eenheid
end of itab.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Xls bestand afname per artikelsoort'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
select * from vbrk client specified where
mandt = sy-mandt and
vbeln in fak and
erdat in dat and
fkart in fsoort.
select * from vbrp client specified where
mandt = sy-mandt and
vbeln = vbrk-vbeln and
matnr in art.
select single * from marc client specified where
mandt = sy-mandt and
werks in vest and
matnr = vbrp-matnr and
abcin in abc.
if sy-subrc = 0.
itab-levnr = vbrp-vgbel.
itab-levpos = vbrp-vgpos.
itab-faksrt = vbrk-fkart.
select single * from mara client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-type = mara-groes.
itab-basiseenh = mara-meins.
endif.
select single * from mvke client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-vkstatus = mvke-vmsta.
itab-minlev = mvke-scmng.
endif.
select single * from mbew client specified where
mandt = sy-mandt and
matnr = marc-matnr and
bwkey = 610.
if sy-subrc = 0.
itab-vprs = mbew-verpr.
itab-vprseenh = mbew-peinh.
endif.
select single * from vbak client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel.
if sy-subrc = 0.
itab-deb = vbak-kunnr.
itab-ordsrt = vbak-auart.
endif.
select single * from vbap client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel and
posnr = vbrp-aupos.
if sy-subrc = 0.
itab-verkoper = vbap-ernam.
itab-orddat = vbap-erdat.
itab-artklant = vbap-kdmat.
itab-ordaant := vbap-kwmeng.
itab-ordeenh = vbap-meins.
itab-ordwaarde := vbap-netwr.
itab-postype = vbap-pstyv.
endif.
select single * from vbep client specified where
mandt = sy-mandt and
vbeln = vbap-vbeln and
posnr = vbap-posnr and
etenr = '0001'.
if sy-subrc = 0.
itab-gevlevdat = vbep-edatu.
endif.
select single * from vbkd client specified where
mandt = sy-mandt and
vbeln = vbak-vbeln.
if sy-subrc = 0.
itab-bestnr = vbkd-bstkd.
endif.
select single * from lips client specified where
mandt = sy-mandt and
vbeln = vbrp-vgbel and
posnr = vbrp-vgpos.
if sy-subrc = 0.
itab-levdat = lips-erdat.
itab-levaant = lips-lfimg.
itab-leveenh = lips-meins.
else.
clear itab-levnr.
clear itab-levpos.
clear itab-levaant.
clear itab-levdat.
endif.
select single * from kna1 client specified where
mandt = sy-mandt and
kunnr = vbak-kunnr.
if sy-subrc = 0.
itab-debnaam = kna1-name1.
endif.
itab-artnr = marc-matnr.
itab-oms = vbrp-arktx.
itab-fab = vbrp-matkl.
itab-abc = marc-abcin.
itab-artsoort = mara-mtart.
itab-min = marc-minbe.
itab-max = marc-mabst.
itab-afrd = marc-bstrf.
itab-ikstatus = marc-mmsta.
itab-faktuur = vbrp-vbeln.
itab-fakpos = vbrp-posnr.
*UNPACK VBRP-FKIMG TO ITAB-FAKAANTAL.
*shift itab-fakaantal right by 3 places.
itab-fakaantal = vbrp-fkimg.
translate itab-fakaantal using rule.
itab-fakeenh = vbrp-meins.
itab-faktuurdat = vbrp-erdat.
*UNPACK VBRP-NETWR TO ITAB-FAKWAARDE.
*shift itab-FAKWAARDE right by 2 places.
itab-FAKWAARDE = vbrp-netwr.
Translate van velden
translate itab-fakwaarde using rule.
translate itab-fakaantal using rule.
translate itab-ordaant using rule.
translate itab-ordwaarde using rule.
translate itab-min using rule.
translate itab-max using rule.
translate itab-vkstatus using rule.
translate itab-ikstatus using rule.
translate itab-VPRS using rule.
translate itab-vprseenh using rule.
translate itab-levaant using rule.
translate itab-minlev using rule.
translate itab-afrd using rule.
itab-ordnr = vbrp-aubel.
itab-ordnrpos = vbrp-aupos.
append itab.
clear itab.
endif.
endselect. " Select * from vbrp.
endselect. " Select * from vbrk.
endform.
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
<b>
CONCATENATE 'DEBNR' 'NAAM' 'BESTELNR'
'ARTNR' 'OMSCHRIJVING' 'TYPE'
'FABRIKAAT' 'FAKTUURDATUM' 'FAKSRT'
'FAKTUURNR' 'FAK.POS.' 'FAK.AANTAL'
'FAK.EENH' 'FAKTUUR WAARDE' 'ORDER DATUM'
'ORDSRT' 'VERKOPER' 'ORDERNR.' 'ORDER.POS.'
'ARTNR KLANT' 'ORDER AANTAL'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
CONCATENATE con_tab 'ORDER EENH' 'ORDERWAARDE'
'POS.TYPE' 'GEVRAAGDE LEVDAT'
'WERKELIJKE LEVDAT' 'LEVERINGSNR' 'LEV.POS'
'LEV.AANTAL' 'LEV.EENH' 'BESTELPUNT'
'MAX VRD' 'BASISEENH' 'ABC' 'ARTSRT.'
'VK.STATUS' 'IK.STATUS' 'MIN.LEVEENH.'
'AFDRONDINGSWAARDE' 'VPRS' 'PER'
INTO it_attach SEPARATED BY con_tab.
APPEND it_attach.
LOOP AT ITAB.
CONCATENATE itab-deb itab-debnaam itab-bestnr itab-artnr
itab-oms itab-type itab-fab itab-faktuurdat
itab-faksrt itab-faktuur itab-fakpos
itab-fakaantal itab-fakeenh itab-fakwaarde
itab-orddat itab-ordsrt itab-verkoper itab-ordnr
itab-ordnrpos itab-artklant itab-ordaant
INTO it_attach SEPARATED BY con_tab.
CONCATENATE Con_cret it_attach INTO it_attach.
APPEND it_attach.
CONCATENATE con_tab itab-ordeenh itab-ordwaarde itab-postype
itab-gevlevdat itab-levdat itab-levnr itab-levpos
itab-levaant itab-leveenh itab-min itab-max
itab-basiseenh itab-abc itab-artsoort itab-vkstatus
itab-ikstatus itab-minlev itab-afrd itab-vprs
itab-vprseenh
INTO it_attach SEPARATED BY con_tab.
APPEND it_attach.
ENDLOOP.</b>
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
MOVE: SY-UNAME TO t_RECEIVERs-RECEIVER,
'X' TO t_RECEIVERs-EXPRESS,
'B' TO t_RECEIVERs-REC_TYPE.
APPEND t_RECEIVERs.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Deze mail is automatisch gemaakt door transactie ZAKA'.
APPEND it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY
Maybe you are looking for
-
[solved] Samsung SCX-3200 prints garbage
Hi, Some months ago I got a Samsung SCX-3200 mono multifunction printer. I installed samsung unified driver from AUR I think it was v3 and printer worked. After the driver got updated to v4 I think my problems started. Sometimes when printing a docum
-
Can you take photos on digital camera and see them appear on the ipad using the camera connector
Can you take photos on digital camera and see them appear on the ipad - i have a canon 400d and the new ipad.......
-
Query on ChaRM control on BAU v/s Project landscapes
We have Business-as-Usual landscape(DEV, QAS, PRD) which is controlled by ChaRM (maintenance project). To this environment, we plan to add a project landscape with Dev(P) and QA(P) systems for project activities. Can we use BAU Solution Manager -
-
Get error "Safari can't find the Internet plug-in"
I get error when I tried to open a Potcast on IBM's website in Safari 5 for Windows 7 "Safari can't find the Internet plug in. Some content on the page "IBM Cloud Computing - idea - United States - United States' Can't be shown because its MIME type
-
I have recently purchased a 24inch imac and had been very impressed. However last night I installed Snow Leopard now I have no Internet. When I clik on Safari it states that it is unable to locate the web proxy server. Good windows was easier. How ca