ABAP query material
Hi all,
can any one of you plz provide me the documentation on ABAP query and an example of how to use that.
Mailid: [email protected]
THanks,
DOnald
Hi Donald,
Check this link for step by step guide for ABAP query.
http://www.sappoint.com/abap/ab4query.pdf
Reward points if useful.
Regards,
Senthil
Similar Messages
-
Abap query : retrieve max date for the each unique material
Hi
I am facing problem formulating an ABAP query to retrieve records of table1 - material , table2 - doc no , table2 - doc date.
I need records having maximum doc date for each material.
I have used inner join on doc no on both tables.
Please help.
Thanks in advance
Ash RHello Mr.Ravi,
I have used descending for "date" but i want single record for each material.
it is like this:
SELECT AMATNR EMBLNR E~BUDAT
INTO CORRESPONDING FIELDS OF TABLE IT_FSN
FROM MSEG AS A INNER JOIN MKPF AS E ON EMBLNR = AMBLNR
UP TO 1 ROWS
WHERE AWERKS = P_PLANT AND ABWART IN S_MTYPE AND E~BUDAT IN S_DATE
GROUP BY AMATNR EBUDAT E~MBLNR
ORDER BY E~BUDAT DESCENDING.
I'm not able to get what i'm missing.
please help.
Regards,
Ash R -
ABAP QUERY PROGRAM OUTPUT SHOULD DISPLAY FROM SAP SCRIPT.
THIS IS MY URGENT REQUIREMENT ...
I DONT KNOW ABAP QUERY PROGRAM ..
PLEASE SUGGEST ME A WAY ON THIS ....
Functional requirements
Introduction
The wish of the customer is a printable customer overview. All desired fields will be shown in a new query called ZZADDRSS_CO. Double entries are taken for granted because of the data taken from the sales area and because of multiple contact persons. The customer accepts this. It should be made possible that the user creates and saves its own variant.
A second overview is needed, another ABAP will be developed for this requirement. This ABAP will show all the customer data and this list will have the possibility to be printed.
Solution
New Query ZZADDRESS_CO
The desired fields of attachment 1 need to be shown in the query.
The selection criteria are shown in attachment 2.
The column names of the additional data have to changed in the query.
Customer Overview.
Functional specification.
On behalf of this customer overview a standard SAP transaction will be used (transaction VC/2).This transaction will be extended.
The fields are shown on screen with the described headers. Printing of the overview will be done via SAP script. The script makes use of a fixed layout of the data.
The selection criteria are specified in attachment 2.
The layout of the customer overview and the SAP Script are specified in attachment 3.
Specification.
The next steps need to be performed.
1. A routine per infoblock need to be created in Include RV77UNNN. In this routine the data is retrieved and written down to the screen and script,
Example LST1_901 . In include RV77SNNN you can find the standard infoblocks.
2. Adapt via transaction SE16 table TFRM.
3. Create a new view in the customizing (sales and distribution- Sales support-sales summary-Assign Reporting Views).Assign the new view to the infoblocks.(Example view 001 is assigned to block 901).
4. In customizing it is not possible to assign the correct window and element to the infoblock .so this is done via SE16 in table T182A.
5. Adapt script. Copy script SD-SALES-SUMMARY to a Z-SALES_SUMM.
Assign this new version to the new view in customizing. Create in the main window the element who writes the data on behalf of the print.
Attachment 1 Desired fields
Header: Address
~ Customer number KNA1-KUNNR
~ Title KAN1-ANRED
~ Name1 ADRC-NAME1
~ Name2 ADRC-NAME2
~ Name3 ADRC-NAME3
~ Name4 ADRC-NAME4
~ PO Box ADRC-PO_BOX
~ PO Box POSTAL CODE ADRC-POST_CODE2
~ PO Box city ADRC-PO_BOX_LOC
~ Telephone no1 ADR2-TEL_NUMBER 1ST RECORD
~ Telephone no2 ADR2-TEL_NUMBER 2ND RECORD
~ Fax number1 ADR3-FAX_NUMBER 1ST RECORD
~ Fax number2 ADR3-FAX_NUMBER 2ND RECORD
~ E-mail ADR6-SMTP_ADDR
~ Search item ADRC-SORT1
~ Notes ADRT-REMARK
Header: control data
~ VAT registration number KAN1-STCEG
Header: Payment transactions
~Bank country key KNBK-BANKS
~Bank key KNBK-BANKL
~Bank Account number KNBK-BANKN
Header: Marketing
~ Industry key KNA1-BRSCH
~ Industry code 1 KNA1-BRAN1
~ Industry code 2 KNA1-BRAN2
~ Industry code 3 KNA1-BRAN3
~ Industry code 4 KNA1-BRAN4
~ Industry code 5 KNA1-BRAN5
~Annual sales, currency, year KNA1-UMSA1, KNA1-UWAER, KNA1-UMAH
~ Yearly no of employees, year KAN1-JMZAH, KNA1-JMJAH
~ Fiscal year variant KNA1-PERIV
~Legal status KNA1-GFORM
Header: Correspondence
~ Our account number at customer KNB1-EIKTO
Header: sales
~ Sales office KNVV-VKBUR
~ Customer group KNVV-KDGRP
~ ABC-classification KNVV-KLABC
Header: Invoice
~Tax classification KNVI-TAXKD
~Terms of payment key KNVV-ZTERM
~
Header: Contact Persons
~Title KNVK-ANRED
~Name KNVK-NAME1
~Advertising material KNVK-NMAIL
~Martial Status KNVK-FAMST
~Notes KNVK-PARAU
~Function KNVK-PAFKT
~Department KNVK-ABTNR
Header: Partnerroles
~Personnel Number KNVP-PERNR
~Name of employee PA0001-ENAME
Header: Additional Data
~Attribute 1 KNA1-KATR1
~Creation date KNA1-ERDAT
~Attribute 2 KNA1-KATR2
~Change date of field KNA1-KATR2 CDHDR-UDATE
~Attribute 3 KNA1-KATR3
~Attribute 4 KNA1-KATR4
~Attribute 5 KNA1-KATR5
~Attribute 6 KNA1-KATR6
Attachment 2 Selection fields
~Customer number
~Sales office
~Personnel Number
~Sales Organization (default NL01)
~Industry key
~Industry codes (1 till 5)
~ABC- classification
~Creation date
~Attribute 1
~Attribute 2
~Attribute 3
~Attribute 4
~Attribute 5
Attachment 3 Customer overview + SAP Script
Customer master data sheet: 11490 Page1
Requested by karen Dunnewold Date: 25.08.2004
Address
(Default SAP script ADDRESS statement)
Title
Name1
Street + number
PO Box city
Country
Search term: ADRC-SORT1
Telephone 1: ADR2-TEL_NUMBER 2: ADR2-TEL_NUMBER
Fax 1: ADR3-FAX_NUMBER 2: ADR3-FAX_NUMBER
E-mail: ADR6-SMTP_ADDR
Notes: ADRT-REMARK
PO BOX
ADRC-PO_BOX
ADRC-POST_CODE2 ADRC-PO_BOX_LOC
T005T-LANDX (T005T-LAND1 = ADRC-COUNTRY)
Control data
VAT registration number: KNA1-STCEG
Payment transactions
Country: KNBK-BANKS Bank-key: KNBK u2013 BANKL Bank account: KNBK-BANKN
Marketing
Industry KNA1-BRSCH Industry Description
Industry code1 KNA1-BRAN1 Industry Description
Industry code2 KNA1-BRAN2 Industry Description
Industry code3 KNA1-BRAN3 Industry Description
Industry code4 KNA1-BRAN4 Industry Description
Industry code5 KNA1-BRAN5 Industry Description
Figures
Annual Sales KNA1-UMSA1, KNA1-UWAER in KNA1-UMAH
Employees KNA1-JMZAH in KNA1-JMJAH
Legal status KNA1-GFORM description
Customer master data sheet 11490 Page 2
Requested by karen Dunnewold Date: 25.08.2004
Contact Persons
KNVK-ANRED
Mailings: KNVK-NMAIL Notes: KNVK-PARAU
KNVK-ANRED
Mailings: KNVK-NMAIL Notes: KNVK-PARAU
Correspondence
Our account number at customer KNB1-EIKTO
Sales
Sales office KNVV-VKBUR Description
Customer group KNVV-KDGRP Description
ABC-classify KNVV-KLABC
Currency KNVV-WAERS
Invoice
Terms of payment key KNVV-ZTERM Tax classification KNV1-TAXKD
Description
Partner (Leave SAP default)
Partnerrole Number Name
KNVP-PARVW KNVP-KUNNR NAME1
KNVP-PARVW KNVP-KUNNR NAME1
Additional data
Attribute1 kna1-katr1 Description
Attribute2 kna1-katr2 Description
Attribute3 kna1-katr3 Description
Attribute4 kna1-katr4 Description
Attribute5 kna1-katr5 Description
Attribute6 kna1-katr6 Descriptionhi narayana
i think u need to write a driving program and a provided with a smatform u sit along with the SD consultant.
ur further views can be shared.
Rgs,
Venkat. -
How to make fields in field group as text fields in ABAP query
Hi friends,
I a have a ABAP query 85 corresponding to infoset A205,
there is a field group in the infoset A205 and it contains some fields
but some of the fields are made as text fields ................i want to know how to make these fields in
the field group as text fields.
there is a small icon " T " on the field when it is made as a text field .
Please help me
Thanks & RegardsHi,
IF you can specify which Field Catalog then it will be useful for us to provide appropriate answer.
1. For Customer Master
IMG> Financial Accounting New> Acs Recev and Acs Payable --> Customer Accounts --> Master Data --> Preperation of creating customer master Data --> Define Account Groups with screen layout (customers)
In that you can create your own account group, and click Details Screen.
There will Field Status header within that are listed three main areas
General data
Company code data
Sales data
When you double click these lines it will take you into "Status Group" Overview. Wherein under "Select Group" are listed fields Address, communiucation.... Double click on one group , you will bet aken into the group field wherein you will find 4 colums with indicators assigned to it. ( Suppress, Req. Entry, Opt Entry, Display) you can choose the required option. "Req. Entry" against the field. Click save after you complete your selections.
2. Similarly you can do for Material Master in
IMG --> Logistics General --> Material Master --> Field Selection --> Maintain Field Selection for Data Screens
But be careful when you do it for material master as it is cuts across all the modules...
Regards
Sathya -
How to add join conditions in ABAP Query.
Hi,
I need a help on "ABAP Query".
How to add join conditions in ABAP Query.
Thanks in advance.
Thanks & Regards,
RamanaHi,
See below code,
*& Report ZRNP_ALV_SO
REPORT zrnp_alv_so MESSAGE-ID z7rnp .
INCLUDE zrnp_include .
*SELECTION SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-004 .
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln ,
s_auart FOR v_auart ,
s_vkorg FOR v_vkorg ,
s_spart FOR v_spart ,
s_kunnr FOR v_kunnr ,
s_matnr FOR v_matnr .
SELECTION-SCREEN END OF BLOCK blk1 .
*AT SELECTION SCREEN *
AT SELECTION-SCREEN.
SELECT SINGLE vbeln
FROM vbak INTO vbak-vbeln
WHERE vbeln IN s_vbeln.
IF sy-subrc <> 0.
MESSAGE e202.
ENDIF.
*START OF SELECTION *
START-OF-SELECTION .
PERFORM data_select.
PERFORM t_sort USING i_sort .
PERFORM event_cat USING i_event .
PERFORM fld_cat USING i_fldcat[] .
PERFORM t_layout USING i_layout .
PERFORM fld_cat2 USING i_fldcat2[] .
PERFORM call_alv.
* DATA SELECT *
*& Form DATA_SELECT
* text
* --> p1 text
* <-- p2 text
FORM data_select .
REFRESH: it_vbfa, it_so1, it_del_ful ,it_del1 .
BREAK-POINT.
*SELECT*
*a~vbeln*
*a~auart*
*a~vkorg*
*a~spart*
*a~kunnr*
*b~posnr*
*b~matnr*
*c~maktx*
*b~kwmeng*
*b~vrkme*
*INTO TABLE it_so1 FROM vbak AS a*
*INNER JOIN vbap AS b ON b~vbeln = a~vbeln*
*INNER JOIN makt AS c ON c~matnr = b~matnr*
*AND c~spras = sy-langu*
*WHERE a~vbeln IN s_vbeln .*
IF sy-subrc = 0.
SORT it_so1 BY vbeln.
DELETE ADJACENT DUPLICATES FROM it_so1.
ENDIF.
* COLURING DISPLAY *
DATA: ld_color(1) TYPE c .
* LOOP AT it_so1 INTO wa_so.
* Populate color variable with colour properties
* Char 1 = C (This is a color property)
* Char 2 = 3 (Color codes: 1 - 7)
* Char 3 = Intensified on/off ( 1 or 0 )
* Char 4 = Inverse display on/off ( 1 or 0 )
* i.e. wa_ekko-line_color = 'C410'
* ld_color = ld_color + 1.
* Only 7 colours so need to reset color value
* IF ld_color = 8.
* ld_color = 1.
* ENDIF.
* CONCATENATE 'C' ld_color '10' INTO wa_so-line_color.
** wa_ekko-line_color = 'C410'.
* MODIFY it_so1 FROM wa_so.
* ENDLOOP .
* IF sy-subrc = 0.
IF NOT it_so1[] IS INITIAL.
SELECT vbelv
posnv
vbeln
posnn
vbtyp_n
INTO TABLE it_vbfa
FROM vbfa
FOR ALL ENTRIES IN it_so1
WHERE vbelv = it_so1-vbeln
AND posnn = it_so1-posnr
AND vbtyp_n ='J' .
IF sy-subrc = 0.
SELECT vbeln
posnr
matnr
werks
lgort
charg
lfimg
vrkme
FROM lips INTO TABLE it_del_ful
FOR ALL ENTRIES IN it_vbfa
WHERE vbeln = it_vbfa-vbeln
AND posnr = it_vbfa-posnn.
ENDIF.
ENDIF.
ENDFORM. " DATA_SELECT
**************** EVENT CATALOG ****************************************
*& Form EVENT_CAT
* text
* -->P_I_EVENT text
FORM event_cat USING p_i_event TYPE slis_t_event .
REFRESH p_i_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
* I_LIST_TYPE = 0
IMPORTING
et_events = p_i_event
* EXCEPTIONS
* LIST_TYPE_WRONG = 1
* OTHERS = 2
* IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
READ TABLE p_i_event WITH KEY name = slis_ev_top_of_page INTO t_event.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO t_event-form.
MODIFY p_i_event FROM t_event INDEX sy-tabix TRANSPORTING form.
ENDIF.
CLEAR t_event .
ENDFORM. " EVENT_CAT
**********FORM FOR EVENT TOP_OF_PAGE**********************************
FORM top_of_page .
REFRESH i_listheader.
DATA: t_header TYPE slis_listheader.
DATA: v_text(50).
WRITE sy-datum TO v_text.
CLEAR t_header.
t_header-typ = 'S'.
t_header-key = "Date".
t_header-info = v_text.
APPEND t_header TO i_listheader.
CLEAR t_header.
CLEAR v_text.
WRITE: 'SALES ORDER & DELIVERY DETAILS REPORT ' TO v_text .
t_header-typ = 'S'.
t_header-key = 'TITLE'.
t_header-info = v_text.
APPEND t_header TO i_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_listheader.
* I_LOGO = 'ALV_BACKGROUND'.
* I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
******** FIRST ALV GRID DISPLAY ***************************************
FORM call_alv .
* FORM TO MAKE THE CELL CONTENTS INVISIBLE.
* PERFORM INVISIBLE_CELL_CONTENTS. *
*EXCLUDE-DECLARATION.
CLEAR wa_exclude.
wa_exclude-fcode = '&VEXCEL'.
APPEND wa_exclude TO i_exclude.
*& Form CALL_ALV
* text
* --> p1 text
* <-- p2 text
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND1'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_background_id = 'ALV_BACKGROUND'
is_layout = i_layout
it_fieldcat = i_fldcat[]
it_excluding = i_exclude
it_sort = i_sort
it_events = i_event
TABLES
t_outtab = it_so1
* 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. " CALL_ALV
************** FIRST FIELDCATALOG *************************************
*& Form FLD_CAT
* text
* -->P_I_FLDCAT[] text
FORM fld_cat USING p_i_fldcat TYPE slis_t_fieldcat_alv.
CLEAR i_fldcat.
i_fldcat-fieldname = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'."TABLE NAME
i_fldcat-seltext_m = 'SALES ORDER NO.'.
i_fldcat-col_pos = 1. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-hotspot = 'X'.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'AUART'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'."TABLE NAME
i_fldcat-seltext_m = 'SALES DOC. TYPE'.
i_fldcat-col_pos = 2. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 15. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'VKORG'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'SALES ORG.'.
i_fldcat-col_pos = 3. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 12. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'SPART'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'DIVISION'.
i_fldcat-col_pos = 4. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 10. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'KUNNR'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'SOLD TO PARTY'.
i_fldcat-col_pos = 5. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 15. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'SALES DOC. ITEM'.
i_fldcat-col_pos = 6. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 17. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'MATERIAL NO.'.
i_fldcat-col_pos = 7. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'MAKTX'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'DESCRIPTION'.
i_fldcat-col_pos = 8. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'KWMENG'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'QUANTITY'.
i_fldcat-col_pos = 9. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 15. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-do_sum = 'X'. " For doing "SUM"
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
CLEAR i_fldcat.
i_fldcat-fieldname = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat-tabname = 'IT_SO1'.
i_fldcat-seltext_m = 'SALES UNIT'.
i_fldcat-col_pos = 10. " POSITION OF THE COLUMN.
i_fldcat-outputlen = 10. " SET THE OUTPUT LENGTH.
i_fldcat-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat-just(1) = 'C'.
APPEND i_fldcat.
ENDFORM. " FLD_CAT
****************** ALV SORTING ***************************************
*& Form SORT
* text
* -->P_I_SORT text
FORM t_sort USING p_i_sort TYPE slis_t_sortinfo_alv .
DATA: i_sort TYPE slis_sortinfo_alv .
REFRESH p_i_sort .
CLEAR i_sort.
i_sort-spos = 1.
i_sort-tabname = 'IT_SO1'.
i_sort-fieldname = 'VBELN'.
i_sort-up = 'X'.
i_sort-subtot = 'X'.
i_sort-group = '*'.
APPEND i_sort TO p_i_sort.
ENDFORM. " SORT
*FORM SET_PF_STATUS USING rt_extab TYPE slis_t_extab.
* SET PF-STATUS 'ZSTANDARD'.
*ENDFORM. "Set_pf_status
***********FORM FOR EVENT USER_COMMAND1********************************
FORM user_command1 USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
*CASE R_UCOMM .
* WHEN '&IC1' .
* IF rs_selfield-FIELDNAME = 'VBELN' .
* ENDIF .
* WHEN OTHERS .
* ENDCASE .
CLEAR wa_so.
REFRESH: it_del1 .
IF r_ucomm = '&IC1' AND rs_selfield-fieldname = 'VBELN' AND
rs_selfield-value IS NOT INITIAL.
READ TABLE it_so1 INTO wa_so INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
LOOP AT it_vbfa INTO wa_vbfa WHERE vbelv = wa_so-vbeln
AND posnv = wa_so-posnr.
READ TABLE it_del_ful INTO wa_it_del_ful
WITH KEY vbeln = wa_vbfa-vbelv
posnr = wa_vbfa-posnn.
IF sy-subrc = 0.
CLEAR wa_del.
MOVE wa_it_del_ful TO wa_del.
APPEND wa_del TO it_del1.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
********* SECOND ALV GRID DISPLAY ***********************************
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND2'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_background_id = 'ALV_BACKGROUND'
it_fieldcat = i_fldcat2[]
it_sort = i_sort
TABLES
t_outtab = it_del_ful
* 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 . "USER_COMMAND1
********** FORM FOR EVENT USER_COMMAND 2 ******************************
FORM user_command2 USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CLEAR wa_so.
REFRESH: it_del1 .
IF r_ucomm = '&IC1' AND rs_selfield-fieldname = 'VBELN' AND
rs_selfield-value IS NOT INITIAL.
READ TABLE it_so1 INTO wa_so INDEX rs_selfield-tabindex.
* IF SY-SUBRC = 0.
* LOOP AT it_vbfa INTO wa_vbfa WHERE vbelv = WA_SO-vbeln
* AND posnv = WA_SO-posnr.
READ TABLE it_del_ful INTO wa_it_del_ful
WITH KEY vbeln = rs_selfield-value
" vbeln = wa_vbfa-vbeln
posnr = wa_vbfa-posnn.
IF rs_selfield-fieldname = 'VBELN'.
SET PARAMETER ID 'VL' FIELD wa_vbfa-vbeln .
CALL TRANSACTION 'VL03' AND SKIP FIRST SCREEN.
ENDIF .
* ENDLOOP.
* ENDIF.
ENDIF.
ENDFORM . "USER_COMMAND2
********* SECOND FIELDCATALOG ******************************************
*& Form FLD_CAT2
* text
* -->P_I_FLDCAT2[] text
FORM fld_cat2 USING p_i_fldcat2 TYPE slis_t_fieldcat_alv .
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-tabname = 'IT_DEL_FUL'."TABLE NAME
i_fldcat2-seltext_m = 'DELIVERY NO.'.
i_fldcat2-col_pos = 1. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-hotspot = 'X'.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'DELIVERY ITEM'.
i_fldcat2-col_pos = 2. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'MATERIAL NO.'.
i_fldcat2-col_pos = 3. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'WERKS'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'PLANT.'.
i_fldcat2-col_pos = 4. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'LGORT'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'ST. LOCATION'.
i_fldcat2-col_pos = 5. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'CHARG'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'BATCH NO.'.
i_fldcat2-col_pos = 6. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'LFIMG'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'ACT. DEL. QTY.'.
i_fldcat2-col_pos = 7. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
CLEAR i_fldcat2.
i_fldcat2-fieldname = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
i_fldcat2-seltext_m = 'SALES UNIT.'.
i_fldcat2-col_pos = 8. " POSITION OF THE COLUMN.
i_fldcat2-outputlen = 20. " SET THE OUTPUT LENGTH.
i_fldcat2-emphasize = 'X'. " COLOR OF THIS COLUMN.
i_fldcat2-key = 'X'. " SO THAT THIS FIELD IS NOT
"SCROLLABLE AND HIDDABLE.
i_fldcat2-just(1) = 'C'.
APPEND i_fldcat2.
ENDFORM. " FLD_CAT2
***************** ALV LAYOUT *******************************************
*& Form LAYOUT
* text
* -->P_I_LAYOUT text
FORM t_layout USING p_i_layout TYPE slis_layout_alv .
p_i_layout-zebra = 'X'.
p_i_layout-totals_text = 'GRAND TOTAL ='.
* p_i_layout-CONFIRMATION_PROMPT = 'X'.
* p_i_layout-DEF_STATUS = ' '.
p_i_layout-info_fieldname = 'LINE_COLOR'.
ENDFORM. " LAYOUT -
Display long text in an ABAP Query.
Hi all,
Could any one please help me in guiding me, to tell how can I display the long text which is got from the function module 'READ_TEXT' in an ABAP query.
The issue here is that Iam able to loop at the <itab> table and get the long text for each of the records any, but Iam not able to display it on an infoset..
Send me the examples if any..
Thanks & Regards,
Sanjay Mankar.Dear dont try with ABAP Qualry
use alv or like that
sample code is attach here
if you have any claryfication reply me
*& Form F001-BasicData_LText
text
-->IN_PAR text
-->OUT_PAR text
FORM F001-BasicData_LText TABLES in_par STRUCTURE itcsy out_par STRUCTURE itcsy.
DATA :
IT_LTEXT TYPE STANDARD TABLE OF TLINE,
WA_LTEXT TYPE TLINE,
W_FTEXT(100) TYPE C,
W_FTEXT1(100) TYPE C,LW_LEN TYPE I.
DATA :
W_ID LIKE thead-tdid, "Text ID
W_LANGU LIKE THEAD-TDSPRAS, "Language
W_NAME LIKE thead-tdname, "Name
W_OBJECT LIKE thead-tdobject. "Texts:
READ TABLE in_par WITH KEY 'EKPO-MATNR'.
w_NAME = in_par-value.
W_ID = 'GRUN'.
W_OBJECT = 'MATERIAL'.
W_LANGU = SY-LANGU.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = W_ID
LANGUAGE = W_LANGU
NAME = W_NAME
OBJECT = W_OBJECT
TABLES
lines = IT_LTEXT
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
Loop at IT_LTEXT into WA_LTEXT.
W_FTEXT1 = WA_LTEXT-TDLINE.
CONCATENATE W_FTEXT W_FTEXT1 INTO W_FTEXT SEPARATED BY SPACE.
Endloop.
LOOP AT out_par WHERE name EQ 'W_FTEXT'.
out_par-value = W_FTEXT.
MODIFY out_par.
ENDLOOP.
ENDFORM. "F001-BasicData_LText
*& Form F001-LTEXT_DEVIDING
text
-->P_IT_DVTXT text
FORM F001-LTEXT_DEVIDING TABLES in_par STRUCTURE itcsy out_par STRUCTURE itcsy.
DATA : W_TEXTLINE(100) TYPE C,
W_DELIMITER TYPE C,
W_OUTPUTLEN TYPE I,
W_FTEXT(100) TYPE C,
OUT_LINE1 TYPE C,
OUT_LINE2 TYPE C,
OUT_LINE3 TYPE C,
W_LINE1(35) TYPE C,
W_LINE2(35) TYPE C,
W_LINE3(35) TYPE C.
READ TABLE in_par WITH KEY 'W_FTEXT'.
W_FTEXT = IN_PAR-VALUE.
W_TEXTLINE = W_FTEXT.
W_DELIMITER = ' '.
W_OUTPUTLEN = 30.
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
TEXTLINE = W_TEXTLINE
DELIMITER = W_DELIMITER
OUTPUTLEN = W_OUTPUTLEN
IMPORTING
OUT_LINE1 = W_LINE1
OUT_LINE2 = W_LINE2
OUT_LINE3 = W_LINE3.
LOOP AT out_par.
if out_par-name eq 'W_LINE1'.
out_par-value = W_LINE1.
elseif out_par-name eq 'W_LINE2'.
out_par-value = W_LINE2.
elseif out_par-name eq 'W_LINE3'.
out_par-value = W_LINE3.
endif.
MODIFY out_par.
ENDLOOP.
ENDFORM. " F001-LTEXT_DEVIDING
rewads if helpful -
Hello All,
I want ABAP-HR Material and FAQs.
Could you please send it to my mail id: [email protected]
Points will be rewarded.
Thanks in Advance.
Regards
Sasidhar Reddy Matli.hi,
see the doc for HR:
HR deals with the INFOTYPES which are similar to Tables in General ABAP.
There are different ways of fetching data from these infotypes.
There are different areas in HR LIKE Personal Admn, Orgn Management, Benefits, Time amangement, Event Management, Payroll etc
Infotypes for these areas are different from one another area.
storing of records data in each type of area is different
LDBS like PNP are used in HR programing.
Instead of Select.. we use some ROUTINES and PROVIDE..ENDPROVIDE.. etc
and in the case of Pay roll we use Clusters and we Import and Export them for data fetching.
On the whole Normal ABAP is different from HR abap.
For Personal Admn the Infotypes start with PA0000 to PA1999
Time Related Infotypes start with PA2000 to PA2999.
Orgn related Infotypes start with HRP1000 to HRP1999.
All custom developed infotypes stsrat with PA9000 onwards.
In payroll processing we use Clusters like PCL1,2,3 and 4.
Instead of Select query we use PROVIDE and ENDPROVIDE..
You have to assign a Logical Database in the attributes PNP.
Go through the SAp doc for HR programming and start doing.
http://www.sapdevelopment.co.uk/hr/hrhome.htm
See:
http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm
sites regarding hr-abap:
http://www.sapdevelopment.co.uk/hr/hrhome.htm
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf
http://www.atomhr.com/training/Technical_Topics_in_HR.htm
http://www.planetsap.com/hr_abap_main_page.htm
You can see some Standard Program examples in this one ...
http://www.sapdevelopment.co.uk/programs/programshr.htm
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#Certification
http://www.erpgenie.com/faq/hr.htm.
http://www.planetsap.com/hr_abap_main_page.htm
http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html
These are the FAQ's that might helps you as well.
http://www.sap-img.com/human/hr-faq.htm
http://www.sapgenie.com/faq/hr.htm
http://www.planetsap.com/hr_abap_main_page.htm
http://www.atomhr.com/library_full.htm -
HI FRIENDS,
CAN ANYONE SEND ME THE ABAP-HR MATERIAL .
THAXS AND REGARDS.
HITESHMaybe this link can be helpfull
http://www.sapdevelopment.co.uk/hr/hr_infotypes2.htm
Have a look at http://www.sap-img.com/human/how-to-create-a-hr-infotype.htm, but have also a look at this thread
https://www.sdn.sap.com/sdn/collaboration.sdn?contenttype=url&content=https%3A//forums.sdn.sap.com/thread.jspa%3FthreadID%3D9945%26messageID%3D63016
found this link probably can be helpful to someone
http://help.sap.com/saphelp_46b/helpdata/en/f7/2fe034ee251f34e10000009b38f83b/frameset.htm
http://sap.ittoolbox.com/groups/technical-functional/sap-hr/how-to-create-z-infotype-in-organizational-management-745603
How to create a HR infotype?
1) Go to Transaction PM01.
2) Enter the custom Infotype number which you want to create (Should be a 4 digit number, start with 9).
3) Select the Employee Infotype radio button.
4) Select the PS Structure Infotype.
5) Click on Create A separate table maintenance window appears
6) Create a PS structure with all the fields you want on the Infotype
7) Save and Activate the PS structure
8) Go back to the initial screen of PM01.
9) Click on All push button. It takes a few moments.
10) Click on Technical Characteristics. Infotype list screen appears
11) Click on Change(pencil) button
12) Select your Infotype and click on Detail (magnifying glass) button
13) Give T591A as subtype table
14) Give T591S as subtype txt tab
15) Give your subtype field as subtype field
16) Save and come back to PM01 initial screen
17) Click on Infotype Characteristics Infotype list screen appears
18) Click on Change (pencil) button
19) Click on New Entries
20) Enter your Infotype number and short text
21) Here we have to set different Infotype Characteristics as per the requirement. (Better open another session with some standard Infotypes infotype characteristics screen and use as the reference to fill yours)
22) Save your entries.
23) Now the Infotype is created and ready to use.
24) If you want to change the layout of the Infotype as per your requirement
25) In the PM01 initial screen Select Screen radio button and give 2000 as the screen name, then click on edit.
26) In the next screen.. Select Layout Editor and click Change.
27) Screen default layout appears here you can design/modify the screen..change the attributes of the fields..etc.
28) Save and activate. (Dont forget to Activate at every level)
InfoSets in the HR Application
You can use SAP Query in HR to report on HR data. Queries are maintained as described in Creating Queries. The special features of queries created for HR are described in Maintaining Queries in the Human Resources Application. The maintenance procedure for HR InfoSets differs from the described procedure inasmuch as HR data fields are grouped together in infotypes.
InfoSet management in SAP Query is also used for InfoSet Query. For further information, see Functions for Managing InfoSets.
If you want to create InfoSets for HR, you can use logical databases PNP, PAP, and PCH (see HR Logical Databases). The database you must use to create your InfoSet depends on the component in which the data you want to report on is stored.
The reports you can execute using InfoSets based on logical databases PNP or PCH are similar, but differ in that they can select different objects. The following table describes the connection between the logical database, and the infotypes you can include in an InfoSet. It also provides you with one or two examples of reports that you can execute using the appropriate InfoSets.
Logical database PNP PCH PAP
Selection of Persons Objects from Personnel Planning Applicants
Infotypes that can be included in the InfoSet Infotypes for
Personnel Administration (0000-0999)
Time Management (2000-2999)
Payroll infotypes
Infotypes for Personnel Planning objects that can be related to persons If the object type is specified:
Infotypes for the object type
Infotypes for objects that can be related to the specified object type
If the object type is not specified:
All infotypes Infotypes for Recruitment (4000-4999)
Some infotypes for Personnel Administration (such as 0001 and 0002)
Customer infotypes
Reporting examples Selection of all persons who participated in a specific business event, output of prices for reserved business events
Selection of all persons assigned to a specific personnel area, output of qualifications held by these persons Selection of all business events held in London in March, output of all persons who participated in these business events
Selection of all positions assigned to a specific organizational unit, output of all persons assigned to the positions Selection of all applicants hired last year to work on special projects, output of addresses for the applicants selected
Creating InfoSets
The maintenance procedure for HR InfoSets differs from the procedure described so far in this section inasmuch as HR data fields are grouped together in infotypes. To set up an InfoSet for the HR application, proceed as follows:
1. On the initial screen for maintaining InfoSets, enter a name for the InfoSet and choose Create.
2. On the next screen, enter a name for the InfoSet and select one of the HR logical databases in accordance with your reporting requirements.
Customer infotypes can be created on all HR logical databases. In each individual case, therefore, you must decide which database to select so that you can report on customer infotypes.
This screen enables you to enter an authorization group. All of the queries that are subsequently created using this InfoSet can only be executed by persons who have this authorization group.
3. Choose .
This takes you to the Infotype Selection for InfoSet .
The logical HR database uses the table APPLICANT. You must declare it in the TABLES statement.
At the GET APPLICANT event, the APPLICANT structure contains the data for an applicant number chosen on the basis of selection screen entries.
The APPLICANT-APLNO field contains the applicant number which is selected for processing.
Only the APPLICANT-APLNO field should be read from the work area of the APPLICANT table. The other fields are intended for internal use only.
2.7 Authorization Checks in Reporting (PA-APP)
Generally, authorization checks in reporting do not differ from those in the transactions. Since data access in reporting is always of the read type, the system checks for a read authorization; the authorization group must be R or *.
In some situations, you may want to use a simplified authorization check when running reports. The object RPABAP is required for the check as well as the object RPORGIN; if these authorizations are available, a simpler and faster check is performed.
If the report cannot read certain applicant data due to lack of authorization, data for these persons is not processed at the GET APPLICANT time point. A note appears at the end of the list stating the number of applicants who were skipped due to lack of authorization.
2.8 Views
Introduction
When evaluating data, we distinguish between the logical and the physical view.
The physical view corresponds to the form in which the infotype data is stored in the HR tables. This data is stored in infotype records with a validity period.
In the logical view, the validity periods of individual fields are determined for several infotype records. For example, for an evaluation, the time period during which an employee worked at a particular job may be important, irrespective of whether a company code, personnel area or cost center change occurred during this time.
Data from several infotypes can also be provided for a specific partial period. When calculating partial payroll periods, it is especially important that data on basic pay, work schedule and cost distribution are provided for the relevant partial period.
These two types of logical views are implemented in the projection and join.
 Join
 Projection
 Join and Projection
 Time-Dependent Control Tables
 Generalization of the View
