Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

doubt

Former Member
0 Likes
947

hi

given a code , what is the best way to understand how the code works, especially when it is too lengthy.

thanks in advance

4 REPLIES 4
Read only

Former Member
0 Likes
754

Contents

1.Events Related to Reports ………………………………………………. 04

2.Table Declaration………………………………………………………… 04

3.Structure Declaration…………………………………………………….. 04

4.Internal Table Declaration……………………………………………….. 05

5.Declaration of ITAB for BDC…………………………………………… 05

6.Table Control Declaration………………………………………………… 05

7.Table Control Line Definition……………………………………………. 05

8.Variable Declaration……………………………………………………… 05

9.Field Symbol Declaration………………………………………………… 06

10.Constants Declaration…………………………………………………….. 06

11.Functions Declaration…………………………………………………….. 06

12.Transaction Code…………………………………………………………. 06

13.Selection Screen Type

a) Type – I …………………………………………………………... 07

b) Type – II………………………………………………………….. 07

c) Type – III (Tabbed Selection Screen)…………………………….. 07

d) AT SELECTION-SCREEN OUTPUT…………………………… 09

e) AT SELECTION SCREEN ON VALUE REQUEST……………….. 10

f) AT SELECTION SCREEN FOR FIELDS……………………………. 11

g) START OF SELECTION……………………………………………….. 11

h) END OF SELECTION………………………………………………….. 11

i) FORM LOG_WRITE_START…………………………………………………. 11

j) FORM P_ERROR_LOG_END…………………………………………………. 12

14.Message Display…………………………………………………………. 12

15.Range Statement………………………………………………………….. 13

16.Select Query types

1Select Single……………………………………………………. 13

2Upto 1 rows…………………………………………………….. 13

3Into vbak-vbeln………………………………………………… 13

4Inner Join………………………………………………………. 13

5For All Entries…………………………………………………. 14

6Appending Corresponding Fields……………………………… 14

17. SQL Statement…………………………………………………………… 15

18.To get Field Names from SAP Table…………………………………….. 16

19.Runtime Exception Handling……………………………………………………….. 16

20.To get Field Names from Internal Table…………………………………. 17

21.Different Statements

Read Statement……………………………………………………… 18

Delete Statement…………………………………………………….. 18

Describe Statement………………………………………………….. 19

Sort Statement……………………………………………………….. 19

Split Statement………………………………………………………. 19

Concatenate Statement………………………………………………. 19

Shift Statement………………………………………………………. 19

Submit Statement……………………………………………………. 19

Write Statement………………………………………………………. 20

Modify Statement…………………………………………………….. 20

Edit Mask Statement………………………………………………… 21

22.Runtime Error Handling……………………………………………………

23. Modifying an Internal Table…………………………………………………

24. Inserting a line at a specified position……………………………………….

25.Using Logical Database……………………………………………………. 22

26.Transfer Data to a file………………………………………………………. 22

27.Reading Data from a file……………………………………………………. 22.

28.Use of Field symbols and Assign Statement…………………………………24

29.Popup Screen…………………………………………………………………24

30.Program Statement in BDC…………………………………………………..24

31.Adding BDC Screen………………………………………………………….25

32.Call Transaction Syntax………………………………………………………25

33.Handling BDC Error Messages………………………………………………26

34.Populate Dropdown Menu(Not from Table)………………………………….

35.Refreshing Table Control……………………………………………………..26

36.Set Cursor Syntax……………………………………………………………. 26

37.Get Cursor Syntax……………………………………………………………. 27

38.PBO…………………………………………………………………………... 27

39.PAI…………………………………………………………………………….

40.Passing Values from Table Control to Internal Table…………………………

41.Generating a Program…………………………………………………………

42.Running a Report using Submit Statement……………………………………

43.External Perform(Caller)………………………………………………………

44.External Perform(Called from)………………………………………………..

45.Dynamic External program(Call Back from)………………………………….

46.Dynamic Open Commands : Table Name……………………………………..

47.Exporting to ABAP/4 Memory…………………………………………………

48.Importing from ABAP/4 Memory………………………………………………

49.Using Symbols and Icons………………………………………………………

50.Using Colors……………………………………………………………………

51.Classifying Parameters…………………………………………………………

52.Using Table Parameters………………………………………………………..

53.Working with Hide Command…………………………………………………

54.Uploading Files from PC(Presentation Server)………………………………...

55.Downloading Files to PC(Presentation Server)………………………………...

56.Uploading, Downloading files to/from Appln Server and Lock Mechanisms…

57.Creating a new program via ABAP………………………………………………

58.Conversion of Date to Characters………………………………………………...

59.Smart Forms………………………………………………………………………

60.SapScript………………………………………………………………………….

Types of Symbols

Script copy from one client to another Client

To display data only in last page.

General Points

Events related to reports

Initialization : triggered when the report is loaded in memory.

At selection-screen output : triggered when the selection screen is loaded in memory before being displayed.

At selection-screen / . "行選択

Constants Declaration

CONSTANTS:

CNS_YEAR TYPE NUM4 VALUE 1800, "年判断

CNS_MSGTPS TYPE CHAR1 VALUE 'S',

CNS_DZERO TYPE CHAR8 VALUE '00000000', "日付0

Function Declaration

CONSTANTS: BEGIN OF FUNC,

DOWN LIKE SY-UCOMM VALUE 'CUSTOMS',"輸入通関依頼機能

SAVE LIKE SY-UCOMM VALUE 'SAVE', "保存機能コード

BACK LIKE SY-UCOMM VALUE 'BACK', "前画面機能コード

EXIT LIKE SY-UCOMM VALUE '%EX', "終了機能コード

CANC LIKE SY-UCOMM VALUE 'RW', "中止機能コード

MARK LIKE SY-UCOMM VALUE 'MARK', "全選択

DMRK LIKE SY-UCOMM VALUE 'DMARK', "全解除

END OF FUNC.

Transaction Code Declaration

CONSTANTS : BEGIN OF TCODE, "輸入ステータス一覧

EDIT LIKE SY-TCODE VALUE 'ZMME271', "(変更)

DISP LIKE SY-TCODE VALUE 'ZMME272', "(照会)

VT02 LIKE SY-TCODE VALUE 'VT02', "シップメント変更

VT03 LIKE SY-TCODE VALUE 'VT03', "シップメント照会

MB1A LIKE SY-TCODE VALUE 'MB1A', "出庫登録

ME21 LIKE SY-TCODE VALUE 'ME21', "購買伝票登録

END OF TCODE.

CONSTANTS : BEGIN OF PAGE,

FIST LIKE SY-UCOMM VALUE 'P--', "第一ページ

PREV LIKE SY-UCOMM VALUE 'P-' , "前ページ

NEXT LIKE SY-UCOMM VALUE 'P+' , "次ページ

LAST LIKE SY-UCOMM VALUE 'P++', "最終ページ

END OF PAGE.

Selection Screen Types

Type : I

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(18) TEXT-P01.

SELECTION-SCREEN POSITION 22.

SELECT-OPTIONS : S_TKNUM FOR VTTK-TKNUM. "シップメント番号

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(18) TEXT-P02.

SELECTION-SCREEN POSITION 22.

SELECT-OPTIONS : S_SPART FOR TSPA-SPART. "製品部門

SELECTION-SCREEN END OF LINE.

Type : II

SELECTION-SCREEN BEGIN OF BLOCK B_TITLE01 WITH FRAME TITLE TEXT-P01.

SELECT-OPTIONS:

S_OTNAK FOR ZTET001-ZZOTUNAKACD, "乙仲コード

S_SHIPDY FOR ZTET001-ZZSHIPDY OBLIGATORY,

PARAMETERS: P_SHIMUK LIKE ZTET001-ZZEXPKOKUMEI. "国コード

SELECT-OPTIONS: S_SEIHIN FOR TSPA-SPART, "製品部門

S_BUNDIV FOR ZTEM003-ZZBUNDIV, "新旧バン区分

S_INVDAT FOR ZTET010-ZZINSDT. "請求伝票登録日

PARAMETERS: P_FILNAM LIKE RLGRAP-FILENAME. "アップロード/

SELECTION-SCREEN END OF BLOCK B_TITLE01.

Type : III Tabbed Selection Screen

SELECTION-SCREEN BEGIN OF BLOCK TAISHOU WITH FRAME TITLE TEXT-T00.

PARAMETERS: P_GENBA1 AS CHECKBOX, "チェックボックス

P_GENBA2 AS CHECKBOX, "チェックボックス

P_SORUI1 AS CHECKBOX, "チェックボックス

P_SORUI2 AS CHECKBOX. "チェックボックス

SELECTION-SCREEN END OF BLOCK TAISHOU.

*----

-


SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.

SELECT-OPTIONS : S_VENG1 FOR LFA1-LIFNR, "仕入先または債権者

S_SOTYG1 FOR TVAK-AUART, "販売伝票タイプ

S_PDNOG1 FOR MARA-MATNR. "品目コード

SELECTION-SCREEN END OF SCREEN 101.

*----

-


SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.

SELECT-OPTIONS : S_VENG2 FOR LFA1-LIFNR, "仕入先または債権者

S_YUKOG2 FOR MARA-DATAB, "有効開始日

S_PDNOG2 FOR MARA-MATNR.

SELECTION-SCREEN END OF SCREEN 102.

*----

-


SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.

SELECT-OPTIONS : S_VENS1 FOR LFA1-LIFNR, "仕入先または債権者

S_SOTYS1 FOR TVAK-AUART, "販売伝票タイプ

S_ITRMS2 FOR TINC-INCO1. "インコタームズ (1)

SELECTION-SCREEN END OF SCREEN 103.

*----

-


SELECTION-SCREEN BEGIN OF SCREEN 104 AS SUBSCREEN .

