日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

smartforms句柄与以簇的方式存储数据。

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 smartforms句柄与以簇的方式存储数据。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明:Smartforms輸出打印,設置句柄,用于傳遞參數。

REPORT??ZIEB_WWFLD.

*-----------------??????TABLES??????----------------------------*


*-----------------?????VARIANTS?????----------------------------*
DATA?l_sno?TYPE?ZIEB_ZSNNM.
DATA:?ls_ctr??TYPE?ssfctrlop,
??????ls_cre??TYPE?ssfcrescl,
??????ls_opt?TYPE?ssfcompop.
??DATA?:?wa_indx?TYPE?indx?.??"?作為全局聲明
*?以下是一個定義宏的語句,在DEFINE和END-OF-DEFINITION之間有完整的ABAP語句,
*?用&N作為占位符,在調用的時候把真正的字符傳入并取代。
**?例子:
*DATA:?RESULT?TYPE?I,
*N1?TYPE?I?VALUE?5,
*N2?TYPE?I?VALUE?6.
*DEFINE?OPERATION.
*RESULT?=?&1?&2?&3.
*OUTPUT?&1?&2?&3?RESULT.
*END-OF-DEFINITION.
*OPERATION?4?+?3.
*OPERATION?2?**?7.
*OPERATION?N2?-?N1.

DEFINE?savebuffer.
??perform?save_to_buffer?using?&1?&2.
END-OF-DEFINITION.

DEFINE?clearbuffer.
??perform?clear_buffer?using?&1.
END-OF-DEFINITION.
*-----------------????CONSTANTS?????----------------------------*


*-----------------??INTERNAL??TABLES?----------------------------*
DATA:??item_LFA1?LIKE?LFA1?OCCURS?0?WITH?HEADER?LINE,
???????item_T156T?LIKE?T156T?OCCURS?0?WITH?HEADER?LINE,
???????item_MAKT?LIKE?MAKT?OCCURS?0??WITH?HEADER?LINE.

*結果內表item_out
TYPES:?BEGIN?OF?TY_item_out,
???????????SNO???TYPE?ZIEB_zsnnm,?????????"?序號??????說明:?數據元素不能用LIKE
???????????WERKS?LIKE?MSEG-WERKS,?????????"?工廠
???????????TName1?LIKE?T001W-NAME1,???????"?工廠名稱
???????????Ebeln?LIKE?EKPO-EBELN,?????????"?采購訂單號
???????????LIFNR?LIKE?MSEG-LIFNR,?????????"?委外加工商代碼
???????????LNAME1?LIKE?LFA1-NAME1,????????"?委外加工商名稱
???????????BLDAT?LIKE?MKPF-BLDAT,?????????"?憑證日期
???????????MBLNR?LIKE?MSEG-MBLNR,?????????"?物料憑證號
???????????BWART?LIKE?MSEG-BWART,?????????"?移動類型
???????????BTEXT?LIKE?T156T-BTEXT,????????"?移動類型描述
???????????ZEILE?LIKE?MSEG-ZEILE,?????????"?序號
???????????MATNR?LIKE?MSEG-MATNR,?????????"?物料編號
???????????MAKTX?LIKE?MAKT-MAKTX,?????????"?物料描述
???????????ERFMG?LIKE?MSEG-ERFMG,?????????"?數量
???????????ERFME?LIKE?MSEG-ERFME,?????????"?單位
???????????LGORT?LIKE?MSEG-LGORT,?????????"?庫存地代碼
???????????LGOBE?LIKE?T001L-LGOBE,????????"?庫存地描述
???????????CHARG?LIKE?MSEG-CHARG,?????????"?批次
???????????SGTXT?LIKE?MSEG-SGTXT,?????????"?備注
??????END?OF?TY_item_out.
DATA?:?item_out?TYPE?TABLE?OF?TY_item_out?WITH?HEADER?LINE.
Data?hd_item_out?TYPE?TY_item_out.??????"?用來存放抬頭的固定內容。
Data?wa_item_out?TYPE?TY_item_out.??????"?用來存放行項目的可循環內容。
*-----------------???SELECTION-SCREEN?--------------------------*
SELECTION-SCREEN?BEGIN?OF?BLOCK?block1?WITH?FRAME?TITLE?text-001.
PARAMETERS:?p_werks?LIKE?mseg-werks?OBLIGATORY?DEFAULT?'2100',?"?工廠
????????????p_MJAHR?LIKE?mseg-MJAHR?OBLIGATORY?DEFAULT?sy-datum,"?當前年度
????????????p_MBLNR?LIKE?MSEG-MBLNR?OBLIGATORY?DEFAULT?'4900001625'.??"?物料憑證
SELECTION-SCREEN??SKIP?1.
SELECTION-SCREEN?END?OF?BLOCK?block1.

