Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 21

Question:

Within the TOP-OF-PAGE event the following code represents


write: /1 text-001.
Answer:
A: A selection text.
B: A basic list row.
C: A page footer
D: A page header
Question:
Given the two ABAP Dictioary tables below, the Customer number field in table one
must contain
a value from table two. The Customer number field is known as a ____.
Table one:
Customer number (Primary key)
Company code (Primary key)
Other data
Table two:
Customer number (Primary key)
Customer name
Other data
Answer:
A: Secondary index
B: Matchcode object
C: Validation field
D: Foreign key
Question:
A batch input job with two steps is processed. IMPORT/EXPORT statements are
used to pass values between the steps.
Step 1 contains the statements
STATUS='S'. CONT = 'C'.
EXPORT STATUS CONT TO MEMORY ID 'XXXX'.
Step 2 contains the statements
CLEAR:CONT, STATUS, FLAG.
IMPORT CONT FLAG FROM MEMORY ID 'XXXX'.
What do the fields SY-SUBRC, CONT and FLAG contain after the IMPORT
statement have been executed?

Answer:
A. SY-SUBRC=4. CONT='C'. FLAG=''.
B. SY-SUBRC=0. CONT='C'. FLAG=''.
C. SY-SUBRC=0. CONT=''. FLAG=''.
Question:
The structure of a table has been changed in the ABAP/4 Dictionary.
Which of the following adjustments in the relevant database table is correct, if you
want to retain the previous data?
Answer:
A. Delete and recreate the database table.
B. Change the database directory (ALTER TABLE) where the structure change
with ALTER TABLE is supported by the database.
C. Convert the table.
Question:
Must Exits be predefined by SAP programmers?
Answer:
A. No
B. Yes
C. Customers can determine for themselves where they want to use exits
REPORT Z_LIST_MATERIALS.
TYPE-POOLS: SLIS.
TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW.
SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant
S_MATNR FOR MARC-MATNR, " Material
S_MTART FOR MARA-MTART. " Material Type SELECTION-SCREEN
END OF BLOCK SEL.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant
CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: BEGIN OF INV OCCURS 100,
WERKS LIKE MARD-WERKS, "
MATNR LIKE MARD-MATNR, "
MTART LIKE MARA-MTART, "
STPRS LIKE MBEW-STPRS, "
AVAIL LIKE MARD-LABST, "
LABST LIKE MARD-LABST, "
INSME LIKE MARD-INSME, "
RETME LIKE MARD-RETME, "
TRANS LIKE MARC-UMLMC, "
UMLMC LIKE MARC-UMLMC, "
UMLME LIKE MARD-UMLME, "

Plant
Material
Material Type
Standard Price
Available
Unrestricted use
Quality Inspection
Returns
Stock in transit (calculated)
Stock Transfer (plant)
Transfer (SLoc)

WESBS LIKE EKBE-WESBS, "


TRAME LIKE MARC-TRAME, "
SPEME LIKE MARD-SPEME, "
KWMENG LIKE VBAP-KWMENG,
LFIMG LIKE LIPS-LFIMG, "
MENGE LIKE EKPO-MENGE, "
VALUE LIKE MBEW-SALK3, "
MEINS LIKE MARA-MEINS, "
END OF INV.

GR Blocked Stock
Stock in transit
Blocked
" Sales orders
Scheduled for Delivery
Open Purch. Orders
Stock Value (Calculated)
Unit of measure

DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,