Join
A join processes records from two or more infotypes. The data from these infotypes is provided for a specific partial period.
 We would like to know in which time period an employee worked at which job and at which address he or she resided during this time.
The following address data is available:
January June Hamburg
June December Munich
The following work center data is available:
January April Programmer
May December Course instructor
If the address and work center data are provided for specific partial periods, the following cases result:
January April Hamburg / programmer
May June Hamburg / course instructor
July December Munich / Course instructor
The ABAP syntax of this join is as follows:
PROVIDE * FROM Pomp
FROM Pnnnn
BETWEEN PN-BEGDA AND PN-ENDDA.
The partial periods for infotypes Pomp and Pnnnn as well as for all other infotypes of the join are defined in the fields BEGDA and ENDDA.
The data of each infotype in the join must be available during the entire validity period of the infotype. The time periods of infotype records may not overlap; therefore, the join may not contain infotypes with time constraint "three".
The time periods of records overlap if an infotype is read without any subtype restrictions. For example, the Address infotype has the subtypes Permanent residence, Temporary residence and Home address.
Time periods will ultimately overlap if all addresses are read. Therefore, you must always select a subtype for a join, and this subtype may not have the time constraint "three".
The program code for the above join for work center and address data is as follows:
REPORT RPABAP03.
TABLES: PERNR.
INFOTYPES: 0001, 0006.
GET PERNR.
PROVIDE * FROM P0001
FROM P0006 BETWEEN PN-BEGDA AND PN-ENDDA
WHERE P0006-SUBTY eq '1'.
WRITE: / PERNR-PERNR, P0001-STELL,
P0006-STRAS, P0006-BEGDA, P0006-ENDDA.
ENDPROVIDE.
Sometimes no data is available for a particular infotype in the selected partial period. Infotype validity periods may not overlap but gaps are permitted.
For example, gaps can occur when personal data is joined with address data:
Personal data
January 1960 - May 1998 Miller
May 1998 - December 1998 Smith
Address data:
January 1998 - December 1998 Hamburg
A join for personal and address data is presented as follows:
January 1960 - December 1997 Miller
January 1998 - April 1998 Miller / Hamburg
May 1998 - December 1998 Smith / Hamburg
Only personal data is available in the first partial period. Since the record does not provide the required information, the join's function of providing data from all associated infotypes has not been fulfilled.
The variables Pnnnn_VALID recognize that only incomplete data is available for a particular partial period.
This variable is formed when the report is run for each Pnnnn infotype included in a join.
If data exists in the partial period for the Pnnnn infotype, the variable Pnnnn_VALID is filled with X.
These variables are evaluated as follows:
REPORT RPDEMO03.
TABLES: PERNR.
INFOTYPES: 0002,
0006.
GET PERNR.
PROVIDE * FROM P0002
FROM P0006 BETWEEN PN-BEGDA AND PN-ENDDA
WHERE P0006-SUBTY = '1'.
IF P0006_VALID EQ 'X'.
WRITE: / PERNR-PERNR,
P0002-BEGDA DD/MM/YYYY,
P0002-ENDDA DD/MM/YYYY,
P0002-NACHN,
P0006-ORT01.
ENDIF.
ENDPROVIDE.
A list is generated only if address data is available. The first partial period, for which only personal data is available, is suppressed.
Projection
All data of an infotype is stored on the database with its period of validity.
When you change one or more fields of an infotype record, the system creates a new record with a new validity period. The date on which you changed the record is the start date of this new record.
Therefore, the data fields that are not affected by the changes contain the same data over several infotype records and validity periods.
From a logical perspective, these fields are valid in all infotype records until they are changed.
When seen from this logical perspective, each field of an infotype has its own validity period.
This is illustrated in the following case:
An employee has worked as a programmer for three years in three different personnel areas.
The following organizational assignment data is available:
January 1992 - December 1992: Programmer /personnel area 1
January 1993 - December 1993: Programmer /personnel area 2
January 1994 - December 1994: Programmer /personnel area 3
If you only require the time period during which an employee performs a specific job and not his or her personnel area for an evaluation, the following applies:
January 1996 - December 1998: Programmer
The physical view has three infotype records, the logical view one.
To create meaningful evaluations and avoid redundancies, create logical views for infotype records.
Select the infotype fields that are important for the evaluation and disregard the others.
In the above example, the data in the other fields is invalid for the evaluation since it is unknown which personnel area the employee belonged to from 1996 - 1998.
This view of the validity period of a group of infotype fields is known as projection.
The program code for the projection is:
PROVIDE FROM Pnnnn
BETWEEN PN-BEGDA AND PN-ENDDA .
The infotype data for a projection must be available throughout the entire validity period. If the time periods of certain infotype records overlap, the data cannot be clearly assigned to one period.
Therefore, you should not use projections for infotype records with time constraint three. The report for the above projection is:
REPORT RPABAP04.
TABLES: PERNR.
INFOTYPES: 0001.
GET PERNR.
PROVIDE STELL FROM P0001 BETWEEN PN-BEGDA AND PN-ENDDA.
WRITE: / PERNR-PERNR, P0001-STELL, P0001-BEGDA,
P0001-ENDDA.
ENDPROVIDE .
The logical validity for the activity period is included in the infotype BEGDA and ENDDA fields.
Join and Projection
You can combine the two logical views of infotype data, the join and the projection.
We read the data from several infotypes and create new partial periods. We select the infotype fields that are important for the evaluation and combine these partial periods again.
The following example illustrates this.
An employee works as a programmer in the current year and marries in May. Her name does not change.
Organizational assignment:
January - December Programmer
Personal data:
January - April Donna Debug - single
May - December Donna Debug - married
When the data from both infotypes is read concurrently, the result is:
January - April Donna Debug - single /
programmer
May - December Donna Debug - married /
programmer
Since we can disregard her marital status in the evaluation, we project on her first and last names:
January - December Donna Debug / programmer
The following report exemplifies the above case:
REPORT RPDEMO04.
TABLES: PERNR.
INFOTYPES: 0001,
0002.
GET PERNR.
PROVIDE STELL FROM P0001
NACHN VORNA FROM P0002
BETWEEN PN-BEGDA AND PN-ENDDA
IF P0001_VALID = 'X'.
WRITE: / P0002-NACHN, P0002-VORNA,
P0001-BEGDA DD/MM/YYYY,
P0001-ENDDA DD/MM/YYYY,
P0001-STELL.
ENDIF.
ENDPROVIDE.
This report combines the associated validity periods and provides the data of relevant infotype fields for a specific period.
 Fields which are not accessed have their initial value in the projection.
