触发output type的代码 - WFMC_MESSAGES_PROCESS示例

 

本例是触发Delivery的output Type, 示例代码如下, 详细逻辑可参SAP标准程序SD70AV2A.
   

  DATA: " internal table for message from NAST processing
        lt_msg   TYPE STANDARD TABLE OF msg0,
        ls_msg   TYPE msg0,   " work area for lt_msg
        lt_dsp   TYPE STANDARD TABLE OF naliv2,
        ls_dsp   TYPE naliv2,
        ls_nast  TYPE nast.

  FIELD-SYMBOLS: <ls_msg> TYPE msg0.

  " transfer pt_nast data to  lt_msg
  LOOP AT pt_nast INTO ls_nast.

    MOVE-CORRESPONDING ls_nast TO ls_msg.
    APPEND ls_msg TO lt_msg.
    CLEAR ls_msg.

  ENDLOOP.

  CALL FUNCTION 'WFMC_MESSAGES_EXTEND'
    TABLES
      tx_messages = lt_msg.

  SORT lt_msg BY objky kschl.

* create display
  LOOP AT lt_msg ASSIGNING <ls_msg>.
*    tabix = sy-tabix.
    MOVE-CORRESPONDING <ls_msg> TO ls_dsp.

    ls_dsp-vbeln = <ls_msg>-objky(10).
    ls_dsp-posnr = <ls_msg>-objky+10(6).
    ls_dsp-tabix = sy-tabix.
    <ls_msg>-tabix = sy-tabix.

    APPEND ls_dsp TO lt_dsp.
    CLEAR ls_dsp.

  ENDLOOP.

  " delivery output type processing
  CALL FUNCTION 'WFMC_MESSAGES_PROCESS'
    EXPORTING
      pi_display_id = gc_display_id                         "'NALIV2'
      pi_no_dialog  = gc_true  " 'X'
    TABLES
      tx_messages   = lt_msg
      tx_display    = lt_dsp.

 return_code = 0.

注: 1 . 本代码取自实际代码的一部分, 若想直接使用, 需略作修改.

      2. 这种方法只适用例如VT70一样的程序中, 不能使用在Normal TCODE的UPDATE TASK Process中, 例如VT02N- Repeat output, 我们需要DEBUG标准程序找到合适的地方来CALL 'WFMC_MESSAGES_PROCESS' .     

你可能感兴趣的:(触发output type的代码 - WFMC_MESSAGES_PROCESS示例)