HEADING TYPE SLIS_T_LISTHEADER,
LAYOUT
TYPE SLIS_LAYOUT_ALV,
EVENTS
TYPE SLIS_T_EVENT,
REPNAME LIKE SY-REPID,
F2CODE
LIKE SY-UCOMM VALUE '&ETA',
G_SAVE(1) TYPE C,
G_EXIT(1) TYPE C,
G_VARIANT LIKE DISVARIANT,
GX_VARIANT LIKE DISVARIANT.
INITIALIZATION.
REPNAME = SY-REPID.
PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
PERFORM BUILD_EVENTTAB USING EVENTS[].
PERFORM BUILD_COMMENT USING HEADING[].
PERFORM INITIALIZE_VARIANT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
START-OF-SELECTION.
PERFORM GET_MARD.
PERFORM GET_UNIT_OF_MEASURE.
PERFORM GET_MARC.
PERFORM GET_EKPO.
PERFORM GET_LIPS.
PERFORM GET_VBAP.
PERFORM GET_OPEN.
PERFORM GET_PRICE.
END-OF-SELECTION.
PERFORM BUILD_LAYOUT USING LAYOUT.
PERFORM WRITE_OUTPUT.
*&---------------------------------------------------------------------*
*&
Form INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_FIELDTAB[] text
*
*----------------------------------------------------------------------*

FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.


DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
* fixed columns (obligatory)
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME
= 'INV'.
L_FIELDCAT-FIX_COLUMN = 'X'.
L_FIELDCAT-NO_OUT
= 'O'.
L_FIELDCAT-FIELDNAME = 'WERKS'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'MATNR'.
APPEND L_FIELDCAT TO P_FIELDTAB.
* totalized columns
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME
= 'INV'.
L_FIELDCAT-SP_GROUP = 'A'.
L_FIELDCAT-DO_SUM
= 'X'.
L_FIELDCAT-FIELDNAME = 'LABST'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'INSME'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'RETME'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'UMLME'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'WESBS'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'SPEME'.
APPEND L_FIELDCAT TO P_FIELDTAB.
* columns with different description
L_FIELDCAT-FIELDNAME = 'KWMENG'.
L_FIELDCAT-SELTEXT_M = 'Sales Orders'.
L_FIELDCAT-SELTEXT_S = 'Sales Or'.
L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'LFIMG'.
L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'.
L_FIELDCAT-SELTEXT_S = 'Schd. Del'.
L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'TRANS'.
L_FIELDCAT-SELTEXT_M = 'Stk. in transit'.
L_FIELDCAT-SELTEXT_S = 'Stk. trns'.
L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'AVAIL'.
L_FIELDCAT-SELTEXT_M = 'Available'.
L_FIELDCAT-SELTEXT_S = 'Avail.'.
L_FIELDCAT-SELTEXT_L = 'Stock Available'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'MENGE'.
L_FIELDCAT-SELTEXT_M = 'Open Orders'.
L_FIELDCAT-SELTEXT_S = 'Open Ord'.
L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'.
APPEND L_FIELDCAT TO P_FIELDTAB.
* columns not displayed

CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME
L_FIELDCAT-SP_GROUP
L_FIELDCAT-NO_OUT
L_FIELDCAT-FIELDNAME
APPEND L_FIELDCAT TO
L_FIELDCAT-FIELDNAME
APPEND L_FIELDCAT TO
L_FIELDCAT-FIELDNAME
APPEND L_FIELDCAT TO
L_FIELDCAT-FIELDNAME
APPEND L_FIELDCAT TO
L_FIELDCAT-FIELDNAME
APPEND L_FIELDCAT TO
ENDFORM.

= 'INV'.
= 'A'.
= 'X'.
= 'MEINS'.
P_FIELDTAB.
= 'UMLMC'.
P_FIELDTAB.
= 'TRAME'.
P_FIELDTAB.
= 'STPRS'.
P_FIELDTAB.
= 'VALUE'.
P_FIELDTAB.
" INITIALIZE_FIELDCAT