Provision of data for a specific partial period is especially important for partial period factoring in payroll.
If an employee's basic pay or the cost distribution changes during the payroll period, you must calculate the salary proportionately for the resulting partial periods.
However, if the payroll administrator of the organizational unit changes, this has no effect on payroll.
By linking a join and a projection, you can read the master data for a specific partial period.
Time-Dependent Control Tables
Infotype data is generally coded as a key (for example, infotype P0006, address type 1 = permanent residence) to allow fast data entry and space-saving storage. When you process infotypes, the texts or attributes of the keys are read from the relevant control tables.
In many control tables, storage of data is time-dependent and therefore assigned a validity period.
In HR, this applies to the following areas:
Work schedules
Pay scale structures
Wage types
Wage type valuation
Bank data
Positions
Payee codes
When you read the data for an infotype key from time-dependent control tables, you must determine which record is valid in the specified validity period.
If you use a transaction to process an infotype, the system reads the table record which is valid on the start date.
Generalization of the View
You can use the logical view to edit and output data according to user specifications.
The special feature of HR views is the time dependency of the data. Personnel data is almost always related to specific validity periods. A HR view provides data for specific time intervals.
In general terms, a HR view is a logical perspective of interval-dependent internal tables.
See also:
Processing All Infotype Records (PA-PAD)
Processing All Infotype Records (PA-APP)
Processing a Specific Infotype Record (PA-PAD)
Processing a Specific Infotype Record (PA-APP)
3 Import/Export Files in HR
The following sections describe the purpose of files PCL1 and PCL2 and explains how to access them.
Files PCL1, PCL2, PCL3 and PCL4
Storing Data in PCLn Files
PCLn Buffer
Cluster Directory Manager
3.1 Files PCL1, PCL2, PCL3 and PCL4
Which information is stored in the files?
File PCL1 is the basis for the HR work area data. It contains information from the time data recording, for example, incentive wage time tickets or infotype supplement texts.
File PCL2 contains derived information, for example, payroll results. It also contains all generated payroll schemas.
File PCL3 contains applicant data.
File PCL4 contains the change documents for HR master data and recruitment.
The structure of PCLn files corresponds to that of the INDX file which you may be familiar with from other applications. The structure of all PCLn files (n = 1, 2, 3, and 4) is identical.
Structure of Files
Like in almost all SAP files, the key element with the highest priority is the client; data within a client is grouped according to basic relations (field PCLn-RELID).
The type of basic relation is known as a cluster and characterizes the stored data according to the type, for example, cluster RX contains the payroll result for country X (from table T500L) and cluster TE contains the trip costs data.
Depending on the cluster, the structure of PCLn-SRTFD is defined in a field string xx-KEY, which is defined in an include RPCnxxy0.
Naming conventions
n = 1, 2, 3, or 4 (for PCL1, PCL2, PCL3, or PCL4)
xx = for the cluster
y = 0 for international clusters
y = country grouping according to T500L for national clusters
The personnel number is usually the first component of xx-KEY.
Importing and Exporting Data
The import/export files PCLn are managed with the ABAP/4® commands IMPORT and EXPORT . These commands store objects such as fields, field strings, or internal tables on the database, or read these from the database. Data is read from and written to the database using a unique key( xx-Key).
Please note that the RMAC macros RP-IMP-Cn-xx and RP-EXP-Cn-xx are provided for importing and exporting data. Only these macros should be used.
See also Macro Modules
3.2 Storing Data in PCLn Files
Data from the different HR application areas is stored in data clusters in PCLn files (n = 1, 2, 3, or 4).
This collection of data objects can consist of:
Fields used within reports
Field strings
Internal tables
The structure of the PCLn files provides a framework for the individual application areas.
Each application area must have a two-character cluster name (relation ID). It must also have a key structure; 40 bytes of the SRTFD field are available for this structure.
When a record is exported to the PCLn file, the cluster ID is written to the RELID field and the key value to the SRTFD field.
Naming convention for includes when defining clusters:
RPCnxxy0 n = 1, 2, 3 or 4 (for PCL1, PCL2, PCL3, PCL4)
xx = cluster ID
y = country indicator
Description of Cluster Data using Cluster RX as an Example
The data definition is stored in the include RPC2RX00 in accordance with the above naming conventions.
Structure of cluster key:
Data: BEGIN OF RX-KEY.
INCLUDE STRUCTURE PC200.
DATA: END OF RX-KEY.
The DDIC structure PC200 contains the fields PERNR (personnel number) and SEQNO (sequential number).
The data definition of the cluster also contains other internal tables.
For a list of available data clusters, refer to the domain description in the Data Dictionary.
xx Key
The xx key name is dependent on the cluster.
The RX KEY is used for all Rx and Xx clusters. In all other cases, the name of the xx key corresponds to that of the cluster.
Cluster xx Key
RA RX-KEY
B1 B1-KEY
G3 G3-KEY
XA RX-KEY
3.3 PCLn Buffer
To keep the number of database accesses to a minimum, import and export data is stored in the main memory buffer. Buffer management routines ensure that exported data can be stored in the PCLn files.
The following two examples illustrate which problems can occur without a buffer.
Retroactive accounting of payroll results
Starting payroll in the test mode
Retroactive Accounting of Payroll Results
In February 1998, a retroactive accounting run is executed for January.
FOR PERIOD 199801 IN PERIOD 199802
The payroll results for January are recalculated and then written directly to the database.
Result:
The database now contains the results of the following payroll periods.
FOR-PERIOD 199801 IN-PERIOD 199802
FOR-PERIOD 199801 IN-PERIOD 199801
Payroll is then run for February.
FOR-PERIOD 199802 IN-PERIOD 199802
If problems should arise during the payroll run for this period, the February record is not stored on the database.
Result:
The current January record on the database is:
FOR-PERIOD 199801 IN-PERIOD 199802
This problem does not arise if you use the buffer since all data of a transaction is always updated collectively. In the above example, the recalculated January result would be stored in the buffer and, if the payroll run for February were terminated prematurely, the database would not be updated.
The current January record on the database would thus be:
FOR-PERIOD 199801 IN-PERIOD 199802
Starting Payroll in the Test Mode
In a test run, the database is not updated. Since the payroll results from the previous period are used as the basis for calculating the results of the following period, the results of the actual payroll run would differ from those of the test run, if this test run were executed over several periods.
The use of the buffer enables trouble-free access to the required results for the previous period.
What is required for exporting/importing data to/from the PCLn files using the buffer?
 The following includes contain the data definition for the buffer. They must be included in the report that writes the data to or reads the data from the database.