SELECT-OPTIONS : S_VENS2 FOR LFA1-LIFNR, "仕入先または債権者

S_SEIS2 FOR TSPA-SPART, "製品部門

S_JUSKS2 FOR KNA1-KUNNR. "得意先コード

SELECTION-SCREEN END OF SCREEN 104.

SELECTION-SCREEN BEGIN OF TABBED BLOCK MAIN FOR 10 LINES .

SELECTION-SCREEN TAB (15) TEXT-N01 USER-COMMAND GENBA1

DEFAULT SCREEN 101.

SELECTION-SCREEN TAB (15) TEXT-N02 USER-COMMAND GENBA2

DEFAULT SCREEN 102.

SELECTION-SCREEN TAB (15) TEXT-N03 USER-COMMAND SHORUI1

DEFAULT SCREEN 103.

SELECTION-SCREEN TAB (15) TEXT-N04 USER-COMMAND SHORUI2

DEFAULT SCREEN 104.

SELECTION-SCREEN END OF BLOCK MAIN.

AT SELECTION-SCREEN OUTPUT.

PARAMETERS: rb1 RADIOBUTTON GROUP g1 USER-COMMAND rb1,

rb2 RADIOBUTTON GROUP g1,

rb3 RADIOBUTTON GROUP g1,

cb1 AS CHECKBOX USER-COMMAND cb1,

radio LIKE mara-matnr MODIF ID rb,

check LIKE mara-matnr MODIF ID cb.

AT SELECTION-SCREEN OUTPUT.

CASE 'X'.

WHEN rb1.

LOOP AT SCREEN.

IF screen-group1 = 'RB'.

screen-input = '1'.

screen-output = '1'.

screen-invisible = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

WHEN rb2.

LOOP AT SCREEN.

IF screen-group1 = 'RB'.

screen-input = '0'.

screen-output = '1'.

screen-invisible = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

WHEN rb3.

LOOP AT SCREEN.

IF screen-group1 = 'RB'.

screen-input = '0'.

screen-output = '0'.

screen-invisible = '1'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDCASE.

LOOP AT SCREEN.

IF screen-group1 = 'CB' AND cb1 = 'X'.

screen-input = '0'.

screen-output = '0'.

screen-invisible = '1'.

ELSEIF screen-group1 = 'CB'.

screen-input = '1'.

screen-output = '1'.

screen-invisible = '0'.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

AT SELECTION SCREEN ON VALUE REQUEST

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILNAM.

PERFORM FILE_NAME_GET_SLS USING P_FILNAM.

AT SELECTION SCREEN FOR FIELDS

AT SELECTION-SCREEN ON S_SPART.

PERFORM CHECK_SPART_SLS.

AT SELECTION-SCREEN ON S_MATKL.

PERFORM CHECK_MATKL_SLS.

START OF SELECTION.

START-OF-SELECTION.

PERFORM LOG_WRITE_START.

PERFORM INIT_PRC. "内部テーブル及び変数の初期化.

PERFORM SHIPMENT_EXTRACTION_PRC. "シップメント情報抽出

END OF SELECTION.

END-OF-SELECTION.

PERFORM P_ERROR_LOG_END. "ログ書き込みを終了する

FORM LOG_WRITE_START.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,

WRK_MSGV4,WRK_MSGNO,WRK_SUBRC.

WRK_MSGNO = CNS_MSG043.

WRK_MSGV1 = CNS_PRGNAME.

PERFORM ERROR_LOG USING WRK_MSGID "ログ出力

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

ENDFORM. " LOG_WRITE_START

FORM P_ERROR_LOG_END.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,

WRK_MSGV4,WRK_MSGNO,WRK_SUBRC.

WRK_MSGV1 = CNS_PRGNAME.

WRK_MSGNO = CNS_MSG044.

PERFORM ERROR_LOG USING WRK_MSGID "&#12525;&#12464;&#12395;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#20986;&#12377;

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

ENDFORM. " P_ERROR_LOG_END

Message Display

MESSAGE E038 WITH '&#37197;&#33337;F&#12539;&#22522;&#26412;&#24773;&#22577;(ZTET001)'

'&#37197;&#33337;&#31649;&#29702;No(ZZHAISEN)'

S_HAISEN-LOW

S_HAISEN-HIGH.

Message Types

Type

Display

Action

I - Info

Dialog window

'Press Enter to continue'.

W - Warning

Status window

'Correction possible'.

= E for Lists Processing

E - Error

Status window

'Correction required'.

= A for Processing of basic list,

returns to the previous list level for a secondary list.

A - Abend

Dialog window

'Transaction terminated'.

X - eXit

Status window

= A, but transaction terminated with short dump

MESSAGE_TYPE_X

S - Success

Status window

'Message on next screen'.

Range Statement

data: r_tcode type range of tstc-tcode with header line.

r_tcode-sign = 'I'.

r_tcode-option = 'CP'.

r_tcode-low = 'SE*'.

append r_tcode.

select tcode pgmna up to 10 rows

from tstc into table it_tstc

where tcode in r_tcode.

Select Statement Types

Type : 01

SELECT SINGLE BUKRS INTO WRK_TEMP

FROM T001

WHERE WAERS = 'JPY'.

The 'SELECT SINGLE' statement selects the first row in the database that it finds that fulfils the 'WHERE' clause. If this results in multiple records then only the first one will be returned and therefore may not be unique.

This causes a problem in the Extended Program Check in that if the full key is not specified in a 'SELECT SINGLE'

Type : 02&#12288;(a)

SELECT PERIV INTO WRK_TEMP FROM T001

UP TO 1 ROWS

.

WRITE 😕 WRK_TEMP1.

ENDSELECT.

The 'SELECT .... UP TO 1 ROWS' statement is subtly different. The database selects all of the relevant records that are defined by the WHERE clause or lack of, applies any aggregate, ordering or grouping functions to them and then returns the first record of the resultant result set.

(b)&#12288;SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.

MOVE-CORRESPONDING MKPF TO INT_MKPF.

APPEND INT_MKPF.

ENDSELECT.

Type : 03

SELECT SPART INTO TSPA-SPART FROM TSPA CLIENT SPECIFIED

WHERE MANDT = SY-MANDT "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;

AND SPART IN S_SPART. "&#35069;&#21697;&#37096;&#38272;

EXIT.

ENDSELECT.

Type : 04

SELECT A~TKNUM A~SHTYP A~TDLNR A~EXTI1 A~EXTI2 A~DPREG A~DAREG B~TKNUM B~VBELN INTO CORRESPONDING FIELDS OF TABLE TAB08_SHPHEAD FROM VTTK AS A INNER JOIN VTTP AS B

ON ( A~MANDT = B~MANDT

AND A~TKNUM = B~TKNUM )

CLIENT SPECIFIED

WHERE A~MANDT = SY-MANDT "&#12463;&#12521;&#12450;&#12531;&#12488;

AND A~TKNUM IN S_TKNUM "Shipment&#30058;&#21495;

AND A~SHTYP IN S_SHTYP. "&#12479;&#12452;&#12503;

Type : 05 For all Entries

SELECT A~VBELN A~BTGEW A~LFART A~LIFEX A~GEWEI A~NTGEW B~POSNR B~VBELN B~VGPOS B~VGBEL B~MATNR

INTO CORRESPONDING FIELDS OF TABLE ITAB09_SHPCHK

FROM LIKP AS A INNER JOIN LIPS AS B

ON ( A~MANDT = B~MANDT

AND A~VBELN = B~VBELN )

CLIENT SPECIFIED

FOR ALL ENTRIES IN ITAB_DATA

WHERE A~MANDT = SY-MANDT "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;

AND A~VBELN = ITAB_DATA-VBELN "&#20986;&#33655;&#20253;&#31080;

AND A~LIFNR IN S_LIFNR "&#20181;&#20837;&#20808;

AND A~LFART = CNS_LFART.

Type : 06 Appending Corresponding Fields

SELECT ZZVENDCD ZZSEIHINDIV SHTYP ZZNIDUMICDIV

ZZNIAGECDIV ZZIMPMATNR INFNR ZZMENGE

APPENDING CORRESPONDING FIELDS OF TABLE ITAB13_ZTEM071

FROM ZTEM071

CLIENT SPECIFIED

WHERE MANDT = SY-MANDT "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;

AND ZZVENDCD = WRK_LIFNR "&#20181;&#20837;&#20808;&#12467;&#12540;&#12489;

AND ZZSEIHINDIV = WRK_SPART "&#12501;&#12449;&#12452;&#12523;&#12497;&#12479;&#12540;&#12531;

AND SHTYP = WRK_SHTYP1 "&#12471;&#12483;&#12503;&#12513;&#12531;&#12488;&#12479;&#12452;&#12503;

AND ZZNIAGECDIV = WRK_KNOTZ+0(5).

Sql Statements

(a) Insert Statement

ZMMT302-ZZZAIKOCLSCD = ITAB02_KOUSHIN-ZZZAIKOCLSCD.

ZMMT302-ZZZAIKONAIYO = ITAB02_KOUSHIN-ZZNAIYOU.

ZMMT302-ZZERRORKUBUN = ITAB02_KOUSHIN-ZZERRORKUBUN.

INSERT ZMMT302.

(b) Update Statement

UPDATE ZMMT301 CLIENT SPECIFIED

SET ZZDATAKUBUN = CNS_0

WHERE MANDT = SY-MANDT

AND LIFNR = WRK_VENDOR

AND ZZSOKOCD = WRK_SOKOCD.

(C) Delete Statement

DELETE FROM ZSDT302 CLIENT SPECIFIED

WHERE MANDT = SY-MANDT

AND LIFNR = ITAB_DELETE-LIFNR

AND ZZCATALOGCD = ITAB_DELETE-ZZCATALOGCD