*&---------------------------------------------------------------------*
*&
Form BUILD_EVENTTAB
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_EVENTS[] text
*
*----------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS
= P_EVENTS.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_EVENTS.
ENDIF.
ENDFORM.
" BUILD_EVENTTAB
*&---------------------------------------------------------------------*
*&
Form BUILD_COMMENT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_HEADING[] text
*
*----------------------------------------------------------------------*
FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
DATA: HLINE TYPE SLIS_LISTHEADER,
TEXT(60) TYPE C,
SEP(20) TYPE C.
CLEAR: HLINE, TEXT.
HLINE-TYP = 'H'.
WRITE: TEXT-101 TO TEXT+23.
HLINE-INFO = TEXT.
APPEND HLINE TO P_HEADING.
CLEAR TEXT.
WRITE: 'User: ' TO TEXT,
SY-UNAME TO TEXT+6,

'Date: ' TO TEXT+25,


SY-DATUM TO TEXT+31,
'Page: ' TO TEXT+50,
SY-PAGNO TO TEXT+56.
HLINE-INFO = TEXT.
APPEND HLINE TO P_HEADING.

ENDFORM.

" BUILD_COMMENT

*---------------------------------------------------------------------*
*
FORM TOP_OF_PAGE
*
*---------------------------------------------------------------------*
*
........
*
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEADING.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM INITIALIZE_VARIANT.
G_SAVE = 'A'.
CLEAR G_VARIANT.
G_VARIANT-REPORT = REPNAME.
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE
= G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDFORM.
" INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
*&
Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE
= G_SAVE
IMPORTING
E_EXIT
= G_EXIT
ES_VARIANT = GX_VARIANT
EXCEPTIONS

NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S'
NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM.
" F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*&
Form PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM PAI_OF_SELECTION_SCREEN.
*
IF NOT P_VARI IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE
= G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM INITIALIZE_VARIANT.
ENDIF.
ENDFORM.
" PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*&
Form GET_MARD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_MARD.
SELECT MATNR WERKS LABST INSME RETME UMLME SPEME
FROM MARD
INTO CORRESPONDING FIELDS OF INV
WHERE MATNR IN S_MATNR
AND
WERKS IN S_WERKS.
COLLECT INV.
ENDSELECT.
PERFORM FILTER_BY_MATERIAL_TYPE.
ENDFORM.
" GET_MARD
*&---------------------------------------------------------------------*
*&
Form FILTER_BY_MATERIAL_TYPE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM FILTER_BY_MATERIAL_TYPE.
LOOP AT INV.
CLEAR INV-MTART.

SELECT SINGLE MTART


INTO INV-MTART
FROM MARA
WHERE MATNR EQ INV-MATNR
AND
MTART IN S_MTART.
IF SY-SUBRC EQ 0.
MODIFY INV.
ELSE.
DELETE INV.
ENDIF.
ENDLOOP.
ENDFORM.
" FILTER_BY_MATERIAL_TYPE
*&---------------------------------------------------------------------*
*&
Form GET_MARC
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_MARC.
LOOP AT INV.
SELECT SINGLE UMLMC TRAME
FROM MARC
INTO CORRESPONDING FIELDS OF INV
WHERE MATNR EQ INV-MATNR
AND
WERKS EQ INV-WERKS.
IF SY-SUBRC EQ 0.
INV-TRANS = INV-UMLMC + INV-TRAME.
MODIFY INV.
ENDIF.
ENDLOOP.
ENDFORM.
" GET_MARC
*&---------------------------------------------------------------------*
*&
Form GET_EKPO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_EKPO.
DATA: WESBS LIKE INV-WESBS,
SHKZG LIKE EKBE-SHKZG,
MEINS LIKE EKPO-MEINS,
LMEIN LIKE EKPO-LMEIN.
LOOP AT INV.
CLEAR: WESBS, SHKZG, MEINS, LMEIN.
SELECT YWESBS YSHKZG XMEINS XLMEIN
INTO (WESBS, SHKZG, MEINS, LMEIN)
FROM EKPO AS X JOIN EKBE AS Y
ON
XEBELN = YEBELN
AND XEBELP = YEBELP
WHERE XMATNR EQ INV-MATNR
AND
XWERKS EQ INV-WERKS
AND
XLOEKZ NE 'L'.
IF SHKZG EQ 'H'.
MULTIPLY WESBS BY -1.
ENDIF.
IF MEINS NE LMEIN.
PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS.
ENDIF.

