九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SAP ABAP語言編程手冊
第一章程序調(diào)試
編譯任何程序最基本的技能就是對程序的調(diào)試(debugging). 所以讓我們先熟悉一下SAP ABAP程序的調(diào)試手段。
如何調(diào)試ABAP程序?
在這本書中,我假設(shè)你使用的是ABAP編輯器(事務(wù)代碼 SE38)開發(fā)ABAP程序。 但是,如果你使用的是Object Navigator (事務(wù)代碼 SE80)做開發(fā)工作,過程也是相同的。
在ABAP編輯器屏幕,采取以下步驟設(shè)置你的調(diào)試斷點(diǎn):
選擇你要開始調(diào)試的代碼行。
按“Session斷點(diǎn)“鈕。
如果要?jiǎng)h除斷點(diǎn), 只要雙電擊程序行上的Session斷點(diǎn)圖標(biāo)(icone)即可刪除斷點(diǎn)。
提示:
如果你的SAP版本較老,點(diǎn)擊斷點(diǎn)圖標(biāo)后,會(huì)有一個(gè)畫面彈出, 讓你選擇是“Session斷點(diǎn)“還是”External斷點(diǎn)“。
如果你要管理程序里設(shè)置的所有斷點(diǎn), 你可以去菜單:實(shí)用程序 (Utilities)> 斷點(diǎn)。
如何調(diào)試Web應(yīng)用程序?
如果你需要調(diào)試一個(gè)Web應(yīng)用程序,設(shè)置斷點(diǎn)的步驟和你設(shè)置ABAP程序斷點(diǎn)完全相同,只是你設(shè)置的不是Session斷點(diǎn),而是外部斷點(diǎn)(External Breakpoint)。
假設(shè)你在ABAP編輯器里編輯Web應(yīng)用程序, 請按照下面的步驟設(shè)置斷點(diǎn):
1.在Web應(yīng)用程序里,選擇你想要調(diào)試的代碼行。
2.點(diǎn)擊“External斷點(diǎn)”按鈕。
3.如果要?jiǎng)h除斷點(diǎn),只要雙電擊程序行上的External斷點(diǎn)圖標(biāo)(icone)即可刪除斷點(diǎn)
提示:
在較老版本上,點(diǎn)擊斷點(diǎn)圖標(biāo)后,會(huì)有一個(gè)畫面彈出, 讓你選擇是“Session斷點(diǎn)“還是”External斷點(diǎn)“。
你也可以去菜單:“實(shí)用程序 (Utilities)> External 斷點(diǎn)“,去管理所有External斷點(diǎn)。
如何在程序里手動(dòng)設(shè)置斷點(diǎn)?
你可以在你的程序里設(shè)置斷點(diǎn)語句,讓程序在運(yùn)行時(shí)只會(huì)為預(yù)先設(shè)定的用戶停在斷點(diǎn)。 這樣,其他用戶可以自自如地運(yùn)行程序,而你可以自由地調(diào)試程序。
語法
Break <User Logon ID>.
如果你代碼中的登錄ID和用戶的登錄ID相匹配的話, 該程序運(yùn)行到斷點(diǎn)時(shí)會(huì)停止。
如何調(diào)試一個(gè)SAP事務(wù)(Transaction)?
你可以在事務(wù)命令代碼框里使用“/H”命令,讓后運(yùn)行SAP事務(wù)。事務(wù)會(huì)停在最開始的程序行。
如何調(diào)試彈出屏幕?
前面提到,你可以在事務(wù)代碼框里使用“/H”來調(diào)試事務(wù)。不過,如果你想調(diào)試在程序運(yùn)行中彈出的屏幕,你就不能使用命令“/H”了。
這里給你個(gè)技巧提示,如何在屏幕彈出時(shí)進(jìn)行調(diào)試:
在你的計(jì)算機(jī)上,用下面的代碼創(chuàng)建一個(gè)文本文件, 然后將其保存起來。
在SAPGUI窗口彈出時(shí),把文本文件從Windows資源管理器的窗口里拖拉到SAPGUI彈出窗口。 這時(shí),SAPGUI就進(jìn)入調(diào)試模式了。 (在屏幕下,你可以看到”調(diào)試被激活“的信息。)
代碼 范例
[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand
如何調(diào)試在背景工作的程序?
如果你有權(quán)限可以更改程序,你可以使用這個(gè)小技巧調(diào)試在背景工作的程序。
在程序中你要調(diào)試的地方,加一個(gè)無限循環(huán)的邏輯。 在這個(gè)無限循環(huán)的邏輯里,添加一個(gè)檢查條件以便退出循環(huán)。 例如,檢查一個(gè)變量的值是否被更改。
·         開始在背景里運(yùn)行程序。
·         運(yùn)行事務(wù)SM50,等到你的程序顯示在列表中。
·         到菜單: 處理》程序》調(diào)試。 (菜單路徑可能在不同的版本中略有不同)
·         現(xiàn)在你的程序正在無限循環(huán)邏輯中。 你可以改變變量的值 , 以便退出循環(huán)。
第二章    程序基礎(chǔ)
2.1數(shù)據(jù)處理
如何從一個(gè)文本字符串中刪除尾隨或前置的'0'或空格?
代碼 范例
SHIFT c RIGHT DELETING TRAILING c1.
SHIFT c LEFT DELETING LEADING c1.
在上面代碼中的“C1”變量可以被定義為“空格”或“0”。
如何轉(zhuǎn)移負(fù)號?
在SAP的世界里,負(fù)號標(biāo)志是在數(shù)字的右側(cè),如“123.45-”。然而,在某些情況下,用戶通常會(huì)要求把負(fù)號轉(zhuǎn)移到左側(cè)。 例如,如果你的報(bào)表列表要下載到個(gè)人電腦上的Excel文件,用戶將要求你重新安排負(fù)號。下面是轉(zhuǎn)移負(fù)號的代碼 范例。
代碼 范例
Data: p_amt(18).
P_amt = '         12345.67-'.
shift p_amt right deleting trailing '-'.
shift p_amt left deleting leading space.
concatenate '-'  p_amt into p_amt.
如何替換字符串?
你可以使用“TRANSLATE”語句來代替字符串中的字符。  下面的代碼范例可以把字符串里的‘X' 替換成”Y“。
代碼 范例
translate <string> using 'XY'.
如何分割一個(gè)被tab分隔(tab-delimited)的字符串?
你可以方便地使用“SPLIT”命令,分裂一個(gè)被分隔符分隔的字符串。 在大多數(shù)情況下,分隔符是一個(gè)或多個(gè)字符,如“|”,"||",或','等,但是,” tab-delimited “分隔符是不同的。它必須定義為值是“09”的'×'類型。
下面的代碼范例顯示了如何分割tab分隔(tab-delimited)的字符串。請注意” tab-delimited “分隔符變量是如何定義的。
代碼 范例
Data: tab_del type x value '09'.
SPLIT <string> at tab_del into <field1> <field2> ….
如何刪除字符串中的分隔符?
你可以先把分隔符除掉 , 然后再把所有分割后的子字符串串聯(lián)在一起。
代碼 范例
DATA: tab_del TYPE C VALUE '|'.
DATA: field1, field2, ……,  fieldn, final_str TYPE string.
SPLIT <string> AT tab_del   INTO: field1 field2 … fieldn.
CONCATENATE  field1 field2 … fieldn INTO final_str.
2.2條件運(yùn)算符和循環(huán)
如何調(diào)用在另一個(gè)程序中的子程序?
語法
PERFORM <subroutine>(<program name>) using …
如何在程序之間傳輸數(shù)據(jù)?
為了在不同的程序之間傳輸數(shù)據(jù),你可以先將數(shù)據(jù)保存到global ABAP內(nèi)存,然后在另一個(gè)程序中讀取它。
注意 :數(shù)據(jù)傳輸完成后, 一定要清干凈global ABAP內(nèi)存。
代碼 范例
Program 1
EXPORT obj1 ... objn TO MEMORY ID ‘m_id’.
Program 2
IMPORT obj1 ... objn FROM MEMORY. ID ‘m_id’.
… …
FREE MEMORY ID ‘m_id’.
如何使用“MOVE-CORRESPONDING”在兩個(gè)結(jié)構(gòu)之間復(fù)制數(shù)據(jù)?
如果你有兩個(gè)結(jié)構(gòu) , 你想把同一字段類型(field type)的值從一個(gè)結(jié)構(gòu)拷貝到另一個(gè)結(jié)構(gòu), 你只要使用語句“MOVE-CORRESPONDING”來實(shí)現(xiàn)這一目標(biāo)。 只要一行代碼即可。
然而,盡管這個(gè)命令非常方便 , 但對于CPU來說是非常昂貴的, 因?yàn)?#8220;MOVE-CORRESPONDING”語句會(huì)逐一檢查每一個(gè)字段的類型。因此,如果程序的運(yùn)行速度要求很高,你可能需要一個(gè)字段一個(gè)字段地拷貝。
另外請注意 ,因?yàn)?“MOVE-CORRESPONDING”語句會(huì)逐一檢查每一個(gè)字段的類型, 如果你有兩個(gè)相同類型的字段,你將會(huì)得到重復(fù)的數(shù)據(jù)。所以請先弄清楚兩個(gè)結(jié)構(gòu)的內(nèi)容, 然后再應(yīng)用此命令。
語法 。
MOVE-CORRESPONDING struc1 TO struc2.
如何把程序分配到不同的包(package)?
在事務(wù)SE38或者SE80窗口里,用右鍵單擊Repository Browser窗口里的程序名。然后 選擇“更多功能“ à “更改包(Change package assignment)。
如何在循環(huán)(Loop),子程序(Subroutine)或報(bào)表程序(Report)里使用“EXIT”?
1。“EXIT”在循環(huán)(LOOP)結(jié)構(gòu)里。
EXIT命令可以用來跳出循環(huán)結(jié)構(gòu) , 并終止循環(huán)的過程。
注意,在這里所說的“循環(huán)”結(jié)構(gòu)不僅是指循環(huán)結(jié)構(gòu)本身(Loop),而且還包括諸如DO, WHILE, SELECT等結(jié)構(gòu),
2。“EXIT”在一個(gè)子程序中(Subroutine)。
如果“EXIT”命令用在一個(gè)子程序或其它模塊里,它是用來離開子程序或模塊的。
“子程序”在這里指的是”FORM“結(jié)構(gòu) , 而“模塊”是指 如MODULE, FUNCTION, TOP-OF-PAGE, and END-OF-PAGE等結(jié)構(gòu)。
請注意 ,
如果EXIT是在子程序或其他模塊內(nèi)的循環(huán)結(jié)構(gòu)里,它只能讓你跳出循環(huán),但不能跳出子程序或模塊。
3。“EXIT”在報(bào)表程序中(Report)。
如果EXIT既不在一個(gè)子程序或模塊里,也不在循環(huán)結(jié)構(gòu)里,那么它就會(huì)終止報(bào)表程序或者啟動(dòng)最后的清單顯示。
如何使用“CHECK”語句 , 而不是”IF“語句?
1。“CHECK”語句用在循環(huán)(LOOP)中。
如果<logic expression>檢查結(jié)果為負(fù),當(dāng)前循環(huán)進(jìn)程終止 , 然后開始下一個(gè)循環(huán)。
2。“CHECK”在一個(gè)子程序(Subroutine)或報(bào)表程序(Report)里
如果<logic expression>檢查結(jié)果為負(fù),程序停止運(yùn)行并退出當(dāng)前的子程序或報(bào)表程序。
語法
CHECK <logic expression>.
和需要若干行的“IF”結(jié)構(gòu)比較,CHECK”語句干凈簡潔。 往往若干行的“IF”代碼可以被只有一行的“CHECK“語句取代。
如何在循環(huán)結(jié)構(gòu)中使用“AT…ENDAT”結(jié)構(gòu)?
語法
Loop at itab.
At FIRST.
… … ... ...
ENDAT.
At LAST.
… … ... ...
ENDAT
ENDLOOP
2.3文件輸入/輸出
如何打開一個(gè)文件?
你可以使用下面的語句來打開文件。 但請注意,如果你不使用任何附加值,打開的文件只能進(jìn)行讀取而不能更改。而且是二進(jìn)制模式。
如果你沒有指定目錄,系統(tǒng)將使用配置參數(shù)DIR_HOME定義的目錄作為默認(rèn)目錄。 因此 , 我建議你在文件名變量里使用完整的文件路徑 , 以避免混亂。
語法
OPEN DATASET <file_name>.
SY-SUBRC = 0. “文件打開.
SY-SUBRC = 8. “文件無法打開。
如何從文件中讀取數(shù)據(jù)?
如果你想從文件中讀取數(shù)據(jù),可以使用”OPEN DATASET“ 和”READ DATASET 語句.  只要用戶有更改權(quán)限, 這個(gè)語句就能以“讀取/更新”模式打開文件。
如果用戶沒有更改權(quán)限,文件只以'讀取'模式打開。 如果這仍然不能打開文件,錯(cuò)誤信息就會(huì)出現(xiàn)。
下面的代碼范例顯示如何打開一個(gè)文件,一行行讀出數(shù)據(jù),并保存數(shù)據(jù)到一個(gè)內(nèi)部表中。
代碼 范例
DATA: input_file(40) TYPE c,
itab(94) OCCURS 0 WITH HEADER LINE,
msg(100).
OPEN DATASET input_file FOR INPUT IN TEXT MODE
ENCODING DEFAULT MESSAGE msg.
IF sy-subrc NE 0.
WRITE:/ 'ERROR opening file', input_file, 'with message',
ELSE.
DO.
READ DATASET input_file INTO itab.
IF sy-subrc = 0.
APPEND itab.
ENDIF.
ENDDO.
CLOSE DATASET input_file.
ENDIF.
如何到一個(gè)文件中填寫數(shù)據(jù)?
如果你需要保存數(shù)據(jù)到一個(gè)文件中,你可以使用“OPEN DATASET”
對于OUTPUT的語句, 只要用戶有文件讀取的授權(quán), 此語句試圖以'寫/更新'模式打開文件。  如果用戶沒有授權(quán),系統(tǒng)中打開'寫'模式文件。
如果該文件已存在,其現(xiàn)有的內(nèi)容被刪除。
如果該文件不存在,系統(tǒng)會(huì)創(chuàng)建一個(gè)新文件。
代碼范例通過循環(huán)(LOOP)從 內(nèi)表中讀取數(shù)據(jù), 然后一行行地轉(zhuǎn)移到文件中。
代碼 范例
DATA: output_file(40) TYPE c,
itab(94) OCCURS 0 WITH HEADER LINE,
msg(100).
OPEN DATASET output_file FOR OUTPUT IN TEXT MODE
ENCODING DEFAULT MESSAGE msg.
IF sy-subrc EQ 0.
LOOP AT itab.
TRANSFER itab TO output_file.
ENDLOOP.
CLOSE DATASET output_file.
ELSE.
WRITE:/ 'ERROR: Writing file with message', msg.
ENDIF.
如何將數(shù)據(jù)加到一個(gè)文件的尾部?
前面的范例是把數(shù)據(jù)加到一個(gè)文件中。
如果文件在系統(tǒng)中存在,舊的內(nèi)容會(huì)被刪除然后加進(jìn)新的數(shù)據(jù)。 但在很多情況下,你不想清除現(xiàn)有的內(nèi)容。
你只是想追加新的內(nèi)容到文件的末尾。
要做到這一點(diǎn),你可以使用“OPEN DATASET... FOR APPENDING“語句. 這個(gè)語句會(huì)試圖打開文件成”追加'模式, 然后你可以把新的數(shù)據(jù)加到文件的末尾。
代碼 范例
如何使你的文件I / O程序可以在不同的操作系統(tǒng)下運(yùn)行?
正如你在下面的例子中看到,你需要提供一個(gè)邏輯文件名和所屬操作系統(tǒng)的名稱,從而獲得實(shí)時(shí)的物理文件名。
If you don't specify the operating system, the function module will use system defined operating system name, sy-opsys, by default. 如果你不指定操作系統(tǒng),功能模塊將使用系統(tǒng)定義的默認(rèn)操作系統(tǒng)的名(SY - opsys)。
代碼 范例
DATA: lv_filenam TYPE string.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
*  CLIENT                       = SY-MANDT
logical_filename             = '<file_name>'
*  OPERATING_SYSTEM             = SY-OPSYS
*  PARAMETER_1                  = ' '
*  PARAMETER_2                  = ' '
*  PARAMETER_3                  = ' '
*  USE_PRESENTATION_SERVER       = ' '
*  WITH_FILE_EXTENSION          = ' '
*  USE_BUFFER                   = ' '
*  ELEMINATE_BLANKS             = 'X'
* IMPORTING *進(jìn)口
*  EMERGENCY_FLAG               =
*  FILE_FORMAT                  =
file_name                    = lv_filenam
EXCEPTIONS
file_not_found               = 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.
如何在ABAP程序里運(yùn)行Windows /Unix命令?
如果你是一個(gè)Unix或Windows操作系統(tǒng),下面的代碼范例顯示如何在該操作系統(tǒng)上運(yùn)行命令。
該機(jī)制其實(shí)就是打開一個(gè)文件 , 運(yùn)行命令。 然后將運(yùn)行結(jié)果寫入一個(gè)文件。
代碼范例顯示了如何運(yùn)行的Unix命令。
如果你在Windows系統(tǒng)上,你只需把文件的路徑和命令更改成Windows格式。
代碼 范例
DATA: result_file(50) VALUE '/tmp/test',
msg_text(50),
command(255) VALUE 'ls'.
OPEN DATASET result_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT
FILTER command MESSAGE msg_text.
CLOSE DATASET result_file.
DELETE DATASET result_file.
如何從應(yīng)用服務(wù)器(Application Server)上檢索到文件列表?
使用功能模塊“RZL_READ_DIR_LOCAL”, 你可以從應(yīng)用服務(wù)器上得到給定的文件目錄中的文件列表。
下面的代碼范例顯示了如何從當(dāng)前目錄檢索文件列表。
代碼范例:
DATA: lv_fdir TYPE pfeflnamel VALUE '.',
it_files LIKE salfldir OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'RZL_READ_DIR_LOCAL'
EXPORTING
name     = lv_fdir
TABLES
file_tbl = it_files.
LOOP AT it_files.
WRITE: / it_files-name.
ENDLOOP.
2.4其他有用的建議
如何轉(zhuǎn)換不同的時(shí)區(qū)的日期和時(shí)間?
日期和時(shí)間的轉(zhuǎn)換可以通過先轉(zhuǎn)換日期和時(shí)間到格林尼治標(biāo)準(zhǔn)時(shí)區(qū)(GMT), 然后從格林尼治時(shí)區(qū)的日期和時(shí)間轉(zhuǎn)換到所需時(shí)區(qū)的日期和時(shí)間。
首先,你可以使用功能模塊“IB_CONVERT_INTO_TIMESTAMP”轉(zhuǎn)換日期和時(shí)間到GMT時(shí)區(qū)。 輸入?yún)?shù)是日期,時(shí)間和時(shí)區(qū)。 輸出參數(shù)就是格林尼治時(shí)間。
然后,你使用功能模塊“IB_CONVERT_FROM_TIMESTAMP”再轉(zhuǎn)換日期和時(shí)間到你所需的時(shí)區(qū)。
輸入?yún)?shù)是從上面的功能模塊獲得時(shí)間和所需轉(zhuǎn)換的時(shí)區(qū)。 輸出參數(shù)是需要的時(shí)區(qū)的日期和時(shí)間。
Please note some related system fields here.
請注意一些相關(guān)的系統(tǒng)域值。
域值SY -DATUM和SY - UZEIT分別是系統(tǒng)的日期和時(shí)間。
如果你需要得到本地日期,時(shí)間,而所在時(shí)區(qū),你可以分別使用域值SY - DATLO,SY - TIMLO與SY - ZONLO。
代碼 范例
DATA :
timestamp LIKE tzonref-tstamps,
time     LIKE sy-uzeit,
date     LIKE sy-datum.
time = sy-uzeit.
date = sy-datum.
WRITE :/ 'Current system Date and Time is ',date, time.
WRITE :/ 'Current system located at Time Zone is ', sy-zonlo.
CALL FUNCTION 'IB_CONVERT_INTO_TIMESTAMP'
EXPORTING
i_datlo     = date
i_timlo     = time
i_tzone     = sy-zonlo
IMPORTING
e_timestamp = timestamp.
CALL FUNCTION 'IB_CONVERT_FROM_TIMESTAMP'
EXPORTING
i_timestamp = timestamp
i_tzone     = 'PST'
IMPORTING
e_datlo     = date
e_timlo     = time.
WRITE :/ 'Current Date and Time at PST zone is ',date, time.
如何使用Field Symbols?
在ABAP里,Field symbol就像是C語言里的指針。 它有一個(gè)參考值指向內(nèi)部表記錄或一個(gè)變量。 它的本身不包含任何數(shù)據(jù)。
Field Symbol的最大優(yōu)點(diǎn)就是靈活性。 它不關(guān)心指向數(shù)據(jù)是什么類型。當(dāng)然它的不利之處也是由于這種靈活性。編譯器不檢查field symbol的類型。由于沒有類型檢查,編譯器幾乎不可能在運(yùn)行前檢測到錯(cuò)誤。
field symbol的語法是它總是由尖括號括起來。ASSIGN命令用于把變量或內(nèi)部表記錄分配給field symbol。
語法
FIELD-SYMBOLS <fs>.
代碼 范例
DATA: itab TYPE TABLE OF spfli,
wa LIKE LINE OF itab.
* 傳統(tǒng)的方法更新內(nèi)部表的記錄。
* 1. 把記錄讀入工作區(qū)
* 2. 在工作區(qū)里改值。
* 3. 從工作區(qū)修改內(nèi)部表的記錄。
READ TABLE itab INTO wa INDEX 3.
wa-carrid = 'AA'.
MODIFY itab FROM wa INDEX 3.
*使用field symbol修改內(nèi)部表的記錄。
FIELD-SYMBOLS <fs>.
READ TABLE itab ASSIGNING <fs>.
<fs>-carrid= 'AA'.
什么是系統(tǒng)域值(System Field)?
系統(tǒng)域值提供了極其有用的系統(tǒng)運(yùn)行時(shí)的數(shù)據(jù)。 系統(tǒng)域值的語法是SY -《名稱》, 如SY - SUBRC。
系統(tǒng)域值的總數(shù)超過170,其中包括曾經(jīng)一些現(xiàn)在已經(jīng)過時(shí)系統(tǒng)域值。 為了你的方便,我在這里給出一個(gè)常常在我們的日常工作中使用的系統(tǒng)域值列表。
SY-SYSID – 正在使用的R / 3系統(tǒng)的名字。
SY-DYNNR – 屏幕數(shù)字。在對話程序中,你可以使用此系統(tǒng)域值來確定你需要的屏幕。 語法是“ LEAVE TO SCREEN SY-DYNNR.”。
SY-LANGU - 用戶的登錄語言(一個(gè)字節(jié)) , 例如英語是E和德語是D。
SY-MANDT – 你所在的系統(tǒng)客戶端號。
SY-UNAME – 你的系統(tǒng)用戶名。
SY-DATLO – 用戶的本地日期。
SY-DATUM – 當(dāng)前服務(wù)器的日期。
SY-TIMLO – 用戶的本地時(shí)間。
SY-TCODE – 目前的交易(Transaction)代碼。
SY-ULINE/VLINE – 水平/垂直的屏幕輸出線。
SY-INDEX - 在DO或WHILE循環(huán),SY-INDEX給出目前通過循環(huán)數(shù)
SY-TABIX – 當(dāng)前內(nèi)部表行號。
SY-DBCNT – 當(dāng)前“select … from …”語句讀到的行數(shù)。
SY-TFILL - 當(dāng)運(yùn)行完“DESCRIBE TABLE“或”LOOP AT“或”READ TABLE”后, SY - TFILL給出內(nèi)部表的總行數(shù)目
SY-UCOMM – 用戶命令。 你可以到菜單 “系統(tǒng)》狀態(tài)...“去查找SY_UCOMM值。
如果我只能在運(yùn)行期間得到數(shù)據(jù)庫表名,我該如何在運(yùn)行時(shí)動(dòng)態(tài)地指定數(shù)據(jù)庫表名?
下面的代碼范例顯示了如何在SELECT語句中使用數(shù)據(jù)庫表名變量。
在運(yùn)行時(shí),程序先獲取數(shù)據(jù)庫表的名稱- SFLIGHT,并把該數(shù)據(jù)庫表的名稱賦予一個(gè)變量- <tablename>。
在稍后的SELECT語句中,使用這個(gè)數(shù)據(jù)庫表名稱的變量。
請注意 , 在SQL語句里, 變量必須放在括號里。
代碼 范例
DATA: tablename TYPE tabname16,
rows TYPE i.
tablename = 'SFLIGHT'.
SELECT COUNT(*) FROM (tablename) INTO rows.
WRITE: rows.
如何在多個(gè)程序中搜索特定的字符串?
在某些情況下,你需要在某些程序里尋找特定的字符串。這里幾個(gè)搜索的辦法。
1.使用程序“RPR_ABAP_SOURCE_SCAN”。然而,在4.6C及更高版本, 這一程序不再適用。
2.如果你找不到上面的程序,試試程序RSRSCAN1。 不幸的是,這一程序在新的NetWeaver 6.20平臺上也過時(shí)了。
3.還有另一種方便的方法可以在某些程序字符串搜索。在transaction SE38的第一個(gè)屏幕,進(jìn)入菜單 “實(shí)用程序”》 在源代碼中查找“。
如何解開壓縮域值(packed field)?
下面的代碼范例顯示了如何解開壓縮域值,并包在域值前置零。壓縮域值“p_field”打印出“123”。解壓縮后的域值“unp_field”打印出“00000123”。
代碼 范例
DATA: p_field(2) TYPE p VALUE 123,
unp_field(8) TYPE c.
WRITE: 'packed filed: ', p_field.
UNPACK p_field TO unp_field.
WRITE: / 'unpacked field: ', unp_field.
打印結(jié)果
packed filed: 123
unpacked field: 00000123
如何顯示Domain Fixed Value的簡短文字?
你可以通過運(yùn)行transaction SE16來打開表視圖(Table View)DD07V。 然后根據(jù)Domain (DOMNAME), 固定值(DOMVALUE_L)和語言(DDLANGUAGE)來搜索簡短文字(DDTEXT)。
第三章數(shù)據(jù)庫表
如何數(shù)據(jù)庫表選擇數(shù)據(jù)?
select a  b  into (l_a, l_b) from <db_table> where c = 'XXX'.
If sy-subrc = 0. 如果型號:SY - subrc = 0。
it_tab_wa-a = l_a. it_tab_wa - 1 = l_a。
it_tab_wa-b = l_b. it_tab_wa -乙= l_b。
append it_tab_wa to it_tab. 追加it_tab_wa的it_tab。
clear it_tab_wa. 明確it_tab_wa。
Else. 其他的。
Exit. 退出。
Endif. Endif。
endselect. endselect。
Sy-dbcnt gives number of lines read from “select” 翟思dbcnt提出了一些“行數(shù)選擇閱讀”
Where <f> [not] between <g1> and <g2> 如果<f> [不]和<g2>之間<g1>
Where <f> [not] like <g1> ('_' a single char. '%' any char. string including empty. 如果<f> [不]喜歡<g1>('_'一個(gè)單一的字符。'%'的任何字符。串包括空。
<f> [not] in (<g1>, …, <gn>) <f> [不]在(<g1>,...,<gn>)
<f> is [not] NULL <f>是[不]空
* name and field type in <it_tab> match <db_table> *名和字段類型<it_tab>比賽<db_table>
Select a b  Into (appending) corresponding fields of table it_tab
from <db_table> 從<db_table>
where c = 'XXX'. 其中c ='三十'。
Select ab 選擇抗體
into (appending) table it_tab 成(附加)表it_tab
from <db_table> 從<db_table>
for all entries in it_tab2 在it_tab2所有條目
where c = it_tab2-c 其中c = it_tab2 - ?
and d = it_tab2-d. 和d = it_tab2三維。
Select A~a B~b 選擇A1乙b
into corresponding fields of table it_tab 到相應(yīng)的字段表it_tab
from <db_table_A> as A inner join <db_table_B> as B 從<db_table_A>為A內(nèi)加入乙<db_table_B>
on A~id = B~id 對阿= B的身份證號
where A~id = '12345' 其中A編號= '12345'
and A~date between param_open and param_close. 和A之間param_open和param_close日期。
Data: condition_str(100) type c, 數(shù)據(jù):condition_str(100)C型,
I_condition like condition_str occurs 0 with header line. 像condition_str I_condition發(fā)生與標(biāo)題行0。
Concatenate 'Y =' y into condition_str separated by space. 串聯(lián)'? ='Y到用空格分隔condition_str。
Append condition_str to I_condition. 追加condition_str的I_condition。
If NOT z is initial. 如果沒有Z是最初的。
Concatenate 'Z =' z into condition_str separated by space. 串聯(lián)的'Z ='?進(jìn)入空間分隔condition_str。
Append condition_str to I_condition. 追加condition_str的I_condition。
Endif. Endif。
Select x into y from db_tble X到輜請從db_tble
Where x = a 其中x = 1
And ( I_condition ). 和(I_condition)。
當(dāng)用“FOR ALL ENTIRES IN”語句作選擇時(shí)的最佳方式。
Beware when using 'FOR ALL ENTRIES' in select statement. 小心使用為所有參賽作品的'在選擇語句。 Although this addition to the select statement is an efficient way to fetch distinct records from DB table, follow the below steps to ensure data consistency and efficiency. 雖然這對選擇語句除了是一種有效的方法 , 從數(shù)據(jù)庫表中提取不同的記錄,請按照下列步驟 , 以確保數(shù)據(jù)的一致性和效率。
1. 1。 Sort the Internal table used in the 'FOR ALL ENTRIES IN' clause. 排序表使用內(nèi)部的所有參賽作品'中'的條款。
2. 2。 make sure they do not contain duplicates. 確保它們不包含重復(fù)。
3. 3。 last and most importantly include a primary key field(Unique entry) 最后 , 也是最重要的是包括一個(gè)主鍵字段(唯一項(xiàng))
in the select list. 在選擇列表中。 The reason, the system gets unique field records based 究其原因,該系統(tǒng)獲得的唯一字段的記錄
on the where condition. 在WHERE條件。 It summarizes the data based on the Data type and 它總結(jié)了基于數(shù)據(jù)類型和數(shù)據(jù)
field list in the target internal table. 字段列表中的目標(biāo)內(nèi)部表。
如何使數(shù)據(jù)庫表能夠被編輯?
三種辦法:
第一種:當(dāng)通過SE11創(chuàng)建新的數(shù)據(jù)庫表時(shí),選擇“Table maintenance allowed”. 這樣用戶就能通過SE16編輯表的內(nèi)容。
第二種:通過SM30編輯. 首先通過SE11使表處于編輯狀態(tài)。去菜單:實(shí)用程序 〉表格維護(hù)生成器〉創(chuàng)建
第三種:
Edit via SM30: SE11 à menu Utilities>table maintenance generator à “Create” button à Input “Auth. 編輯通過SM30:SE11 菜單實(shí)用程序 “> 表維修發(fā)電機(jī) à”創(chuàng)建“ 按鈕 , 輸入”認(rèn)證。 groups” à Input “Functional group” à check “one step” à screen number in “Overview screen” 團(tuán)體à輸入”功能組“ 支票 ”一步到位“ 屏幕號碼”概述屏幕“
Define a transaction code to edit à after above steps to create maintenance screen for the table à SE93 to create a transaction code à check “ Transaction with parameters ” à Transaction “SM30” à check “Skip initial screen” à parameters: “VIEWNAME = <table name>” and “UPDATE = X”. 定義一個(gè)交易代碼編輯上述步驟后創(chuàng)建的表維護(hù)屏幕 SE93創(chuàng)建一個(gè)交易代碼 檢查“ 交易與參數(shù) ” 一宗 “SM30” 開支票 “跳過初始畫面” 一個(gè) 參數(shù):“視圖名=”表名“”和“update = X”的。
如何添加/刪除/修改數(shù)據(jù)庫表中的關(guān)鍵項(xiàng)?
你可以通過Tcode SE14來更改數(shù)據(jù)庫表。
如何顯示和分配權(quán)限組?
顯示和分配權(quán)限組是通過事務(wù)SE54來實(shí)現(xiàn)的。
要顯示權(quán)限組, 你可以在事務(wù)SE54窗口(生成彪維護(hù)對話)上,選擇“權(quán)限組“。 然后點(diǎn)擊“顯示“按鈕。 所有權(quán)限組就會(huì)羅列在屏幕上。其實(shí)這些數(shù)據(jù)全部來自數(shù)據(jù)庫表S_TABU_DIS。
如果要分配權(quán)限組,你可以選擇“分配權(quán)限組“, 然后點(diǎn)擊”創(chuàng)建/更改“按鈕。
如何在數(shù)據(jù)庫表的選擇字段里加下拉選擇值?
通過事務(wù)SE11 對數(shù)據(jù)庫表進(jìn)行更改 。雙擊字段的數(shù)據(jù)元素。,在數(shù)據(jù)詞典窗口 雙擊“Domain“。然后再“Value Range”視窗,添加”固定值“。
如何在數(shù)據(jù)庫表的選擇字段里添加F4功能?
首先,要在數(shù)據(jù)庫字段上增加檢查表(Check Table). 通過事務(wù)SE11 對數(shù)據(jù)庫表進(jìn)行更改。 選擇字段, 然后點(diǎn)擊“Foreign Key”按鈕 。在彈起的Foreign Key 選擇窗口里,設(shè)定作為檢查表(Check Table)的數(shù)據(jù)庫表和字段為Foreign Key。
如何顯示和刪除表上的鎖定(locks on the table)?
你可以通過事務(wù)代碼SM12來顯示被鎖定的數(shù)據(jù)庫表。如果需要?jiǎng)h除表上的鎖定,可以先在鎖定表目清單上選擇被鎖定的表名,然后點(diǎn)擊刪除按鈕。
如何在程序中動(dòng)態(tài)地鎖定/解鎖數(shù)據(jù)庫對象?
當(dāng)鎖定對象已被激活,系統(tǒng)生成功能模塊ENQUEUE/DEQUEUE。如果你要?jiǎng)h除程序里所有的鎖定對象:調(diào)用功能模塊'DEQUEUE_ALL'。
語法
ENQUEUE_ <lock_object>。
DEQUEUE_ <lock_object>。
如何在SELECT語句中動(dòng)態(tài)地定義WHERE條款?
代碼范例
DATA:  l_name1 LIKE lfa1-name1,
l_symbol VALUE '%'.
DATA : t_lfa1 LIKE lfa1 OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS <ltfs> TYPE ANY.
PARAMETERS : name1 LIKE lfa1-name1.
CONCATENATE name1 l_symbol INTO l_name1.
ASSIGN l_name1 TO <ltfs>.
SELECT * FROM lfa1 INTO TABLE t_lfa1 WHERE name1 LIKE <ltfs>.
如何從ABAP程序中創(chuàng)建或修改數(shù)據(jù)庫表 ?
如果你需要從一個(gè)ABAP程序里創(chuàng)建或修改表或結(jié)構(gòu),你可以參考下面的例子。 這個(gè)例子顯示了如何用功能模塊DDIF_TABL_GET, DDIF_TABL_PUT和DDIF_TABL_ACTIVATE達(dá)到這一目的。
首先,它從數(shù)據(jù)庫表讀取信息 , 然后用特定的數(shù)據(jù)庫表領(lǐng)域創(chuàng)建一個(gè)新的結(jié)構(gòu)。 最后以這個(gè)新的結(jié)構(gòu)創(chuàng)建一個(gè)新數(shù)據(jù)庫表。
代碼范例
DATA: t_dd03p LIKE dd03p OCCURS 0 WITH HEADER LINE,
wa_dd02v LIKE dd02v .
FIELD-SYMBOLS: <fs> LIKE LINE OF t_dd03p.
START-OF-SELECTION .
CALL FUNCTION 'DDIF_TABL_GET'
EXPORTING
name      = 'CE31000'
IMPORTING
dd02v_wa  = wa_dd02v
TABLES
dd03p_tab = t_dd03p.
DELETE t_dd03p WHERE fieldname(2) NE 'VV'.
wa_dd02v-tabclass = 'INTTAB' .
wa_dd02v-tabname  = 'ZMYTABLE' .
wa_dd02v-as4user  = sy-uname .
wa_dd02v-as4time  = sy-uzeit .
wa_dd02v-as4date  = sy-datum .
wa_dd02v-applclass = '' .
wa_dd02v-authclass = '' .
LOOP AT t_dd03p ASSIGNING <fs>.
<fs>-tabname   = 'ZMYTABLE'.
ENDLOOP.
CALL FUNCTION 'DDIF_TABL_PUT'
EXPORTING
name      = 'ZMYTABLE'
dd02v_wa  = wa_dd02v
TABLES
dd03p_tab = t_dd03p.
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
EXPORTING
name = 'ZMYTABLE'.
第四章內(nèi)表
如何定義和使用內(nèi)表?
代碼范例
DATA:
* Define Internal Table without header line.
it_tab LIKE sflight OCCURS 0,
* Define work area for Internal Table without header line.
it_tab_wa TYPE sflight,
* Define Internal Table without header line.
it_tab_hdln LIKE sflight OCCURS 0 WITH HEADER LINE.
* Handle Internal Table without header line.
SELECT * FROM sflight INTO TABLE it_tab.
LOOP AT it_tab INTO it_tab_wa.
WRITE: / it_tab_wa-carrid.
ENDLOOP.
* Handle Internal Table with header line.
SELECT * FROM sflight INTO TABLE it_tab_hdln.
LOOP AT it_tab_hdln.
WRITE: / it_tab_hdln-carrid.
ENDLOOP.
ABAP Objects:
Data: it_tab type Standard/Sorted/Hashed table of <…> with key [initial size n].
如何讀取內(nèi)表?
代碼范例
DATA:
<int_tab> TYPE STANDARD TABLE OF <db_table> with header line.
SELECT *
INTO TABLE <int_tab>
FROM <db_table>.
SORT <int_tab> BY f1 f2 f3.
READ TABLE <int_tab> WITH KEY
f1 = var1
f2 = var2
f3 = var3
BINARY SEARCH.
如何檢查內(nèi)表的大小?
在運(yùn)行完“DESCRIBE TABLE“, ”LOOP AT,“ 和 ” READ TABLE” 之后, SY-TFILL被賦予內(nèi)表大小數(shù)目。
Describe table <itab>.
If sy-tfill > 0.
<。。。你的程序。。。 >
endif.
Describe table <itab> lines <line>.
If <line> = 0.
Endif.
如何刪除內(nèi)表的數(shù)據(jù)?
代碼范例
Loop at <itab>
tabix = sy-tabix.
Delete <itab> index tabix.
Endloop.
如何刪除內(nèi)表中的重復(fù)行?
代碼范例
sort <i_tab> by field_1 field_2.
delete adjacent duplicates from <i_tab> comparing field_1 field_2.
一些和內(nèi)表相關(guān)的系統(tǒng)閾值。
SY-TABIX --內(nèi)表的當(dāng)前行行數(shù)。
SY-TFILL -- 內(nèi)表所含行數(shù)。
如何定義內(nèi)表類型的“Selection option” (Range)?
代碼范例
DATA: t_tcode TYPE RANGE OF syst-tcode WITH HEADER LINE.
DATA: wa_tcode TYPE LINE OF t_tcode.
CLEAR wa_tcode.
MOVE 'I' TO wa_tcode-sign.
*     move 'BT' to wa_tcode-option.
*     move 'CP' to wa_tcode-option.
*     move 'EQ' to wa_tcode-option.
MOVE:
<val_low> TO wa_tcode-low,
<val_high> TO wa_tcode-high.
APPEND wa_tcode TO t_tcode.
如何循環(huán)內(nèi)表 ?
在LOOP語句里使用Field Symbol,  而不是使用一個(gè)工作區(qū)(或通過標(biāo)題行)。這樣你可以避免傳輸數(shù)據(jù)進(jìn)出工作區(qū)。 Field Symbol 直接指向表內(nèi)的紀(jì)錄,這樣你可以直接修改表的紀(jì)錄,而避免把數(shù)據(jù)傳進(jìn)和傳出到工作區(qū)。
語法
FIELD-SYMBOLS: < field symbol > TYPE <內(nèi)表類型>.
LOOP AT 《內(nèi)表》 ASSIGNING 《field symbol》
如何使用Hash表快速的搜索內(nèi)表?
如果你的程序里的內(nèi)表是用于查找數(shù)據(jù),那最好的辦法就是使用Hash表。
代碼范例
TYPES: BEGIN OF mrp_lookup_type,
matnr LIKE marc-matnr,
werks LIKE marc-werks,
dispo LIKE marc-dispo,
dzeit LIKE marc-dzeit,
END OF mrp_lookup_type.
* Define static hashed table to hold results
DATA: st_mrp TYPE HASHED TABLE OF mrp_lookup_type
WITH UNIQUE KEY matnr werks.
DATA: l_wa_mrp TYPE mrp_lookup_type.
CLEAR dzeit.
* See if data is in the table
READ TABLE st_mrp INTO l_wa_mrp WITH TABLE KEY matnr = matnr
werks = werks.
在內(nèi)表里使用Field Symbol的最佳做法。
你想提高處理內(nèi)表的效率嗎?新的ABAP Object extension標(biāo)準(zhǔn)對內(nèi)表的定義有很大改進(jìn)。新的定義方式有很多更好的選擇,如使用Hash表和排序表的性能。Field Symbol的使用又把處理內(nèi)表的效率更進(jìn)一步。
新的內(nèi)表定義通常不包括一個(gè)內(nèi)表工作區(qū)。 此外,ABAP Objects也不允許內(nèi)表由頭行(Header Line)。所以為了增加性能,你不應(yīng)該定義一個(gè)工作區(qū), 而是使用Field Symbol。
工作區(qū)和頭行的概念都需要將數(shù)據(jù)從內(nèi)表向工作區(qū)或頭行移動(dòng)。而Field Symbol只是一個(gè)指向內(nèi)表紀(jì)錄的指針。用Field Symbol就不再需要把數(shù)據(jù)遷移進(jìn)或出工作區(qū)和頭行了。因?yàn)闆]有數(shù)據(jù)復(fù)制和轉(zhuǎn)移,所以處理的速度要快得多。
使用Field Symbol的關(guān)鍵在于:
1)Field symbol的定義類型要和內(nèi)表中的記錄類型相同。
代碼范例
TYPES: BEGIN OF it_vbpa_line,
vbeln LIKE vbak-vbeln,
kunnr LIKE vbak-kunnr,
END OF it_vbpa_line.
DATA: it_vbpa TYPE HASHED TABLE OF it_vbpa_line
WITH UNIQUE KEY vbeln.
FIELD-SYMBOLS: <it_vbpa_line> TYPE it_vbpa_line.
2)在處理內(nèi)表時(shí)候,使用ASSIGNING命令。
代碼范例
在循環(huán)(LOOP)中的使用的范例。
LOOP AT it_vbak ASSIGNING <it_vbak_line>.
ENDLOOP.
直接從表中讀取的范例。
READ TABLE it_vbpa ASSIGNING <it_vbpa_line>
WITH TABLE KEY vbeln = <it_vbak_line>-vbeln.
3) 從Field symbol里讀取數(shù)據(jù)。
代碼范例
wa_zpartner-vkorg = <it_vbak_line>-vkorg.
如何在程序調(diào)試過程中,下載內(nèi)表內(nèi)容到Excel?
如果你在程序調(diào)試中,發(fā)現(xiàn)內(nèi)表有太多的表項(xiàng) 而難以發(fā)現(xiàn)問題的時(shí)候, 一個(gè)好辦法是把內(nèi)表的內(nèi)容下載到Excel再分析!在調(diào)試模式下,從菜單路徑“轉(zhuǎn)到->“顯示對象-〉內(nèi)表” 顯示內(nèi)表。  鍵入內(nèi)表的名稱。然后 , 菜單路徑:“轉(zhuǎn)到->“顯示對象〉結(jié)構(gòu)編輯器”。此時(shí),你的內(nèi)表的內(nèi)容就全部顯示出來。為了要確保所有內(nèi)容都顯示出來,菜單路徑:“對象>顯示完整列表”?,F(xiàn)在您可以通過菜單路徑:“系統(tǒng)〉列表->保存” 下載您的內(nèi)表內(nèi)容到Excel了。
從R / 3版本4.7開始,在程序調(diào)試過程中保存的內(nèi)表的內(nèi)容成為可能:
在調(diào)試器(得不夠個(gè)人)里顯示內(nèi)表的內(nèi)容。
然后按Ctrl - F11鍵或鼠標(biāo)右鍵鼠標(biāo) , 點(diǎn)擊“另存為Excel工作表”(Save As Excel Worksheet)。
輸入要保存的起始行數(shù)和結(jié)束行數(shù)。
選擇你PC機(jī)上的文件夾/文件名,然后保存。
如何寫一個(gè)程序把內(nèi)表內(nèi)容在運(yùn)行時(shí)下載到Excel?
下面的范例是先形成一個(gè)內(nèi)表,在把這個(gè)內(nèi)表下載到用戶PC的Excel文件里。
代碼范例
DATA itab LIKE sflight OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
SELECT-OPTIONS :  carrid FOR itab-carrid.
SELECTION-SCREEN END OF BLOCK bl1.
START-OF-SELECTION.
SELECT carrid connid fldate price
INTO CORRESPONDING FIELDS OF TABLE itab
FROM sflight
WHERE carrid IN carrid.
* Excel direct download
DATA : excel_file_and_path(128).
DATA : tmp_name LIKE rlgrap-filename.
CALL FUNCTION 'REGISTRY_GET'
EXPORTING
key     = 'protocolStdFileEditingserver'
section = 'ExcelWorksheet'
IMPORTING
value   = excel_file_and_path.
DATA : file_name    LIKE rlgrap-filename VALUE 'C:TEMP.xls'.
DATA : cancel.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename     = file_name
filetype     = 'DAT'
IMPORTING
act_filename = file_name
cancel       = cancel
TABLES
data_tab     = itab.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
commandline = file_name
program     = excel_file_and_path.
如何以HTML格式顯示內(nèi)表內(nèi)容?
下面的程序范例給你一個(gè)如何形成一個(gè)內(nèi)表然后把表的內(nèi)容以HTML的格式顯示出來。
代碼范例
TABLES  dd02l.
DATA: tabname TYPE dd02l-tabname VALUE 'SFLIGHT'.
DATA: zx030l LIKE x030l,
p_number TYPE i,
tablefound TYPE i.
DATA: colorval TYPE i.
DATA: packval TYPE p, totalrows TYPE n.
DATA: w_area1 TYPE sflight,
charval(20) TYPE c.
DATA: tablen TYPE i VALUE 255.
DATA: BEGIN OF htmlview OCCURS 0,
htmlcode(500) TYPE c,
END OF htmlview.
DATA BEGIN OF zdfies OCCURS 0.
INCLUDE STRUCTURE dfies.
DATA END OF zdfies.
DATA: BEGIN OF flditab OCCURS 0,
fldname(11) TYPE c,
END OF flditab.
htmlview-htmlcode = ''.
APPEND htmlview.
htmlview-htmlcode = ' Table View : '.
APPEND htmlview.
htmlview-htmlcode = tabname.
APPEND htmlview.
htmlview-htmlcode = ' '.
APPEND htmlview.
***********************************************
PERFORM check-table-class.
PERFORM read-direct-table.
PERFORM downloadhtml.
PERFORM showhtml.
********************************************
FORM check-table-class.
tablefound = -1.
SELECT * FROM dd02l
WHERE tabname EQ tabname.
IF dd02l-tabclass CS 'TRANSP' OR
dd02l-tabclass CS 'POOL' OR
dd02l-tabclass CS 'CLUSTER '.
tablefound = 1.
EXIT.
ENDIF.
ENDSELECT.
IF tablefound < 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH 'Table Not Found.... or Table Class Not in "TRANSP","POOL", "CLUSTER"'.
STOP.
ENDIF.
ENDFORM.                    "CHECK-TABLE-CLASS
************************************************************************
FORM read-direct-table.
DATA: anz_numb TYPE i.
PERFORM gettableinfo USING tabname.
htmlview-htmlcode = ''.
APPEND htmlview.
htmlview-htmlcode = ''.
APPEND htmlview.
LOOP AT zdfies.
PERFORM htmlheader USING zdfies-fieldname.
ENDLOOP.
htmlview-htmlcode = ''.
APPEND htmlview.
colorval = 1.
anz_numb = 0.
SELECT * FROM sflight INTO w_area1.
ADD 1 TO anz_numb.
IF anz_numb GT 100. " U can alter the Hits, now Max. is 100 EXIT. ENDIF.
IF colorval > 0 .
htmlview-htmlcode = ''.
APPEND htmlview.
ELSE.
htmlview-htmlcode = ''.
APPEND htmlview.
ENDIF.
colorval = colorval * -1 .
*************
LOOP AT zdfies.
charval = w_area1+zdfies-offset(zdfies-intlen).
CASE zdfies-inttype.
WHEN 'P'.
packval = w_area1+zdfies-offset(zdfies-intlen).
charval = packval.
ENDCASE.
PERFORM htmlfield USING w_area1+zdfies-offset(zdfies-intlen).
ENDLOOP.
*************
htmlview-htmlcode = ''.
APPEND htmlview.
CLEAR: w_area1.
ENDIF.
ENDSELECT.
htmlview-htmlcode = ''.
APPEND htmlview.
ENDFORM.                    "READ-DIRECT-TABLE
****************************************************************
FORM downloadhtml.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = 'C:TABLEVIEW.HTM'
TABLES
data_tab = htmlview.
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.                    "DOWNLOADHTML
***************************************************************
FORM showhtml.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
commandline = 'c:tableview.htm'
program     = 'C:PROGRA~1INTERN~1IEXPLORE.EXE'.
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.                    "DOWNLOADHTML
************************************************************************
FORM gettableinfo USING tname.
CALL FUNCTION 'GET_FIELDTAB'
EXPORTING
langu               = sy-langu
only                = space
tabname             = tname
withtext            = 'X'
IMPORTING
header              = zx030l
TABLES
fieldtab            = zdfies
EXCEPTIONS
internal_error      = 01
no_texts_found      = 02
table_has_no_fields = 03
table_not_activ     = 04.
CASE sy-subrc.
WHEN 0.
LOOP AT zdfies. ENDLOOP.
WHEN OTHERS.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-subrc.
ENDCASE.
ENDFORM.                    "DOWNLOADHTML
********************************************************
FORM htmlfield USING name TYPE c.
htmlview-htmlcode = ''.
APPEND htmlview.
htmlview-htmlcode = name.
APPEND htmlview.
htmlview-htmlcode = ''.
APPEND htmlview.
ENDFORM.                    "DOWNLOADHTML
********************************************************
FORM htmlheader USING name TYPE c.
htmlview-htmlcode = ''.
APPEND htmlview.
htmlview-htmlcode = name.
APPEND htmlview.
htmlview-htmlcode = ''.
APPEND htmlview.
ENDFORM.                    "DOWNLOADHTML
如何在運(yùn)行時(shí)檢索內(nèi)表信息?
功能模塊GET_FIELDTAB可用于程序中檢索的內(nèi)表的信息。這個(gè)功能模塊會(huì)提供內(nèi)表的所有細(xì)節(jié), 比如表中的列,他們的數(shù)據(jù)元素, 和檢查表的名稱等等。
如何在運(yùn)行時(shí)動(dòng)態(tài)地定義內(nèi)表?
當(dāng)在一個(gè)屏幕上使用表控制(table control)時(shí),用戶選擇表控制的一行并不會(huì)自動(dòng)引起任何PAI事件。 但在某些情況下,對用戶在表控制上選擇行應(yīng)立即作出反應(yīng) , 不必等待下一個(gè)PAI的事件發(fā)生。 譬如,客戶要求,當(dāng)用戶選擇或取消選擇某一行時(shí),菜單能被動(dòng)態(tài)地改變,(在這種情況下,只允許單一的選擇 。)
解決方案:
在表控制的第一列,用函數(shù)代碼'ROWS語句'新增了一個(gè)按鈕。
在表控制里取消選擇lineselection“。
用一個(gè)變量“prev_selected” 來反映來按鈕的開/關(guān)狀態(tài) 。
when ok-code = 'ROWS', identified the selected row using "GET CURSOR FIELD...." 當(dāng)確定代碼='ROWS語句',確定選定行使用“得到Cursor字段...." (PAI) (排)
When the button state changed from "off" to "on" highlighted the selected row using the "SCREEN-INTENSIFIED" attribute inside the loop at screen(PBO) 當(dāng)按鈕的狀態(tài)從“小康”到“上”改變突出選中的行內(nèi)使用在屏幕(賄賂循環(huán)“屏幕,強(qiáng)化”屬性)
Portion of the ABAP code (PAI and PBO) is shown below. 在ABAP代碼段(PAI和賄賂)所示。 TBL_ZAWBST is the table control variable. TBL_ZAWBST是表的控制變量。
代碼范例
* process before output.
MODULE status_0100.
LOOP AT int_triggers
with control tbl_zawbst cursor tbl_zawbst-current_line.
MODULE display_triggers.
ENDLOOP.
process after input.
LOOP AT int_triggers.
MODULE set_line_count.
ENDLOOP.
MODULE user_command_0100.
pai
module user_command_0100 input.
WHEN 'ROWS' .
GET CURSOR FIELD csl_field LINE csl_line.
*
idx = csl_line + tbl_zawbst-top_line - 1.
IF idx > 0.
READ TABLE int_triggers INDEX idx.
prev_selected = ''.
IF int_triggers-chk_tbl_zawbst = 'X'.
prev_selected = 'X'.
ENDIF.
line_count = 0.
LOOP AT int_triggers.
CLEAR wa_int_triggers.
wa_int_triggers = int_triggers.
line_count = line_count + 1.
wa_int_triggers-chk_tbl_zawbst = ''.
MODIFY int_triggers FROM wa_int_triggers INDEX line_count.
ENDLOOP.
READ TABLE int_triggers INDEX idx.
IF prev_selected = ''.
int_triggers-chk_tbl_zawbst = 'X'.
row_selected = 'x'.
ELSE.
row_selected = ''.
ENDIF.
MODIFY int_triggers INDEX idx.
ENDIF.
pbo
*&---------------------------------------------------------------------*
*&      Module  DISPLAY_TRIGGERS  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module display_triggers output.
IF lin < 1. EXIT FROM STEP-LOOP. ENDIF.
chk_tbl_zawbst =''.
IF int_triggers-chk_tbl_zawbst NE ''.
chk_tbl_zawbst ='X'.
LOOP AT SCREEN.
IF screen-name = 'ZAWBST-WBSTYP' OR
screen-name = 'ZAWBST-WBSTNR' OR
screen-name = 'ZAWBST-WFCLO' OR
screen-name = 'ZAWBST-WFCHI' OR
screen-name = 'ZAWBST-WFNDL' OR
screen-name = 'ZAWBST-WFNDH' OR
*      screen-name = 'ZAWBST-TRIGR' OR
screen-name = 'ZAWBST-TROPR' OR
screen-name = 'ZAWBST-TRVAL' OR
screen-name = 'ZAWBST-WBSOA' OR
screen-name = 'ZAWBST-WBSOC' OR
screen-name = 'ZAWBST-WBSOD'.
screen-intensified = '1'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
zawbst-wbstyp    = int_triggers-wbstyp.
zawbst-wbstnr    = int_triggers-wbstnr.
zawbst-wfclo    = int_triggers-wfclo.
zawbst-wfchi    = int_triggers-wfchi.
zawbst-wfndl    = int_triggers-wfndl.
zawbst-wfndh    = int_triggers-wfndh.
* zawbst-trigr    = int_triggers-trigr.
zawbst-tropr    = int_triggers-tropr.
zawbst-trval    = int_triggers-trval.
zawbst-wbsoa    = int_triggers-wbsoa.
zawbst-wbsoc    = int_triggers-wbsoc.
zawbst-wbsod    = int_triggers-wbsod.
ENDMODULE.                             " DISPLAY_TRIGGERS  OUTPUT
field-symbols: <table> type any.
types: fieldref type ref to data.
data: dyn_table type fieldref.
As for the actual code to generate the table: 至于實(shí)際的代碼生成表:
create data dyn_table type (SAP Table). 創(chuàng)建數(shù)據(jù)dyn_table類型(SAP表)。
assign dyn_table->* to table. 分配dyn_table -“*表。
The table is now a field symbol which can be referenced in the normal way. 該表現(xiàn)在是一個(gè)字段符號可以在正常的方式引用。
第五章 報(bào)表程序
如何顯示信息?
信息類型包括下面幾類:
E:  錯(cuò)誤;
W:警告;
I:信息;
S:成功;
A: 不正常結(jié)束
語法
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
Write g to f <Format Options> 寫克至f <Format Options>
Format options 格式選項(xiàng)
Note 注意 :
NO-ZERO 無零
If the contents of f are equal to zero, only blanks are output; if f is of type C or N , leading zeros are replaced by blanks. 如果F是等于零的內(nèi)容,只有空白的輸出; 如果 f類型是 C 或 N,前導(dǎo)零用空格代替。
NO-SIGN 無標(biāo)志
The leading sign is not output if f is of type I , P or F 領(lǐng)先的標(biāo)志是不輸出如果 f的類型是我,P或 F
NO GROUPING 沒有分組
If f has the type I or P , the thousand separators are omitted. 如果 f有I 型或 P的千位分隔符被省略。
MM/DD/YY or MM/DD/YYYY 月/日/年或MM / DD /年
CURRENCY w 貨幣瓦特
Treats the contents of f as a currency amount. 視為一個(gè)貨幣金額f 的內(nèi)容。 The currency specified in w determines how many decimal places this amount should have. W 中規(guī)定的貨幣決定了小數(shù)點(diǎn)這一數(shù)額應(yīng)。
DECIMALS d 小數(shù)
DATA: X TYPE P DECIMALS 3 VALUE '1.267', 數(shù)據(jù):X P型小數(shù)3值'1 0.267',
Y TYPE F            VALUE '125.456E2'. Y型F值'125 0.456 E2'類。
WRITE: /X DECIMALS 0,  "output: 1 寫:/ X小數(shù)0,“輸出:1
/X DECIMALS 2,  "output: 1.27 / X小數(shù)2,“輸出:1.27
/X DECIMALS 5,  "output: 1.26700 / X小數(shù)5,“輸出:1.26700
/Y DECIMALS 1,  "output: 1.3E+04 /年小數(shù)1,“輸出:1.3E +04
/Y DECIMALS 5,  "output: 1.25456E+04 /年小數(shù)5,“輸出:1.25456E +04
/Y DECIMALS 20. /年小數(shù)20。 "output: 1.25456000000000E+04 “輸出:1.25456000000000E +04
ROUND r 圓形
DATA: X TYPE P DECIMALS 2 VALUE '12493.97'. 數(shù)據(jù):X P型小數(shù)2值'12493 .97'。
WRITE: /X ROUND -2,   "output: 1,249,397.00 寫:/ x圓桌會(huì)議-2,“輸出:1,249,397.00
/X ROUND  0,   "output:    12,493.97 / x圓桌會(huì)議0,“輸出:12,493.97
/X ROUND  2,   "output:       124.94 / x圓桌會(huì)議2,“輸出:124.94
/X ROUND  5,   "output:         0.12 / x圓桌會(huì)議5,“輸出:0.12
LEFT-JUSTIFIED 左對齊
/ CENTERED /中心
/ RIGHT-JUSTIFIED /右對齊
如何打印頁眉和頁腳的?
START-OF-SELECTION. 裁減的,選擇。
TOP-OF-PAGE. 頂級頁。
END-OF-PAGE. 終了頁。
Selection Screen Events 選擇屏幕活動(dòng)
“Initialization” is processed only ONCE à “ selection-screen output” is processed when user presses <ENTER> key à “ start-of-selection” “初始化” 僅處理一次 “ 選擇屏幕上輸出” 進(jìn)行處理時(shí) , 用戶按 < 回車鍵 “ 開始的選擇”
At selection-screen on <parameter>. à check user input in parameter field. 在選擇屏幕上<parameter>。 支票在外地的用戶輸入?yún)?shù)。
用戶界面(GUI)上有用的系統(tǒng)域 值(System Fields)
SY-DYNNR 型號:SY - DYNNR
Screen number 屏幕數(shù)字
LEAVE TO SCREEN SY-DYNNR. 留給屏幕型號:SY - DYNNR。
SY-UCOMM 型號:SY - UCOMM
User command 用戶命令
menu System à Status … à double click on “ GUI Status” value 菜單系統(tǒng)的 一個(gè) 狀態(tài)... 一個(gè) 關(guān)于“界面狀態(tài)雙擊”價(jià)值
Multiple selection checkbox. 多選復(fù)選框。
parameters: p_xxx type c as checkbox, 參數(shù):p_xxx的復(fù)選框C型
loop at <itab>. 在<itab>循環(huán)。
write: / ' ' as checkbox , <itab>-cust_name. 寫 :/''的復(fù)選框 ,<itab>,cust_name。
endloop. endloop。
at line-selection. 在選線。
do. 做。
read line sy-index . 讀線 型號:SY -索引 。
if sy-subrc <> 0. 如果型號:SY - subrc“”0。
exit. 退出。
endif. endif。
if sy-lisel (1) = 'X'. 如果 型號:SY - lisel(1)='X' 低。
write sy-lisel+31(10) to <variable>. 寫型號:SY - lisel +31(10)<variable>。
loop at <itab> into <itab_wa> where <itab_field> = <variable>. 循環(huán)在進(jìn)入<itab_wa>其中<itab_field> = <itab> <variable>。
<do your job …> <do你的工作…>
endloop. endloop。
endif. endif。
enddo. enddo。
與文件相關(guān)的選擇參數(shù)
PARAMETERS: p_infile  LIKE rlgrap-filename DEFAULT  'c:\'. 參數(shù):p_infile像rlgrap文件名默認(rèn)'?:\'。
parameters: in_file like rlgrap-filename. 參數(shù):如rlgrap in_file文件名。
at selection-screen on value-request for in_file. 在選擇屏幕上的價(jià)值為in_file要求。
clear g_tmp_file_path. 明確g_tmp_file_path。
perform select_input_file_name. 執(zhí)行select_input_file_name。
move g_tmp_file_path to in_file. 移動(dòng)g_tmp_file_path的in_file。
form select_input_file_name. 形式select_input_file_name。
call function 'F4_FILENAME' 調(diào)用函數(shù)'F4_FILENAME'
exporting 出口
program_name  = sy-repid 程序program_name =型號:SY - repid
dynpro_number = sy-dynnr dynpro_number =型號:SY - dynnr
field_name    = 'PATH' field_name ='路徑'
importing 進(jìn)口
file_name     = g_tmp_file_path. FILE_NAME的= g_tmp_file_path。
endform. endform。
Additional advantage is browse files can be of specific type eg. 另一個(gè)好處是 , 可以瀏覽文件的具體類型 , 例如。 *.XLS if a mask value is given. *.如果口罩值就是大件。
如何加入單選按鈕 ?
parameters: r_wc radiobutton group r user-command rb, 參數(shù):r_wc單選群為R用戶命令包,
r_cc radiobutton group r default 'X'. r_cc單選R組默認(rèn)的X'。
Selection Options 選擇選項(xiàng)
select-options: s_vkorg for vbrk-vkorg default '0600', 選擇-選項(xiàng):為vbrk s_vkorg - vkorg默認(rèn)'0600',
select … from … where vkorg in s_vkorg. 從選擇... ...凡在s_vkorg vkorg。
Write: /3 'From', s_vkorg-low, 'To', s_vkorg-high. 寫入:/從'3',s_vkorg低,'要',s_vkorg高。
If selection range is not wanted : 如果選擇范圍并不想 :
select-options: s_vkorg for vbrk-vkorg no intervals . 選擇-選項(xiàng):為vbrk s_vkorg - vkorg 沒有間隔 。
If need to add selection pattern: 如果需要添加選擇的模式:
select-options: 選擇,選項(xiàng):
so_xxx for tstc-tcode no intervals default 'Z*' option cp . so_xxx的東方信聯(lián)tcode 沒有間隔默認(rèn)的'Z *'選項(xiàng)的念頭 。
loop at <internal_table> where <table_field> in so_xxx . 循環(huán)在<internal_table>在<table_field>在so_xxx。
Endloop. Endloop。
如何在輸入屏幕加入文本 ?
selection-screen comment 1(15) 'XXXX'.
如何修改輸入屏幕?
Screen-required: Field input mandatory 屏幕要求:字段輸入強(qiáng)制
Screen-input: Field ready to accept input (1-OK, 0-no input) 屏幕上輸入:現(xiàn)場準(zhǔn)備接受輸入(1行,0,沒有輸入)
Screen-invisible: text field not visible; for I/O field, input text not visible (such as password field) 屏幕無形:文本字段不可見的,用于I / O方面,輸入文本不可見的(如密碼字段)
Screen-length: field length 屏幕長度:字段長度
Screen-active: '0' — I/O field not displayed. 屏幕活躍:'0' -的I / O字段不顯示。
Loop at screen. 環(huán)在屏幕上。
If screen-name = 'XX'. 如果屏幕名稱='二十'。
Screen-xx = … 屏幕二十= ...
Modify screen . 修改屏幕 。
Endif. Endif。
Endloop. Endloop。
PARAMETERS: p_input1 LIKE xxx-xxx OBLIGATORY MODIF ID XX, 參數(shù):p_input1了XXX - MODIF編號第二十第三十強(qiáng)制性的,
p_input2 LIKE xxx-xxx OBLIGATORY MODIF ID XX . p_input2了XXX - MODIF編號二十三十強(qiáng)制性的。
AT SELECTION-SCREEN OUTPUT. 在選擇屏幕輸出。
<manipulate your input fields> <manipulate您輸入fields>
LOOP AT SCREEN. 回路在屏幕上。
CHECK screen-group1 = 'XX'. 檢查屏幕1組='二十'。 (if not, out of loop. If yes, go on) (如果不是只有一個(gè)循環(huán)。如果是的話,請繼續(xù))
screen-input = '0'.  (make the group of input parameters can not input) 屏幕上輸入= '0'。(使輸入?yún)?shù)不能輸入組)
MODIFY SCREEN . 修改屏幕 。
ENDLOOP. ENDLOOP。
如何不顯示I / O 的文本字段?
LOOP AT SCREEN. 回路在屏幕上。
Screen-invisible = '1'. 屏幕隱形= '1'。 “ Not display text field “不顯示文本字段
Screen-active = '0'.   “ Not display I/O field 屏幕積極= '0'。“不顯示的I / O領(lǐng)域
ENDLOOP. ENDLOOP。
Make I/O field read-only 如何使I / Ofield只讀 ?
LOOP AT SCREEN. 回路在屏幕上。
If screen-name = 'XXXX'. 如果屏幕名稱='XXXX的'。
Screen-input = '0'. 屏幕輸入= '0'。
Modify screen. 修改屏幕。
Exit. 退出。
Endif. Endif。
ENDLOOP. ENDLOOP。
領(lǐng)域里的下拉和F4功能 ,
參數(shù)編號
PARAMETERS: p_xx  TYPE xxx  <OBLIGATORY> MEMORY ID YYY. 參數(shù):p_xx型三十<OBLIGATORY> 內(nèi)存標(biāo)識 YYY。
GET PARAMETER ID 'YYY' FIELD p_xx. GET參數(shù)身份證'YYY'場p_xx。 –> Read PID and put in field p_xx - “閱讀PID和外地p_xx投入
SET PARAMETER ID 'YYY' FIELD p_xx. 設(shè)置參數(shù)身份證'YYY'場p_xx。 –> Set PID with the value from field p_xx. - “設(shè)置的PID與實(shí)地p_xx價(jià)值。
Search Parameter thru se11 “Data type”. 搜索參數(shù)“通過se11”數(shù)據(jù)類型。
MATNR MATNR
MAT 墊
WERK 工廠
WRK WRK
LIFNR LIFNR
LIF 白血病抑制因子
BUKRS BUKRS
BUK 北
QMNUM QMNUM
IQM IQM
匹配碼(Match code)
Search “matchcode object” in SE11 “Search help” field. 搜索“matchcode對象”在SE11“搜索幫助”領(lǐng)域。
Matchcode object XXX. Matchcode對象三十。
Create matchcode: 創(chuàng)建matchcode:
In “Selection method” field: put in mater data table, such as LFA1 or MARA. 在“選擇法”領(lǐng)域:在母校數(shù)據(jù)表,提出如LFA1或馬拉。 Text table will be inserted automatically if available. 文本表將自動(dòng)插入如果可用。
In “Search help parameter”, enter all fields you need to as inputs and outputs. 在“搜索幫助參數(shù)”,進(jìn)入各個(gè)領(lǐng)域的需要作為輸入和輸出。
“EXP” refers to search/input fields; “IMP” refers to output fields “進(jìn)出口”,是指搜索/輸入域,“進(jìn)出口”,是指輸出字段
Lpos is output position while Spos is input/search position Lpos是輸出的地位 , 同時(shí)該工具輸入/搜索排名
如何獲得選擇屏幕上的內(nèi)容?
data:selection_table like rsparams occurs 0 with header line, 數(shù)據(jù):像rsparams selection_table發(fā)生與標(biāo)題行0,
report like rsvar-report. 報(bào)告一樣rsvar的報(bào)告書。
report = sy-repid. 報(bào)告=型號:SY - repid。
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS' 呼叫函數(shù)'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING 出口
curr_report          = report curr_report =報(bào)告
*IMPORTING *進(jìn)口
*  SP                   = *警司=
TABLES 桌
selection_table       = selection_table selection_table = selection_table
EXCEPTIONS 例外
not_found            = 1 not_found = 1
no_report            = 2 無報(bào)告= 2
OTHERS               = 3. 其它= 3。
如何在輸入屏幕內(nèi)加空格?
selection-screen skip 1.
如何在Field里設(shè)置光標(biāo)?
set cursor field 'XXX'. 設(shè)置游標(biāo)字段'三十'。
如何把很多Fields放在一行?
selection-screen begin of line . 選擇屏幕開始行 。
selection-screen comment 1(15) 'XXXX'. 選擇屏幕評論1(15)'XXXX的'。
parameters: p_xx like xxx. 參數(shù):如XXX p_xx。
selection-screen end of line . 選擇屏幕的行的末尾 。
如何產(chǎn)生彈出窗口?
Ws_msg -- Create a dialog box in which you display an one-line message. Ws_msg - 創(chuàng)建一個(gè)對話框 , 在其中顯示了一個(gè)在線留言。
Search for “POPUP_TO_*” function modules 搜索“POPUP_TO_ *”功能模塊
data: a. 資料:答 :
call function 'POPUP_TO_CONFIRM_DATA_LOSS' 調(diào)用函數(shù)'POPUP_TO_CONFIRM_DATA_LOSS'
exporting 出口
*  DEFAULTOPTION       = 'J' * DEFAULTOPTION =的J'
titel              = 'Testing Title' 標(biāo)題='測試標(biāo)題'
*  START_COLUMN        = 25 * START_COLUMN = 25
*  START_ROW          = 6 * START_ROW = 6
importing 進(jìn)口
answer             =    a. 答 : 答案=
answer: 'J' – YES, 'N' – NO, 'A' – CANCEL. 回答:的J' -是的,'東經(jīng)' -一氧化氮,'甲' -取消。
· ·   Popup_to_display_text Popup_to_display_text
Create a dialog box in which you display a two-line message. 創(chuàng)建一個(gè)對話框 , 在其中您顯示兩行信息。
· ·   Popup_to_confirm_step Popup_to_confirm_step
Create a dialog box in which you make a question whether the user wishes to perform the step. 創(chuàng)建一個(gè)對話框 , 在其中你犯了一個(gè)問題 , 用戶是否愿意執(zhí)行的步驟。
· ·   Popup_to_confirm_with_message Popup_to_confirm_with_message
Create a dialog box in which you inform the user about a specific decision point during an action. 創(chuàng)建一個(gè)對話框 , 在其中您了解具體的決定點(diǎn)行動(dòng)期間用戶。
· ·   Popup_to_confirm_with_value Popup_to_confirm_with_value
Create a dialog box in which you make a question whether the user wishes to perform a processing step with a particular object. 創(chuàng)建一個(gè)對話框 , 在其中你犯了一個(gè)問題 , 用戶是否愿意執(zhí)行與特定對象的加工步驟。
· ·   Popup_to_confirm_loss_of_data Popup_to_confirm_loss_of_data
Create a dialog box in which you make a question whether the user wishes to perform a processing step with loss of data. 創(chuàng)建一個(gè)對話框 , 在其中你犯了一個(gè)問題 , 用戶是否愿意執(zhí)行與數(shù)據(jù)丟失的加工步驟。
· ·   Popup_to_decide Popup_to_decide
Create a dialog box in which you require the user between the two processing alternatives, or to cancel the action. 創(chuàng)建一個(gè)對話框 , 在其中您需要兩者之間的處理辦法的用戶,或取消行動(dòng)。
·  Popup_to_decide_with_message · Popup_to_decide_with_message
Create a dialog box in which you inform the user about a specific decision point via a diagnosis text. 創(chuàng)建一個(gè)對話框 , 在其中您了解具體的決策點(diǎn)通過診斷文本的用戶。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ABAP開發(fā)規(guī)范
ABAP4基礎(chǔ)
文件輸入/輸出
在SAP BW中使用ABAP
abap中sy-index和sy-tabix使用的時(shí)候有什么區(qū)別?
SAP CRM銷售訂單UI上的字段對應(yīng)的數(shù)據(jù)庫表存儲字段:requested start date和end date
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服