AND ZZJANCD = ITAB_DELETE-ZZJANCD.

To Get Fields Name in a SAP table

DDIF_TABL_GET

Runtime Exceptions

CATCH SYSTEM-EXCEPTIONS ARITHMETIC_ERRORS = 5.

WRK_L_LNETWRS = WRK_L_LNETWRS + TTAB_FREIGHT_DIS-NETWR.

WRK_L_LNAVNW = WRK_L_LNAVNW + TTAB_FREIGHT_DIS-NAVNW.

WRK_L_AMT = WRK_L_AMT + TTAB_FREIGHT_DIS-TOTAL.

ENDCATCH.

IF SY-SUBRC = 5.

PERFORM P11100_OVERFLOW_PRC.

ENDIF.

FORM P11100_OVERFLOW_PRC.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,

WRK_MSGV4,WRK_MSGNO,WRK_SUBRC.

WRK_MSGNO = CNS_MSG061.

PERFORM ERROR_LOG USING WRK_MSGID "&#12525;&#12464;&#12395;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#20986;&#12377;

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

IF WRK_SUBRC -1234

Runtime Error Handling

LOOP AT TTAB04_FREIGHT_PO

WHERE EBELN = TTAB05_FREIGHT-EBELN.

CATCH SYSTEM-EXCEPTIONS ARITHMETIC_ERRORS = 5.

WRK_L_NETWR = WRK_L_NETWR + TTAB04_FREIGHT_PO-NETWR.

WRK_L_NAVNW = WRK_L_NAVNW + TTAB04_FREIGHT_PO-NAVNW.

ENDCATCH.

IF SY-SUBRC = 5.

  • Write in a log at the time of data overflow.

PERFORM P11100_OVERFLOW_PRC……..(Refer Page 16)

ENDIF.

ENDLOOP.

Inserting a line at a specified position

CUSTOMER_CITIES-ID = '00000005'.

CUSTOMER_CITIES-CITY = 'Pleasant Site'.

INSERT CUSTOMER_CITIES INDEX 3.

Using a Logical Database

  • Work areas

TABLES: CUSTOMERS, BOOKINGS.

  • Reading data

GET CUSTOMERS.

WRITE / CUSTOMERS-NAME.

GET BOOKINGS.

WRITE: AT /3 BOOKINGS-FLDATE.

Transfering Data to a File

REPORT CHAP2601.

  • Data declarations for later use

PARAMETERS FILENAME(128) DEFAULT '/usr/tmp/testfile.dat'

LOWER CASE.

TABLES CUSTOMERS.

DATA MSG_TEXT(50).

  • Get data for file transfer

DATA ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100

WITH HEADER LINE.

SELECT * FROM CUSTOMERS INTO TABLE ALL_CUSTOMERS.

SORT ALL_CUSTOMERS BY CITY.

LOOP AT ALL_CUSTOMERS.

WRITE: / ALL_CUSTOMERS-CITY,

ALL_CUSTOMERS-NAME.

ENDLOOP.

  • Opening the File

OPEN DATASET FILENAME FOR OUTPUT IN TEXT MODE

MESSAGE MSG_TEXT.

IF SY-SUBRC NE 0.

WRITE: 'File cannot be opened. Reason:', MSG_TEXT.

EXIT.

ENDIF.

  • Transferring Data

LOOP AT ALL_CUSTOMERS.

TRANSFER ALL_CUSTOMERS-NAME TO FILENAME.

ENDLOOP.

  • Closing the File

CLOSE DATASET FILENAME.

Reading Data from a File

REPORT CHAP2602.

  • Data declarations for later use

TABLES CUSTOMERS.

PARAMETERS FILENAME(128) DEFAULT '/usr/tmp/testfile.dat'

LOWER CASE.

DATA: MSG_TEXT(50),

ALL_CUSTOMER_NAMES LIKE CUSTOMERS-NAME OCCURS 100

WITH HEADER LINE.

  • Opening the File

OPEN DATASET FILENAME FOR INPUT IN TEXT MODE

MESSAGE MSG_TEXT.

IF SY-SUBRC NE 0.

WRITE: 'File cannot be opened. Reason:', MSG_TEXT.

EXIT.

ENDIF.

  • Reading Data

DO.

READ DATASET FILENAME INTO ALL_CUSTOMER_NAMES.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

APPEND ALL_CUSTOMER_NAMES.

ENDDO.

  • Closing the file

CLOSE DATASET FILENAME.

  • Display the result

LOOP AT ALL_CUSTOMER_NAMES.

WRITE / ALL_CUSTOMER_NAMES.

ENDLOOP.

Use of Field Symbols and Assign Statement

REPORT CHAP2403.

  • Table work area for later use

TABLES CUSTOMERS.

  • Defining a Field Symbol

FIELD-SYMBOLS .

  • Displaying all fields of all table entries

SELECT * FROM CUSTOMERS.

NEW-LINE.

DO.

ASSIGN COMPONENT SY-INDEX OF STRUCTURE CUSTOMERS TO .

ENDDO.

ENDSELECT.

Pop-Up Screens

TABLES spfli.

  • Processing data

START-OF-SELECTION.

SELECT * FROM spfli.

WRITE / spfli-carrid HOTSPOT ON.

ENDSELECT.

  • Single click

AT LINE-SELECTION.

WINDOW STARTING AT 10 10

ENDING AT 40 20.

WRITE 'This is my first window'.

Program statement for BDC

PERFORM GET_SCREEN_DATA USING 'SAPMV56A' '0020'.

PERFORM GET_FIELD_DATA USING 'BDC_SUBSCR' 'SAPMV56A'.

PERFORM GET_FIELD_DATA USING 'VTTK-EXTI1' TTAB_PLNINFM-EXTI1.

PERFORM GET_FIELD_DATA USING 'VTTK-EXTI2' TTAB_PLNINFM-EXTI2.

PERFORM GET_FIELD_DATA USING 'BDC_SUBSCR' 'SAPMV56A'.

Adding BDC Screen

FORM GET_SCREEN_DATA USING LI_VAL1

LI_VAL2.

CLEAR : ITAB_BDC.

ITAB_BDC-PROGRAM = LI_VAL1.

ITAB_BDC-DYNPRO = LI_VAL2.

ITAB_BDC-DYNBEGIN = CNS_VALUEX.

APPEND ITAB_BDC.

ENDFORM.

FORM GET_FIELD_DATA USING LI_VAL1

LI_VAL2.

CLEAR ITAB_BDC.

ITAB_BDC-FNAM = LI_VAL1.

ITAB_BDC-FVAL = LI_VAL2.

APPEND ITAB_BDC.

ENDFORM.

Call Transaction Syntax

CALL TRANSACTION TCODE-VT03 USING ITAB_BDC

MODE MODE-A

[ UPDATE ]

MESSAGES INTO ITAB_MESSTAB.

Types of Modes

1.Display Mode

A – Display All

E – Display only if there are errors

N – Display Nothing(Normal Mode)

2.Update Mode

S – Do not continue processing until update has finished(synchronous)

A – Continue Processing Immediately.

Handling of BDC Error Messages

DESCRIBE TABLE ITAB04_MESSTAB LINES WRK_L_RECCOU.

READ TABLE ITAB04_MESSTAB INDEX WRK_L_RECCOU.

IF SY-SUBRC = 0.

MESSAGE ID ITAB_MESSTAB-MSGID "&#12473;&#12486;&#12540;&#12479;&#12473;&#12513;&#12483;&#12475;&#12540;&#12472;&#12398;&#21462;&#24471;

TYPE ITAB_MESSTAB-MSGTYP

NUMBER ITAB_MESSTAB-MSGNR WITH

ITAB_MESSTAB-MSGV1

ITAB_MESSTAB-MSGV2

ITAB_MESSTAB-MSGV3

ITAB_MESSTAB-MSGV4

INTO ITAB20_MB1A-ERROR. "&#12456;&#12521;&#12540;&#12513;&#12483;&#12475;&#12540;&#12472;&#12486;&#12461;&#12473;&#12488;

ITAB20_MB1A-MSGTYP = ITAB_MESSTAB-MSGTYP.

ITAB20_MB1A-TKNUM = TTAB_SCDLEINFM-TKNUM.

IF ITAB20_MB1A-MSGTYP = 'E'.

ITAB20_MB1A-FLG_ERR = CNS_VALUEX.

FLG_MB1A = CNS_VALUEX.

ENDIF.

Refreshing a Table Control

REFRESH CONTROL 'TBC_9300' FROM SCREEN '9300'.

CALL SCREEN 9300.

Table Control Column Hide

DATA : &#12288;WA LIKE LINE OF TBC_9000-COLS.

FORM HIDE_9000_I.

LOOP AT TBC_9000-COLS INTO WA.

IF WA-SCREEN-GROUP1 = 'SC1'.

WA-INVISIBLE = 1.&#12288;OR WA-INVISIBLE = 0.

MODIFY TBC_9000-COLS FROM WA.

ENDIF.

ENDLOOP.

ENDFORM. " HIDE_9000_I

Disabling or hiding screen fields

       Loop at screen.

              If screen-group1 eq 'DAT'.

                    Screen-invisible = 1. 

                   Modify screen.

              Endif.

           Endloop.

Disabling Menus or toolbar buttons

SET PF-STATUS 'ABC EXCLUDING EXCL_TAB.      

Set Cursor Syntax

SET CURSOR FIELD 'ITAB06_SCDLEINFM-KNOTA'

LINE TBC_9003-CURRENT_LINE.

Get Cursor Syntax

GET CURSOR FIELD WRK_CURFIELD LINE WRK_ZEILE.

DYNPRO Flow Logic

PROCESS BEFORE OUTPUT.

MODULE SET_CURSOR_9001O.

LOOP AT ITAB01_FREIGHT

WITH CONTROL TBC_9001