ADD WESBS TO INV-WESBS.


ENDSELECT.
MODIFY INV.
ENDLOOP.
ENDFORM.
" GET_EKPO
*&---------------------------------------------------------------------*
*&
Form GET_LIPS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_LIPS.
DATA: LFIMG LIKE INV-LFIMG.
LOOP AT INV.
CLEAR: LFIMG, INV-LFIMG.
SELECT OMENG
INTO LFIMG
FROM VBBE
WHERE MATNR EQ INV-MATNR
AND
WERKS EQ INV-WERKS
AND
VBTYP EQ 'J'.
ADD LFIMG TO INV-LFIMG.
ENDSELECT.
MODIFY INV.
ENDLOOP.
ENDFORM.
" GET_LIPS
*&---------------------------------------------------------------------*
*&
Form GET_VBAP
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_VBAP.
DATA: KWMENG LIKE INV-KWMENG.
LOOP AT INV.
CLEAR: KWMENG, INV-KWMENG.
SELECT OMENG
INTO KWMENG
FROM VBBE
WHERE MATNR EQ INV-MATNR
AND
WERKS EQ INV-WERKS
AND
VBTYP EQ 'C'.
ADD KWMENG TO INV-KWMENG.
ENDSELECT.
INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG.
MODIFY INV.
ENDLOOP.
ENDFORM.
" GET_VBAP
*&---------------------------------------------------------------------*
*&
Form GET_UNIT_OF_MEASURE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_UNIT_OF_MEASURE.
LOOP AT INV.

SELECT SINGLE MEINS


FROM MARA
INTO INV-MEINS
WHERE MATNR EQ INV-MATNR.
MODIFY INV.
ENDLOOP.
ENDFORM.

" GET_UNIT_OF_MEASURE

*&---------------------------------------------------------------------*
*&
Form GET_OPEN
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_OPEN.
DATA: BEGIN OF XTAB OCCURS 10,
" Open orders table
WERKS LIKE EKPO-WERKS,
LGORT LIKE EKPO-LGORT,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MENGK LIKE EKPO-MENGE,
END OF XTAB.
RANGES: L_WERKS FOR MARD-WERKS.
LOOP AT INV.
REFRESH XTAB.
CLEAR: XTAB, L_WERKS.
MOVE INV-WERKS TO L_WERKS-LOW.
CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
EXPORTING
X_MATNR = INV-MATNR
X_MEINS = INV-MEINS
X_ELIKZ = SPACE
X_LOEKZ = SPACE
TABLES
XTAB
= XTAB
XWERKS = L_WERKS.
MOVE XTAB-MENGE TO INV-MENGE.
MODIFY INV.
ENDLOOP.
ENDFORM.
" GET_OPEN
*&---------------------------------------------------------------------*
*&
Form GET_PRICE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GET_PRICE.
LOOP AT INV.
SELECT SINGLE STPRS
FROM MBEW
INTO INV-STPRS
WHERE MATNR EQ INV-MATNR
AND
BWKEY EQ INV-WERKS
AND
BWTAR EQ SPACE.
IF SY-SUBRC EQ 0.
INV-VALUE = INV-STPRS *
( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ).

MODIFY INV.
ENDIF.
ENDLOOP.
ENDFORM.

" GET_PRICE