*-----------------???START-OF-SELECTION?--------------------------*
"?MSEG?-?a,?T001W?-?b,EKPO-c,LFA1-d,MKPF-e,T156T-f,MAKT-g,T001L-h
if?p_werks?<>?'2100'.
??"??MESSAGE?S004?with?'工廠選擇錯誤!'.??"?MESSAGE-ID?ZIEB01
??MESSAGE??'工廠選擇錯誤!'?TYPE?'E'.
??STOP.
endif.
if?p_MJAHR?<>?sy-datum(04).
??MESSAGE?'憑證年度選擇錯誤!'?TYPE?'E'.
??STOP.
ENDIF.

START-OF-SELECTION.
*?b~NAME1?as?TName1?????d~NAME1?as?LNAME1??????f~BTEXT?????g~MAKTX?????h~LGOBE
??SELECT?a~werks???c~EBELN??a~LIFNR
?????????e~BLDAT?a~MBLNR?a~BWART??a~ZEILE?a~MATNR
?????????a~ERFMG?a~ERFME?a~LGORT??a~CHARG?a~SGTXT?APPENDING?CORRESPONDING
?????????FIELDS?OF?TABLE?item_out?from?MSEG?as?a
?????????left?join?EKPO?as?c??on?a~MATNR?=?c~MATNR
?????????left?join?MKPF?as?e??on?a~MBLNR?=?e~MBLNR
?????????WHERE?a~WERKS?=?p_werks?and?a~MJAHR?=?p_MJAHR?and?a~MBLNR?=?p_MBLNR?and?a~BWART?in?('541','542')
?????????.
??if?sy-subrc?<>?0?.
????MESSAGE?'沒有委外發料憑證的行項目!'?TYPE?'I'.
????STOP.
??endif.
??CLEAR?item_out.
??LOOP?AT??item_out.
????SELECT?SINGLE?NAME1?INTO?item_out-TName1
??????FROM?T001W??WHERE?werks?EQ?item_out-werks
????????????????????AND?SPRAS?=?SY-LANGU.

????SELECT?SINGLE?NAME1?INTO?item_out-LNAME1
??????FROM?LFA1??WHERE?LIFNR?EQ?item_out-LIFNR
???????????????????AND?SPRAS?=?SY-LANGU.
????SELECT?SINGLE?BTEXT??INTO?item_out-BTEXT
??????FROM?T156T??WHERE?BWART??EQ?item_out-BWART
????????????????????AND?SPRAS?=?SY-LANGU.
????SELECT?SINGLE?MAKTX??INTO?item_out-MAKTX
??????FROM?MAKT???WHERE?MATNR??EQ?item_out-MATNR
????????????????????AND?SPRAS?=?SY-LANGU.
????SELECT?SINGLE?LGOBE??INTO?item_out-LGOBE
??????FROM?T001L??WHERE?LGORT?EQ?item_out-LGORT.
????l_sno?=?l_sno?+?1.
????item_out-SNO?=?l_sno.
????MODIFY?item_out.

??ENDLOOP.
??read?TABLE?item_out?INDEX?1?INTO?hd_item_out.
??PERFORM?Display_BySF.
*&---------------------------------------------------------------------*
*&??????Form??Display_BySF
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
Form?Display_BySF.
*?取得smartforms中的參數
??DATA?:?fm_name?TYPE?rs38l_fnam.

*NOTE:SmartForms中的內表不能有HeaderLine

*通過SmartForms的名稱取得編譯以后的對應的Function?Module的名稱
??CALL?FUNCTION?'SSF_FUNCTION_MODULE_NAME'
????EXPORTING
??????formname?????????????????=?'ZFIEB_WWFLD'
*?????VARIANT??????????????????=?'?'
*?????DIRECT_CALL??????????????=?'?'
???IMPORTING
?????fm_name??????????????????=?fm_name
???EXCEPTIONS
?????no_form??????????????????=?1
?????no_function_module???????=?2
?????OTHERS???????????????????=?3
????????????.
??IF?sy-subrc?<>?0.
????MESSAGE?ID?sy-msgid?TYPE?sy-msgty?NUMBER?sy-msgno
????????????WITH?sy-msgv1?sy-msgv2?sy-msgv3?sy-msgv4.
??ENDIF.