CURSOR TBC_9001-CURRENT_LINE.

    • &#25277;&#20986;&#12375;&#12383;&#12487;&#12540;&#12479;&#12434;&#12486;&#12540;&#12502;&#12523;&#12467;&#12531;&#12488;&#12525;&#12540;&#12523;&#65352;&#12398;&#31227;&#21205;

MODULE TBC_9001_GET_LINES.

MODULE TBC_9002_GET_LINES OUTPUT.

MOVE-CORRESPONDING ITAB05_TRINFM TO TBC_9002.

G_TBC_9002_LINES = SY-LOOPC.

ENDMODULE.

PROCESS AFTER INPUT.

LOOP AT ITAB01_FREIGHT.

CHAIN.

FIELD : ITAB01_FREIGHT-TKNUM.

MODULE PICKUP.

FIELD : ITAB01_FREIGHT-KNOTA,

ITAB01_FREIGHT-DPREG,

ITAB01_FREIGHT-KNOTZ,

ITAB01_FREIGHT-DPABF.

MODULE LOAD_DLRY_PORTCD_9001I ON CHAIN-REQUEST.

ENDCHAIN.

FIELD ITAB01_FREIGHT-TKNUM

MODULE DATE_PAYMENT_9001I ON REQUEST.

MODULE CHANGE_FLDVALUES_9001I.

MODULE TBL_CTRL_TO_ITAB_9001I.

ENDLOOP.

MODULE TBL_CTRL_TO_ITAB_9001I INPUT.

MOVE-CORRESPONDING TBC_9001 TO ITAB01_FREIGHT.

MODIFY ITAB01_FREIGHT INDEX TBC_9001-CURRENT_LINE.

G_TBC_9001_LINES = SY-LOOPC.

ENDMODULE.

MODULE TBC_9001_GET_LINES OUTPUT.

MOVE-CORRESPONDING ITAB01_FREIGHT TO TBC_9001.

G_TBC_9001_LINES = SY-LOOPC.

ENDMODULE.

EDIT/UNEDIT MODE IN TABLE CONTROL

PERFORM ACTUAL_DATE_EDIT_MODE_ICD USING 'ITAB06_SCDLEINFM-DAREG'

CNS_VALUEX.

FORM ACTUAL_DATE_EDIT_MODE_ICD USING LI_DATE

LI_VALUEX.

IF ITAB06_SCDLEINFM-IDX = WRK_LINE.

LOOP AT SCREEN.

CHECK SCREEN-NAME = LI_DATE.

IF LI_VALUEX = CNS_VALUEX.

SCREEN-INPUT = 0.

ELSE.

SCREEN-INPUT = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ENDIF.

ENDFORM. " ACTUAL_DATE_EDIT_MODE_ICD

PERFORM SELECT_TABLE_CONTROL_ICD USING WRK_TABLE1

WRK_TABLE2

WRK_TABLE3

WRK_TABLE4.

FORM SELECT_TABLE_CONTROL_ICD USING LI_TAB1

LI_TAB2

LI_TAB3

LI_TAB4.

CLEAR : WRK_DATA,WRK_DATA1,WRK_TKNUM.

CONCATENATE LI_TAB1 '[]' INTO WRK_TNAME.

ASSIGN (WRK_TNAME) TO .

    • &#36664;&#36865;&#24773;&#22577;&#12479;&#12502;

PERFORM RECORD_SELECTION USING LI_TAB2 WRK_DATA WRK_DATA1.

    • &#26085;&#31243;&#24773;&#22577;&#12479;&#12502;

PERFORM RECORD_SELECTION USING LI_TAB3 WRK_DATA WRK_DATA1.

    • &#35336;&#30011;&#24773;&#22577;&#12479;&#12502;

PERFORM RECORD_SELECTION USING LI_TAB4 WRK_DATA WRK_DATA1.

ENDLOOP.

ENDFORM. " SELECT_TABLE_CONTROL_ICD

FORM RECORD_SELECTION USING LI_TAB2

LI_DATA1

LI_DATA2.

CLEAR WRK_TKNUM.

CONCATENATE LI_TAB2 '[]' INTO WRK_TNAME.

ASSIGN (WRK_TNAME) TO = ' '.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " RECORD_SELECTION

MODULE USER_COMMAND_9001I INPUT.

CASE SY-UCOMM.

    • &#12506;&#12540;&#12472;&#12467;&#12531;&#12488;&#12525;&#12540;&#12523;&#27231;&#33021;&#12398;&#22580;&#21512;

WHEN PAGE-FIST OR "&#31532;&#19968;&#12506;&#12540;&#12472;

PAGE-PREV OR "&#21069;&#12506;&#12540;&#12472;

PAGE-NEXT OR "&#27425;&#12506;&#12540;&#12472;

PAGE-LAST. "&#26368;&#32066;&#12506;&#12540;&#12472;

PERFORM PAGE_CTRL_FUNCTION_ICD USING 'TBC_9001' SY-UCOMM.

    • &#34892;&#36984;&#25246;&#12289;&#35299;&#38500;&#27231;&#33021;&#12398;&#22580;&#21512;

WHEN FUNC-MARK OR FUNC-DMRK.

PERFORM SELECT_DELESELCT_ICD USING 'TBC_9001'

'ITAB01_FREIGHT'

'REC'

SY-UCOMM.

ENDCASE.

ENDMODULE. " USER_COMMAND_9001I INPUT

FORM PAGE_CTRL_FUNCTION_ICD USING LI_TBLCTRL LI_OKCODE.

*-BEGIN OF LOCAL DATA----


*

DATA L_TC_NEW_TOP_LINE TYPE I.

DATA L_TC_NAME LIKE FELD-NAME.

DATA L_TC_LINES_NAME LIKE FELD-NAME.

DATA L_TC_FIELD_NAME LIKE FELD-NAME.

FIELD-SYMBOLS TYPE I.

*-END OF LOCAL DATA----


*

ASSIGN (LI_TBLCTRL) TO .

  • &#12486;&#12540;&#12502;&#12523;&#12467;&#12531;&#12488;&#12525;&#12540;&#12523;&#12523;&#12540;&#12503;&#12521;&#12452;&#12531;&#12398;&#12466;&#12483;&#12488;

CONCATENATE 'G_' LI_TBLCTRL '_LINES' INTO L_TC_LINES_NAME.

ASSIGN (L_TC_LINES_NAME) TO

OK_CODE = LI_OKCODE

OVERLAPPING &#12288; = CNS_VALUEX

IMPORTING&#12288;

ENTRY_NEW = L_TC_NEW_TOP_LINE

EXCEPTIONS

NO_ENTRY_OR_PAGE_ACT = 0

NO_ENTRY_TO &#12288; = 0

NO_OK_CODE_OR_PAGE_GO = 0

OTHERS &#12288;&#12288; = 99.

ENDIF.

GET CURSOR FIELD L_TC_FIELD_NAME

AREA L_TC_NAME.

IF SYST-SUBRC = 0.

IF L_TC_NAME = LI_TBLCTRL.

  • &#21015;&#12398;&#12475;&#12483;&#12488;

SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.

ENDIF.

ENDIF.

-TOP_LINE = L_TC_NEW_TOP_LINE.

ENDFORM. " PAGE_CTRL_FUNCTION

*&----


*

*& Form SELECT_DELESELCT_ICD

*&----


*

FORM SELECT_DELESELCT_ICD USING LI_TBLCTL

LI_ITAB

LI_FLAG

LI_BTN.

ASSIGN (LI_TBLCTL) TO . "&#12504;&#12483;&#12480;&#34892;&#22806;

  • &#26082;&#12395;&#35352;&#20837;&#12375;&#12390;&#12356;&#12427;&#34892;&#12398;&#12510;&#12540;&#12463;

LOOP AT = SPACE.

ENDIF.

ENDLOOP.

ENDFORM. " SELECT_DELESELCT_ICD

DOWNLOADING INFORMATIONS

FORM P10000_DOWNLOAD_AUC.

    • &#20869;&#37096;&#12486;&#12540;&#12502;&#12523;ITAB03_DWLND&#12399;&#21021;&#26399;&#12398;&#22580;&#21512;

CLEAR FLG_ERR.

IF NOT ITAB03_DWLND[] IS INITIAL.

    • &#12525;&#12464;&#12486;&#12540;&#12502;&#12523;&#12408;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#38283;&#22987;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#26360;&#36796;&#12416;

PERFORM FILE_DOWNLOAD_START_LOG_AUC.

    • CSV&#12501;&#12449;&#12452;&#12523;&#12395;&#12504;&#12483;&#12480;&#12434;&#26360;&#36796;&#12416;

PERFORM FILE_HEADER_AUC.

    • &#12487;&#12540;&#12479;&#12398;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;

PERFORM FILE_DOWNLOAD_DATA_AUC.

    • &#12525;&#12464;&#12486;&#12540;&#12502;&#12523;&#12408;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#32066;&#20102;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#26360;&#36796;&#12416;

PERFORM FILE_DOWNLOAD_END_LOG_AUC.

ELSE.

    • &#12524;&#12467;&#12540;&#12489;&#12364;&#23384;&#22312;&#12375;&#12394;&#12356;&#22580;&#21512;

CLEAR : WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,WRK_MSGV4,

WRK_MSGNO,WRK_SUBRC.

WRK_MSGNO = CNS_MSG010.

    • &#12456;&#12521;&#12540;&#12398;&#22580;&#21512;&#12289;&#12525;&#12464;&#12486;&#12540;&#12502;&#12523;&#12408;&#12456;&#12521;&#12540;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#26360;&#36796;

PERFORM ERROR_LOG USING WRK_MSGID

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

MESSAGE S010.

STOP.

ENDIF.

ENDFORM. " P10000_DOWNLOAD_AUC

*&----


*