*---------------------------------------------------------------------*
*
FORM CONVERT_UNIT_OF_MEASURE
*
*---------------------------------------------------------------------*
*
text
*
*---------------------------------------------------------------------*
* --> P_MATNR
*
* --> P_VRKME
*
* --> P_QUANT
*
*---------------------------------------------------------------------*
FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT.
DATA: UMREZ LIKE MARM-UMREZ,
UMREN LIKE MARM-UMREN.
SELECT SINGLE UMREZ UMREN
INTO (UMREZ, UMREN)
FROM MARM
WHERE MATNR EQ P_MATNR
AND
MEINH EQ P_VRKME.
IF SY-SUBRC EQ 0.
COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_LAYOUT text
*
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
P_LAYOUT-F2CODE
= F2CODE.
P_LAYOUT-ZEBRA
= 'X'.
P_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM.
" BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&
Form WRITE_OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM WRITE_OUTPUT.
SORT INV BY WERKS MATNR.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME
= REPNAME
I_INTERNAL_TABNAME = 'INV'
I_INCLNAME
= REPNAME
CHANGING
CT_FIELDCAT
= FIELDTAB.
IF SY-SUBRC <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
ENDIF. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING
I_CALLBACK_PROGRAM = REPNAME
I_STRUCTURE_NAME
= 'INV'
IS_LAYOUT
= LAYOUT
IT_FIELDCAT
= FIELDTAB
I_DEFAULT
= 'A'
I_SAVE
= G_SAVE
IS_VARIANT
= G_VARIANT
IT_EVENTS
= EVENTS[]
TABLES
T_OUTTAB
= INV.
IF SY-SUBRC <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
ENDFORM.
" WRITE_OUTPUT

ENDIF.

1. How data is stored in cluster table?


Each field of cluster table behaves as tables which contains the no. of entries.
2. What are client dependant objects in abap/sap?
SAP Script layout, text element, and some DDIC objects.
3. On which event we can validate the input fields in module progams?
In PAI (Write field statement on field you want to validate, if you want to validate group
of fields put in chain and End chain statement.)
4. In selection screen I have three fields, plant mat no and material group. If I input
plant how do I get the mat no and material group based on plant dynamically?
AT SELECTION-SCREEN ON VALUE-REQUEST FOR MATERIAL.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' to get material and
material group for the plant.
5. How do you get output from IDOC?
Data in IDOc is stored in segments, the output from Idoc is obtained by reading the data
stored in its respective segments.
6. When top of the page event is triggered?
After excuteing first write statement in start-of-selection event.
7. Can we create field without data element and how?
In SE11 one option is available above the fields strip. Data element/ direct type.
8. How do we debug sapscript?
Go to SE71 give lay set name , go to utilities select debugger mode on.
9. Which transaction code can I used to analyze the performance of ABAP
program.
TCode AL21.

10. How can I copy a standard table to make my own z_table.


Go to transaction SE11. Then there is one option to copy table. Press that button. Enter
the name of the standard table and in the Target table enter Z table name and press enter.
Following are some of the answers which I gave upto my knowledge.
1. What is the use of 'outerjoin'
Ans. With the use of outer join you can join the tables even there is no entry in all the
tables used in the view.
In case of inner join there should be an entry in al the tables use in the view.
2. When to use logical database?
Ans. Advantage of Logical databases:
less coding s required to retrieve data compared to normal internel tables.
Tables used LDB are in hierarchial structure.
3. What is the use of 'table index'?
Ans .Index is used for faster access of data base tables.
4. What is the use of 'FOR ALL ENTRIES'?
Ans. To avoid nested select statements we use SELECT FOR ALL ENTRIES statement.
If there r more than 10000 records SELECT FOR ALL ENTRIES is used.
Performance wise SELECT FOR ALL ENTRIES is better to use.
5. Can you set up background processing using CALL TRANSACTION?
Yes,Using No Screen Mode.
6. What are table buffers?
Table buffers reside locally on each application server in the system. The data of
buffered tables can thus be accessed
directly from the buffer of the application server. This avoids the time-consuming
process of accessing the database.
Buffering is useful if table needs to be accessed more no. of times in a program.

1) How do you backup script layout sets?


2) What type of variables normally used in script to o/p data?
3) How do you use tabsets in layouts?
1) Use this Std program RSTXSCRP.
1) First Export to Presentation file(.doc).
2) Whenever you need that Export into SAP.

