/* POPUP INI */
/* POPUP FIM */

Conteúdo

Batch Input SHDB Exemplo

O usuário está de saco cheio de executar um processo padrão? Ou então você não está muito afim de procurar uma BAPI mas quer seguir as regras da transação, ou então precisa fazer uma carga, ou quer adiantar umas telas, olha, da pra fazer muito com Batch Input.

Batch Input é basicamente uma macro, onde você da os comandos para o SAP executar. O bom que ele pega todas as regras e validações standard, mas as vezes, um popup ou manejo diversificado entre telas pode quebrar suas pernas.

Começa executando a transação SHDB para mapear os campos e ações.

Não sabe executar um SHDB? Ummm... Já pensou em ser uber?

Abaixo exemplo simples chamando a transação IA06, que vai preencher a primeira tela e dar Enter.

REPORT SAPeiros.

DATA:
  gv_mode(1)        TYPE c VALUE 'N',
  gv_datum_char(10) TYPE c,
  gt_bdc_tab        TYPE TABLE OF bdcdata,
  gt_bdc_msg        TYPE TABLE OF bdcmsgcoll,
  gt_return         TYPE TABLE OF bapiret2.

CLEAR:
  gv_mode,
  gv_datum_char,
  gt_bdc_tab[],
  gt_bdc_msg[],
  gt_return[].

gv_datum_char = sy-datum+6(2) && '.' && sy-datum+4(2) && '.' && sy-datum+0(4).

PERFORM zf_dynpro USING:
'X' 'SAPLCPDI'              '3001',
' ' 'BDC_CURSOR'            'RC271-PROFIDNETZ',
' ' 'BDC_OKCODE'            '/00',
' ' 'RC271-PLNNR'           'TESTE_01',
' ' 'RC271-PROFIDNETZ'      'AR01',
' ' 'RC271-STTAG'           gv_datum_char.

CALL TRANSACTION 'IA06' USING gt_bdc_tab MODE gv_mode UPDATE 'S' MESSAGES INTO gt_bdc_msg.

LOOP AT gt_bdc_msg INTO DATA(ls_bdc_msg) WHERE msgtyp EQ 'E' OR msgtyp EQ 'A'.
  EXIT.
ENDLOOP.

IF sy-subrc IS NOT INITIAL.

  COMMIT WORK AND WAIT.

ELSE.

  APPEND INITIAL LINE TO gt_return ASSIGNING FIELD-SYMBOL(<fs_return>).
  <fs_return>-id         = ls_bdc_msg-msgid.
  <fs_return>-number     = ls_bdc_msg-msgnr.
  <fs_return>-message_v1 = ls_bdc_msg-msgv1.
  <fs_return>-message_v2 = ls_bdc_msg-msgv2.
  <fs_return>-message_v3 = ls_bdc_msg-msgv3.
  <fs_return>-message_v4 = ls_bdc_msg-msgv4.

ENDIF.

*---------------------------------------------------------------------
* BDC Table
*---------------------------------------------------------------------
FORM zf_dynpro USING dynbegin name value.
  APPEND INITIAL LINE TO gt_bdc_tab ASSIGNING FIELD-SYMBOL(<fs_bdc_tab>).
  IF dynbegin EQ abap_true.
    MOVE: name      TO <fs_bdc_tab>-program,
          value     TO <fs_bdc_tab>-dynpro,
          abap_true TO <fs_bdc_tab>-dynbegin.
  ELSE.
    MOVE: name      TO <fs_bdc_tab>-fnam,
          value     TO <fs_bdc_tab>-fval.
  ENDIF.
ENDFORM. 
/* POPUP INI */ /* POPUP FIM */