RPPPXD00
RPPPXD10
 Include RPPPXD10 must be in the common part BUFFER .
Include RPPPXM00, which contains the buffer management routines, is also required.
The macros for importing and exporting data must comply with the following naming convention:
Naming Convention for EXPORT/ IMPORT Macros:
RP-aaa-Cn-xy
where aaa = IMP / EXP, n=1 for PCL1, 2 for PCL2, 3 for PCL3, 4 or PCL4
and xy = cluster name.
This guarantees consistency between the export and import of data and also ensures that all exported objects are imported again.
Export Using the Data Buffer
When macros are used for exporting, records are written to a main memory buffer and not directly to the database. When the program run has been completed, the records in the buffer are stored in the appropriate PCLn database.
Import Using the Data Buffer
When the macros are used to import data, the data records are not read directly from file PCLn. Instead, the system checks the buffer directory to see whether the main memory already contains a record with the same key. If this is not the case, the record is read from PCLn to the buffer and then retrieved from the buffer for the report.
If the import is successful, the return code RP-IMP-xy-SUBRC = 0 is set. When data is read from the buffer, the system carries out a check for cluster authorization. Standard import programs follow the naming convention RPCLSTxy (xy = cluster name).
 report rpttcdmg.
tables:
pernr,
pcl1,
pcl2.
include rpppxd00. "buffer definitions
data: begin of common part 'BUFFER'.
include rpppxd10. "PCLx buffer
data: end of common part.
data: begin of common part 'CLUSTER_DIRECTORY'.
include rpc2cd00. " "cluster directory definitions
data: end of common part.
include rpc2rdd0.
get pernr.
rp-init-buffer. "reset buffer
cd-key-pernr = pernr-pernr.
rp-imp-c2-cd. "read cluster CD from
buffer/DB
perform cd_manager using ... .
alternative: call function rp_evaluation_periods...
rx-key-pernr = pernr-pernr.
rx-key-seqno = rgdir-seqnr.
rp-imp-c2-rd. "read cluster RD from
buffer/DB
rp-exp-c2-rd. "update cluster RD in buffer
perform prepare_update using 'V'. "update database (DB)
Subroutines CD manager and Cluster buffer
include rpcmgr00. "Cluster Directory Manager
include rpppxm00. "module pcl1(2)-buffer
3.4 Cluster Directory
Finding Payroll Results for a Specific Query
Payroll results are stored in cluster Rx of the PCL2.
The cluster key is non-mnemonic. It contains the PERNR (personnel number) and SEQNO (sequential number) fields.
The internal table RGDIR contains a directory entry for each payroll result. This entry is a sequential number (RGDIR-SEQNR) which uniquely identifies the payroll result.
Payroll results can only be imported if the payroll cluster key contains the personnel number and sequential number.
Before you can import a payroll record, you must select the entry in the RGDIR on the basis of existing data such as for-period, for-payroll area, for-payroll category, in-period, in-payroll area, in-payroll category, and so on, in order to determine the sequential number.
You will probably always have the same queries when importing payroll records. For example, "Which payroll results (original and retroactively accounted records) were written for a specific payroll run (defined by IN payroll category, IN payroll area, IN period)"?
There are standard modules that can be used. It is advantageous to use the standard modules rather than self-programmed solutions because no program modifications will be required if the payroll directory changes. The modules are described in the following section:
Function Modules for Selecting Payroll Results
3.5 Function Modules for Selecting Payroll Results
The employees payroll directory is always transferred to the function modules using the table RGDIR.
The modules then transfer the payroll records which satisfy the specified selection criteria using a table whose type corresponds to that of the RGDIR but which has a different name. The selection parameters differ according to the function of the module. For more information, read the module documentation.
All module names begin with CD_.
Function Module: CD_EVALUATION_PERIODS
Function Module: CD_READ_PREVIOUS
Function Module: CD_READ_PREVIOUS_ORIGINAL
Other Modules for the Payroll Cluster
Sample Report
Function Module: CD_EVALUATION_PERIODS
This module transfers the payroll results to a payroll run as A records (current). It also transfers the accompanying P records (previous).
This is the module most frequently used in evaluation programs.
Table contents before the function module is accessed:
SEQNR FPPER FPBEG FPEND INPER IPBEG IPEND BONDT PAYTY PAYID INPTY INPID
00001 01.1996 01.01.96 01.15.96 01.1996 01.01.96 01.15.96
00002 01.1996 01.01.96 01.15.96 01.16.96 01.16.96 B 0
00003 01.16.96 01.16.96 01.16.96 01.16.96 01.16.96 B 0 B 0
00004 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 0 A 0
00005 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 1 A 1
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.31.96
00007 02.1996 01.16.96 01.31.96 03.1996 02.01.96 01.15.96
00008 03.1996 01.16.96 01.31.96 03.1996 01.01.96 02.15.96
The following parameters are transferred:
- BONUS_DATE = '00000000'
- INPER_MODIF = '02'
- INPER = '199803'
- PAYTY = ' '
- PAYID = ' '
Result:
SEQNR FPPER FPBEG FPEND INPER IPBEG IPEND BONDT PAYTY INPTY INPID SRTZA
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.31.96 P
00007 02.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96 A
00008 03.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96 A
Explanation of individual fields
Function Module: CD_READ_PREVIOUS
This module transfers a previous payroll record for a payroll record; this is the newest record for the payroll period (or daily payroll run) which was written before the transferred payroll record and contains the same FOR data as the transferring record.
Table contents before the function module is accessed:
SEQNR FPPER FPBEG FPEND INPER IPBEG IPEND BONDT PAYTY PAYID
00001 01.1996 01.01.96 01.15.96 01.1996 01.01.96 01.15.96
00002 01.1996 01.01.96 01.15.96 01.16.96 01.16.96
00003 01.16.96 01.16.96 01.16.96 01.16.96 01.16.96 B 0
00004 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 0
00005 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 1
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.31.96
00007 02.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96
00008 03.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96
The following parameters are transferred:
- Record with SEQNR '00007'
Result:
SEQNR FPPER FPBEG FPEND INPER IPBEG IPEND BONDT PAYTY SRTZA
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.31.96 P
Explanation of individual fields
Function Module: CD_READ_PREVIOUS_ORIGINAL
This module reads the previous original payroll result.
Table contents before the function module is accessed:
SEQNR FPPER FPBEG FPEND INPER IPBEG IIPEND BONDT PAYTY PAYID
00001 01.1996 01.01.96 01.15.96 01.1996 01.01.96 01.15.96
00002 01.1996 01.01.96 01.15.96 01.16.96 01.16.96
00003 01.16.96 01.16.96 01.16.96 01.16.96 01.16.96 B 0
00004 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 0
00005 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 1
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.31.96
00007 02.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96
00008 03.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96
The following parameters are transferred:
- Record with SEQNR '00008'
Result:
SEQNR FPPER FPBEG FPEND INPER IPBEG IPEND BONDT PAYTY SRTZA
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.3196 P
Explanation of individual fields
3.6 Other Modules for the Payroll Cluster
Modules which derive information from the payroll cluster are available in addition to the modules for payroll result selection.
1. CD_RETROCALC_PERIOD
This module differentiates between original payroll records and retroactive accounting records.
Table contents before the function module is accessed:
SEQNR FPPER FPBEG FPEND INPER IPBEG IPEND BONDT PAYTY PAYID
00001 01.1996 01.01.96 01.15.96 01.1996 01.01.96 01.15.96
00002 01.1996 01.01.96 01.15.96 01.16.96 01.16.96
00003 01.16.96 01.16.96 01.16.96 01.16.96 01.16.96 B 0
00004 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 0
00005 01.17.96 01.17.96 01.17.96 01.17.96 01.17.96 A 1
00006 02.1996 01.16.96 01.31.96 02.1996 01.16.96 01.31.96
00007 02.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96
00008 03.1996 01.16.96 01.31.96 03.1996 02.01.96 02.15.96
The following parameters are transferred:
- Record with SEQNR '00008'
Result:
- CALCD = ' '
Explanation of individual fields
2. CD_PAYROLL_UNTIL
This module reads the RGDIR for the date up to which the regular payroll run was executed for an employee.
3. CD_HIGHEST_PAYDT
This module reads the most recent check date for an employee from the RGDIR.
4. CD_GET_INFO
This module provides information (most recent check date, accounted to date) for a particular personnel number.
3.7 Explanation of Individual Fields
For-Information
The FPPER, FPBEG, FPEND, BONDT, PAYTY, PAYID, ABKRS, PERMO, PAYDT, JUPER fields contain information on the period for which payroll is run.
In-Information
The INPER, IPEND, INPTY, INPID, IABKRS, IPERM fields contain information on the period in which payroll is run.
SEQNR
The field is used as a key to uniquely identify the payroll record.
This field also defines the sequence of payroll results (history).
Control Indicator (SRTZA)
Control indicator Meaning
a Current
p Previous
o Old
 For more information, see the online documentation for the individual function modules.