*& Form FILE_DOWNLOAD_START_LOG_AUC

*&----


*

FORM FILE_DOWNLOAD_START_LOG_AUC.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,WRK_MSGV4,WRK_MSGNO,WRK_SUBRC.

WRK_MSGNO = CNS_MSG050.

WRK_MSGV1 = P_FILNAM.

    • &#12525;&#12464;&#12486;&#12540;&#12502;&#12523;&#12408;&#12503;&#12525;&#12464;&#12521;&#12512;&#12504;&#12483;&#12480;&#12434;&#26360;&#36796;&#12416;

PERFORM ERROR_LOG USING WRK_MSGID

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

    • &#12522;&#12479;&#12540;&#12531;&#12467;&#12540;&#12489;&#20986;&#21147;

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

ENDFORM. " FILE_DOWNLOAD_START_LOG_AUC

*&----


*

*& Form FILE_DOWNLOAD_DATA_AUC

*&----


*

FORM FILE_DOWNLOAD_DATA_AUC.

FIELD-SYMBOLS .

    • &#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#20966;&#29702;

DATA : WRK_L_FNAME LIKE RLGRAP-FILENAME, "&#12501;&#12449;&#12452;&#12523;

WRK_L_SUBRC TYPE NUM2, "&#12522;&#12540;&#12479;&#12531;&#12467;&#12540;&#12489;

WRK_DATA TYPE CHAR30.

CLEAR: WRK_L_FNAME,WRK_L_SUBRC.

WRK_L_FNAME = P_FILNAM.

    • &#20869;&#37096;&#12486;&#12540;&#12502;&#12523;ITAB03_DWLND&#12398;&#21508;&#12524;&#12467;&#12540;&#12489;&#12395;&#32368;&#12426;&#36820;&#12377;

LOOP AT ITAB03_DWLND.

CLEAR: ITAB04_DWLND,SY-SUBRC.

    • &#21508;&#12524;&#12467;&#12540;&#12489;&#12434;&#20966;&#29702;&#12377;&#12427;

WHILE SY-SUBRC = 0.

ASSIGN COMPONENT SY-INDEX OF

STRUCTURE ITAB03_DWLND TO .

CHECK SY-SUBRC = 0.

    • &#12475;&#12497;&#12524;&#12540;&#12479;&#12540;&#12364;&#12487;&#12540;&#12479;&#12398;&#20013;&#12354;&#12387;&#12383;&#22580;&#21512;&#12289;””&#12398;&#20013;&#12395;&#36861;&#21152;&#12377;&#12427;

SEARCH .

ENDIF.

    • &#26368;&#21021;&#12398;&#38917;&#30446;&#12398;&#22580;&#21512;&#12289;&#12475;&#12497;&#12524;&#12540;&#12479;&#12540;&#12364;&#12356;&#12425;&#12394;&#12356;

IF SY-INDEX = 1.

ITAB04_DWLND = WRK_DATA.

ELSE.

    • &#27531;&#12426;&#38917;&#30446;&#12398;&#22580;&#21512;&#12289;&#12475;&#12497;&#12524;&#12540;&#12479;&#12540;&#12364;&#24517;&#35201;&#12391;&#12377;

CONCATENATE ITAB04_DWLND WRK_DATA INTO

ITAB04_DWLND

SEPARATED BY CNS_COMMA.

ENDIF.

CLEAR SY-SUBRC.

ENDWHILE.

    • &#12487;&#12540;&#12479;&#12434;&#36861;&#21152;&#12377;&#12427;

APPEND ITAB04_DWLND.

CLEAR ITAB04_DWLND.

ENDLOOP.

    • &#27726;&#29992;&#12514;&#12472;&#12517;&#12540;&#12523;&#12434;&#20351;&#29992;&#12375;&#12289;&#12525;&#12540;&#12459;&#12523;PC&#12408;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12377;&#12427;

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = WRK_L_FNAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = ITAB04_DWLND

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

OTHERS = 10.

IF SY-SUBRC <> 0.

    • &#12456;&#12521;&#12540;&#12501;&#12521;&#12464;&#12398;&#12475;&#12483;&#12488;.

FLG_ERR = CNS_VALUEX.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,WRK_MSGV4,WRK_MSGNO,

WRK_SUBRC,WRK_L_SUBRC.

WRK_MSGNO = CNS_MSG005.

WRK_MSGV1 = '&#12503;&#12524;&#12476;&#12531;&#12486;&#12540;&#12471;&#12519;&#12531;&#12469;&#12540;&#12496;&#36578;&#36865;(WS_DOWNLOAD)'.

WRK_L_SUBRC = SY-SUBRC.

WRK_MSGV2 = WRK_L_SUBRC .

    • &#12456;&#12521;&#12540;&#12398;&#22580;&#21512;&#12289;&#12525;&#12464;&#12486;&#12540;&#12502;&#12523;&#12408;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#26360;&#36796;&#12416;

PERFORM ERROR_LOG USING WRK_MSGID

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

    • &#12522;&#12479;&#12540;&#12531;&#12467;&#12540;&#12489;&#20986;&#21147;

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

ELSE.

    • &#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12373;&#12428;&#12383;&#12524;&#12467;&#12540;&#12489;&#12398;&#21512;&#35336;

PERFORM DOWNLOAD_NO_RECORD_AUC.

ENDIF.

ENDFORM. " FILE_DOWNLOAD_DATA_AUC

*&----


*

*& Form DOWNLOAD_NO_RECORD_AUC

*&----


*

FORM DOWNLOAD_NO_RECORD_AUC.

CLEAR CNT_REC .

    • &#12524;&#12467;&#12540;&#12489;&#25968;&#12398;&#35336;&#31639;

DESCRIBE TABLE ITAB03_DWLND LINES CNT_REC .

SHIFT CNT_REC LEFT DELETING LEADING CNS_ZERO.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,WRK_MSGV4,WRK_MSGNO,

WRK_SUBRC.

WRK_MSGNO = CNS_MSG052.

WRK_MSGV1 = CNT_REC.

WRK_MSGV2 = P_FILNAM.

    • &#12525;&#12464;&#12486;&#12540;&#12502;&#12523;&#12408;&#12513;&#12483;&#12475;&#12540;&#12472;&#12434;&#26360;&#36796;&#12416;

PERFORM ERROR_LOG USING WRK_MSGID

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

    • &#12522;&#12479;&#12540;&#12531;&#12467;&#12540;&#12489;&#20986;&#21147;

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

ENDFORM. " DOWNLOAD_NO_RECORD_AUC

*&----


*

*& Form FILE_DOWNLOAD_END_LOG_AUC

*&----


*

FORM FILE_DOWNLOAD_END_LOG_AUC.

CLEAR: WRK_MSGV1,WRK_MSGV2,WRK_MSGV3,WRK_MSGV4,WRK_MSGNO,

WRK_SUBRC.

WRK_MSGNO = CNS_MSG051.

WRK_MSGV1 = P_FILNAM.

    • &#12525;&#12464;&#20986;&#21147;

PERFORM ERROR_LOG USING WRK_MSGID

WRK_MSGNO

WRK_MSGV1

WRK_MSGV2

WRK_MSGV3

WRK_MSGV4

WRK_REPID

WRK_TRNCD

WRK_MTYPE

CHANGING WRK_SUBRC.

    • &#12522;&#12479;&#12540;&#12531;&#12467;&#12540;&#12489;&#20986;&#21147;

IF WRK_SUBRC <> 0.

MESSAGE S005 WITH '&#12456;&#12521;&#12540;&#12525;&#12464;&#31649;&#29702;&#12486;&#12540;&#12502;&#12523;&#30331;&#37682;(ZMM_EST_ERROR)'

WRK_SUBRC.

ENDIF.

ENDFORM. " FILE_DOWNLOAD_END_LOG_AUC

Populate Dropdown menu(Not from Table)

TYPE-POOLS: VRM.

DATA: NAME TYPE VRM_ID,

LIST TYPE VRM_VALUES,

VALUE LIKE LINE OF LIST.

PARAMETERS: PS_PARM(10) AS LISTBOX VISIBLE LENGTH 10.

AT SELECTION-SCREEN OUTPUT.

NAME = 'PS_PARM'.

VALUE-KEY = '1'.

VALUE-TEXT = 'LINE 1'.

APPEND VALUE TO LIST. VALUE-KEY = '2'.

VALUE-TEXT = 'LINE 2'.

APPEND VALUE TO LIST.

CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = NAME VALUES = LIST.

START-OF-SELECTION.

WRITE: / 'PARAMETER:', PS_PARM.

Generating a Program

REPORT CHAP2504.

  • Internal table for source code, field for name of temporary program

DATA: SOURCE_TABLE(72) OCCURS 10 WITH HEADER LINE,

PROGRAM_NAME LIKE SY-CPROG.

  • Building the source code

APPEND 'report zgenprog.' TO SOURCE_TABLE.

APPEND 'write ''I am a generated program''.' TO SOURCE_TABLE.

  • Insert the report, if necessary

READ REPORT 'zgenprog' INTO SOURCE_TABLE.

IF SY-SUBRC NE 0.

APPEND 'report zgenprog.' TO SOURCE_TABLE.

APPEND 'write ''Here is zgenprog''.' TO SOURCE_TABLE.

INSERT REPORT 'zgenprog' FROM SOURCE_TABLE.

ENDIF.

  • Execute the report

SUBMIT ZGENPROG AND RETURN.

Running a Report Using Submit Statement

(a)

REPORT CHAP1802.

  • Work area

TABLES CUSTOMERS.

  • Selection criteria

SELECT-OPTIONS S_NAME FOR CUSTOMERS-NAME.

  • Running report chap1801 with specified selection criteria

SUBMIT CHAP1801

WITH P_DATE = SY-DATUM

