VBFA vbeln and bsad vbeln
dear gurus,
I stuck with such very strange problem i have a internal table from entries of vbfa
now i am passing vbeln to bsad vbeln but it not fetching all record i am not getting problem.
kindly help me.
TYPES : BEGIN OF TY_BSID ,
BUKRS TYPE BSID-BUKRS,
KUNNR TYPE BSID-KUNNR,
GJAHR TYPE BSID-GJAHR,
BELNR TYPE BSID-BELNR,
BUDAT TYPE BSID-BUDAT,
BLDAT TYPE BSID-BLDAT,
XBLNR TYPE BSID-XBLNR,
BUZEI TYPE BSID-BUZEI,
BLART TYPE BSID-BLART,
BSCHL TYPE BSID-BSCHL,
DMBTR TYPE BSID-DMBTR,
HKONT TYPE BSID-HKONT,
VBELN TYPE BSID-VBELN,
KIDNO TYPE BSID-KIDNO,
TXT20 TYPE SKAT-TXT20,
MATNR TYPE VBAP-MATNR,
END OF TY_BSID.
DATA : WA_BSID TYPE TY_BSID,
IT_BSID TYPE TABLE OF TY_BSID WITH HEADER LINE.
TYPES : BEGIN OF TY_VBFA,
VBELV TYPE VBFA-VBELV,
MATNR TYPE VBFA-MATNR,
VBELN TYPE bsad-VBELN,
END OF TY_VBFA.
DATA : WA_VBFA TYPE TY_VBFA,
IT_VBFA TYPE TABLE OF TY_VBFA WITH HEADER LINE.
IF IT_VBAK[] IS NOT INITIAL.
SELECT VBELV MATNR VBELN FROM VBFA INTO TABLE IT_VBFA FOR ALL ENTRIES IN
IT_VBAK WHERE VBELV = IT_VBAK-VBELN.
ENDIF.
loop at it_vbfa into WA_VBFA.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WA_VBFA-vbeln
IMPORTING
OUTPUT = WA_VBFA-vbeln.
*MODIFY IT_vbfa FROM WA_VBFA TRANSPORTING vbeln.
*endloop.
IF IT_VBFA[] IS NOT INITIAL.
loop at it_vbfa into WA_VBFA.
SHIFT WA_VBFA-vbeln LEFT DELETING LEADING '0'.
MODIFY IT_vbfa FROM WA_VBFA TRANSPORTING vbeln.
endloop.
sort it_vbfa by vbeln ASCENDING.
if S_BUDAT-low is not INITIAL.
SELECT BUKRS KUNNR GJAHR BELNR BUDAT BLDAT XBLNR BUZEI BLART BSCHL DMBTR HKONT VBELN KIDNO " MATNR
FROM BSID INTO CORRESPONDING FIELDS OF TABLE IT_BSID FOR ALL ENTRIES IN
IT_VBFA WHERE VBELN = IT_VBFA-VBELN
AND BUKRS IN S_BUKRS AND
BLART IN ('RV','VR') and
BUDAT in S_BUDAT.
SELECT BUKRS KUNNR GJAHR BELNR BUDAT BLDAT XBLNR BUZEI BLART BSCHL DMBTR HKONT VBELN KIDNO
FROM BSAD APPENDING CORRESPONDING FIELDS OF TABLE IT_BSID FOR ALL ENTRIES IN
IT_VBFA WHERE VBELN = IT_VBFA-VBELN
AND BUKRS IN S_BUKRS AND
BLART IN ('RV','VR') and
BUDAT in S_BUDAT.
i have done lot of changes because vbfa-vbeln and bsad-vbeln data element diffrent.
HELP ME
Regards
victor
Hi,
First you have check internal table 'IT_VBAK' data. If data is available in internal table then again you have to check the data in database table BSAD and VBFA also based on internal table data. I think the data is not available in database table based on internal table data.
Ram.
Similar Messages
-
Should we index table vbfa if vbeln and vbelv is already key field.
Dear All,
actually I am passing billing document into vbfa and want vbelv for faster access data from data base into internal table
should we index table vbfa if vbeln and vbelv is already key field.
Regards
chandrashekarno need.
-
Vbeln and inspection lot .
hi friends ,
can i get the VBELN and PRUEFLOS (inspection lot which is in some qualty inspection) in one same table.
thanks .
Bhupi.Hi Bhupi,
Try table AFKO. It has fields RMANR and PRUEFLOS.
Regards,
Aparna Gaikwad -
OBJNR: VB0000002170000010 in VBELN and POSNR
Hi,
is there any table of FM to get an SD-VBELN and SD-POSNR
by the OBJNR VB0000002170000010.
Thanks.
Regards, DieterHi Dieter,
It is hard to find a FM to make vbeln and posnr from objnr.
i think OBJNR is used to update in some status table like NAST.
and the value is programitacally pass to update in that table; and all the records will conatins same format.
so to fetch VBELN and POSNR from OBJNR...
follow this code:
data: loc_objnr(18) type c,
loc_vbeln(10) type c,
loc_posnr(6) type c.
loc_objnr = OBJNR.
loc_vbeln = loc_objnr+2(10).
loc_posnr = loc_objnr+12(6)
i think it will solve ur problem.
Regards
Krishnendu -
Using bsid and bsad I needed get partner name related to sales order
Hi
Using bsid and bsad I needed get partner name related to sales order
I have gone through the tables but its vbeln column is blank
How can I make relation between bsid and bsad with vbak if vbeln and column is blank in the table bsid and bsad.
Please guide me.
Regards
Sebastian
Edited by: Sebastian John on Apr 21, 2009 3:35 PMBSID-VBELN = VBRK-VBELN.
Billing document number is there in BSID table.
Regs. -
Performance Issues on BSID and BSAD
Hello guys,
for a custom report I need the balance data of a couple of vendors for different keydates. Therefor I tried to use function 'BAPI_AR_ACC_GETKEYDATEBALANCE' which works fine but takes a lot of performance time when getting data for more than one vendor or more than one key date. The function mainly reads BSID and BSAD tables which is enough for my report, so I tried to get it faster with creating my own select.
When looking at the popular SAP boards you get different opinions about the best way for the performance in SELECTS. So can you please tell me what you think would be the best way for tables BSID and BSAD?
I got the key fields company code as parameter and customer as range. I also need only normal documents (BSTAT = ' ') and only documents until one or more keydates as range (BUDAT <= keydate).
So what would be the best way?
(1) Moving the whole BSID/BSAD fields into local BSID/BSAD table or just the fields that I need (see example)?
(2) Doing one SELECT for every vendor no. in the range or getting all vendor no in one select?
Any other performance hints? :-)
SELECT bukrs kunnr budat shkzg dmbtr pswsl pswbt FROM bsid
INTO CORRESPONDING FIELDS OF TABLE gt_bsid
WHERE bukrs EQ pa_bukrs
AND kunnr IN gr_kunnr
AND budat LE pa_stich-high
AND bstat EQ ''.
SELECT bukrs kunnr augdt budat shkzg dmbtr pswsl pswbt FROM bsad
INTO CORRESPONDING FIELDS OF TABLE gt_bsad
WHERE bukrs EQ pa_bukrs
AND kunnr IN gr_kunnr
AND budat LE pa_stich-high
AND augdt GT pa_stich-high
AND bstat EQ ''.
Thanks a lot!
Regards
MichaelAlmost always prefer one SELECT to a SELECT IN LOOP.
Another solution could be reading also some total table :
KNC1 (no special G/L, Balance Carried Forward + total DB/CR per period, one record per Fiscal Year)
KNC3 for special G/L (one record per fiscal year and special G/L indicator, only one total per year)
Only restrict access to BSID/BSAD for dates that are not end of period (or don't allow those...)
NB: From my experience, you can keep the INTO CORRESPONDING, just define a structure with only required fields, the actual generated SQL statement will only ask for those fields (read also Why "INTO CORRESPONDING" is much better than its reputation)
Regards,
Raymond -
Hi. I have a problem now. An entry in Accounting both exists in tables BSID and BSAD. What do i have to do?
Hi Andre,
Check if the amount are also same. It may be that it is partially posted document.
Or post this is ERP Financials forum. You will get more correct answer.
Reward points if useful.
Regards,
Atish -
BAPI to update Business Area in table BSEG and BSAD
Hi,
Is there any BAPI that will update the field Business Area in table BSEG and BSAD?
Thanks,
Ekit
Moderator: Please, search SDNHi,
You can not update the business area in the posted documents.
You need to reverse them and have to recreate.
Regards,
Gaurav -
hi,
anyone can explain to me.
1) bsid is to list all the open items whereas bsad is to list all cleared items?
2) say i have an doc type RV 5300000001 with amount $1000. i use f-29 to post cust downpayment DA 4000000002 and f-39 to clear cust downpayment against 1000 DZ 4500000034. may i know why RV and DA still sitting in bsid as $1000 fully cleared whereas DA and DZ in bsad?
3) what is this clearing doc for? it is in bsid or bsad?
thanksHi SAP_USER_SAP,
Hope this can help
1. Yes, BSID for open items, BSAD for cleared items.
<u>2. Well, the process is like below :</u>
You post a document with type RV (Let say Doc No=AAA) and then you post a down payment using F-29 (Doc No = BBB). <b>Both of the documents has no relationship.</b> And after you post, They will sit on the BSID.
Afterwards, You clear the down payment(Doc No=BBB) with F-39. This will create a new document (Let say Doc No = CCC ).
CCC will clear BBB but on the other hand CCC also have an open item (<b>you have to clear this later against the RV document</b>). So CCC will sit on BSID and BSAD.
Because BBB has already been cleared by CCC, BBB will move from BSID to BSAD.
Now you have AAA and CCC sit in BSID.
BBB and CCC sit in BSAD.
In order to move AAA and CCC from BSID to BSAD you have to do the clearing again. You can use t-code : F-22 to do it.
3. Document ,which is already cleared, should be sit in BSAD.
The scenario is like this :
For Example, you have receive a down payment. Two days later you send the invoice to customer(RV document) and post it to system.
Down payment and invoice will be an open item.
When customer pay the invoice, you have to clear the down payment and invoice. Afterwards, the will sit on BSAD. -
Function modue which imports belnr and exports vbeln?
hi all,
can anyone tell me if there is any function module in which if i pass accounting document(belnr) i get the corresponding billing document(vbeln)..You can also try:
DATA: v_reference TYPE bkpf-awtyp, "Reference procedure
v_objectkey TYPE bkpf-awkey. "Object key
v_objectkey = billing_doc.
v_reference = 'VBRK'.
SELECT SINGLE bukrs belnr gjahr "Accounting Doc Header
FROM bkpf
INTO doc_int
WHERE awtyp = v_reference
AND awkey = v_objectkey.
Rob -
Trouble creating a open items report (BSID and BSAD tables)
Hi guys,
im creating a report that must display open items for an especific date, and i do it very well with a query from BSID table.
The problem comes when u use a date on the past, example last week.
if u do that, the items are now closed and are no longer stored in BSID table, so i think that they must be now in BSAD table, but i dont know how to relate wich ones are recently closed...
i also tried to do a query from BSAD with augdt >= last week date, and i almost get the items that i needed(this items plus the ones from BSID), but is not exactly because u can close an item with a date in the past..
is there any way to relate that 2 tables, or what exactly happens when an items change from bsid to bsad??
any ideas?Hi;
I think the best way to recive the necessary information is using logical data base DDF. You can use report RFITEMAR to see how use the logical data base.
Some months ago I've read the data in my report in following way:
1. make Z-copy of report RFITEMAR
2. in Z-copy after end-of-selection insert
export it_pos to memory id 'POS_TABLE'.
3. In your report write a form similar to my form below:
*& Form submit_zrfitemar
FORM submit_zrfitemar tables rkunnr type trgr_kunnr
it_pos type it_rfposxext
using ibukrs type bukrs
idatsd type sy-datum.
data: rspar type table of rsparams,
l_rspar type rsparams,
l_pos type rfposxext,
akunnr type kunnr.
l_rspar-selname = 'DD_KUNNR'.
l_rspar-kind = 'S'.
loop at rkunnr.
move-corresponding rkunnr to l_rspar.
if l_rspar-high = ''.
l_rspar-option = 'EQ'.
else.
l_rspar-option = 'BT'.
endif.
append l_rspar to rspar.
endloop.
clear: l_rspar.
l_rspar-selname = 'DD_BUKRS'.
l_rspar-kind = 'S'.
l_rspar-sign = 'I'.
l_rspar-option = 'BT'.
l_rspar-low = ibukrs.
append l_rspar to rspar.
clear: l_rspar.
l_rspar-selname = 'PA_STIDA'.
l_rspar-kind = 'S'.
l_rspar-sign = 'I'.
l_rspar-option = 'BT'.
l_rspar-low = idatsd.
append l_rspar to rspar.
clear: it_pos[].
submit ZRFITEMAR
with selection-table rspar
and return.
import it_pos from memory id 'POS_TABLE'.
ENDFORM. " submit_zrfitemar
You find the necessary data in table IT_POS.
JS
Edited by: John Smith on Oct 9, 2008 5:42 PM -
hi everybody
what is the exact difference between select single vbeln and select vbeln
In what situations i should use these select single vbeln or select vbeln
regards
hridhayanjili.Hai
Go through the following Document
According to SAP Performance course the SELECT UP TO 1 ROWS is faster than SELECT SINGLE because you are not
using all the primary key fields.
select single is a construct designed to read database records with primary key. In the absence of the primary key,
it might end up doing a sequential search, whereas the select up to 1 rows may assume that there is no primary key
supplied and will try to find most suitable index.
The best way to find out is through sql trace or runtime analysis.
Use "select up to 1 rows" only if you are sure that all the records returned will have the same value for the field(s)
you are interested in. If not, you will be reading only the first record which matches the criteria, but may be the
second or the third record has the value you are looking for.
The System test result showed that the variant Single * takes less time than Up to 1 rows as there is an additional
level for COUNT STOP KEY for SELECT ENDSELECT UP TO 1 ROWS.
The 'SELECT SINGLE' statement selects the first row in the database that it finds that fulfils the 'WHERE' clause
If this results in multiple records then only the first one will be returned and therefore may not be unique.
Mainly: to read data from
The 'SELECT .... UP TO 1 ROWS' statement is subtly different. The database selects all of the relevant records that
are defined by the WHERE clause, applies any aggregate, ordering or grouping functions to them and then returns
the first record of the result set.
Mainly: to check if entries exist.
You can refer to the below link..
http://www.sap-img.com/abap/difference-between-select-single-and-select-upto-one-rows.htm
Regards
Sreeni -
Hi all,
How to link Header and Item details
RanjithHi,
The Line item table always have the header tables key as one of the key field. so u can use it.
for eg : VBAK-vbeln and VBAP-vbeln
Vbeln is the link between sales header and item table.
Hope this helps. -
REPORT ZCHECK .
*& TABLES/VIEWS
TABLES: mseg,
ser03,
objk,
zprealert,
vbrk,
vbrp,
zinftsalecntrl,
vbfa.
*& VARIABLES/STRUCTURES/INTERNAL TABLES
DATA: BEGIN OF it_mseg OCCURS 0,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
zeile LIKE mseg-zeile,
END OF it_mseg.
DATA: BEGIN OF it_ser03 OCCURS 0,
obknr LIKE ser03-obknr,
mblnr LIKE ser03-mblnr,
zeile LIKE ser03-zeile,
bwart LIKE ser03-bwart,
charge LIKE ser03-charge,
datum LIKE ser03-datum,
werk LIKE ser03-werk,
lagerort LIKE ser03-lagerort,
END OF it_ser03.
DATA: BEGIN OF it_objk OCCURS 0,
obknr LIKE objk-obknr,
sernr LIKE objk-sernr,
matnr LIKE objk-matnr,
END OF it_objk.
DATA: BEGIN OF it_alert OCCURS 0,
rsnno LIKE zprealert-rsnno,
***kdamle-27102004-start
status LIKE zprealert-status,
***kdamle-27102004-end
END OF it_alert.
DATA: BEGIN OF it_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat,
fkart LIKE vbrk-fkart,
vkorg LIKE vbrk-vkorg,
vtweg LIKE vbrk-vtweg,
spart LIKE vbrk-spart,
fksto LIKE vbrk-fksto,
END OF it_vbrk.
DATA: BEGIN OF it_vbrp OCCURS 0,
vbeln LIKE vbrp-vbeln,
matnr LIKE vbrp-matnr,
charg LIKE vbrp-charg,
END OF it_vbrp.
DATA: BEGIN OF it_inftsale OCCURS 0,
delivery LIKE zinftsalecntrl-delivery,
billingdoc LIKE zinftsalecntrl-billingdoc,
END OF it_inftsale.
DATA: BEGIN OF it_vbfa OCCURS 0,
vbelv LIKE vbfa-vbelv,
vbeln LIKE vbfa-vbeln,
END OF it_vbfa.
DATA: BEGIN OF it_vbfa_1 OCCURS 0,
vbelv LIKE vbfa-vbelv,
vbeln LIKE vbfa-vbeln,
vbtyp_v LIKE vbfa-vbtyp_v,
***kdamle-19052005-start
vbtyp_n LIKE vbfa-vbtyp_n,
***kdamle-19052005-end
END OF it_vbfa_1.
DATA: BEGIN OF it_vbfa_2 OCCURS 0,
vbelv LIKE vbfa-vbelv,
vbeln LIKE vbfa-vbeln,
vbtyp_n LIKE vbfa-vbtyp_n,
***kdamle-19052005-start
plmin LIKE vbfa-plmin,
***kdamle-19052005-end
END OF it_vbfa_2.
DATA: BEGIN OF it_out OCCURS 0,
rsnno LIKE zprealert-rsnno,
matnr LIKE objk-matnr,
charg LIKE ser03-charge,
bwart LIKE ser03-bwart,
mblnr LIKE ser03-mblnr,
vbeln LIKE vbrk-vbeln,
datum LIKE ser03-datum,
zeile LIKE ser03-zeile,
werk LIKE ser03-werk,
lagerort LIKE ser03-lagerort,
fkdat LIKE vbrk-fkdat,
fkart LIKE vbrk-fkart,
vkorg LIKE vbrk-vkorg,
vtweg LIKE vbrk-vtweg,
spart LIKE vbrk-spart,
***kdamle-27102004-start
status LIKE zprealert-status,
***kdamle-27102004-end
END OF it_out.
***kdamle-05.10.2004-start
*display table as per o/p file structure
DATA: BEGIN OF it_disp OCCURS 0,
rsnno LIKE zprealert-rsnno,
matnr LIKE objk-matnr,
charg LIKE ser03-charge,
bwart LIKE ser03-bwart,
mblnr LIKE ser03-mblnr,
zeile LIKE ser03-zeile,
werk LIKE ser03-werk,
lagerort LIKE ser03-lagerort,
datum LIKE ser03-datum,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat,
fkart LIKE vbrk-fkart,
vkorg LIKE vbrk-vkorg,
vtweg LIKE vbrk-vtweg,
spart LIKE vbrk-spart,
END OF it_disp.
DATA : BEGIN OF it_formatted OCCURS 0,
record(140),
END OF it_formatted.
DATA: BEGIN OF it_dwn OCCURS 0,
text1(15),
text2(15),
text3(15),
text4(15),
text5(15),
END OF it_dwn.
*This table will contain uploaded mblnr or vbeln data
*in foreground, it will contain either mblnr or vbeln.
*in backround, it will first contain data uploaded from users machine
*and loaded on the application server.
*Then it is erased and filled with data which is read from application
*server since data from users machine cannot be read in background
DATA: BEGIN OF it_up OCCURS 0,
***kdamle-24052005-start
*positions swapped for vbeln and mblnr
vbeln LIKE vbrk-vbeln,
mblnr LIKE ser03-mblnr,
***kdamle-24052005-end
END OF it_up.
***kdamle-05.10.2004-end
DATA : it_alv LIKE STANDARD TABLE OF it_out.
DATA: cntnr TYPE REF TO cl_gui_custom_container,
grid TYPE REF TO cl_gui_alv_grid.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
s_fieldcat LIKE LINE OF gt_fieldcat,
alv_layout TYPE slis_layout_alv.
DATA: ls_alv_event TYPE slis_alv_event,
i_alv_event TYPE slis_t_event.
DATA: gt_list_top_of_page TYPE slis_t_listheader,
infotxt TYPE slis_listheader-info.
DATA: g_variant LIKE disvariant VALUE 'ZPPSALE',
gx_variant LIKE disvariant.
DATA: lin TYPE i.
DATA: wkey LIKE vbfa-vbtyp_v.
DATA: v_datum LIKE sy-datum,
v_uzeit LIKE sy-uzeit.
***kdamle-05.10.2004-start
CONSTANTS: hex(1) TYPE x VALUE '09', "tab
app_path TYPE rlgrap-filename
VALUE '/bdcusers/mmdata/'.
DATA: fnam LIKE rlgrap-filename,
l_path(100),
flag(1),
txt(500).
DATA: fnam1 LIKE rlgrap-filename.
DATA : BEGIN OF iline OCCURS 0,
line(4000),
END OF iline.
DATA : BEGIN OF i_tty OCCURS 0,
line(300),
END OF i_tty.
*required for pushbutton info
DATA: g_answer TYPE c,
g_lines_tab TYPE popuptext OCCURS 0
WITH HEADER LINE.
DATA: v_flagmtl,
v_flaginv.
***kdamle-05.10.2004-end
***kdamle-08122004-start
DATA: v_msgtxt(150).
***kdamle-08122004-end
*& SELECTION SCREEN
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbrk-vbeln.
SELECT-OPTIONS: s_mblnr FOR ser03-mblnr.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN SKIP 1.
***kdamle-05.10.2004-start
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-007.
PARAMETERS: p_ufname LIKE rlgrap-filename.
*pushbuttons to give info and download file format
SELECTION-SCREEN: PUSHBUTTON /1(7) help USER-COMMAND info,
PUSHBUTTON 33(25) down USER-COMMAND down.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-002.
PARAMETERS: S_VAR LIKE DISVARIANT-VARIANT.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_r1 RADIOBUTTON GROUP rbg1 DEFAULT 'X' USER-COMMAND ucomm,
s_var LIKE disvariant-variant MODIF ID pr1.
PARAMETERS: p_r2 RADIOBUTTON GROUP rbg1,
p_fname LIKE rlgrap-filename MODIF ID pr2.
PARAMETERS: p_r3 RADIOBUTTON GROUP rbg1,
p_lfname LIKE rlgrap-filename MODIF ID pr3,
p_fname1 LIKE rlgrap-filename MODIF ID pr4.
SELECTION-SCREEN END OF BLOCK blk3.
SELECTION-SCREEN BEGIN OF BLOCK blk4 WITH FRAME TITLE text-003.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(75) text-004 MODIF ID pr5.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(75) text-005 MODIF ID pr6.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(75) text-006 MODIF ID pr7.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK blk4.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
PERFORM get_file.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname1.
PERFORM get_lfile.
***kdamle-05.10.2004-start
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ufname.
PERFORM get_ufile.
***kdamle-05.10.2004-end
*& AT SELECTION SCREEN OUTPUT
***kdamle-05.10.2004-start
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_r1 = 'X'.
IF screen-group1 = 'PR1'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ELSEIF screen-group1 = 'PR2'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR3'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR4'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR5'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR6'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR7'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ENDIF.
ELSEIF p_r2 = 'X'.
IF screen-group1 = 'PR1'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR2'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ELSEIF screen-group1 = 'PR3'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR4'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR5'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ELSEIF screen-group1 = 'PR6'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ELSEIF screen-group1 = 'PR7'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ENDIF.
ELSEIF p_r3 = 'X'.
IF screen-group1 = 'PR1'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR2'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR3'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ELSEIF screen-group1 = 'PR4'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ELSEIF screen-group1 = 'PR5'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR6'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '1'.
ELSEIF screen-group1 = 'PR7'.
screen-input = '1'.
screen-output = '1'.
screen-invisible = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
*& INITIALIZATION
INITIALIZATION.
MOVE '@0S@' TO help.
MOVE '@49@ Upload File Format' TO down.
PERFORM fill_infotext.
***kdamle-05.10.2004-end
*& AT SELECTION SCREEN
AT SELECTION-SCREEN.
IF sy-ucomm = 'ONLI'
***kdamle-08122004-start
AND p_r3 NE 'X'.
***kdamle-08122004-end
IF NOT s_vbeln IS INITIAL
AND NOT s_mblnr IS INITIAL
AND NOT p_ufname IS INITIAL.
MESSAGE e000(yw) WITH
'Enter Either Mat. Doc. Or Inv. No. Or Upload File'.
ELSEIF s_vbeln IS INITIAL
AND s_mblnr IS INITIAL
AND p_ufname IS INITIAL.
MESSAGE e000(yw) WITH
'Enter Either Mat. Doc. Or Inv. No. Or Upload File'.
ENDIF.
IF NOT s_mblnr IS INITIAL AND NOT p_ufname IS INITIAL.
MESSAGE e000(yw) WITH
'Enter Either Material Doc. Or Upload file name'.
ELSEIF NOT s_vbeln IS INITIAL AND NOT p_ufname IS INITIAL.
MESSAGE e000(yw) WITH
'Enter Either Invoice No. Or Upload file name'.
ENDIF.
ENDIF.
***kdamle-05.10.2004-start
IF sscrfields-ucomm = 'INFO'.
IF sy-ucomm = 'INFO'.
CALL FUNCTION 'DD_POPUP_WITH_INFOTEXT'
EXPORTING
titel = 'Text File Format'
start_column = 10
start_row = 12
end_column = 85
end_row = 22
infoflag = ' '
IMPORTING
answer = g_answer
TABLES
lines = g_lines_tab.
ELSEIF sscrfields-ucomm = 'DOWN'.
ELSEIF sy-ucomm = 'DOWN'.
PERFORM fill_idwn.
ENDIF.
IF sy-ucomm = 'ONLI'.
IF p_r2 = 'X'.
IF p_fname IS INITIAL.
SET CURSOR FIELD 'P_FNAME'.
MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
ENDIF.
ENDIF.
IF p_r3 = 'X'.
IF p_lfname = space.
SET CURSOR FIELD 'P_LFNAME'.
MESSAGE e000(yw) WITH 'FileName on Server cannot be empty'.
ENDIF.
IF p_fname1 = space.
SET CURSOR FIELD 'P_FNAME1'.
MESSAGE e000(yw) WITH 'Local FileName cannot be empty'.
ENDIF.
ENDIF.
ELSEIF sy-ucomm = 'SJOB'.
IF p_r2 = 'X'.
IF p_fname IS INITIAL.
SET CURSOR FIELD 'P_FNAME'.
MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
ENDIF.
IF p_fname CA ':' OR p_fname CA '/' OR p_fname CA '\'.
SET CURSOR FIELD 'P_FNAME'.
MESSAGE e000(yw) WITH 'Enter only File Name for Background job'.
ENDIF.
ENDIF.
IF p_r3 = 'X'.
MESSAGE e000(yw) WITH
'This option cannot be executed in Background mode'.
ENDIF.
ENDIF.
IF p_fname CA '*'.
MESSAGE e000(yw) WITH '* (star) not allowed in Filename'.
ENDIF.
IF sy-ucomm = 'ONLI' AND NOT p_ufname IS INITIAL.
*in foreground processing directly read input file from users machine
PERFORM upload_file TABLES it_up.
ELSEIF sy-ucomm = 'SJOB' AND NOT p_ufname IS INITIAL.
*download the file read input file from users machine onto the
*application server first as it cannot be read during background
*processing
PERFORM download_to_app_server.
ENDIF.
***kdamle-05.10.2004-end
*& AT SELECTION SCREEN ON VALUE REQUEST
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
PERFORM select_variant.
*& START OF SELECTION
START-OF-SELECTION.
***kdamle-05.10.2004-start
IF sy-batch = 'X'.
CLEAR it_up.
CLEAR it_up[].
PERFORM upload_app_server.
READ TABLE it_up INDEX 1.
ENDIF.
IF p_r3 = 'X'.
PERFORM create_local_file.
EXIT.
ENDIF.
IF NOT s_mblnr IS INITIAL.
SELECT mblnr mjahr zeile FROM mseg
INTO CORRESPONDING FIELDS OF TABLE it_mseg
WHERE mblnr IN s_mblnr
AND xauto NE 'X'.
IF sy-subrc NE 0.
MESSAGE s000(yw) WITH 'No Data Found'.
STOP.
ENDIF.
PERFORM get_data_from_mtl.
ELSEIF NOT p_ufname IS INITIAL AND NOT it_up-mblnr IS INITIAL.
v_flagmtl = 'X'.
IF NOT it_up[] IS INITIAL.
SORT it_up BY mblnr.
SELECT mblnr mjahr zeile FROM mseg
INTO CORRESPONDING FIELDS OF TABLE it_mseg
FOR ALL ENTRIES IN it_up
WHERE mblnr = it_up-mblnr
AND xauto NE 'X'.
ENDIF.
PERFORM get_data_from_mtl.
ELSEIF NOT s_vbeln IS INITIAL.
SELECT vbeln fkdat fkart vkorg vtweg spart FROM vbrk
INTO CORRESPONDING FIELDS OF TABLE it_vbrk
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
MESSAGE s000(yw) WITH 'No Data Found'.
STOP.
ENDIF.
PERFORM get_data_from_inv.
ELSEIF NOT p_ufname IS INITIAL AND NOT it_up-vbeln IS INITIAL.
v_flaginv = 'X'.
IF NOT it_up[] IS INITIAL.
SORT it_up BY vbeln.
SELECT vbeln fkdat fkart vkorg vtweg spart FROM vbrk
INTO CORRESPONDING FIELDS OF TABLE it_vbrk
FOR ALL ENTRIES IN it_up
WHERE vbeln = it_up-vbeln.
ENDIF.
PERFORM get_data_from_inv.
ENDIF.
***kdamle-05.10.2004-end
*& END OF SELECTION
END-OF-SELECTION.
***kdamle-05.10.2004-start
IF NOT s_mblnr IS INITIAL OR v_flagmtl = 'X'.
***kdamle-05.10.2004-end
CHECK NOT it_mseg[] IS INITIAL.
PERFORM populate_output_1.
***kdamle-05.10.2004-start
ELSEIF NOT s_vbeln IS INITIAL OR v_flaginv = 'X'.
***kdamle-05.10.2004-end
PERFORM populate_output_2.
ENDIF.
***kdamle-05.10.2004-start
IF p_r1 = 'X'.
***kdamle-05.10.2004-end
DESCRIBE TABLE it_out LINES lin.
IF lin > 0.
PERFORM create_f_catalog_0100.
PERFORM set_defaults_grid.
SET TITLEBAR 'DOC' WITH '[count ='
lin
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZDOC_SRLST'
is_layout = alv_layout
it_fieldcat = gt_fieldcat
i_default = 'X'
i_save = 'A'
is_variant = g_variant
TABLES
t_outtab = it_out.
ELSE.
MESSAGE s000(yw) WITH 'No Data Selected'.
ENDIF.
***kdamle-05.10.2004-start
ELSEIF p_r2 = 'X'.
PERFORM create_disp_table.
IF sy-batch = space.
PERFORM online_download.
ELSE.
PERFORM download_data.
ENDIF.
ENDIF.
***kdamle-05.10.2004-end
*& Form POPULATE_OUTPUT_1
FORM populate_output_1.
SORT IT_SER03 BY MBLNR.
SORT it_vbfa_1 BY vbeln.
SORT it_vbfa_2 BY vbelv.
SORT it_vbrk BY vbeln.
SORT it_objk BY obknr.
SORT it_alert BY rsnno.
LOOP AT it_ser03.
it_out-charg = it_ser03-charge.
it_out-bwart = it_ser03-bwart.
it_out-zeile = it_ser03-zeile.
it_out-mblnr = it_ser03-mblnr.
it_out-datum = it_ser03-datum.
it_out-werk = it_ser03-werk.
it_out-lagerort = it_ser03-lagerort.
IF it_ser03-bwart = '601' OR it_ser03-bwart = '602'.
wkey = 'J'.
ELSE.
wkey = 'T'.
ENDIF.
CLEAR it_vbfa_1.
READ TABLE it_vbfa_1
WITH KEY vbeln = it_ser03-mblnr
vbtyp_v = wkey.
IF sy-subrc EQ 0.
IF it_ser03-bwart = '601' OR it_ser03-bwart = '602'.
wkey = 'M'.
ELSE.
wkey = 'O'.
ENDIF.
CLEAR it_vbfa_2.
READ TABLE it_vbfa_2
WITH KEY vbelv = it_vbfa_1-vbelv
vbtyp_n = wkey.
IF sy-subrc EQ 0.
CLEAR it_vbrk.
READ TABLE it_vbrk
WITH KEY vbeln = it_vbfa_2-vbeln
BINARY SEARCH.
it_out-vbeln = it_vbrk-vbeln.
it_out-fkdat = it_vbrk-fkdat.
it_out-fkart = it_vbrk-fkart.
it_out-vkorg = it_vbrk-vkorg.
it_out-vtweg = it_vbrk-vtweg.
it_out-spart = it_vbrk-spart.
ENDIF.
ENDIF.
READ TABLE it_objk
WITH KEY obknr = it_ser03-obknr
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT it_objk WHERE obknr = it_ser03-obknr.
it_out-matnr = it_objk-matnr.
READ TABLE it_alert
WITH KEY rsnno = it_objk-sernr
BINARY SEARCH.
IF sy-subrc EQ 0.
it_out-rsnno = it_alert-rsnno.
***kdamle-27102004-start
it_out-status = it_alert-status.
***kdamle-27102004-end
APPEND it_out.
CLEAR: it_alert, it_objk.
ELSE.
APPEND it_out.
CLEAR: it_objk.
ENDIF.
ENDLOOP.
ELSE.
APPEND it_out.
CLEAR: it_objk, it_ser03,
it_out.
ENDIF.
ENDLOOP.
REFRESH: it_ser03, it_objk, it_alert.
ENDFORM. " POPULATE_OUTPUT_1
*& Form POPULATE_OUTPUT_2
FORM populate_output_2.
SORT it_vbrp BY vbeln.
SORT it_vbfa_1 BY vbeln.
SORT it_vbfa_2 BY vbelv.
SORT it_ser03 BY mblnr.
SORT it_objk BY obknr.
SORT it_alert BY rsnno.
LOOP AT it_vbrk.
it_out-vbeln = it_vbrk-vbeln.
it_out-fkdat = it_vbrk-fkdat.
it_out-fkart = it_vbrk-fkart.
it_out-vkorg = it_vbrk-vkorg.
it_out-vtweg = it_vbrk-vtweg.
it_out-spart = it_vbrk-spart.
READ TABLE it_vbrp
WITH KEY vbeln = it_vbrk-vbeln.
***kdamle-19042005-start
it_out-charg = it_vbrp-charg.
it_out-matnr = it_vbrp-matnr.
***kdamle-19042005-end
READ TABLE it_vbfa_1
WITH KEY vbeln = it_vbrk-vbeln
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT it_vbfa_1 WHERE vbeln = it_vbrk-vbeln.
READ TABLE it_vbfa_2
WITH KEY vbelv = it_vbfa_1-vbelv
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT it_vbfa_2 WHERE vbelv = it_vbfa_1-vbelv.
READ TABLE it_ser03
WITH KEY mblnr = it_vbfa_2-vbeln
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT it_ser03 WHERE mblnr = it_vbfa_2-vbeln.
it_out-bwart = it_ser03-bwart.
it_out-zeile = it_ser03-zeile.
it_out-mblnr = it_ser03-mblnr.
it_out-datum = it_ser03-datum.
it_out-werk = it_ser03-werk.
it_out-lagerort = it_ser03-lagerort.
***kdamle-19042005-start
it_out-charg = it_ser03-charge.
***kdamle-19042005-end
READ TABLE it_objk
WITH KEY obknr = it_ser03-obknr
BINARY SEARCH.
IF sy-subrc EQ 0.
LOOP AT it_objk WHERE obknr = it_ser03-obknr.
***kdamle-19042005-start
it_out-matnr = it_objk-matnr.
***kdamle-19042005-end
READ TABLE it_alert
WITH KEY rsnno = it_objk-sernr
BINARY SEARCH.
IF sy-subrc EQ 0.
it_out-rsnno = it_alert-rsnno.
APPEND it_out.
CLEAR: it_alert, it_objk.
ELSE.
APPEND it_out.
CLEAR: it_objk.
ENDIF.
ENDLOOP.
ELSE.
APPEND it_out.
CLEAR: it_objk, it_ser03, it_out.
ENDIF.
ENDLOOP.
CLEAR: it_ser03, it_objk, it_alert.
ELSE.
APPEND it_out.
ENDIF.
ENDLOOP.
ELSE.
APPEND it_out.
ENDIF.
ENDLOOP.
ELSE.
APPEND it_out.
ENDIF.
ENDLOOP.
ENDFORM. " POPULATE_OUTPUT_2
*& FORM CREATE_F_CATALOG_0100
FORM create_f_catalog_0100.
REFRESH gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'RSNNO'.
s_fieldcat-ref_tabname = 'ZPREALERT'.
s_fieldcat-ref_fieldname = 'RSNNO'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'RSN No.'.
s_fieldcat-outputlen = '20'.
s_fieldcat-fix_column = 'X'.
s_fieldcat-key = 'X'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'MATNR'.
s_fieldcat-ref_tabname = 'OBJK'.
s_fieldcat-ref_fieldname = 'MATNR'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Material'.
s_fieldcat-outputlen = '20'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'CHARG'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'CHARG'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Batch'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'BWART'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'BWART'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Movement'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'MBLNR'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'MBLNR'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Mat Doc'.
s_fieldcat-outputlen = '10'.
s_fieldcat-emphasize = 'X'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'ZEILE'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'ZEILE'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Item'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'WERK'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'WERK'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Plant'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'LAGERORT'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'LAGERORT'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'SLoc'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'DATUM'.
s_fieldcat-ref_tabname = 'SER03'.
s_fieldcat-ref_fieldname = 'DATUM'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Doc Date'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'VBELN'.
s_fieldcat-ref_tabname = 'VBRK'.
s_fieldcat-ref_fieldname = 'VBELN'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Invoice'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'FKDAT'.
s_fieldcat-ref_tabname = 'VBRK'.
s_fieldcat-ref_fieldname = 'FKDAT'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Inv Date'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'FKART'.
s_fieldcat-ref_tabname = 'VBRK'.
s_fieldcat-ref_fieldname = 'FKART'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Inv Type'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'VKORG'.
s_fieldcat-ref_tabname = 'VBRK'.
s_fieldcat-ref_fieldname = 'VKORG'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'S.Org'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'VTWEG'.
s_fieldcat-ref_tabname = 'VBRK'.
s_fieldcat-ref_fieldname = 'VTWEG'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'D.Chnl'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-fieldname = 'SPART'.
s_fieldcat-ref_tabname = 'VBRK'.
s_fieldcat-ref_fieldname = 'SPART'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'Div'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
***kdamle-27102004-start
s_fieldcat-fieldname = 'STATUS'.
s_fieldcat-ref_tabname = 'ZPREALERT'.
s_fieldcat-ref_fieldname = 'STATUS'.
s_fieldcat-ddictxt = 'L'.
s_fieldcat-seltext_l = s_fieldcat-seltext_m = s_fieldcat-seltext_s =
'P Sts'.
s_fieldcat-outputlen = '10'.
s_fieldcat-tabname = 'IT_OUT'.
APPEND s_fieldcat TO gt_fieldcat.
CLEAR s_fieldcat.
***kdamle-27102004-end
ENDFORM.
*& Form SET_DEFAULTS_GRID
FORM set_defaults_grid.
alv_layout-colwidth_optimize = 'X'.
alv_layout-zebra = 'X'.
ENDFORM. " SET_DEFAULTS_GRID
*& Form SELECT_VARIANT
FORM select_variant.
DATA: g_exit(1) TYPE c,
g_save(1) TYPE c.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = 'A'
IMPORTING
es_variant = g_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc EQ 0.
s_var = g_variant-variant.
ELSE.
MESSAGE s000(yw) WITH 'No Variant Found'.
ENDIF.
ENDFORM. " SELECT_VARIANT
*& Form DISP_TOP_OF_PAGE
FORM disp_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM. " DISP_TOP_OF_PAGE
*& Form FILL_ALV_EVENTS
FORM fill_alv_events.
DATA: ls_line TYPE slis_listheader.
ls_alv_event-name = 'TOP_OF_PAGE'.
ls_alv_event-form = 'DISP_TOP_OF_PAGE'.
APPEND ls_alv_event TO i_alv_event.
CLEAR: ls_alv_event,
ls_line.
ls_line-typ = 'A'.
ls_line-info = infotxt.
APPEND ls_line TO gt_list_top_of_page.
ENDFORM. " FILL_ALV_EVENTS
*& Form GET_FILE
text
--> p1 text
<-- p2 text
FORM get_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = 'ZDOC_SRLST'
field_name = p_fname
mask = '.'
CHANGING
file_name = p_fname.
IF sy-subrc <> 0.
MESSAGE e000(yw) WITH 'Error Uploading File' p_fname.
ENDIF.
ENDFORM. " GET_FILE
*& Form GET_LFILE
text
--> p1 text
<-- p2 text
FORM get_lfile.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = 'ZDOC_SRLST'
field_name = p_fname1
mask = '.'
CHANGING
file_name = p_fname1.
IF sy-subrc <> 0.
MESSAGE e000(yw) WITH 'Error Uploading File' p_fname1.
ENDIF.
ENDFORM. " GET_LFILE
*& Form CREATE_LOCAL_FILE
text
--> p1 text
<-- p2 text
FORM create_local_file.
IF p_lfname IS INITIAL OR p_fname1 IS INITIAL.
MESSAGE i000(yw) WITH 'File Name on Server and Local File Name '
' are mandatory.'.
STOP.
ENDIF.
CONCATENATE app_path p_lfname INTO l_path.
CONDENSE l_path NO-GAPS.
OPEN DATASET l_path FOR INPUT IN TEXT MODE.
IF sy-subrc NE 0.
MESSAGE i000(yw) WITH 'File' p_lfname 'does not exist'.
STOP.
ENDIF.
DO.
CLEAR : iline.
READ DATASET l_path INTO iline.
IF sy-subrc = 0.
APPEND iline.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET l_path.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
filename = p_fname1
filetype = 'DAT'
ITEM = ' '
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
SILENT = 'S'
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
ACT_FILENAME =
ACT_FILETYPE =
FILESIZE =
CANCEL =
TABLES
data_tab = iline
FIELDNAMES =
EXCEPTIONS
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
CUSTOMER_ERROR = 7
OTHERS = 8
IF sy-subrc EQ 0.
***kdamle-08122004-start
CONCATENATE 'File ' p_fname1
' Downloaded Successfully'
INTO v_msgtxt SEPARATED BY space.
MESSAGE s000(yw) WITH v_msgtxt+0(50)
v_msgtxt+50(50).
***kdamle-08122004-end
Delete processed file from App Server.
IF sy-subrc EQ 0.
CONCATENATE 'rm' l_path
INTO txt SEPARATED BY space.
CALL 'SYSTEM' ID 'COMMAND' FIELD txt
ID 'TAB' FIELD i_tty[].
ENDIF.
ENDIF.
ENDFORM. " CREATE_LOCAL_FILE
*& Form ONLINE_DOWNLOAD
text
--> p1 text
<-- p2 text
FORM online_download.
CALL FUNCTION 'WS_DOWNLOAD' "#nc
EXPORTING
filename = p_fname
filetype = 'ASC'
TABLES
data_tab = it_formatted.
IF sy-subrc EQ 0.
MESSAGE s016(yw) WITH 'File '
p_fname
' Downloaded Successfully'.
ELSE.
MESSAGE i000(yw) WITH 'Error Downloading File'
p_fname.
ENDIF.
ENDFORM. " ONLINE_DOWNLOAD
*& Form DOWNLOAD_DATA
text
--> p1 text
<-- p2 text
FORM download_data.
*TRANSFERRING THE DATA TO THE FILE ON THE APPLICATION SERVER
CONCATENATE app_path p_fname INTO fnam SEPARATED BY space.
CONDENSE fnam NO-GAPS.
IF fnam IS INITIAL.
MESSAGE e000(yw) WITH 'Please Enter Download File Name'.
ENDIF.
OPEN DATASET fnam FOR OUTPUT IN TEXT MODE.
IF sy-subrc = 0.
LOOP AT it_formatted.
TRANSFER it_formatted TO fnam.
ENDLOOP.
CLOSE DATASET fnam.
IF sy-subrc = 0.
MESSAGE s016(yw) WITH 'File '
fnam+0(50)
fnam+50(50)
' Downloaded Successfully'.
ELSE.
MESSAGE i000(yw) WITH1) AVOID SELECT *
2) USE WHERE WITH AS MANY EQ AND RESTRICT DATA RETRIEVAL
3) AVOID SELECTS FROM THE SAME TABLE
4) USE BINARY SEARCH WHEN READING FROM INTERNAL TABLES
5) CHECK IF INTERNAL TABLE IS SORTED BEFORE READING WITH BINARY SRCH
6) FETCH REQUIRED FIELDS USING TRANSPORTING WHEN READING INTERNAL TABLES
7) USE AS MANY PRIMARY AND SECONDARY INDEXES WHEN RETRIEVING DATA
8) USE SELECT SINGLE INSTEAD OF UP TO 1 ROWS
9) USE BYPASSING BUFFER FOR ONE TIME USE TABLES
10) USE INSERT <DBTAB> FROM TABLE <ITAB1> INSTEAD OF INSERT INTO <DBTAB>
11) USE WITH KEY WHEN READING FROM AN INTERNAL TAB
12) SPECIFY KEYS WHEN SORTING AN INTERNAL TABLE
13) HAVE TYPE DECLARATIONS FOR PARAMETERS PASSED IN SUBROUTINES
14) HAVE TYPE DECLARATIONS FOR FIELD-SYMBOLS
15) USE WHILE ... ENDWHILE INSTEAD OF DO ... ENDDO
16) DO NOT USE CHECK CONSTRUCT WITHIN LOOP ... ENDLOOP.
17) DO NOT USE CHECK CONSTRUCT WITHIN SELECT ... ENDSELECT
18) USE CASE STATEMENT INSTEAD OF IF ... ELSEIF ... ENDIF
19) AVOID USING ORDER BY IN SELECT STATEMENTS. USE SORT BY INSTEAD
20) REMOVE BREAK-POINT FROM THE CODE
21) DO NOT USE AT EVENTS IN LOOP...ENDLOOP HAVING FROM OR TO OR WHERE CON
22) DO NOT USE ON CHANGE OF EVENTS IN SELECT...ENDSELECT
23) DO NOT USE ON CHANGE OF EVENTS IN LOOP ... ENDLOOP
24) USE %_HINTS IN THE WHERE CLAUSE TO SPECIFY THE INDEX TO BE USED.
25) AVOID USING NESTED SELECTS
26) USE GET <DTABLE> FIELDS F1 F2 F3 ... INSTEAD OF ONLY GET <DTABLE>
27) USE MODIFY <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP
28) USE UPDATE <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP
29) USE INSERT <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP
30) USE DELETE <DTABLE> FROM <ITAB> INSTEAD OF WITHIN A LOOP
31) AVOID SELECT FROM CLUSTER AND POOL TABLES -
Table deletion in ABAP Query Report
Hi ,
Is it possible to delete a Table from a infoset after generating it ?? i.e
i have used five vendor tables and generated a infoset. now i feel that i can get the expected report with 4 tables itself , so fi i wanna delete the 5th table what should i do ??
I tired by just deleting the Link between the 5th table with the other tables and generate it again.. but it throws an error
Thanks in advance !!Hi
select lipsvbeln lipslfimg likp~wadat
into corresponding fields of table ltab_orders
from lips join likp on ( lipsvbeln = likpvbeln )
join vbfa on ( lipsvbeln = vbfavbelv )
where lips~matnr = matnr
and lips~vbeln in vbeln
and likp~vbeln in vbeln
and vbfa~vbelv in vbeln
and lips~werks in werks
and likp~wadat in datum
and vbfa~vbtyp_n = 'Q'
and vbfa~vbtyp_v = 'J'.
Thanks,
Neelima.
Maybe you are looking for
-
Credit Check againt letter of credit.
hi, This is regarding credit check of sales order against FD. If the letter of credit belongs to company 001 and sales order contains any line items materials other than company 001. It gives an error EI574 "Financial Doc data check result not ok". I
-
My computer reboots when i connect iphone 4
Any ideas... I plug it in, it finds new hardware...thinks its a camera...and reboots itself. Happens if I tunes is already going or not. Was fine for the first few days then I took photos yesterday morning, now it reboots computer, Not much use havin
-
.ttx file in UNIX/PLSQL
Hi All, Is it possible to generate .ttx file through shellscript/plsql procedure? Please help me in this. Thanks, Bopty Edited by: Bopty on Aug 29, 2012 3:36 PM
-
LMS 4.1 - Job approval Disable error
Hi all, I have created VRF from LMS 5.1. some days ago i created it sucessful but now it gives me job fail and reason is Job Approval Disable. Can anyone give hint what is the problem Please help. i have attached the images
-
I would be grateful if someone could confirm: 1) Is it possible to use dynamic footnotes in bi publisher? 2) Is there any documentation available on how to do this? Many thanks Sarah