2) Normally we call them as Program symbols. Those are defined in Driver program.
We can use in Script as for exp. &itab-matnr&
Other variables ---System symbols : ex &page&
---Std symbols :
---Text symbols :We define them in script editor itself.
Ex : /: Define &mysymbol& = 'XX'
3) We can control the tab feed in a paragraph with tab positions. The tab stops us define
in the paragraph format replace the tab spacing we defined in the header data of the form.
However, this depends on the extent to which we have defined tab stops in the paragraph
format. If there are fewer tabs in the paragraph formats than in the header data, the tab
stops of the header data are used for the rest of the line.
SAPscripts Tips by : Venkat O
Q: We get the total number of pages as expected by using 'SAPSCRIPTFORMPAGES' in a duplex layout. In our case duplex case is always 'Terms &
Conditions'. We do not want the number of pages as in duplex printing. What is the
best possible solution?
A: On the Terms & Conditions page, Change the Page counter mode to 'HOLD' to keep
the page counter from incrementing when you print the Term & Conditions.
Q: Can I Print a logo on an Invoice?
A: Save a Logo using Paintshop Pro or Corel Draw as Tiff file. Use RSTXLDMC to
convert the logo to standard text in SapScript. When the program is executed, the path
and file name have to be correctly specified.
Process could be like the following:
Run RSTXLDMC
Enter file name C:\MAIL\COMPLOGO.TIF
Resolution for Tiff file
Absolute X-position
Absolute Y-position
Absolute positioning
Reserved height
Shift to right
UOM = CM
Text title
Line width for text = 132
Text name ZHEX-MACRO-COMPLOGO
Text ID ST
Text language = E
Postscript scaling
Width & Height according to PS scaling

Number of Tiff gray levels (2,4,9) 2


Then Create a new window 'COMP' with attributes;
Window COMP description Company Logo
Window type CONST
Left margin 7.00 CH window width 10.00 CH
Upper margin LN window height 8.00 LN
Finally in the text element , mention
/: INCLUDE 'ZHEX-MACRO-COMPLOGO' OBJECT TEXT ID ST LANGUAGE 'E'.
Please note that if object name is not indicated as 'ZHEX...', the logo may not be printed!
You will not be able to see the logo in a test print. The same will be printed in actual
printout.
If you are using two logos in the same layout, the names of the logos should be unique.
Say 'ZHEX-MACRO-LOGO1' and 'ZHEX-MACRO-LOGO2'. Else all the information
will be overwritten.
If the logo is not EXACTLY TIFF 6.0, the same will not be printed.
See OSS notes 5995, 18045, 39031 for some inputs.

The following system fields are always set automatically.


The GET TIME statement synchronizes the time on the application server with the time
on the database server and writes it to the field SY-UZEIT. SY-DATUM and the system
fields for the local timezone (SY-TIMLO, SY-DATLO, and SY-ZONLO) are also reset.
SY-DATLO
Users local date, for example 19981129, 19990628,
SY-DATUM
Current application server date, for example 19981130, 19990627,
SY-DAYST
X during summertime, otherwise space.
SY-FDAYW
Factory calendar day of the week: Monday = 1 Friday = 5.

SY-TIMLO
Users local time, for example 154353, 225312,
SY-TZONE
Time difference in seconds between local time and Greenwich Mean Time (UTC), for
example,
360, 10800.
SY-UZEIT
Current application server time. for example 164353, 215312,
SY-ZONLO
Users time zone, for example, EST, UTC,
SY-BATCH
X if the ABAP program is running in the background, otherwise space
Batch Input
SY-BINPT
X while a batch input session is running and when an ABAP program is called using
CALL TRANSACTION USING, otherwise space.
OPTIONS FROM in the CALL TRANSACTION USING statement can set SYBINPT to space either for
the entire duration of the program, or at the end of the BDC data.
SY-BINPT is always space during a CATT procedure.
SY-TABIX
Current line of an internal table. SY-TABIX is set by the statements below, but only for
index tables. The field is either not set or is set to 0 for hashed tables.
APPEND sets SY-TABIX to the index of the last line of the table, that is, it contains the
overall number of entries in the table.