WITH S_NAME IN S_NAME.

(b)

REPORT CHAP1803.

  • Work area

TABLES CUSTOMERS.

  • Selection criteria

SELECT-OPTIONS S_NAME FOR CUSTOMERS-NAME.

  • running chap1801 and displaying the selection screen

SUBMIT CHAP1801

VIA SELECTION-SCREEN

WITH P_DATE = SY-DATUM

WITH S_NAME IN S_NAME.

(C)

REPORT CHAP1801.

TABLES: CUSTOMERS, BOOKINGS.

PARAMETERS P_DATE TYPE D.

SELECT-OPTIONS S_NAME FOR CUSTOMERS-NAME.

SELECT * FROM CUSTOMERS

WHERE NAME IN S_NAME.

WRITE / CUSTOMERS-NAME.

SELECT * FROM BOOKINGS

WHERE ORDER_DATE = P_DATE

AND CUSTOMID = CUSTOMERS-ID.

WRITE: / BOOKINGS-CARRID,

BOOKINGS-CONNID,

BOOKINGS-FLDATE.

ENDSELECT.

ENDSELECT.

External perform (caller)

REPORT CHAP2307.

  • List of the current program

WRITE / 'I am program chap2307'.

  • External perform

PERFORM EXTFORM IN PROGRAM CHAP2308.

External perform (called form)

REPORT CHAP2308.

  • Form definition

FORM EXTFORM.

WRITE / 'I am extform in program chap2308'.

ENDFORM.

Dynamic external perform (call back form)

REPORT CHAP2309.

PERFORM EXTFORM IN PROGRAM CHAP2310

USING 'CALL_BACK_FORM'

SY-CPROG.

FORM CALL_BACK_FORM.

WRITE / 'I am the call back form in chap2309.'.

ENDFORM.

Dynamic external perform

REPORT CHAP2310.

FORM EXTFORM

USING F_CALL_BACK_FORM

F_PROGRAM.

PERFORM (F_CALL_BACK_FORM) IN PROGRAM (F_PROGRAM).

WRITE / 'I am the form in chap2310.'.

ENDFORM.

Dynamic Open SQL Commands: table name

(a)

REPORT CHAP2305.

PARAMETERS TABLENAME(10) DEFAULT 'CUSTOMERS'.

DATA COUNT_ROWS TYPE I.

SELECT COUNT( * ) FROM (TABLENAME) INTO COUNT_ROWS.

WRITE: TABLENAME, COUNT_ROWS.

DATA WHERE_TAB(80) OCCURS 10 WITH HEADER LINE.

APPEND 'name like ''E%''' TO WHERE_TAB.

APPEND 'and city like ''S%''' TO WHERE_TAB.

TABLES CUSTOMERS.

DATA ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100.

SELECT * FROM CUSTOMERS INTO TABLE ALL_CUSTOMERS

WHERE ID BETWEEN 1 AND 999

AND (WHERE_TAB).

(b)

REPORT CHAP2305.

PARAMETERS TABLENAME(10) DEFAULT 'CUSTOMERS'.

DATA COUNT_ROWS TYPE I.

SELECT COUNT( * ) FROM (TABLENAME) INTO COUNT_ROWS.

WRITE: TABLENAME, COUNT_ROWS.

DATA WHERE_TAB(80) OCCURS 10 WITH HEADER LINE.

APPEND 'name like ''E%''' TO WHERE_TAB.

APPEND 'and city like ''S%''' TO WHERE_TAB.

TABLES CUSTOMERS.

DATA ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100.

SELECT * FROM CUSTOMERS INTO TABLE ALL_CUSTOMERS

WHERE ID BETWEEN 1 AND 999

AND (WHERE_TAB).

Exporting to the ABAP/4 Memory

REPORT CHAP1401.

  • Work areas

TABLES: CUSTOMERS, BOOKINGS.

  • Internal tables which will be exported

DATA: ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100

WITH HEADER LINE,

ALL_BOOKINGS LIKE BOOKINGS OCCURS 10

WITH HEADER LINE.

  • Filling the internal tables

SELECT * FROM CUSTOMERS INTO TABLE ALL_CUSTOMERS.

SELECT * FROM BOOKINGS INTO TABLE ALL_BOOKINGS.

  • Exporting to the ABAP/4 Memory

EXPORT ALL_CUSTOMERS ALL_BOOKINGS

TO MEMORY ID 'CUSTBOOK'.

  • Displaying the result

LOOP AT ALL_CUSTOMERS.

WRITE / ALL_CUSTOMERS-NAME.

ENDLOOP.

LOOP AT ALL_BOOKINGS.

WRITE / ALL_BOOKINGS-FLDATE.

ENDLOOP.

Importing from the ABAP/4 Memory

REPORT CHAP1402.

  • Internal tables which will be imported

DATA: ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100

WITH HEADER LINE,

ALL_BOOKINGS LIKE BOOKINGS OCCURS 10

WITH HEADER LINE,

NEW_BOOKINGS LIKE BOOKINGS OCCURS 50

WITH HEADER LINE.

  • Importing from the ABAP/4 Memory

IMPORT ALL_CUSTOMERS ALL_BOOKINGS

FROM MEMORY ID 'CUSTBOOK'.

IF SY-SUBRC NE 0.

WRITE 'Import failed.'.

ENDIF.

  • Skipping and renaming objects at import

IMPORT ALL_BOOKINGS TO NEW_BOOKINGS

FROM MEMORY ID 'CUSTBOOK'.

  • Displaying the result

LOOP AT ALL_CUSTOMERS.

WRITE / ALL_CUSTOMERS-NAME.

ENDLOOP.

LOOP AT ALL_BOOKINGS.

WRITE / ALL_BOOKINGS-FLDATE.

ENDLOOP.

LOOP AT NEW_BOOKINGS.

WRITE / NEW_BOOKINGS-FLDATE.

ENDLOOP.

Using Symbols and Icons

REPORT CHAP0806.

  • Declaring symbols and icons

INCLUDE: .

  • Displaying symbols and icons

WRITE: / SYM_PHONE AS SYMBOL, 'telephone',

/ SYM_FAX AS SYMBOL, 'fax machine',

/ SYM_LEFT_HAND AS SYMBOL, 'hand pointing left',

/ SYM_CAUTION AS SYMBOL, 'caution',

/ ICON_CHECKED AS ICON, 'checked; okay',

/ ICON_DELETE AS ICON, 'delete',

/ ICON_PRINT AS ICON, 'print'.

Using Colors

WRITE 'Header' COLOR COL_HEADING.

  • Switch the standard color

FORMAT COLOR COL_TOTAL.

  • Make the color less bright

WRITE / 'total sum' COLOR COL_TOTAL INTENSIFIED OFF.

  • Using different colors

FORMAT COLOR COL_HEADING.

WRITE / 'Header'.

FORMAT COLOR OFF.

SKIP.

WRITE: / 'Key field' COLOR COL_KEY,

'Background',

'Negative' COLOR COL_NEGATIVE,

/ 'Total sum' COLOR COL_TOTAL INTENSIFIED OFF.

Classifying parameters

  • Data declarations for later use

DATA: A1 TYPE P VALUE 2,

A2 TYPE P VALUE 4,

A3 TYPE P VALUE 8.

  • Calling a form with different parameter types

PERFORM CALC USING A1

A2

CHANGING A3.

  • Displaying the result

WRITE A3.

  • Defining a form with different parameter types

FORM CALC USING VALUE(F1) LIKE A1

F2 LIKE A2

CHANGING VALUE(F3) LIKE A3.

F3 = F1 + ( F2 * F3 ).

ENDFORM.

Using table parameters

  • Work area of database table and internal table for later use

TABLES CUSTOMERS.

DATA ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 50 WITH HEADER LINE.

  • Calling a form with a table parameter

PERFORM READ_CUSTOMERS TABLES ALL_CUSTOMERS.

LOOP AT ALL_CUSTOMERS.

WRITE / ALL_CUSTOMERS-NAME.

ENDLOOP.

  • Defining a form with a table parameter

FORM READ_CUSTOMERS TABLES F_CUSTOMERS STRUCTURE ALL_CUSTOMERS.

SELECT * FROM CUSTOMERS INTO TABLE F_CUSTOMERS.

ENDFORM.

Working with the hide command(At line Selection)

REPORT CHAP1704.

  • work area

TABLES CUSTOMERS.

  • Internal table

DATA ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100

WITH HEADER LINE.

  • Processing data

START-OF-SELECTION.

SELECT * FROM CUSTOMERS INTO TABLE ALL_CUSTOMERS.

LOOP AT ALL_CUSTOMERS.

WRITE / ALL_CUSTOMERS-NAME HOTSPOT ON.

HIDE ALL_CUSTOMERS-ID.

ENDLOOP.

  • Detail information

AT LINE-SELECTION.

WRITE: / 'Customer detail information:',

ALL_CUSTOMERS-NAME,

ALL_CUSTOMERS-CITY,

ALL_CUSTOMERS-TELEPHONE.

Uploading files from PC(Presentation Server)

  • Retrieve data file from presentation server(Upload from PC)

DATA: i_file like rlgrap-filename value '/usr/sap/tmp/file.txt'.

DATA: begin of it_datatab occurs 0,

row(500) type c,

end of it_datatab.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = i_file

filetype = 'ASC'

TABLES

data_tab = it_datatab "ITBL_IN_RECORD[]

EXCEPTIONS

file_open_error = 1

OTHERS = 2.

Downloading files to PC(Presentation Server)

(a)* Download internal table to presentation server file(PC)

DATA: ld_filename TYPE string,

  • Pre version 4.7 declaration e_file like rlgrap-filename.

DATA: begin of it_datatab occurs 0,

row(500) type c,

end of it_datatab.

call function 'GUI_DOWNLOAD'

exporting

