Se você precisa programar uma aplicação extensiva, um único programa pode se tornar muito complexo. Para tornar o programa mais fácil de ler, muitas vezes é razoável dividir as funções necessárias entre vários programas. Programas ABAP, como grupos de funções, também podem se conectar com outros programas ABAP e podem se comunicar de varias maneiras diferentes.
A instrução Submit permite que você possa especificar o nome do programa que você deseja chamar estaticamente, digitando o nome do programa no código do programa de chamada, ou dinamicamente, especificando o nome de um campo (entre parênteses) que contém o nome do programa. Se o sistema não encontrar o programa executável especificado ao tentar executar a instrução, ocorre um erro de execução.
O Submit possui a instrução complementar chamada And Return que permite retornar ao programa que o chamou, deste modo o sistema armazena os dados do programa executável chamado e retorna para a chamada após o processamento do programa chamado. O sistema retoma a execução do programa de chamada para a declaração após a chamada.
Uma observação interessante neste ponto é que cada vez que você executa um programa executável, uma declaração SUBMIT ocorre. Quando você digita o nome do programa em uma transação como SE38 e SA38 e escolhe Executar, uma declaração Submit ocorre na transação. É, portanto, um atributo técnico de um programa do tipo 1 que são chamados usando a instrução Submit, embora sua principal característica do ponto de vista de um usuário é que eles são iniciados em primeiro plano.
Exemplo:
Neste exemplo criamos dois programas, o ZPROG1 e ZPROG2, onde o programa 1 chama e alimenta parâmetros para o programa 2 e assim que o programa 2 é fechado, a execução do programa 1 é automaticamente retomada.
Abap
Programa – 1
*&---------------------------------------------------------------------* *& Report ZPROG1 *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Programa 1 - Call Program *&---------------------------------------------------------------------* REPORT ZPROG1. Write : / 'Eu sou o programa 1'. * Chama e transfere dados SUBMIT ZPROG2 VIA SELECTION-SCREEN WITH v1 eq 'Desenvolvimento' WITH v2 eq 'Aberto' AND RETURN. SKIP 2. FORMAT HOTSPOT COLOR 3 INVERSE ON. Write : / 'Você retornou para o programa 1'.
Programa – 2
*&---------------------------------------------------------------------* *& Report ZPROG2 *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Programa 2 - Call Program *&---------------------------------------------------------------------* REPORT ZPROG2. PARAMETER : v1(15) TYPE c, v2(15) TYPE c. START-OF-SELECTION. WRITE : 'Eu sou o Programa 2 e recebi duas variáveis', /, / 'Variável 1 = ', v1, / 'Variável 2 = ', v2. SKIP. FORMAT HOTSPOT COLOR 6 INVERSE ON. WRITE : / 'Clique no botão Voltar e em Fechar para retornar ao programa 1'.