COLLECT sets SY-TABIX to the index of the existing or inserted line in the table. If the
table has the type HASHED TABLE, SY-TABIX is set to 0.
LOOP AT sets SY-TABIX to the index of the current line at the beginning of each loop
lass. At the end of the loop, SY-TABIX is reset to the value that it had before entering the
loop. It is set to 0 if the table has the type HASHED TABLE.
READ TABLE sets SY-TABIX to the index of the table line read. If you use a binary
search, and the system does not find a line, SY-TABIX contains the total number of lines,
or one more than the total number of lines. SY-INDEX is undefined if a linear search fails
to return an entry.
SEARCH <itab> FOR sets SY-TABIX to the index of the table line in which the search
string is found.
SY-TFILL
After the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TFILL
contains the number of lines in the relevant internal table.
SY-TLENG
After the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TLENG
contains the length of the lines in the relevant internal table.
SY-TOCCU
After the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TLENG
contains the initial amount of memory allocated to the relevant internal table.

REPORT ZFONT NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65.


* Start of print-control
NEW-PAGE PRINT ON.
PRINT-CONTROL FUNCTION 'SF000'.
WRITE: / 'This is CPI 20'.
SKIP.
PRINT-CONTROL FUNCTION 'SF020'.
WRITE: / 'This is CPI 6'.
SKIP.
PRINT-CONTROL FUNCTION 'SF008'.

WRITE: / 'This is CPI 12'.


* Depending on your SAP printer device, this may also work
PRINT-CONTROL FONT 1 LPI 6.
* you can try to change font and LPI numbers
WRITE: / 'font 1 lpi 6'.
PRINT-CONTROL FONT 2 LPI 6.
WRITE: / 'font 2 lpi 6'.
PRINT-CONTROL FONT 3 LPI 6.
WRITE: / 'font 3 lpi 6'.
* End of print-control

NEW-PAGE PRINT OFF.


REPORT

ZTABSTRIPS LINE-SIZE 120


NO STANDARD PAGE HEADING.

TABLES: ekko, ekpo, eket, marc, t134h.


*---------------------------------------------------------------------*
*
Tab Strips 1
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK vendor WITH FRAME TITLE text-t00.
SELECT-OPTIONS vendor FOR ekko-lifnr.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (10) text-m01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS vplant FOR ekko-reswk.
SELECTION-SCREEN END OF BLOCK vendor.
SELECTION-SCREEN END OF SCREEN 101.
*---------------------------------------------------------------------*
*
Tab Strips 2
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK data1 WITH FRAME TITLE text-t02.
SELECT-OPTIONS: busarea FOR t134h-gsber,
plant
FOR ekpo-werks,
puorg
FOR ekko-ekorg.
SELECTION-SCREEN END OF BLOCK data1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK data2 WITH FRAME TITLE text-t03.
SELECT-OPTIONS sched
FOR ekko-ebeln.
SELECT-OPTIONS matl
FOR ekpo-matnr.
SELECTION-SCREEN END OF BLOCK data2.
SELECTION-SCREEN END OF SCREEN 102.
*---------------------------------------------------------------------*
*
Tab Strips 3
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK rype WITH FRAME TITLE text-t04.

SELECTION-SCREEN BEGIN OF LINE.


