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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

SAP实战中Submit的常见用法-调用标准程序

發布時間:2025/3/20 编程问答 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP实战中Submit的常见用法-调用标准程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景:系統MB52/MB51/MB5B等類似的報表,雖然數據很全面,執行效率也夠快,但是經常會不滿足用戶需求(增添字段、添加查詢條件等),很多ABAP會選擇去COPY出標準程序,然后去做修改,強烈不推薦此種方式,弊端太大,容易使標準程序出現問題,且效率低(特別涉及MSEG等數據庫表)。

我們可以使用SUBMIT,此語法可將獲取系統標準報表數據,然后你就可以自己去加一層殼來實現自己的定制。

語法:
  • SUBMIT {rep|(name)} [selscreen_options]
  • [list_options]
  • [job_options]
  • [AND RETURN].
  • 復制代碼 selscreen_options:主要是標準程序選擇界面Field,通過F1去查看具體Field name

    方式一:獲取ALV報表結果數據(不局限于嚴格意義上的ALV Grid、LIST報表也能獲取到值),關鍵代碼:
  • SUBMIT

  • ? ? TRY.
  • ? ?? ???cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ).

  • ? ?? ???ASSIGN lr_alv_data->* TO <lt_alv_data>.
  • ? ?? ?CATCH cx_salv_bs_sc_runtime_info.

  • ? ?? ???MESSAGE 'Unable to retrieve ALV data! Please try other conditions.' TYPE 'E'.
  • ? ? ENDTRY.
  • 復制代碼
    示例:獲取MB5B執行結果,詳細代碼:
  • *&---------------------------------------------------------------------*
  • *&
  • *& 獲取MB5B數據?
  • *&---------------------------------------------------------------------*
  • DATA:lr_alv_data TYPE REF TO data.?

  • FIELD-SYMBOLS : <lt_alv_data> TYPE ANY TABLE .
  • FIELD-SYMBOLS : <lt_data> TYPE ANY. "LIKE LINE OF??it_tab .?


  • *&---------------------------------------------------------------------*
  • *& "計算特殊庫存E的期初期末
  • *&---------------------------------------------------------------------*
  • ? ? cl_salv_bs_runtime_info=>set( EXPORTING display??= abap_false
  • ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???metadata = abap_false
  • ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???data? ???= abap_true ).
  • ? ? CLEAR lr_alv_data.
  • ? ? UNASSIGN <lt_alv_data>.

  • ? ? SUBMIT rm07mlbd? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???"MB5B特殊庫存及搜索條件
  • ? ?? ?? ???WITH matnr IN so_matnr
  • ? ?? ?? ???WITH werks IN so_werks
  • ? ?? ?? ???WITH lgort EQ so_lgort-low "循環獲取每個庫存地點的期初期末
  • ? ?? ?? ???WITH sobkz EQ 'E'
  • ? ?? ?? ???WITH datum IN so_budat
  • ? ?? ?? ???"庫存類型-特殊庫存
  • ? ?? ?? ???WITH lgbst EQ space
  • ? ?? ?? ???WITH bwbst EQ space
  • ? ?? ?? ???WITH sbbst EQ 'X'
  • ? ?? ?? ???"設置
  • ? ?? ?? ???WITH xsum EQ space
  • ? ?? ?? ???WITH pa_sumfl EQ 'X'
  • ? ?? ?? ???WITH xchar EQ space
  • ? ?? ?? ???WITH xnomchb EQ space
  • ? ?? ?? ???WITH xnomchb EQ space
  • ? ?? ?? ???WITH nosto EQ space

  • ? ?? ?? ???WITH pa_dbstd EQ 'X'
  • ? ?? ?? ???AND RETURN.

  • ? ? TRY.
  • ? ?? ???cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ).

  • ? ?? ???ASSIGN lr_alv_data->* TO <lt_alv_data>.
  • ? ?? ?CATCH cx_salv_bs_sc_runtime_info.

  • ? ?? ???MESSAGE 'Unable to retrieve ALV data! Please try other conditions.' TYPE 'E'.
  • ? ? ENDTRY.

  • ? ? cl_salv_bs_runtime_info=>clear_all( ).

  • ? ? "
  • ? ? IF <lt_alv_data> IS ASSIGNED.
  • ? ?? ?UNASSIGN <lt_data>.
  • ? ?? ?LOOP AT <lt_alv_data> ASSIGNING <lt_data>."即所需要內表數據

  • ? ?? ?ENDLOOP.
  • ? ? ENDIF.
  • 復制代碼
    方式二:將執行結果放入MEMORY(此法用于結果不是很明確的ALV結構),關鍵代碼:
  • EXPORT export_list TO MEMORY ID 'MB51_EXPORT_LIST'.

  • SUBMIT...

  • IMPORT export_list FROM MEMORY ID 'MB51_EXPORT_LIST'.
  • 復制代碼 示例:獲取MB51執行結果數據,詳細代碼:
  • *&---------------------------------------------------------------------*
  • *& Report??ZTEST_CALL_MB51
  • *&
  • *&---------------------------------------------------------------------*
  • *&
  • *& 獲取MB51數據
  • *&---------------------------------------------------------------------*

  • REPORT??ztest_call_mb51.

  • TYPE-POOLS:abap.
  • TABLES:mseg,mara,mard.

  • DATA:
  • ? ?? ?flag(01)? ? TYPE??c VALUE 'X', "Name for compatibility with MB03 "MAA EhP4
  • ? ?? ?no_list(01) TYPE??c VALUE 'X'. "Do not show the list? ?? ?? ?? ? "MAA EhP4

  • DATA: BEGIN OF export_list OCCURS 0,
  • ? ?? ???matnr TYPE mseg-matnr,
  • ? ?? ???maktx TYPE makt-maktx,
  • ? ?? ???werks TYPE mseg-werks,
  • ? ?? ???name1 TYPE t001w-name1,
  • ? ?? ???lgort TYPE mseg-lgort,
  • ? ?? ???charg TYPE mseg-charg,? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?"351455
  • ? ?? ???bwtar TYPE mseg-bwtar,? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?"351455
  • ? ?? ???bwart TYPE mseg-bwart,
  • ? ?? ???sobkz TYPE mseg-sobkz,
  • ? ?? ???btext TYPE t156t-btext,
  • ? ?? ???mblnr TYPE mseg-mblnr,
  • ? ?? ???mjahr TYPE mseg-mjahr,
  • ? ?? ???zeile TYPE mseg-zeile,
  • ? ?? ???budat TYPE mkpf-budat,
  • ? ?? ???erfmg TYPE mseg-erfmg,
  • ? ?? ???erfme TYPE mseg-erfme,
  • ? ?? ???lifnr TYPE mseg-lifnr,
  • ? ?? ???vgart TYPE mkpf-vgart,
  • ? ?? ?END OF export_list.

  • SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
  • SELECT-OPTIONS:so_werks FOR mseg-werks OBLIGATORY,
  • ? ?? ?? ?? ?? ?? ?? ?? ???so_matnr FOR mseg-matnr,
  • ? ?? ?? ?? ?? ?? ?? ?? ???so_mtart FOR mara-mtart,
  • ? ?? ?? ?? ?? ?? ?? ?? ???so_matkl FOR mara-matkl,
  • ? ?? ?? ?? ?? ?? ?? ?? ???so_lgort FOR mard-lgort.
  • SELECT-OPTIONS so_mtr_i FOR mseg-matnr NO-DISPLAY .
  • SELECTION-SCREEN: END OF BLOCK blk1.

  • START-OF-SELECTION.

  • ??EXPORT flag TO MEMORY ID 'MB51_FLAG'.
  • ??EXPORT no_list TO MEMORY ID 'MB51_NOLIST' .
  • ??EXPORT export_list TO MEMORY ID 'MB51_EXPORT_LIST'.

  • ??SUBMIT rm07docs
  • ? ? WITH matnr IN so_matnr
  • ? ? WITH werks IN so_werks
  • ? ? WITH lgort IN so_lgort
  • ? ? WITH database EQ abap_true
  • ? ? WITH pa_dbstd EQ abap_true
  • ? ? WITH mb51_flag EQ flag
  • ? ? WITH mb51_nolist EQ no_list
  • ??EXPORTING LIST TO MEMORY AND RETURN.

  • ??IMPORT export_list FROM MEMORY ID 'MB51_EXPORT_LIST'.
  • ??FREE MEMORY ID 'MB51_EXPORT_LIST'.

  • ??LOOP AT export_list."export_list 為需要的內表數據

  • ??ENDLOOP.
  • 復制代碼

    總結

    以上是生活随笔為你收集整理的SAP实战中Submit的常见用法-调用标准程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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