3.8 Sample Report
REPORT RPTTMWBS.
DATA: RGDIR LIKE PC261 OCCURS 0 WITH HEADER LINE.
DATA: EVPDIR LIKE RGDIR OCCURS 0 WITH HEADER LINE.
DATA: PREVIOUS_RESULTS LIKE RGDIR OCCURS 0 WITH HEADER LINE.
DATA: CALCD TYPE C.
DATA: IN_ENTRY LIKE PC261.
DATA: OUT_ENTRY LIKE PC261.
INCLUDE RPCCCD09.
CALL FUNCTION 'CU_READ_RGDIR'
EXPORTING
PERSNR = '00021218'
TABLES IN_RGDIR = RGDIR
EXCEPTIONS
NO_RECORD_FOUND = 1
OTHERS = 2.
Read RGDIR
CALL FUNCTION 'CD_EVALUATION_PERIODS'
EXPORTING
BONUS_DATE = '00000000'
INPER_MODIF = '02'
INPER = '199603'
PAY_TYPE = CD_C-REGULAR
PAY_IDENT = ' '
TABLES
RGDIR = RGDIR
EVPDIR = EVPDIR
IABKRS =
EXCEPTIONS
NO_RECORD_FOUND = 1
OTHERS = 2.
output:
00006
00007
00008
Read regular payroll results for January
A results (original result plus retroactive calculations)
and P results
LOOP AT EVPDIR WHERE SRTZA = CD_C-ACTUAL.
Only current results (00007 and 00008)
CALL FUNCTION 'CD_RETROCALC_PERIOD'
EXPORTING
ENTRY = EVPDIR
IMPORTING
CALCD = CALCD
EXCEPTIONS
OTHERS = 1.
Determine, whether original result
CHECK CALCD = ' '.
Special processing: Only the original period
March is processed (seqnr 00008).
IN_ENTRY = EVPDIR.
CALL FUNCTION 'CD_READ_PREVIOUS_ORIGINAL'
EXPORTING
IN_RECORD = IN_ENTRY
IMPORTING
OUT_RECORD = OUT_ENTRY
TABLES
RGDIR = RGDIR
EXCEPTIONS
OTHERS = 1.
out_entry now contains the previous results
Input 00008 ----> Output 00006
ENDLOOP.
LOOP AT EVPDIR WHERE SRTZA = CD_C-ACTUAL.
IN_ENTRY = EVPDIR.
CALL FUNCTION 'CD_READ_PREVIOUS'
EXPORTING
IN_RECORD = IN_ENTRY
TABLES
RGDIR = RGDIR
OUT_RGDIR = PREVIOUS_RESULTS
EXCEPTIONS
NO_RECORD_FOUND = 1
OTHERS = 2.
Input 00007 ---> 00006
Input 00008 ---> no record found
Output structure is a table, since there can be
several previous results: for example, if legal person
changes, and is retroactively deleted
ENDLOOP
4 Specific Commands
The following sections describe the different specific commands in HR.
Function modules in HR
Macro modules
4.1 Function Modules in HR
Function modules are program modules which have a defined interface and allow type testing of parameters.
They are managed with transaction SE37 and combined to function groups according to relevant criteria. You can access this transaction under Tools  ABAP Workbench  Function Builder.
The HR function groups use the naming convention RPxx or HRxx where xx is an identifier of your choice.
You can use the SHOW FUNCTION * editor command to branch from report processing to function module display.
4.2 Macro Modules
Definition
An module that can be called within an ABAP program.
Use
Like subprograms and function modules, macro modules are a means of presenting programs in modular form. Macro modules (macros) are used often in the Human Resources application component (HR).
Defining and Calling Modules
Two options are provided:
Macros can be defined in reports or includes using the ABAP command DEFINE. A macro can be used within a report or within an include. If a macro is used in a report, and the macro is defined in an include with the DEFINE command, the include must be integrated.
 Macros have the following advantages:
If a macro is changed, each report using this macro is automatically regenerated when it is executed.
Macros can also be defined as RMAC macros. The source code of these modules is stored in the function section of the control table TRMAC (Macros in ABAP Programs). The coding is grouped under a specific name in the table key.
According to conventions, the first two letters of the name must stand for the application. The rest of the name is freely definable.
 Customer-specific RMAC modules should begin with a special character.
The macros defined in the control table TRMAC can be used by all reports.
 When you change a RMAC macro in the table TRMAC, the reports that use this macro are not regenerated automatically. You must regenerate them manually.
The following section includes a list of programming utilities for the logical databases PNP and PAP.
5 Utilities in HR
The following utilities are available.
General Utilities
Report Meaning
RPUACG00 Code generation / authorization check
RPUAUD00 Infotype auditing
Programming Utilities
Report Meaning
RPINCL10 String search in reports
Cluster Utilities
Report Meaning
RPCLSTyy Display cluster for PCLx (yy = RELID)
RPUPxD00 Delete cluster for PCLx (individual data records)
RPUPxD10 Delete cluster for PCLx (several data records)
6 References:
Different parts of the document has been prepared with the help of articles available on Internet
Following websites are referred :
a). http://help.sap.com
b). http://sapfans.com
c). http://www.sap-basis-abap.com/saphr.htm -
Excess Inventory/Scheduled Receipts Report using ABAP Query.
Hi All,
I want to create a ABAP query for Excess inventory & Scheduled receipts in a single report. I have identified tables, fields and some extra calculated fields in the report. Here are the following tables and fields.
EKPO-MATNR ( Material number)
EKPO-WERKS ( Plant)
MAKT-MAKTX (Material Discription)
MARC-MAABC ( ABC indicator)
LFA1-NAME1 ( Supplier name)
MBEW-STPRS (Total value)
EKET-EINDT ( Item delivery date)
RIBOF-AMOUNT
S939-SPWOC or S032-SPWOC
Calculation fields : Value execess this week.extend value, over or under this week, onhand inventory for last week and this week.
Here my question is, when i was creating a infoset, how do i maintain relationship or joins from one table to another table...Is there any sequence for the above tables? Pl suggest. When i was adding all the tables in a infoset and try join the tables...it says illegal join...
Pl suggest me.
Thanks for your help
PRadeep
Edited by: Venkata Pr Papulugari on Jul 18, 2008 1:37 AMHi Gordon,
What i need to display is the remainder of the transaction that was received... if it is zero (0), i don't want to display it.
i.e.
transact # 100 inqty = 5
transact # 200 outqty =1
I'd like to display
transact # 100 qty on hand = 4
right know the transaction # that i am displaying is transact # 200.
And also, it needs to be warehouse oriented. because i can have multiple warehose transactions.... and i am getting that wrong too.
Regards,
Manuel Roman -
Abap Query - Delete duplicates
I
I'm doing an abap query in SQ02 with LIKP and LIPS tables.
As output I just want lines with different entries in LIPS of material.
How can I delete the duplicates? With instruction delete ADJACENT DUPLICATES FROM XXXX COMPARING vbeln matnr, how can I identity the table?
Thanks
DoraHello Dora,
It is a very well known difficult task to use 'Delete Adjacent Duplicates' syntax in Infoset Query because of the fact that you are not aware of the internal table.
Two methods to address this:
1. Study the repeating lines and use another suitable join in the tables manually, which can eliminate the undesirable duplicates.
2. The other one I always practiced was, Study all fields of the repeating lines. Identify at least one the field value which is not same in these duplicate lines. Suppose you have a field ABCD and values X in one and Y in other. And you have decided to have the lines with value X. Then give the following syntax in the Record Processing section of SQ02.
CHECK TABLE-ABCD = 'X'.
This would remove the lines with Y.
KJogeswaraRao -
Hello Gurus'
If any ABAP Query reports other then standard reports in MM pls give like that reports.
if any body come a cross developed reports thru abap query some thing is not possible thru standard reports in mm.
Ian doing the project so i need like that reports pls help me boss.
Regards
LaxmanHi,
If it is Indian Scenarios try to develop the reports like
The Output of the Report should be like this.
1) PRPOVendorMatrl Doc-Mvt typeSubcontracting challen Qty sendQty recievedQty pending
2) PRPOQty- Price-GR-QtyIRQtyInvoice Amt
3) Pending PRs,Pending POs, Pending GRs, Pending IRs
4) J1ID table details in ALV GRID format
Material excise details, output & input material number, Assessable value,
rgds
Chidanand -
ABAP Query Transport request related
Hi,
I have created a Abap query,
1) User group
2)Infoset
3) Query
But when i transport the request in to Quality, I can see only Infoset, not able to see User group and query which i created in the
Development
Please suggest, is this std behaviour or is anything missed
Rgds,
JaiThanks to all,
I just created TR with new package for user group and included ifoset and query in the same TR
and imported, issue is resolved
But my question is,where we can utilize below help material, I have spent much time to understand below given explaination and finally left without any conclusion
Short text
SAP Query: Transport tool
Description
The report RSAQR3TR handles all tasks concerning the transport of queries, InfoSets and user groups.
General information
Queries, InfoSets and user groups are stored in the table AQDB. This table is client-specific. For the transport of queries, InfoSets and user groups, there is a special client-independent transport table called TAQTS. You can carry out transports either
· from a client (source client) of an SAP system to another client (target client) in the same SAP system or
· from a client (source client) of an SAP system (source system) to a client (target client) in another SAP system (target system).
In both cases, you have to perform similar actions.
The objects to be transported must first be copied from the source client using an export from the table AQDB into the transport table TAQTS. At the same time, a transport request is created for the transport system that includes all entries created by the export from table TATQS (transport dataset). The name of this transport request conforms to the transport system naming conventions (sysKnnnnnn) and is included in the export log. The transport dataset is stored in the table TAQTS under a key which matches the name of the transport request.
If you are transporting within one SAP system (from one client to another), you can import the transport dataset from the target client. The name of the transport request to use for this purpose is that specified during the export, since it should match the key of the transport dataset in the table TAQTS. With this import, the transport dataset is read from the transport table TAQTS and inserted into the table AQDB, where extensive checks ensure that there are no inconsistent statuses in the table AQDB.
If you are transporting from one SAP system to another, you must first use the transport system to release and export the transport request generated by the export. This transports the transport dataset from the transport table TAQTS into the target system. Then, you can import from the target client of the target system, as described above.
The transport datasets generated by exports in the transport table TAQTS are not deleted after successful import unless this is explicitly requested. Therefore, you can import a transport dataset several times (when copying a functional area to several different clients, for example).
This report handles exports (generation of transport datasets), imports (reading of transport datasets) as well as the management (display and deletion) of transport datasets.
As transport action, you must specify one of the values EXPO (export), IMPO (import), SHOW (display transport dataset) or DELE (delete transport dataset).
Transport action EXPO (exports)
If you select the 'Test only' parameter when exporting (no blank characters), the system determines only those queries, InfoSets and user groups that would be selected according to the selections for transport described below and generates an appropriate log. A transport dataset is not generated in the table TAQTS. This allows you to check whether a selection really includes the queries, InfoSets and user groups to be transported.
With exports, there are four different options for selecting objects (user groups, InfoSets, queries) to be transported. These are 'Transport of user groups', 'Transport of InfoSets', 'Transport of InfoSets and queries' and 'Transport of queries'. You must choose exactly one of these transport types.
In each case, you can also define an import option depending on the transport type. This allows you to determine how the transport dataset is inserted in the table AQDB of the target client during a later import.
The import options, each of which has an abbreviated syntax,
are as follows:
REPLACE or R
MERGE or M
GROUP=ug or G=ug (ug = name of a user group)
UNASSIGN or U
If you use the transport type 'Transport of user groups', all user groups are transported according to the select option 'user groups' and the selected import option. The import options REPLACE and MERGE are allowed.
If you use the transport type 'Transport of InfoSets', all InfoSets are transported according to the select option 'InfoSet' and the selected import option. The import options REPLACE, MERGE, GROUP=ug and UNASSIGN are allowed.
If you select the transport type 'Transport of InfoSets and queries', all InfoSets are transported according to the select option 'InfoSets' and the selected import option. The import options REPLACE and MERGE are allowed. Also, all queries are transported for each functional area selected, according to the select option 'queries'. In this case, the user groups of the queries are irrelevant and only the import option REPLACE is allowed.
This transport type allows you to transport a modified InfoSet and all the associated queries.
For the transport type 'Transport of queries', all queries are transported according to the select option 'User groups' and the select option 'Queries' as well as the selected import option. The import options REPLACE and GROUP=ug are allowed.
The export log displays which user groups, which InfoSets and which queries are transported, as well as the import options used.
Transporting a user group
Transporting a user group means transporting all members of the group from the source client. However, the InfoSet assignment to the user group in the source client is NOT transported.
The import option REPLACE first deletes all members of the group in the target client and then enters the members from the source client.
The import option MERGE leaves all members of the group assigned in the target client and adds the members of the group from the source client.
Entering a new member in a user group in the target client is possible only if a user master record exists.
In the target client, the assignment of InfoSets to this user group remains.
Transporting an InfoSet
Transporting an InfoSet means transporting the InfoSet and the InfoSet assignment to user groups in the source client.
Importing an InfoSet is possible only if the same logical database exists in the target client. Extensive checking is also performed to ensure that there are no inconsistencies between the InfoSet and the logical database.
The import option REPLACE first deletes the assignment of the InfoSet to user groups in the target client, provided there are no queries dependent on the InfoSet. The InfoSet is then transported to the target client and the assignment of the InfoSet to user groups is copied from the source client, if user groups also exist in the target client.
The import option GROUP=ug first deletes the assignment of the InfoSet to user groups in the target client, provided there are no queries referring to the InfoSet. The InfoSet is then transported to the target client and assigned to the user group ug of the target client, if such a user group exists.
The import option MERGE leaves the assignment of the InfoSet to user groups in the target client and transports it to the target client. It then copies the assignment of the InfoSet to user groups from the source client if user groups also exist in the target client.
The import option UNASSIGN first deletes the assignment of the InfoSet to user groups in the target client, provided there are no queries referring to the InfoSet. The InfoSet is then transported to the target client. No assignment of the InfoSet to user groups is performed.
Transporting a query
Transporting a query means only the query itself is transported.
Importing a query is possible only if a corresponding user group (see below) and a corresponding InfoSet exist in the target client and if the InfoSet is assigned to the user group. To demonstrate the effect of the import options, suppose that the query has the name QU and belongs to the user group BQ in the source client.
The import option REPLACE overwrites the query QU of the user group BQ in the target client if the user group exists.
The import option GROUP=ug overwrites the query QU of the user group UG in the target client if the user group exists. In this case, the query is explicitly assigned to a user group in the target client. This target user group may be differnet from the user group in the source client.
Transport action IMPO (imports)
If you choose the 'Test only' parameter with imports, only a test import is performed. This means that the system performs checks as for a real import and generates an import log. The import log contains information on the locks that have to be set. With a test import, you can check whether a transport dataset can be imported without any problem and which changes it would make in the table AQDB of the target client. A test import itself never makes changes in the table AQDB of the target client.
All transport datasets are imported according to the select option 'transport request'. In this case, the system outputs a detailed log of all checks carried out and all changes made in the table AQDB.
If you select the parameter 'Delete after successful import', the transport dataset in the table TAQTS is deleted after the import of each transport dataset if no errors occur during the import.
Transport action SHOW (display)
All transport datasets included in the transport table TAQTS are output with name (also the name of the transport request) and contents in the form of an overview.
Transport action DELE (delete)
All transport datasets are deleted according to the select option 'transport request'. To avoid unintentional deletion, the select option 'transport request' must contain values, meaning that the transport action DELE is not performed if this select option is empty.
Transport of ABAP Query
I am involved in this upgrade project to 4.7
The users are not able to find any reports (in QA System) which were there before the upgrade in SQ01. But they can see them in production which is not yet upgraded. They want me to copy all the reports to the QA system now....I dont have any idea how to do that.
I remember a similar problem upgrading to 4.6C from 4.5B ......
Take a look at OOS note 672784.
You can transport queries between systems in SQ02 (hit the lorry button) or run program RSAQR3TR.
You download the infosets, queries etc into a file and load them into whichever system you wish.
Just wanted to share my experience of transporting queries:
I needed to move a user group, 2 infosets and 3 queries from a 4.6 system to a 4.7 system.
When I tried doing this via the SQ* transactions I did not get the import/export option, so instead ran RSAQR3TR.
Step 1. Run RSAQR3TR in 'old' system. Select EXPORT and specify the objects to be transported.
(System includes these in an automatically created transport request)
Step 2. Release this transport and request it be transported to 'new' system.
(This results in the entries being populated in transport table AQTDB in 'new' system).
Step 3. Run RSAQR3TR in 'new' system. Select IMPORT and tick the Overwrite checkbox. Specify the transport number in the field labelled 'dataset with imports'.
(RSAQR3TR gives the message that stuff has been imported OK).
Step 4. In my example I still couldn't find the queries, so ran RSAQR3TR one more time, this time specifying 'Copy Standard Area -> Global Area'.
(Now my queries etc were available in new system).
Perhaps there are better ways, but after 1.5 days of struggling I was glad to get this far.
regards,
Jai -
hi every one
Can any one help me in providing links for ABAP HR material
RajeshHi Rajesh, read this.
HR:
HR deals with the INFOTYPES which are similar to Tables in General ABAP.
There are different ways of fetching data from these infotypes.
There are different areas in HR LIKE Personal Admn, Orgn Management, Benefits, Time amangement, Event Management, Payroll etc
Infotypes for these areas are different from one another area.
storing of records data in each type of area is different
LDBS like PNP are used in HR programing.
Instead of Select.. we use some ROUTINES and PROVIDE..ENDPROVIDE.. etc
and in the case of Pay roll we use Clusters and we Import and Export them for data fetching.
On the whole Normal ABAP is different from HR abap.
For Personal Admn the Infotypes start with PA0000 to PA1999
Time Related Infotypes start with PA2000 to PA2999.
Orgn related Infotypes start with HRP1000 to HRP1999.
All custom developed infotypes stsrat with PA9000 onwards.
In payroll processing we use Clusters like PCL1,2,3 and 4.
Instead of Select query we use PROVIDE and ENDPROVIDE..
You have to assign a Logical Database in the attributes PNP.
Go through the SAp doc for HR programming and start doing.
http://www.sapdevelopment.co.uk/hr/hrhome.htm
See:
http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm
sites regarding hr-abap:
http://www.sapdevelopment.co.uk/hr/hrhome.htm
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf
http://www.atomhr.com/training/Technical_Topics_in_HR.htm
http://www.planetsap.com/hr_abap_main_page.htm
You can see some Standard Program examples in this one ...
http://www.sapdevelopment.co.uk/programs/programshr.htm
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#Certification
http://www.erpgenie.com/faq/hr.htm.
http://www.planetsap.com/hr_abap_main_page.htm
http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html
These are the FAQ's that might helps you as well.
http://www.sap-img.com/human/hr-faq.htm
http://www.sapgenie.com/faq/hr.htm
http://www.planetsap.com/hr_abap_main_page.htm
http://www.atomhr.com/library_full.htm
HR Long texts Upload
Look at the below link
Also,
Few notes are below:
InfoSets in the HR Application
You can use SAP Query in HR to report on HR data. Queries are maintained as described in Creating Queries. The special features of queries created for HR are described in Maintaining Queries in the Human Resources Application. The maintenance procedure for HR InfoSets differs from the described procedure inasmuch as HR data fields are grouped together in infotypes.
InfoSet management in SAP Query is also used for InfoSet Query. For further information, see Functions for Managing InfoSets.
If you want to create InfoSets for HR, you can use logical databases PNP, PNPCE, PAP, and PCH (see HR Logical Databases). The database you must use to create your InfoSet depends on the component in which the data you want to report on is stored.
The reports you can execute using InfoSets based on logical databases PNP (or PNPCE) or PCH are similar, but differ in that they can select different objects. The following table describes the connection between the logical database, and the infotypes you can include in an InfoSet. It also provides you with one or two examples of reports that you can execute using the appropriate InfoSets.
Logical database PNP/PNPCE* PCH PAP
Selection of Persons Objects from Personnel Planning Applicants
Infotypes that can be included in the InfoSet Infotypes for· Personnel Administration (0000-0999) · Time Management (2000-2999) · Payroll infotypes · Infotypes for Personnel Planning objects that can be related to persons If the object type is specified:· Infotypes for the object type · Infotypes for objects that can be related to the specified object typeIf the object type is not specified:· All infotypes · Infotypes for Recruitment (4000-4999)· Some infotypes for Personnel Administration (such as 0001 and 0002)
· Customer infotypes
Reporting examples · Selection of all persons who participated in a specific business event, output of prices for reserved business events · Selection of all persons assigned to a specific personnel area, output of qualifications held by these persons · Selection of all business events held in London in March, output of all persons who participated in these business events · Selection of all positions assigned to a specific organizational unit, output of all persons assigned to the positions · Selection of all applicants hired last year to work on special projects, output of addresses for the applicants selected
Logical database PNPCE (PNP Concurrent Employment) functions just like logical database PNP. The procedure for creating InfoSets is also the same. It only becomes significant if you work with Concurrent Employment.
Creating InfoSets
The maintenance procedure for HR InfoSets differs from the procedure described so far in this section inasmuch as HR data fields are grouped together in infotypes. To set up an InfoSet for the HR application, proceed as follows:
1. On the initial screen for maintaining InfoSets, enter a name for the InfoSet and choose Create.
2. On the next screen, enter a name for the InfoSet and select one of the HR logical databases in accordance with your reporting requirements.
Customer infotypes can be created on all HR logical databases. In each individual case, therefore, you must decide which database to select so that you can report on customer infotypes.
This screen enables you to enter an authorization group. All of the queries that are subsequently created using this InfoSet can only be executed by persons who have this authorization group.
3. Choose .
This takes you to the Infotype Selection for InfoSet screen. You now have the option of creating field groups and assigning fields as required for non-HR InfoSets. Field groups that correspond to infotypes and already contain fields, however, are always created for HR InfoSets. The field groups are displayed in an overview tree in the top right section of the screen.
The infotypes that you included in the InfoSet are displayed in an overview tree on the left of the screen. The infotype fields that are already included in field groups are displayed in a different color, and the corresponding field group ID is displayed.
In the standard system, a field group is created automatically for each infotype that you included in the InfoSet (a field group corresponds to an infotype).
In the standard system, each field group contains the infotype-specific fields. To ensure that working with the InfoSet is as easy as possible, you are advised to restrict your use of fields in each field group to those you really require. This means you should remove fields that are not required.
An infotype's fields must only be assigned to the pertinent field group. Make sure this assignment is correct. If the assignment is incorrect, the InfoSet could be rendered unusable.
When an InfoSet is created, the following fields are transferred automatically to the first field group:
§ Logical database PNPCE or PNP Personnel number
§ Logical database PAP Applicant number
§ Logical database PCH Object ID, plan version, and object type
6. Determine the fields that must be included in the field groups of your InfoSet. If you require further information, see Assigning Fields to a Field Group.
If you want, you can change the default sequence of field groups and fields as required using Drag&Drop.
7. To save the InfoSet, choose .
8. To generate the InfoSet, choose .
On the Change InfoSet (InfoSet name) screen, you can choose Edit ® Change infotype selection to add more infotypes to the InfoSet, or to remove infotypes from the InfoSet. Remember to regenerate the InfoSet afterwards.
This screen also enables you to update InfoSets if, for example, the system contains new additional fields for specific key values. To do so, choose InfoSet ® Additional functions ® Update additional HR fields.
9. Go back to the initial screen for InfoSet maintenance.
10. Choose User group assignment.
11. Select a user group, and save your entry.
sample code
START-OF-SELECTION.
GET pernr.
rp_provide_from_frst p0000 space pn-begda pn-endda.
if pnp-sw-found EQ '1'.
READ TABLE p0001 WITH KEY pernr = p0000-pernr.
if sy-subrc = 0.
write : p0001-plans. " earliest.
endif.
endif.
rp_provide_from_last p0014 space pn-begda pn-endda.
if pnp-sw-found EQ '1'.
READ TABLE p0014 WITH KEY pernr = p0000-pernr.
if sy-subrc = 0.
write : p0014-LGART. .
endif.
endif.
Also this is HR_data structure.
Enterprise Structure
Definition
Structure of company according to personnel administrative, time management and payroll perspectives from the point of view of your own company
The company structure describes elements of the company and there dependencies.
Structure
The enterprise structure in Personnel Administration consists of the following:
Client
The client is, in accordance with commercial law, an organizational and data technical isolated unit within the R/3 System, with separate master records and its own separate record of tables. A clients area of jurisdiction can correspond to a unit as small as a company, or as large as an entire enterprise.
Company code
The company code is the smallest organizational unit of external accounting in which a complete and isolated financial accounting can be created. All events that affect the company code and the creation of all statements for a legal financial statement, for example balances, profit and loss calculation are contained within the company code organizational units.
Personnel area
The personnel area is an organizational unit; according to a personnel administrative, time management and payroll organizational point of view, a personnel area represents a delimited enterprise area. The personnel area is only used in Personnel Administration and is unique within a client.
Personnel areas are sub-divided into personnel subareas. Organizational data and guidelines as how to assign it, are stored on a personnel area and personnel subarea level. The rules and guidelines could be of a legal, pay scale and collective agreement, or internal nature. A personnel area is assigned to a company code which has the financial accounting values that are relevant for the personnel area. A pay scale area, a pay scale type and a public holiday calendar are precisely defined for a personnel subarea.
Example
The personnel area in a software company can be subdivided into development, training and administration personnel subareas.
Personnel subarea
The personnel subarea is only used in Personnel Administration. The groupings linked to the personnel subarea determine which entries from the subsequent screen are allowed for an employee of a particular company code/personnel area.
Groupings are used for validation of master and time data. Groupings are also used to check the plausibility of data that you enter.
Organizational key
The organizational key enables you to define the organizational assignment more exactly. The organizational key can consist of elements from the enterprise structure and personnel structure.
If you require further information on the corporate structure, please see the Elements of the Enterprise Structure section.
Integration
The Hiring personnel action enables you to assign employees to the enterprise structure. The data is stored in the Organizational Assignment (0001) infotype. This infotype is essential for authorization checks.
http://help.sap.com/saphelp_47x200/helpdata/en/48/35c3ea4abf11d18a0f0000e816ae6e/frameset.htm
Personnel Structure
Definition
Describes an employees position in a company from the individual employees view.
Structure
The personnel structure can be considered from two perspectives:
administrative perspective
organizational perspective
The Structure link administrative personnel structure consists of the following elements:
Employee group
Employee subgroup
Payroll area
Organizational key
The extent of the distinction that you make between employee groups and employee subgroups depends on your evaluation and access protection requirements.
The organizational key consists of a part of both the enterprise structure and the personnel structure. The elements employee group and employee subgroup could also be relevant in forming the organizational key.
The Structure link organizational personnel structure consists of the following elements:
Position
Job
Organizational unit
Integration
To assign an employee to the personnel structure, use the Hiring personnel action. The data is stored in the Structure link Organizational Assignment (0001) infotype. This infotype is essential for authorization checks.
http://help.sap.com/saphelp_47x200/helpdata/en/48/35c3ea4abf11d18a0f0000e816ae6e/frameset.htm
kindly reward if found helpful.
cheers,
Hema. -
How to extract the list of BOM materials through ABAP query?
Hello Experts
I want to extract a report from SAP which should contains the following,
1). Main Material with description
2). Sub material with description and quantity
I have tried with the tables MAST, STKO AND STPO but i couldn't able to create the correct ABAP query.
Could you please advise what are the table i should take to get this report.
Thanks in advance.
Regards,
RaghuHi Raghu
Check this below link
how to get BOM Components using ABAP Code?
FM to get all Parent material/BOM of the given material
Let me know if your problem is solved
Regards
Pradeep -
ABAP Query - ALV Grid Calculation
Can anybody tell me whether in ABAP Query when you execute the Query in SQ01 its shows the report in ALV Grid format. In ALV Grid format there are some standard calculation are available like
TOtal
Mean value
Minmum
Maximum
Count
The above calculation can be done for each column.
My Query is it possible to put our own simple calculation
through some coding for overall summation fields instead of this std. calculation.
Example : Unrestricted moved Qty Summation divided by INspection lot qty summation * 100
The output of this calculation is called First pass yield.
This calculation i done for each line item by creating a Additional field with ABAP coding.The overall meanvalue calcualtion of this addtional fields column is not suits the customer expectation.They want the calculation to be done by the system like what i had explained in the example.Hi,
Here is a code for a single grid.
In the screen layout,make a custom container (Icon with C ) and name it in Capital letters as CONTAINER.The code below in bold letters is what exactly you want.I ve given a small example on how to use ALV:
REPORT SAMPLE.
DATA: alv type ref to cl_gui_alv_GRID,
cont type ref to cl_gui_custom_container,
itab_spfli type table of spfli.
START-OF-SELECTION.
select * from spfli into table itab_spfli.
call screen 100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
seT PF-STATUS 'GUI'.
SET TITLEBAR 'xxx'.
if cont is initial.
CREATE OBJECT cont
EXPORTING
CONTAINER_NAME = 'CONTAINER'.
CREATE OBJECT ALV
EXPORTING
I_PARENT = CONT.
CALL METHOD ALV->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'SPFLI'
CHANGING
IT_OUTTAB = itab_spfli
Now for your requirement,you can create two custom containers in the screen layout and two different alv grid instances.ie:
DATA: alv1 type ref to cl_gui_alv_GRID,
cont1 type ref to cl_gui_custom_container
alv2 type ref to cl_gui_alv_GRID,
cont2 type ref to cl_gui_custom_container.
To select data from first grid,you can use events on double_click and fetch information and then display it in the second grid.
<b>SOME MATERIAL REGARDING ALV:</b>
www.abap4.it/download/ALV.pdf <b>(very useful)</b>
http://www.sapdevelopment.co.uk/reporting/alvhome.htm
<b>-->download the PDF from following link.</b>
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm
<b>SAMPLE PROGRAMS IN ALV:</b>http://www.geocities.com/victorav15/sapr3/abap_ood.html#d_grid
<b>DEMO PROGRAMS IN ALV:</b>BCALV*
Regards,
Beejal
**Reward if this helps
Maybe you are looking for
-
I have been using the "week view" in iCal for years now and today I can no longer view my iCal in weekly view? Any ideas?
-
Interactive Form in wD abap - SPFDOCPARAMS `?
hi folks, we use adobe interactive forms that are processed inside a webdynpro abap application, shown on the screen. we want to show them in another language than in the logon-language, but how can we pass spfdocparams here, as it is not part of the
-
What Generation MacBook is from Early 2009?
I'm looking to upgrade the RAM in my MacBook. It's the early 2009 model, it currently has 2 GB of RAM, which means it has two 1 GB RAM modules. I was trying to find it in the RAM section of Apple's online store, but they're listed by generation there
-
Can you bookmark a station in the Internet radio stream?
I'd like a way to go directly to my favorite stations, rather than having to run through the list each time I load the Internet radio.
-
Hey, I want to know if it is possible for third party software to trigger ACR? If so, where do you have resources like SDKs? and if not, would it be possible to implement? Thanks in advance!