*?句柄的聲明
??DATA?:?prt_handler1(22)?.
??DATA?:?prt_handler2(22)?.
??DATA?:?wa_indx?TYPE?indx?.
*smartforms中的內存地址給句柄
*在句柄中加上服務器當前時間作為句柄名稱,防止多人同時使用該程序,導致句柄名稱相同
??CONCATENATE?'ZFMM_HDR'?sy-uzeit?INTO?prt_handler1?.
??CONCATENATE?'ZFMM_ITEM'?sy-uzeit?INTO?prt_handler2?.

*?將內表數據傳輸到數據簇表里
*??wa_indx-aedat?=?sy-datum?.
*??wa_indx-usera?=?sy-uname?.
*??wa_indx-pgmid?=?sy-repid?.

*在SAP中可以將一個對象Export到內存或者數據庫中,我們就可以根據一個類似于句柄的字符串再次取出該數據,
*傳送一個字符串到SmartForms中是沒有任何問題的,所以我們只需要Export內表到內存或者數據庫中,
*然后將句柄傳遞到SmartForms中,在SmartForms中首先定義完全相同類型的內表
*再將數據Impor到內表中即可完全恢復數據,這樣就完成的數據的傳遞工作。
*?Report中用EXPORT:

??EXPORT?hd_item_out?TO?DATABASE?indx(hk)?ID?prt_handler1?FROM?wa_indx?.
*??EXPORT?item_out?TO?DATABASE?indx(hk)?ID?prt_handler2?FROM?wa_indx?.
*Smartforms中用IMPORT:
*IMPORT?HD_ITEM_OUT?FROM?DATABASE?indx(hk)?id?PRT_HANDLER1.
*IMPORT?ITEM_OUT?FROM?DATABASE?indx(hk)?id?PRT_HANDLER2.
???savebuffer?item_out[]?prt_handler2.
??DATA?:?output_opt?TYPE?ssfcompop.???"?ssfcompop?:打印參數設置的“結構”

??output_opt-rqposname?='Local'.
??output_opt-tdimmed?=?'X'.

??CALL?FUNCTION?fm_name
????EXPORTING
??????prt_handler1???????=?prt_handler1????"?要跟Smartfroms中的全局變量對應好
??????prt_handler2???????=?prt_handler2
??????output_options?????=?output_opt
??????control_parameters?=?ls_ctr
??????user_settings??????=?'X'
????IMPORTING
??????job_output_info????=?ls_cre
????EXCEPTIONS
??????formatting_error???=?1
??????internal_error?????=?2
??????send_error?????????=?3
??????user_canceled??????=?4.

??IF?sy-subrc?<>?0.
????MESSAGE?ID?sy-msgid?TYPE?sy-msgty?NUMBER?sy-msgno
????????????WITH?sy-msgv1?sy-msgv2?sy-msgv3?sy-msgv4.
??ENDIF.

*??DELETE?FROM?DATABASE?indx(hk)?ID?prt_handler1.
*??DELETE?FROM?DATABASE?indx(hk)?ID?prt_handler2.
????clearbuffer?prt_handler1.
????clearbuffer?prt_handler2.
ENDFORM.????????????????????"Display_BySF
*&可以用數據簇方式對程序的任何復雜內部數據對像過行分組保存,
*&并將其臨時存儲在程序內存中,或長時間存儲在數據庫中,
*&使用export?to?memory?語句在內存中存儲數據對像
*&格式:?Export?<f1>[from<g1>]<f2>[from<g2>]…..to?memory?ID?<key>.
*&
*&使用import?from?memory?語句從內存中讀取數據對像
*&格式:??IMPORT?<F1>?[TO?<g1>]?<F2>?[TO?<g2>]?...?FROM?MEMORY?ID?<key>.
*&
*&使用?free?memory?語句從內存中刪除數據簇;
*&Free?memory?[id<key>].
*&?說明:如果不附加ID<key>,則此語句刪除整個內存,包括此前用exoprt存儲到內存中的所有數據簇?附加ID<key>之后,該語句只能刪除此名稱命名的數據簇;
*&
FORM?save_to_buffer?USING?t?TYPE?table?typeid?TYPE?c?.
????wa_indx-aedat?=?sy-datum.
????wa_indx-usera?=?sy-uname.
????wa_indx-pgmid?=?sy-repid.
*以簇方式存儲數據對像
*數據對像從程序寫入到內存
??EXPORT?t?TO?DATABASE?indx(hk)?ID?typeid?from?wa_indx.
ENDFORM.
FORM??clear_buffer?using?buffid?TYPE?c.
???DELETE?FROM?DATABASE?indx(hk)?ID?buffid.
ENDFORM.


總結

以上是生活随笔為你收集整理的smartforms句柄与以簇的方式存储数据。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。