PARAMETERS del RADIOBUTTON GROUP one.
SELECTION-SCREEN COMMENT 4(35) text-c05 FOR FIELD del.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS fix RADIOBUTTON GROUP one.
SELECTION-SCREEN COMMENT 4(35) text-c06 FOR FIELD fix.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK rype.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK interval WITH FRAME TITLE text-t05.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS mon RADIOBUTTON GROUP two.
SELECTION-SCREEN COMMENT 4(15) text-c01 FOR FIELD mon.
PARAMETERS evalmon TYPE spbup.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS wek RADIOBUTTON GROUP two.
SELECTION-SCREEN COMMENT 4(15) text-c02 FOR FIELD wek.
PARAMETERS evalweek TYPE sptag.
SELECTION-SCREEN COMMENT 35(30) text-i01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK interval.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK type WITH FRAME TITLE text-t01.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS ext RADIOBUTTON GROUP thr.
SELECTION-SCREEN COMMENT 4(15) text-c08 FOR FIELD int.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS int RADIOBUTTON GROUP thr.
SELECTION-SCREEN COMMENT 4(15) text-c07 FOR FIELD ext.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK type.
SELECTION-SCREEN BEGIN OF BLOCK pre WITH FRAME TITLE text-t06.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS vn RADIOBUTTON GROUP slv.
SELECTION-SCREEN COMMENT 4(15) text-c09 FOR FIELD vn.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS bp RADIOBUTTON GROUP slv.
SELECTION-SCREEN COMMENT 4(17) text-c10 FOR FIELD bp.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK pre.
SELECTION-SCREEN END OF SCREEN 103.
SELECTION-SCREEN BEGIN OF TABBED BLOCK uno FOR 20 LINES.
SELECTION-SCREEN TAB (15) name1 USER-COMMAND ucomm1
DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (17) name2 USER-COMMAND ucomm2
DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (23) name3 USER-COMMAND ucomm3
DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK uno.
INITIALIZATION.
name1 = text-n01.

name2 = text-n02.

name3 = text-n03.
REPORT ZSUBSCREEN.
TABLES: USR02,
"Logon data
SSCRFIELDS. "FIELDS ON SELECTION SCREENS
*--------------------------------------------------------------* SUBSCREEN 1
*--------------------------------------------------------------SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-010.
SELECT-OPTIONS: USERNAME FOR USR02-BNAME.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN END OF SCREEN 100.
*--------------------------------------------------------------* SUBSCREEN 2
*--------------------------------------------------------------SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-020.
SELECT-OPTIONS: LASTLOGI FOR USR02-TRDAT.
SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN END OF SCREEN 200.
*--------------------------------------------------------------* SUBSCREEN 3
*--------------------------------------------------------------SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-030.
SELECT-OPTIONS: CLASSTYP FOR USR02-CLASS.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN END OF SCREEN 300.
* STANDARD SELECTION SCREEN FOR SCROLLING LEFT AND RIGHT
SELECTION-SCREEN: FUNCTION KEY 1,
FUNCTION KEY 2.
SELECTION-SCREEN: BEGIN OF TABBED BLOCK SUB FOR 15 LINES,
END OF BLOCK SUB.
START-OF-SELECTION.
SELECT * FROM USR02 WHERE BNAME IN USERNAME
AND ERDAT IN LASTLOGI
AND CLASS IN CLASSTYP.
WRITE: / 'User ', USR02-BNAME,
'Last Login Date ', USR02-TRDAT,
'Last Login Time ', USR02-LTIME,
'CLASS ', USR02-CLASS.
ENDSELECT.
END-OF-SELECTION.
INITIALIZATION.
* SCREEN ICON LEFT AND RIGHT
SSCRFIELDS-FUNCTXT_01 = '@0D@'.
SSCRFIELDS-FUNCTXT_02 = '@0E@'.

SUB-PROG = SY-REPID.
SUB-DYNNR = 100.
AT SELECTION-SCREEN.
CASE SY-DYNNR.
WHEN 100.
IF SSCRFIELDS-UCOMM = 'FC01'.
SUB-DYNNR = 300.
ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
SUB-DYNNR = 200.
ENDIF.
WHEN 200.
IF SSCRFIELDS-UCOMM = 'FC01'.
SUB-DYNNR = 100.
ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
SUB-DYNNR = 300.
ENDIF.
WHEN 300.
IF SSCRFIELDS-UCOMM = 'FC01'.
SUB-DYNNR = 200.
ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
SUB-DYNNR = 100.
ENDIF.

ENDCASE.

You might also like