filename = ld_filename

filetype = 'ASC'

tables

data_tab = it_datatab[]

exceptions

file_open_error = 1

file_write_error = 2

others = 3.

(b) Download internal table to presentation server file(PC)

  • Separating fields/columns by a tab

DATA: ld_filename TYPE string,

  • Pre version 4.7 declaration e_file like rlgrap-filename.

DATA: begin of it_datatab occurs 0,

col1(50) type c,

col2(50) type c,

col3(50) type c,

  • etc....

end of it_datatab.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = ld_filename

filetype = 'ASC'

  • APPEND = 'X'

write_field_separator = 'X'

  • CONFIRM_OVERWRITE = 'X'

TABLES

data_tab = it_datatab[]

EXCEPTIONS

file_open_error = 1

file_write_error = 2

OTHERS = 3.

Uploading and Downloading Data from Application Server and Lock Mechanisms

REPORT ZTEST_ABN1 .

TYPES: BEGIN OF WRK_DATA,

DATA(1000) TYPE C, "&#12487;&#12540;&#12479;

END OF WRK_DATA.

TYPES: BEGIN OF WRK_LOCK,

LIFNR LIKE ZMMT301-LIFNR,

ZZSOKOCD LIKE ZMMT301-ZZSOKOCD,

ZZJANCD LIKE ZMMT301-ZZJANCD,

END OF WRK_LOCK.

DATA: ITAB TYPE STANDARD TABLE OF WRK_DATA

WITH DEFAULT KEY

WITH HEADER LINE.

DATA: ITAB_LOCK TYPE STANDARD TABLE OF WRK_LOCK

WITH DEFAULT KEY

WITH HEADER LINE.

PARAMETERS TFNAME(128) DEFAULT '/tmp/TEST.DAT'

LOWER CASE.

PARAMETERS FFNAME(128) DEFAULT 'd:aa-yodhobashiifilez.txt'

LOWER CASE.

PARAMETERS: WRITE1 RADIOBUTTON GROUP X1,

READ1 RADIOBUTTON GROUP X1 DEFAULT 'X',

LOCKT RADIOBUTTON GROUP X1,

ULOCK RADIOBUTTON GROUP X1. " DEFAULT 'X'.

IF WRITE1 = 'X'.

PERFORM WRITE_DATA_APP.

CLEAR WRITE1.

ENDIF.

IF READ1 = 'X'.

PERFORM READ_DATA_APP.

CLEAR READ1.

ENDIF.

IF LOCKT = 'X'.

PERFORM APPEND_TBL.

PERFORM LOCK_TBL.

CLEAR LOCKT.

ENDIF.

IF ULOCK = 'X'.

PERFORM UNLOCK_TABLE_PRC.

CLEAR ULOCK.

ENDIF.

*&----


*

*& Form write_data_app

*&----


*

FORM WRITE_DATA_APP .

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = FFNAME

TABLES

DATA_TAB = ITAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

OTHERS = 2.

CASE SY-SUBRC.

WHEN 1.

WRITE 'Error when file opened'.

EXIT.

WHEN 2.

WRITE 'Error during data transfer'.

EXIT.

ENDCASE.

  • Opening the File

OPEN DATASET TFNAME FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

  • MESSAGE MSG_TEXT.

IF SY-SUBRC NE 0.

WRITE: 'File cannot be opened. Reason:'. ", MSG_TEXT.

EXIT.

ENDIF.

  • Transferring Data

LOOP AT ITAB.

TRANSFER ITAB-DATA TO TFNAME.

ENDLOOP.

  • Closing the File

CLOSE DATASET : TFNAME,FFNAME.

    • Display the result

*LOOP AT itab.

  • WRITE: / itab-data.

*ENDLOOP.

ENDFORM. " write_data_app

*&----


*

*& Form read_data_app

*&----


*

FORM READ_DATA_APP .

  • Opening the File

OPEN DATASET TFNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.

  • MESSAGE MSG_TEXT.

IF SY-SUBRC NE 0.

WRITE: 'File cannot be opened. Reason:'. ", MSG_TEXT.

EXIT.

ENDIF.

  • Reading Data

DO.

READ DATASET TFNAME INTO ITAB.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

APPEND ITAB.

ENDDO.

  • Closing the file

CLOSE DATASET TFNAME.

  • Display the result

LOOP AT ITAB.

WRITE / ITAB-DATA.

ENDLOOP.

ENDFORM. " read_data_app

*&----


*

*& Form APPEND_TBL

*&----


*

FORM APPEND_TBL .

CLEAR : ITAB_LOCK.

REFRESH : ITAB_LOCK.

ITAB_LOCK-LIFNR = '0000001111'.

ITAB_LOCK-ZZSOKOCD = 'R_KOL'.

ITAB_LOCK-ZZJANCD = '1'.

APPEND ITAB_LOCK. CLEAR ITAB_LOCK.

ITAB_LOCK-LIFNR = '0000001111'.

ITAB_LOCK-ZZSOKOCD = 'R_KOL'.

ITAB_LOCK-ZZJANCD = '2'.

APPEND ITAB_LOCK.

CLEAR ITAB_LOCK.

ENDFORM. " APPEND_TBL

*&----


*

*& Form UNLOCK_TABLE_PRC

*&----


*

FORM UNLOCK_TABLE_PRC .

LOOP AT ITAB_LOCK.

CALL FUNCTION 'DEQUEUE_EZMMT301_ZMMT001'

EXPORTING

MODE_ZMMT301 = 'E'

MANDT = SY-MANDT

LIFNR = ITAB_LOCK-LIFNR

ZZSOKOCD = ITAB_LOCK-ZZSOKOCD

ZZJANCD = ITAB_LOCK-ZZJANCD.

ENDLOOP.

ENDFORM. " UNLOCK_TABLE_PRC

*&----


*

*& Form LOCK_TBL

*&----


*

FORM LOCK_TBL .

LOOP AT ITAB_LOCK.

CALL FUNCTION 'ENQUEUE_EZMMT301_ZMMT001'

EXPORTING

MODE_ZMMT301 = 'E'

MANDT = SY-MANDT

LIFNR = ITAB_LOCK-LIFNR

ZZSOKOCD = ITAB_LOCK-ZZSOKOCD

ZZJANCD = ITAB_LOCK-ZZJANCD

EXCEPTIONS

FOREIGN_LOCK = 1

SYSTEM_FAILURE = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

WRITE /: ' ERROR LOCKING TABLE'.

ELSE.

WRITE /: 'TABLE LOCKED'.

ENDIF.

ENDLOOP.

ENDFORM. " LOCK_TBL

Creating New Program Via ABAP

REPORT ZCREATE_NEW_PROGRAM_VIA_ABAP.

  • Type of an editor line: rssource-line

DATA: code TYPE TABLE OF rssource-line.

Report Name

APPEND  'REPORT ZTESTING.' TO code.

APPEND  'WRITE / ''Program created via ABAP!''.'

         TO code.

  • Report Name in SE38

INSERT REPORT 'ZTESTING' FROM code.

WRITE: / 'Report created (old report with same name overwritten).'.

WRITE: / 'Please check via transaction SE38'.

Submit Report as a Job

*Submit report as job(i.e. in background)

data: jobname like tbtcjob-jobname value

' TRANSFER TRANSLATION'.

data: jobcount like tbtcjob-jobcount,

host like msxxlist-host.

data: begin of starttime.

include structure tbtcstrt.

data: end of starttime.

data: starttimeimmediate like btch0000-char1.

  • Job open

call function 'JOB_OPEN'

exporting

delanfrep = ' '

jobgroup = ' '

jobname = jobname

sdlstrtdt = sy-datum

sdlstrttm = sy-uzeit

importing

jobcount = jobcount

exceptions

cant_create_job = 01

invalid_job_data = 02

jobname_missing = 03.

if sy-subrc ne 0.

"error processing

endif.

  • Insert process into job

SUBMIT zreport and return

with p_param1 = 'value'

with p_param2 = 'value'

user sy-uname

via job jobname

number jobcount.

if sy-subrc > 0.

"error processing

endif.

  • Close job

starttime-sdlstrtdt = sy-datum + 1.

starttime-sdlstrttm = '220000'.

call function 'JOB_CLOSE'

exporting

event_id = starttime-eventid

event_param = starttime-eventparm

event_periodic = starttime-periodic

jobcount = jobcount

jobname = jobname

laststrtdt = starttime-laststrtdt

laststrttm = starttime-laststrttm

prddays = 1

prdhours = 0

prdmins = 0

prdmonths = 0

prdweeks = 0

sdlstrtdt = starttime-sdlstrtdt

sdlstrttm = starttime-sdlstrttm

strtimmed = starttimeimmediate

targetsystem = host

exceptions

cant_start_immediate = 01

invalid_startdate = 02

jobname_missing = 03

job_close_failed = 04

job_nosteps = 05

job_notex = 06

lock_failed = 07

others = 99.

if sy-subrc eq 0.

"error processing

endif.

Conversion of Date to Characters

PERFORM FORMAT_DATE_ICD USING OTAB_DATA-DAREG

CHANGING WRK_DCONV.

FORM FORMAT_DATE_ICD USING LI_DATE

CHANGING LO_DCONV.

DATA: WRK_L_DATA TYPE CHAR50 VALUE 'JAN/FEB/MAR/APR/MAY/JUN/JLY/AUG/SEP/OCT/NOV/DEC',

WRK_L_DTE TYPE NUM2, "&#26085;&#12398;&#22793;&#25968;

WRK_L_MTH TYPE NUM2, "&#26376;&#12398;&#22793;&#25968;

WRK_L_YEAR TYPE NUM4. "&#24180;&#12398;&#22793;&#25968;

    • &#22793;&#25968;&#12398;&#21021;&#26399;&#21270;(* Initialization of * variable)

CLEAR: WRK_L_MTH,WRK_L_YEAR,LO_DCONV.

IF LI_DATE = CNS_DZERO.

LO_DCONV = SPACE.

EXIT.

ENDIF.

    • &#26085;&#12398;&#21462;&#24471;(* Acquisition of day)

WRK_L_DTE = LI_DATE+6(2).

    • &#26376;&#12398;&#21462;&#24471;(Acquisition of the moon)

WRK_L_MTH = LI_DATE+4(2).

    • &#24180;&#12398;&#21462;&#24471;(Acquisition of a year)

WRK_L_YEAR = LI_DATE+0(4).

    • &#23450;&#32681;&#12375;&#12383;&#22793;&#25968;&#12434;&#20351;&#29992;&#12375;&#26376;&#12434;MMMM&#12501;&#12457;&#12540;&#12510;&#12483;&#12488;&#12395;&#22793;&#26356;&#12377;&#12427;

(The moon is changed into a MMMM format using the defined variable.)

WRK_L_MTH = ( WRK_L_MTH - 1 ) * 4.

LO_DCONV = WRK_L_DATA+WRK_L_MTH(3).

    • MMM&#12392; SPACE &#12434;CONCATENATE&#12377;&#12427;

CONCATENATE LO_DCONV SPACE INTO LO_DCONV.

    • &#26085;&#12434;CONCATENATE&#12377;&#12427;

CONCATENATE LO_DCONV WRK_L_DTE INTO LO_DCONV SEPARATED BY SPACE.

    • &#24180;&#12434;CONCATENATE&#12377;&#12427;

CONCATENATE LO_DCONV WRK_L_YEAR INTO LO_DCONV SEPARATED BY SPACE.

ENDFORM. " FORMAT_DATE_ICD

Smart Forms

TABLES: MKPF. 

DATA: FM_NAME TYPE RS38L_FNAM. 

DATA: BEGIN OF INT_MKPF OCCURS 0.

        INCLUDE STRUCTURE MKPF.

DATA: END OF INT_MKPF. 

SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001. 

SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.

   MOVE-CORRESPONDING MKPF TO INT_MKPF.

   APPEND INT_MKPF. 

ENDSELECT.

  • At the end of your program.

  • Passing data to SMARTFORMS 

call function 'SSF_FUNCTION_MODULE_NAME'

  exporting

    formname                 = 'ZSMARTFORM'

*   VARIANT                  = ' '

*   DIRECT_CALL              = ' '

  IMPORTING

    FM_NAME                  = FM_NAME

  EXCEPTIONS

    NO_FORM                  = 1

    NO_FUNCTION_MODULE       = 2

    OTHERS                   = 3. 

if sy-subrc <> 0.

   WRITE: / 'ERROR 1'.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif. 

call function FM_NAME

  • EXPORTING

*   ARCHIVE_INDEX              =

*   ARCHIVE_INDEX_TAB          =

*   ARCHIVE_PARAMETERS         =

*   CONTROL_PARAMETERS         =

*   MAIL_APPL_OBJ              =

*   MAIL_RECIPIENT             =

*   MAIL_SENDER                =

*   OUTPUT_OPTIONS             =

*   USER_SETTINGS              = 'X'

  • IMPORTING

*   DOCUMENT_OUTPUT_INFO       =

*   JOB_OUTPUT_INFO            =

*   JOB_OUTPUT_OPTIONS         =

  TABLES

    GS_MKPF                    = INT_MKPF

  EXCEPTIONS

    FORMATTING_ERROR           = 1

    INTERNAL_ERROR             = 2

    SEND_ERROR                 = 3

    USER_CANCELED              = 4

    OTHERS                     = 5. 

if sy-subrc <> 0.

   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

SapScript

SE71

Form painter

SE72

Style maintenance

SE73

SapScript font maintenance

SE78

SapScript Graphics Management

SO10

Create standard text module

Types of Symbols

1.System Symbols Date,Day,Name_of_day,Month,Year,Time,Hours,Minutes,Seconds,Page,NextPage,Device,Space,Uline,Vline

2.Standard Symbols

Standard symbols are user defined and are maintained in table TTDG. You use transaction SM30 to change or display standard symbols.

An examples of standard symbols is &MFG& fot "Yours faithfully"

3.Standard Text

Standard texts is predifined texts that can be used in more than one form. Standard texts are can be created, changed and displayed using transaction SO10.

4.Program Symbols

Program symbols are for contents of database fields or global program symbols. When you print the form, data from the database tables are printed isntead of the symbols.

TABLES: kna1.

&KNA1-NAME1&

Script Copy from one Client to other Client

(a) if its a local object

From SE71... UTILITIES->COPY FROM CLIENT

...or...

Execute program RSTXFCPY, both are same

b) if tis assigned to a dev class and has request/task #

use tcode SCC1 in the client you want to copy the SAPScript to

...or...

you can follow the instructions listed under a)

  • if the object is already released and you don't want to create a new request/task # then you can only use tcode SCC1

c) if tis in a different system

use program RSTXSCRP to Import/Export SAPScript dataset

To Display Data only in last page

/: IF &NEXTPAGE& NE 0

any dependent programs must be scheduled in a different job

5. Suggested methods for error handling & reprocessing

If subsequent steps in a job are not dependent on the first one finishing successfully, the first program should be set up to crash using a success message followed by the ‘STOP’ statement.

  • Before every error message, call a routine which notifies the ‘Operations Center’ of error type, severity, action, etc.

6. Transactions used for Background JOBS:

SM36 - Define Background Jobs

SM37 - Background Jobs Overview

How to define Periodic Jobs

Execute transaction SM36

Define Job name, Job class, Target server

Click on 'START CONDITION' button

Click on 'Date/Time' button

Enter Scheduled start DATE & TIME. Check mark 'Periodic Job' field. Click on 'Period values' button and select 'Hourly' or 'Dialy' or 'Weekly' or 'Monthly' or Other period and SAVE. Go back to main screen.

Click on 'STEPS' button and enter Program name and Variant under box 'ABAP Program'. Click on 'Print Specification' button and enter Printer name under 'Output device' and SAVE

Click on SAVE button until you get message on bottom of the screen that describes 'Job XYZ saved with status: Scheduled'.

Click on 'Job overview' button or execute SM37 transaction.

Select the appropriate 'Job name', 'User name', 'Job Status' & Schedule date under 'Job start condition' and click on 'Execute' button or press F8.

You will now see all your scheduled JOBS.

Types of Tables In SAP

1. Transparent Table

Stores Data Directly

Tables can be read directly from the database from outside SAP.

It’s a one-to-one relationship table.

Used to store Transaction data.

Example : EKKO,VBAP

2. Cluster Table

It’s a many-to-one relationship table.

Used to store Application data.

It must have a foreign-key relationship

Native SQL can be used.

Secondary Index can’t be created and select distinct, group can be used

Example : BSEG(A/c ting Document Segment),

DOKTL(Documentation – text lines)

3. Pooled Table

It’s a many-to-one relationship table.

Used to store Application data.

Does not need to have a foreign-key relationship.

Native SQL can be used.

Secondary Index can’t be created and select distinct, group can be used

Types of Views

1. Projection View

Projection views are used to hide fields of a table.

A projection view contains exactly one table.

You cannot define selection conditions for projection views.

There is no corresponding object in the database for a projection view.

The R/3 System maps the access to a projection view to the corresponding access to its base table.

You can also access pooled tables and cluster tables with a projection view.

2. Database Views

3. Maintenance Views

Types of Internal Tables

- Hash Table

This is the most appropriate type for any table where the main operation is key access. You cannot access a hashed table using its index. The response time for key access remains constant, regardless of the number of table entries. Like database tables, hashed tables always have a unique key. Hashed tables are useful if you want to construct and use an internal table which resembles a database table or for processing large amounts of data. 

MatchCodes

Creation of Match Codes

The tables relevant for the search are included in a matchcode object. The table selection is based on one primary table. Further secondary tables can also be included, which are linked with the primary table by foreign keys. The fields of the matchcode object can then be selected from the Basis tables.

A matchcode object is not stored physically. It only describes a complete logical view on one or more tables.

1.Defining Attributes of the Matchcode Object

2.Selecting Secondary Tables for the Matchcode Object

3.Selecting Fields of the Matchcode Object

4.Activating Matchcode Objects  

Creating Match Code Ids

Several matchcode IDs can be created for one matchcode object. The matchcode IDs are derived from the matchcode object by projection (field selection) and selection (definition of a selection condition).

A matchcode ID must be identified within a matchcode object with one letter or digit. This means that a maximum of 36 matchcode IDs (26 letters and 10 digits) can be defined for each matchcode object.

1.Defining Attributes of a Matchcode ID

2.Selecting Secondary Tables of a Matchcode ID

3.Selecting Fields of a Matchcode ID

4.Defining Selection Conditions for Matchcode IDs (optional)

5.Activating a Matchcode ID

Read only

Former Member
0 Likes
754

Hi,

It really takes a long time to analyse a new code if its lengthy. So better understand the requirement first then divide the code into sections i.e. what exactly the particular block is all about, so that you wont get confused and debug the code for understanding more about it. Its takes a bit long time to understand it but once u have a clear idea about the requirement it ll be easy for you to understand any code.

Regards,

Srikanth.

Read only

Former Member
0 Likes
754

HI

if you want to understand the PROGRAM flow and logic just DEBUG the program

from start-of-selection then you can know flow very easily

in DEBUGGING in each step you can know what happenning there , in the 1st atempt you can't know much try to do DEBUGG 4 or 5 times you will get the information about the report

<b>Reward if usefull</b>

Read only

Former Member
0 Likes
754

trace the code from start of selection step by step if it s report,

if u want to check only a specific part, identify that part , set break point there and debug